From owner-svn-src-stable@freebsd.org Sun Aug 4 01:18:51 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2B788C091B; Sun, 4 Aug 2019 01:18:51 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 461NMb0Nz3z3wYd; Sun, 4 Aug 2019 01:18:51 +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 CBD7B23A72; Sun, 4 Aug 2019 01:18: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 x741Iowd041462; Sun, 4 Aug 2019 01:18:50 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x741Io7e041461; Sun, 4 Aug 2019 01:18:50 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201908040118.x741Io7e041461@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sun, 4 Aug 2019 01:18:50 +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: r350565 - in stable/12: contrib/binutils/binutils/doc gnu/usr.bin/binutils/objdump X-SVN-Group: stable-12 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: in stable/12: contrib/binutils/binutils/doc gnu/usr.bin/binutils/objdump X-SVN-Commit-Revision: 350565 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Aug 2019 01:18:51 -0000 Author: emaste Date: Sun Aug 4 01:18:50 2019 New Revision: 350565 URL: https://svnweb.freebsd.org/changeset/base/350565 Log: objdump: update deprecation notice MFC r350503: objdump: move deprecation notice to indended spot r335217 added a deprecation notice to the source file for the objdump man page, and r335219 added it to the rendered objdump.1, but in the wrong spot. MFC r350505: objdump: be explicit that GNU objdump that will be removed We may install llvm-objdump as objdump (see review D18307) or just provide no /usr/bin/objdump, but either way GNU objdump won't be installed in the future. Sponsored by: The FreeBSD Foundation Modified: stable/12/contrib/binutils/binutils/doc/binutils.texi stable/12/gnu/usr.bin/binutils/objdump/objdump.1 Directory Properties: stable/12/ (props changed) Modified: stable/12/contrib/binutils/binutils/doc/binutils.texi ============================================================================== --- stable/12/contrib/binutils/binutils/doc/binutils.texi Sat Aug 3 22:41:29 2019 (r350564) +++ stable/12/contrib/binutils/binutils/doc/binutils.texi Sun Aug 4 01:18:50 2019 (r350565) @@ -1624,8 +1624,8 @@ program to compile and work. specify archives, @command{objdump} shows information on each of the member object files. -@command{objdump} will be removed from a future version of the -FreeBSD base system. Users who require @command{objdump} are advised +GNU @command{objdump} will be removed from a future version of the +FreeBSD base system. Users who require GNU @command{objdump} are advised to install the binutils port or package. @c man end Modified: stable/12/gnu/usr.bin/binutils/objdump/objdump.1 ============================================================================== --- stable/12/gnu/usr.bin/binutils/objdump/objdump.1 Sat Aug 3 22:41:29 2019 (r350564) +++ stable/12/gnu/usr.bin/binutils/objdump/objdump.1 Sun Aug 4 01:18:50 2019 (r350565) @@ -179,13 +179,13 @@ information is mostly useful to programmers who are wo compilation tools, as opposed to programmers who just want their program to compile and work. .PP -\&\fBobjdump\fR will be removed from a future version of the -FreeBSD base system. Users who require \&\fBobjdump\fR are advised -to install the binutils port or package. -.PP \&\fIobjfile\fR... are the object files to be examined. When you specify archives, \fBobjdump\fR shows information on each of the member object files. +.PP +GNU \&\fBobjdump\fR will be removed from a future version of the +FreeBSD base system. Users who require GNU \&\fBobjdump\fR are advised +to install the binutils port or package. .SH "OPTIONS" .IX Header "OPTIONS" The long and short forms of options, shown here as alternatives, are From owner-svn-src-stable@freebsd.org Sun Aug 4 20:40:48 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8796DB1339; Sun, 4 Aug 2019 20:40:48 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 461t8J35mnz3MYq; Sun, 4 Aug 2019 20:40:48 +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 4C1428F0C; Sun, 4 Aug 2019 20:40:48 +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 x74KemMw038239; Sun, 4 Aug 2019 20:40:48 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x74Kelnw038060; Sun, 4 Aug 2019 20:40:47 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201908042040.x74Kelnw038060@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sun, 4 Aug 2019 20:40: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: r350574 - in stable/12: contrib/binutils/gas/doc gnu/usr.bin/binutils/as X-SVN-Group: stable-12 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: in stable/12: contrib/binutils/gas/doc gnu/usr.bin/binutils/as X-SVN-Commit-Revision: 350574 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Aug 2019 20:40:48 -0000 Author: emaste Date: Sun Aug 4 20:40:47 2019 New Revision: 350574 URL: https://svnweb.freebsd.org/changeset/base/350574 Log: MFC r350518: as: add deprecation notice to the man page In the future FreeBSD will ship without GNU binutils 2.17.50. Add a note advising users who require GNU as to install the binutils port or package. Note that on armv7, arm64, amd64, i386 we currently ship only two binutils tools (as and objdump). A deprecation notice was added to objdump's man page some time ago. PR: 233611 Sponsored by: The FreeBSD Foundation Modified: stable/12/contrib/binutils/gas/doc/as.texinfo stable/12/gnu/usr.bin/binutils/as/as.1 Directory Properties: stable/12/ (props changed) Modified: stable/12/contrib/binutils/gas/doc/as.texinfo ============================================================================== --- stable/12/contrib/binutils/gas/doc/as.texinfo Sun Aug 4 20:00:39 2019 (r350573) +++ stable/12/contrib/binutils/gas/doc/as.texinfo Sun Aug 4 20:40:47 2019 (r350574) @@ -1295,6 +1295,9 @@ computer-readable series of instructions. Different v @section The GNU Assembler @c man begin DESCRIPTION +@sc{gnu} @command{as} will be removed from a future version of the +FreeBSD base system. Users who require +@sc{gnu} @command{as} are advised to install the binutils port or package. @sc{gnu} @command{as} is really a family of assemblers. @ifclear GENERIC Modified: stable/12/gnu/usr.bin/binutils/as/as.1 ============================================================================== --- stable/12/gnu/usr.bin/binutils/as/as.1 Sun Aug 4 20:00:39 2019 (r350573) +++ stable/12/gnu/usr.bin/binutils/as/as.1 Sun Aug 4 20:40:47 2019 (r350574) @@ -293,6 +293,10 @@ as [\fB\-a\fR[\fBcdhlns\fR][=\fIfile\fR]] [\fB\-\-alte [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" +\&\s-1GNU\s0 \fBas\fR will be removed from a future version of the +FreeBSD base system. Users who require +\&\s-1GNU\s0 \fBas\fR are advised to install the binutils port or package. +.PP \&\s-1GNU\s0 \fBas\fR is really a family of assemblers. If you use (or have used) the \s-1GNU\s0 assembler on one architecture, you should find a fairly similar environment when you use it on another From owner-svn-src-stable@freebsd.org Mon Aug 5 00:32:58 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 985D0B5E95; Mon, 5 Aug 2019 00:32:58 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 461zJB3F17z43RH; Mon, 5 Aug 2019 00:32:58 +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 50B46BAA7; Mon, 5 Aug 2019 00:32:58 +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 x750WwJN080602; Mon, 5 Aug 2019 00:32:58 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x750WwOg080601; Mon, 5 Aug 2019 00:32:58 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201908050032.x750WwOg080601@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 5 Aug 2019 00:32:58 +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: r350577 - in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Commit-Revision: 350577 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 00:32:58 -0000 Author: cy Date: Mon Aug 5 00:32:57 2019 New Revision: 350577 URL: https://svnweb.freebsd.org/changeset/base/350577 Log: MFC r350548: #include whitespace adjustments. Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Directory Properties: stable/12/ (props changed) Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c ============================================================================== --- stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Mon Aug 5 00:08:25 2019 (r350576) +++ stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Mon Aug 5 00:32:57 2019 (r350577) @@ -28,24 +28,24 @@ static const char rcsid[] = "@(#)$Id$"; #include #include #include -# include -# include +#include +#include #include #include # include #if defined(__FreeBSD_version) #include #endif -# include -# include -# include +#include +#include +#include #include -# include -# include +#include +#include #include -# include -# include +#include +#include #include #include #include @@ -75,7 +75,7 @@ static const char rcsid[] = "@(#)$Id$"; #include "netinet/ip_scan.h" #endif #include "netinet/ip_pool.h" -# include +#include #include #ifdef CSUM_DATA_VALID #include From owner-svn-src-stable@freebsd.org Mon Aug 5 00:32:58 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E3568B5E9C; Mon, 5 Aug 2019 00:32:58 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 461zJB5m35z43RJ; Mon, 5 Aug 2019 00:32:58 +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 A59D1BAA8; Mon, 5 Aug 2019 00:32:58 +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 x750Wwc2080608; Mon, 5 Aug 2019 00:32:58 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x750Ww8r080607; Mon, 5 Aug 2019 00:32:58 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201908050032.x750Ww8r080607@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 5 Aug 2019 00:32: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: r350577 - in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Group: stable-12 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Commit-Revision: 350577 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 00:32:59 -0000 Author: cy Date: Mon Aug 5 00:32:57 2019 New Revision: 350577 URL: https://svnweb.freebsd.org/changeset/base/350577 Log: MFC r350548: #include whitespace adjustments. Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Directory Properties: stable/11/ (props changed) Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c ============================================================================== --- stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Mon Aug 5 00:08:25 2019 (r350576) +++ stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Mon Aug 5 00:32:57 2019 (r350577) @@ -28,24 +28,24 @@ static const char rcsid[] = "@(#)$Id$"; #include #include #include -# include -# include +#include +#include #include #include # include #if defined(__FreeBSD_version) #include #endif -# include -# include -# include +#include +#include +#include #include -# include -# include +#include +#include #include -# include -# include +#include +#include #include #include #include @@ -75,7 +75,7 @@ static const char rcsid[] = "@(#)$Id$"; #include "netinet/ip_scan.h" #endif #include "netinet/ip_pool.h" -# include +#include #include #ifdef CSUM_DATA_VALID #include From owner-svn-src-stable@freebsd.org Mon Aug 5 07:49:04 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 38C86BC97B; Mon, 5 Aug 2019 07:49:04 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4628zM6cmXz4LfN; Mon, 5 Aug 2019 07:49:03 +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 C048D1897A; Mon, 5 Aug 2019 07:49:03 +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 x757n319036668; Mon, 5 Aug 2019 07:49:03 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x757n2Wf036664; Mon, 5 Aug 2019 07:49:03 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201908050749.x757n2Wf036664@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Mon, 5 Aug 2019 07:49:02 +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: r350582 - stable/12/sys/netpfil/ipfw X-SVN-Group: stable-12 X-SVN-Commit-Author: ae X-SVN-Commit-Paths: stable/12/sys/netpfil/ipfw X-SVN-Commit-Revision: 350582 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 07:49:04 -0000 Author: ae Date: Mon Aug 5 07:49:02 2019 New Revision: 350582 URL: https://svnweb.freebsd.org/changeset/base/350582 Log: MFC r350417: Add ipfw_get_action() function to get the pointer to action opcode. ACTION_PTR() returns pointer to the start of rule action section, but rule can keep several rule modifiers like O_LOG, O_TAG and O_ALTQ, and only then real action opcode is stored. ipfw_get_action() function inspects the rule action section, skips all modifiers and returns action opcode. Use this function in ipfw_reset_eaction() and flush_nat_ptrs(). Modified: stable/12/sys/netpfil/ipfw/ip_fw_eaction.c stable/12/sys/netpfil/ipfw/ip_fw_nat.c stable/12/sys/netpfil/ipfw/ip_fw_private.h stable/12/sys/netpfil/ipfw/ip_fw_sockopt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/netpfil/ipfw/ip_fw_eaction.c ============================================================================== --- stable/12/sys/netpfil/ipfw/ip_fw_eaction.c Mon Aug 5 06:01:29 2019 (r350581) +++ stable/12/sys/netpfil/ipfw/ip_fw_eaction.c Mon Aug 5 07:49:02 2019 (r350582) @@ -377,33 +377,30 @@ ipfw_reset_eaction(struct ip_fw_chain *ch, struct ip_f uint16_t eaction_id, uint16_t default_id, uint16_t instance_id) { ipfw_insn *cmd, *icmd; - int l, cmdlen; + int l; IPFW_UH_WLOCK_ASSERT(ch); IPFW_WLOCK_ASSERT(ch); - cmd = ACTION_PTR(rule); - l = rule->cmd_len - rule->act_ofs; - while (l > 0) { - cmdlen = F_LEN(cmd); - l -= cmdlen; - if (cmd->opcode == O_EXTERNAL_ACTION || l <= 0) - break; - cmd += cmdlen; - } /* * Return if there is not O_EXTERNAL_ACTION or its id is * different. */ + cmd = ipfw_get_action(rule); if (cmd->opcode != O_EXTERNAL_ACTION || cmd->arg1 != eaction_id) return (0); /* * If instance_id is specified, we need to truncate the * rule length. Check if there is O_EXTERNAL_INSTANCE opcode. + * + * NOTE: F_LEN(cmd) must be 1 for O_EXTERNAL_ACTION opcode, + * and rule length should be enough to keep O_EXTERNAL_INSTANCE + * opcode, thus we do check for l > 1. */ - if (instance_id != 0 && l > 0) { - MPASS(cmdlen == 1); + l = rule->cmd + rule->cmd_len - cmd; + if (instance_id != 0 && l > 1) { + MPASS(F_LEN(cmd) == 1); icmd = cmd + 1; if (icmd->opcode != O_EXTERNAL_INSTANCE || icmd->arg1 != instance_id) @@ -415,8 +412,9 @@ ipfw_reset_eaction(struct ip_fw_chain *ch, struct ip_f * opcode. */ EACTION_DEBUG("truncate rule %d: len %u -> %u", - rule->rulenum, rule->cmd_len, rule->cmd_len - l); - rule->cmd_len -= l; + rule->rulenum, rule->cmd_len, + rule->cmd_len - F_LEN(icmd)); + rule->cmd_len -= F_LEN(icmd); MPASS(((uint32_t *)icmd - (uint32_t *)rule->cmd) == rule->cmd_len); } Modified: stable/12/sys/netpfil/ipfw/ip_fw_nat.c ============================================================================== --- stable/12/sys/netpfil/ipfw/ip_fw_nat.c Mon Aug 5 06:01:29 2019 (r350581) +++ stable/12/sys/netpfil/ipfw/ip_fw_nat.c Mon Aug 5 07:49:02 2019 (r350582) @@ -141,13 +141,12 @@ ifaddr_change(void *arg __unused, struct ifnet *ifp) static void flush_nat_ptrs(struct ip_fw_chain *chain, const int ix) { - int i; ipfw_insn_nat *cmd; + int i; IPFW_WLOCK_ASSERT(chain); for (i = 0; i < chain->n_rules; i++) { - cmd = (ipfw_insn_nat *)ACTION_PTR(chain->map[i]); - /* XXX skip log and the like ? */ + cmd = (ipfw_insn_nat *)ipfw_get_action(chain->map[i]); if (cmd->o.opcode == O_NAT && cmd->nat != NULL && (ix < 0 || cmd->nat->id == ix)) cmd->nat = NULL; Modified: stable/12/sys/netpfil/ipfw/ip_fw_private.h ============================================================================== --- stable/12/sys/netpfil/ipfw/ip_fw_private.h Mon Aug 5 06:01:29 2019 (r350581) +++ stable/12/sys/netpfil/ipfw/ip_fw_private.h Mon Aug 5 07:49:02 2019 (r350582) @@ -676,6 +676,7 @@ struct ip_fw *ipfw_alloc_rule(struct ip_fw_chain *chai void ipfw_free_rule(struct ip_fw *rule); int ipfw_match_range(struct ip_fw *rule, ipfw_range_tlv *rt); int ipfw_mark_object_kidx(uint32_t *bmask, uint16_t etlv, uint16_t kidx); +ipfw_insn *ipfw_get_action(struct ip_fw *); typedef int (sopt_handler_f)(struct ip_fw_chain *ch, ip_fw3_opheader *op3, struct sockopt_data *sd); Modified: stable/12/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- stable/12/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Aug 5 06:01:29 2019 (r350581) +++ stable/12/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Aug 5 07:49:02 2019 (r350582) @@ -1219,6 +1219,35 @@ move_range(struct ip_fw_chain *chain, ipfw_range_tlv * } /* + * Returns pointer to action instruction, skips all possible rule + * modifiers like O_LOG, O_TAG, O_ALTQ. + */ +ipfw_insn * +ipfw_get_action(struct ip_fw *rule) +{ + ipfw_insn *cmd; + int l, cmdlen; + + cmd = ACTION_PTR(rule); + l = rule->cmd_len - rule->act_ofs; + while (l > 0) { + switch (cmd->opcode) { + case O_ALTQ: + case O_LOG: + case O_TAG: + break; + default: + return (cmd); + } + cmdlen = F_LEN(cmd); + l -= cmdlen; + cmd += cmdlen; + } + panic("%s: rule (%p) has not action opcode", __func__, rule); + return (NULL); +} + +/* * Clear counters for a specific rule. * Normally run under IPFW_UH_RLOCK, but these are idempotent ops * so we only care that rules do not disappear. From owner-svn-src-stable@freebsd.org Mon Aug 5 07:50:26 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6C71DBC9C3; Mon, 5 Aug 2019 07:50:26 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46290y2CFjz4LmD; Mon, 5 Aug 2019 07:50:26 +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 2EAE71897E; Mon, 5 Aug 2019 07:50:26 +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 x757oQwj036824; Mon, 5 Aug 2019 07:50:26 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x757oPVo036820; Mon, 5 Aug 2019 07:50:25 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201908050750.x757oPVo036820@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Mon, 5 Aug 2019 07:50:25 +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: r350583 - stable/11/sys/netpfil/ipfw X-SVN-Group: stable-11 X-SVN-Commit-Author: ae X-SVN-Commit-Paths: stable/11/sys/netpfil/ipfw X-SVN-Commit-Revision: 350583 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 07:50:26 -0000 Author: ae Date: Mon Aug 5 07:50:25 2019 New Revision: 350583 URL: https://svnweb.freebsd.org/changeset/base/350583 Log: MFC r350417: Add ipfw_get_action() function to get the pointer to action opcode. ACTION_PTR() returns pointer to the start of rule action section, but rule can keep several rule modifiers like O_LOG, O_TAG and O_ALTQ, and only then real action opcode is stored. ipfw_get_action() function inspects the rule action section, skips all modifiers and returns action opcode. Use this function in ipfw_reset_eaction() and flush_nat_ptrs(). Modified: stable/11/sys/netpfil/ipfw/ip_fw_eaction.c stable/11/sys/netpfil/ipfw/ip_fw_nat.c stable/11/sys/netpfil/ipfw/ip_fw_private.h stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netpfil/ipfw/ip_fw_eaction.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_eaction.c Mon Aug 5 07:49:02 2019 (r350582) +++ stable/11/sys/netpfil/ipfw/ip_fw_eaction.c Mon Aug 5 07:50:25 2019 (r350583) @@ -377,33 +377,30 @@ ipfw_reset_eaction(struct ip_fw_chain *ch, struct ip_f uint16_t eaction_id, uint16_t default_id, uint16_t instance_id) { ipfw_insn *cmd, *icmd; - int l, cmdlen; + int l; IPFW_UH_WLOCK_ASSERT(ch); IPFW_WLOCK_ASSERT(ch); - cmd = ACTION_PTR(rule); - l = rule->cmd_len - rule->act_ofs; - while (l > 0) { - cmdlen = F_LEN(cmd); - l -= cmdlen; - if (cmd->opcode == O_EXTERNAL_ACTION || l <= 0) - break; - cmd += cmdlen; - } /* * Return if there is not O_EXTERNAL_ACTION or its id is * different. */ + cmd = ipfw_get_action(rule); if (cmd->opcode != O_EXTERNAL_ACTION || cmd->arg1 != eaction_id) return (0); /* * If instance_id is specified, we need to truncate the * rule length. Check if there is O_EXTERNAL_INSTANCE opcode. + * + * NOTE: F_LEN(cmd) must be 1 for O_EXTERNAL_ACTION opcode, + * and rule length should be enough to keep O_EXTERNAL_INSTANCE + * opcode, thus we do check for l > 1. */ - if (instance_id != 0 && l > 0) { - MPASS(cmdlen == 1); + l = rule->cmd + rule->cmd_len - cmd; + if (instance_id != 0 && l > 1) { + MPASS(F_LEN(cmd) == 1); icmd = cmd + 1; if (icmd->opcode != O_EXTERNAL_INSTANCE || icmd->arg1 != instance_id) @@ -415,8 +412,9 @@ ipfw_reset_eaction(struct ip_fw_chain *ch, struct ip_f * opcode. */ EACTION_DEBUG("truncate rule %d: len %u -> %u", - rule->rulenum, rule->cmd_len, rule->cmd_len - l); - rule->cmd_len -= l; + rule->rulenum, rule->cmd_len, + rule->cmd_len - F_LEN(icmd)); + rule->cmd_len -= F_LEN(icmd); MPASS(((uint32_t *)icmd - (uint32_t *)rule->cmd) == rule->cmd_len); } Modified: stable/11/sys/netpfil/ipfw/ip_fw_nat.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_nat.c Mon Aug 5 07:49:02 2019 (r350582) +++ stable/11/sys/netpfil/ipfw/ip_fw_nat.c Mon Aug 5 07:50:25 2019 (r350583) @@ -139,13 +139,12 @@ ifaddr_change(void *arg __unused, struct ifnet *ifp) static void flush_nat_ptrs(struct ip_fw_chain *chain, const int ix) { - int i; ipfw_insn_nat *cmd; + int i; IPFW_WLOCK_ASSERT(chain); for (i = 0; i < chain->n_rules; i++) { - cmd = (ipfw_insn_nat *)ACTION_PTR(chain->map[i]); - /* XXX skip log and the like ? */ + cmd = (ipfw_insn_nat *)ipfw_get_action(chain->map[i]); if (cmd->o.opcode == O_NAT && cmd->nat != NULL && (ix < 0 || cmd->nat->id == ix)) cmd->nat = NULL; Modified: stable/11/sys/netpfil/ipfw/ip_fw_private.h ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_private.h Mon Aug 5 07:49:02 2019 (r350582) +++ stable/11/sys/netpfil/ipfw/ip_fw_private.h Mon Aug 5 07:50:25 2019 (r350583) @@ -674,6 +674,7 @@ struct ip_fw *ipfw_alloc_rule(struct ip_fw_chain *chai void ipfw_free_rule(struct ip_fw *rule); int ipfw_match_range(struct ip_fw *rule, ipfw_range_tlv *rt); int ipfw_mark_object_kidx(uint32_t *bmask, uint16_t etlv, uint16_t kidx); +ipfw_insn *ipfw_get_action(struct ip_fw *); typedef int (sopt_handler_f)(struct ip_fw_chain *ch, ip_fw3_opheader *op3, struct sockopt_data *sd); Modified: stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Aug 5 07:49:02 2019 (r350582) +++ stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Aug 5 07:50:25 2019 (r350583) @@ -1217,6 +1217,35 @@ move_range(struct ip_fw_chain *chain, ipfw_range_tlv * } /* + * Returns pointer to action instruction, skips all possible rule + * modifiers like O_LOG, O_TAG, O_ALTQ. + */ +ipfw_insn * +ipfw_get_action(struct ip_fw *rule) +{ + ipfw_insn *cmd; + int l, cmdlen; + + cmd = ACTION_PTR(rule); + l = rule->cmd_len - rule->act_ofs; + while (l > 0) { + switch (cmd->opcode) { + case O_ALTQ: + case O_LOG: + case O_TAG: + break; + default: + return (cmd); + } + cmdlen = F_LEN(cmd); + l -= cmdlen; + cmd += cmdlen; + } + panic("%s: rule (%p) has not action opcode", __func__, rule); + return (NULL); +} + +/* * Clear counters for a specific rule. * Normally run under IPFW_UH_RLOCK, but these are idempotent ops * so we only care that rules do not disappear. From owner-svn-src-stable@freebsd.org Mon Aug 5 15:24:06 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5A196C5CC5; Mon, 5 Aug 2019 15:24:06 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462M4Q1YG2z3JDB; Mon, 5 Aug 2019 15:24:06 +0000 (UTC) (envelope-from kp@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 F25C21DC08; Mon, 5 Aug 2019 15:24:05 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x75FO5aX013653; Mon, 5 Aug 2019 15:24:05 GMT (envelope-from kp@FreeBSD.org) Received: (from kp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75FO53o013652; Mon, 5 Aug 2019 15:24:05 GMT (envelope-from kp@FreeBSD.org) Message-Id: <201908051524.x75FO53o013652@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kp set sender to kp@FreeBSD.org using -f From: Kristof Provost Date: Mon, 5 Aug 2019 15:24: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: r350590 - stable/12/sys/riscv/riscv X-SVN-Group: stable-12 X-SVN-Commit-Author: kp X-SVN-Commit-Paths: stable/12/sys/riscv/riscv X-SVN-Commit-Revision: 350590 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 15:24:06 -0000 Author: kp Date: Mon Aug 5 15:24:05 2019 New Revision: 350590 URL: https://svnweb.freebsd.org/changeset/base/350590 Log: MFC r350416: riscv: Fix copyin/copyout r343275 introduced a performance optimisation to the copyin/copyout routines by attempting to copy word-per-word rather than byte-per-byte where possible. This optimisation failed to account for cases where the buffer is longer than XLEN_BYTES, but due to misalignment does not not allow for any word-sized copies. E.g. a 9 byte buffer (with XLEN_BYTES == 8) which is misaligned by 2 bytes. The code nevertheless did a single full-word copy, which meant we copied too much data. This potentially clobbered other data. This is most easily demonstrated by a simple `sysctl -a`. Fix it by not assuming that we'll always have at least one full-word copy to do, but instead checking the remaining length first. Sponsored by: Axiado Modified: stable/12/sys/riscv/riscv/copyinout.S Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/riscv/riscv/copyinout.S ============================================================================== --- stable/12/sys/riscv/riscv/copyinout.S Mon Aug 5 13:28:21 2019 (r350589) +++ stable/12/sys/riscv/riscv/copyinout.S Mon Aug 5 15:24:05 2019 (r350590) @@ -65,7 +65,7 @@ END(copyio_fault) ENTER_USER_ACCESS(a7) li t2, XLEN_BYTES - blt a2, t2, 3f /* Byte-copy if len < XLEN_BYTES */ + blt a2, t2, 4f /* Byte-copy if len < XLEN_BYTES */ /* * Compare lower bits of src and dest. @@ -73,7 +73,7 @@ END(copyio_fault) */ andi t0, a0, (XLEN_BYTES-1) /* Low bits of src */ andi t1, a1, (XLEN_BYTES-1) /* Low bits of dest */ - bne t0, t1, 3f /* Misaligned. Go to byte copy */ + bne t0, t1, 4f /* Misaligned. Go to byte copy */ beqz t0, 2f /* Already word-aligned, skip ahead */ /* Byte copy until the first word-aligned address */ @@ -84,6 +84,7 @@ END(copyio_fault) addi a2, a2, -1 /* len-- */ andi t0, a0, (XLEN_BYTES-1) bnez t0, 1b + j 3f /* Copy words */ 2: ld a4, 0(a0) /* Load word from src */ @@ -91,20 +92,20 @@ END(copyio_fault) sd a4, 0(a1) /* Store word in dest */ addi a1, a1, XLEN_BYTES addi a2, a2, -XLEN_BYTES /* len -= XLEN_BYTES */ - bgeu a2, t2, 2b /* Again if len >= XLEN_BYTES */ +3: bgeu a2, t2, 2b /* Again if len >= XLEN_BYTES */ /* Check if we're finished */ - beqz a2, 4f + beqz a2, 5f /* Copy any remaining bytes */ -3: lb a4, 0(a0) /* Load byte from src */ +4: lb a4, 0(a0) /* Load byte from src */ addi a0, a0, 1 sb a4, 0(a1) /* Store byte in dest */ addi a1, a1, 1 addi a2, a2, -1 /* len-- */ - bnez a2, 3b + bnez a2, 4b -4: EXIT_USER_ACCESS(a7) +5: EXIT_USER_ACCESS(a7) SET_FAULT_HANDLER(x0, a7) /* Clear the handler */ .endm From owner-svn-src-stable@freebsd.org Mon Aug 5 16:36:14 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2D7A6C74F8; Mon, 5 Aug 2019 16:36:14 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462Ngf17Djz3PdS; Mon, 5 Aug 2019 16:36:14 +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 0939D1E8A5; Mon, 5 Aug 2019 16:36:14 +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 x75GaEFj056584; Mon, 5 Aug 2019 16:36:14 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75GaBQV056573; Mon, 5 Aug 2019 16:36:11 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051636.x75GaBQV056573@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 16:36:11 +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: r350592 - in stable/12: release/arm64 release/tools sys/arm/allwinner sys/conf sys/dev/extres/phy X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12: release/arm64 release/tools sys/arm/allwinner sys/conf sys/dev/extres/phy X-SVN-Commit-Revision: 350592 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 16:36:14 -0000 Author: manu Date: Mon Aug 5 16:36:11 2019 New Revision: 350592 URL: https://svnweb.freebsd.org/changeset/base/350592 Log: MFC r340845-r340848, r340971, r340981, r342076 r340845: Derive PHY class to new one specialized for USB PHY functions. Submitted by: mmel r340846: aw_usbphy: Convert to usbphy subclass Instead of routing the phy when enabling it, do the configuration and routing in the phynode_usb_set_mode function. While here, if we don't have a vbus detection method, enable the phy if requested. r340847: a10_ehci: Always set the phy to host mode r340848: axp8xx: Rework the enable part and add the GPIOXLDO regulators r340971: aw_usbphy: Do not error if it's not phy 0 Only phy0 can switch between host/otg, do not error if we request host mode on phy != 0. X-MFC with: r340846 r340981: release: arm64: Add PINEBOOK config Add a configuration for PINEBOOK image. Pinebook is a arm64 laptop based on a Pine64 board. Since the usb trackpad need a quirk, add a common function for adding quirk for arm board. A default one is supplied as most board to not need quirks. Reviewed by: gjb Differential Revision: https://reviews.freebsd.org/D18337 r342076: arm64: allwinner: axp81x: Fix double invertion for FLDO1 This fix booting on A64 boards when disabling the unused regulators at boot. We did disable all the regulator handled by register 0x13 which of course contain mandatory regulators for the board to be up. Reported by: Mark Millard X-MFC-With: r340848 Added: stable/12/release/arm64/PINEBOOK.conf - copied unchanged from r340981, head/release/arm64/PINEBOOK.conf stable/12/sys/dev/extres/phy/phy_internal.h - copied unchanged from r340848, head/sys/dev/extres/phy/phy_internal.h stable/12/sys/dev/extres/phy/phy_usb.c - copied unchanged from r340848, head/sys/dev/extres/phy/phy_usb.c stable/12/sys/dev/extres/phy/phy_usb.h - copied unchanged from r340848, head/sys/dev/extres/phy/phy_usb.h stable/12/sys/dev/extres/phy/phynode_usb_if.m - copied unchanged from r340848, head/sys/dev/extres/phy/phynode_usb_if.m Modified: stable/12/release/tools/arm.subr stable/12/sys/arm/allwinner/a10_ehci.c stable/12/sys/arm/allwinner/aw_usbphy.c stable/12/sys/arm/allwinner/axp81x.c stable/12/sys/conf/files stable/12/sys/dev/extres/phy/phy.c Directory Properties: stable/12/ (props changed) Copied: stable/12/release/arm64/PINEBOOK.conf (from r340981, head/release/arm64/PINEBOOK.conf) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/release/arm64/PINEBOOK.conf Mon Aug 5 16:36:11 2019 (r350592, copy of r340981, head/release/arm64/PINEBOOK.conf) @@ -0,0 +1,42 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +EMBEDDED_TARGET_ARCH="aarch64" +EMBEDDED_TARGET="arm64" +EMBEDDEDBUILD=1 +EMBEDDEDPORTS="sysutils/u-boot-pinebook" +FAT_SIZE="54m -b 1m" +FAT_TYPE="16" +IMAGE_SIZE="2560M" +KERNEL="GENERIC" +MD_ARGS="-x 63 -y 255" +NODOC=1 +PART_SCHEME="MBR" +FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64-timer" +export BOARDNAME="PINEBOOK" + +arm_install_uboot() { + UBOOT_DIR="/usr/local/share/u-boot/u-boot-pinebook" + UBOOT_FILES="u-boot-sunxi-with-spl.bin" + chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \ + of=/dev/${mddev} bs=1k seek=8 conv=sync + + return 0 +} + +arm_do_quirk() { + echo '# Enable quirk for trackpad' \ + >> ${CHROOTDIR}/${DESTDIR}/boot/loader.conf + echo 'usb_quirk_load=YES' \ + >> ${CHROOTDIR}/${DESTDIR}/boot/loader.conf + echo 'ums_load=YES' \ + >> ${CHROOTDIR}/${DESTDIR}/boot/loader.conf + echo 'hw.usb.quirk="0x258a 0x000c 0x0000 0xffff UQ_CFG_INDEX=1"' \ + >> ${CHROOTDIR}/${DESTDIR}/boot/loader.conf + # We want EFIFB but there is no node and so we cannot know + # which regulator is used for powering lcd/hdmi + echo 'hw.regulator.disable_unused=0' \ + >> ${CHROOTDIR}/${DESTDIR}/boot/loader.conf +} Modified: stable/12/release/tools/arm.subr ============================================================================== --- stable/12/release/tools/arm.subr Mon Aug 5 15:56:44 2019 (r350591) +++ stable/12/release/tools/arm.subr Mon Aug 5 16:36:11 2019 (r350592) @@ -174,6 +174,7 @@ arm_install_base() { arm64_setup_multicons arm_setup_fdt_overlays arm_setup_minimal_loader + arm_do_quirk echo '# Custom /etc/fstab for FreeBSD embedded images' \ > ${CHROOTDIR}/${DESTDIR}/etc/fstab @@ -237,4 +238,8 @@ arm_install_uboot() { # Override in the arm/KERNEL.conf file. return 0 +} + +arm_do_quirk() { + # Override in the arm{,64}/BOARD.conf file. } Modified: stable/12/sys/arm/allwinner/a10_ehci.c ============================================================================== --- stable/12/sys/arm/allwinner/a10_ehci.c Mon Aug 5 15:56:44 2019 (r350591) +++ stable/12/sys/arm/allwinner/a10_ehci.c Mon Aug 5 16:36:11 2019 (r350592) @@ -63,7 +63,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include +#include #define EHCI_HC_DEVSTR "Allwinner Integrated USB 2.0 controller" @@ -242,6 +242,11 @@ a10_ehci_attach(device_t self) /* Enable USB PHY */ if (phy_get_by_ofw_name(self, 0, "usb", &aw_sc->phy) == 0) { + err = phy_usb_set_mode(aw_sc->phy, PHY_USB_MODE_HOST); + if (err != 0) { + device_printf(self, "Could not set phy to host mode\n"); + goto error; + } err = phy_enable(aw_sc->phy); if (err != 0) { device_printf(self, "Could not enable phy\n"); Modified: stable/12/sys/arm/allwinner/aw_usbphy.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_usbphy.c Mon Aug 5 15:56:44 2019 (r350591) +++ stable/12/sys/arm/allwinner/aw_usbphy.c Mon Aug 5 16:36:11 2019 (r350592) @@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include +#include #include "phynode_if.h" @@ -139,17 +139,22 @@ struct awusbphy_softc { gpio_pin_t vbus_det_pin; int vbus_det_valid; struct aw_usbphy_conf *phy_conf; + int mode; }; /* Phy class and methods. */ static int awusbphy_phy_enable(struct phynode *phy, bool enable); -static phynode_method_t awusbphy_phynode_methods[] = { +static int awusbphy_get_mode(struct phynode *phy, int *mode); +static int awusbphy_set_mode(struct phynode *phy, int mode); +static phynode_usb_method_t awusbphy_phynode_methods[] = { PHYNODEMETHOD(phynode_enable, awusbphy_phy_enable), + PHYNODEMETHOD(phynode_usb_get_mode, awusbphy_get_mode), + PHYNODEMETHOD(phynode_usb_set_mode, awusbphy_set_mode), PHYNODEMETHOD_END }; DEFINE_CLASS_1(awusbphy_phynode, awusbphy_phynode_class, awusbphy_phynode_methods, - 0, phynode_class); + sizeof(struct phynode_usb_sc), phynode_usb_class); #define RD4(res, o) bus_read_4(res, (o)) #define WR4(res, o, v) bus_write_4(res, (o), (v)) @@ -165,6 +170,18 @@ DEFINE_CLASS_1(awusbphy_phynode, awusbphy_phynode_clas #define PMU_ULPI_BYPASS (1 << 0) #define PMU_UNK_H3 0x10 #define PMU_UNK_H3_CLR 0x2 +#define PHY_CSR 0x00 +#define ID_PULLUP_EN (1 << 17) +#define DPDM_PULLUP_EN (1 << 16) +#define FORCE_ID (0x3 << 14) +#define FORCE_ID_SHIFT 14 +#define FORCE_ID_LOW 2 +#define FORCE_VBUS_VALID (0x3 << 12) +#define FORCE_VBUS_VALID_SHIFT 12 +#define FORCE_VBUS_VALID_HIGH 3 +#define VBUS_CHANGE_DET (1 << 6) +#define ID_CHANGE_DET (1 << 5) +#define DPDM_CHANGE_DET (1 << 4) static void awusbphy_configure(device_t dev, int phyno) @@ -287,7 +304,7 @@ awusbphy_vbus_detect(device_t dev, int *val) return (0); } - *val = 1; + *val = 0; return (0); } @@ -315,30 +332,22 @@ awusbphy_phy_enable(struct phynode *phynode, bool enab if (reg == NULL) return (0); - if (enable) { + if (phy == 0) { /* If an external vbus is detected, do not enable phy 0 */ - if (phy == 0) { - error = awusbphy_vbus_detect(dev, &vbus_det); - if (error) - goto out; + error = awusbphy_vbus_detect(dev, &vbus_det); + if (error) + goto out; - /* Depending on the PHY we need to route OTG to OHCI/EHCI */ - if (sc->phy_conf->phy0_route == true) { - if (vbus_det == 0) - /* Host mode */ - CLR4(sc->phy_ctrl, OTG_PHY_CFG, - OTG_PHY_ROUTE_OTG); - else - /* Peripheral mode */ - SET4(sc->phy_ctrl, OTG_PHY_CFG, - OTG_PHY_ROUTE_OTG); - } - if (vbus_det == 1) - return (0); - } else - error = 0; - if (error == 0) - error = regulator_enable(reg); + if (vbus_det == 1) { + if (bootverbose) + device_printf(dev, "External VBUS detected, not enabling the regulator\n"); + + return (0); + } + } + if (enable) { + /* Depending on the PHY we need to route OTG to OHCI/EHCI */ + error = regulator_enable(reg); } else error = regulator_disable(reg); @@ -350,6 +359,73 @@ out: return (error); } + return (0); +} + +static int +awusbphy_get_mode(struct phynode *phynode, int *mode) +{ + struct awusbphy_softc *sc; + device_t dev; + + dev = phynode_get_device(phynode); + sc = device_get_softc(dev); + + *mode = sc->mode; + + return (0); +} + +static int +awusbphy_set_mode(struct phynode *phynode, int mode) +{ + device_t dev; + intptr_t phy; + struct awusbphy_softc *sc; + uint32_t val; + int error, vbus_det; + + dev = phynode_get_device(phynode); + phy = phynode_get_id(phynode); + sc = device_get_softc(dev); + + if (phy != 0) { + if (mode != PHY_USB_MODE_HOST) + return (EINVAL); + return (0); + } + + switch (mode) { + case PHY_USB_MODE_HOST: + val = bus_read_4(sc->phy_ctrl, PHY_CSR); + val &= ~(VBUS_CHANGE_DET | ID_CHANGE_DET | DPDM_CHANGE_DET); + val |= (ID_PULLUP_EN | DPDM_PULLUP_EN); + val &= ~FORCE_ID; + val |= (FORCE_ID_LOW << FORCE_ID_SHIFT); + val &= ~FORCE_VBUS_VALID; + val |= (FORCE_VBUS_VALID_HIGH << FORCE_VBUS_VALID_SHIFT); + bus_write_4(sc->phy_ctrl, PHY_CSR, val); + if (sc->phy_conf->phy0_route == true) { + error = awusbphy_vbus_detect(dev, &vbus_det); + if (error) + goto out; + if (vbus_det == 0) + CLR4(sc->phy_ctrl, OTG_PHY_CFG, + OTG_PHY_ROUTE_OTG); + else + SET4(sc->phy_ctrl, OTG_PHY_CFG, + OTG_PHY_ROUTE_OTG); + } + break; + case PHY_USB_MODE_OTG: + /* TODO */ + break; + } + + sc->mode = mode; + + +out: return (0); } Modified: stable/12/sys/arm/allwinner/axp81x.c ============================================================================== --- stable/12/sys/arm/allwinner/axp81x.c Mon Aug 5 15:56:44 2019 (r350591) +++ stable/12/sys/arm/allwinner/axp81x.c Mon Aug 5 16:36:11 2019 (r350592) @@ -126,12 +126,16 @@ MALLOC_DEFINE(M_AXP8XX_REG, "AXP8xx regulator", "AXP8x #define AXP_IRQSTAT5 0x4c #define AXP_IRQSTAT5_POKSIRQ (1 << 4) #define AXP_GPIO0_CTRL 0x90 +#define AXP_GPIO0LDO_CTRL 0x91 #define AXP_GPIO1_CTRL 0x92 +#define AXP_GPIO1LDO_CTRL 0x93 #define AXP_GPIO_FUNC (0x7 << 0) #define AXP_GPIO_FUNC_SHIFT 0 #define AXP_GPIO_FUNC_DRVLO 0 #define AXP_GPIO_FUNC_DRVHI 1 #define AXP_GPIO_FUNC_INPUT 2 +#define AXP_GPIO_FUNC_LDO_ON 3 +#define AXP_GPIO_FUNC_LDO_OFF 4 #define AXP_GPIO_SIGBIT 0x94 #define AXP_GPIO_PD 0x97 @@ -166,6 +170,8 @@ struct axp8xx_regdef { char *supply_name; uint8_t enable_reg; uint8_t enable_mask; + uint8_t enable_value; + uint8_t disable_value; uint8_t voltage_reg; int voltage_min; int voltage_max; @@ -197,6 +203,8 @@ enum axp8xx_reg_id { AXP8XX_REG_ID_FLDO1, AXP8XX_REG_ID_FLDO2, AXP813_REG_ID_FLDO3, + AXP8XX_REG_ID_GPIO0_LDO, + AXP8XX_REG_ID_GPIO1_LDO, }; static struct axp8xx_regdef axp803_regdefs[] = { @@ -204,7 +212,8 @@ static struct axp8xx_regdef axp803_regdefs[] = { .id = AXP803_REG_ID_DC1SW, .name = "dc1sw", .enable_reg = AXP_POWERCTL2, - .enable_mask = AXP_POWERCTL2_DC1SW, + .enable_mask = (uint8_t) AXP_POWERCTL2_DC1SW, + .enable_value = AXP_POWERCTL2_DC1SW, }, }; @@ -213,7 +222,8 @@ static struct axp8xx_regdef axp813_regdefs[] = { .id = AXP813_REG_ID_DCDC7, .name = "dcdc7", .enable_reg = AXP_POWERCTL1, - .enable_mask = AXP_POWERCTL1_DCDC7, + .enable_mask = (uint8_t) AXP_POWERCTL1_DCDC7, + .enable_value = AXP_POWERCTL1_DCDC7, .voltage_reg = AXP_VOLTCTL_DCDC7, .voltage_min = 600, .voltage_max = 1520, @@ -229,7 +239,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DCDC1, .name = "dcdc1", .enable_reg = AXP_POWERCTL1, - .enable_mask = AXP_POWERCTL1_DCDC1, + .enable_mask = (uint8_t) AXP_POWERCTL1_DCDC1, + .enable_value = AXP_POWERCTL1_DCDC1, .voltage_reg = AXP_VOLTCTL_DCDC1, .voltage_min = 1600, .voltage_max = 3400, @@ -240,7 +251,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DCDC2, .name = "dcdc2", .enable_reg = AXP_POWERCTL1, - .enable_mask = AXP_POWERCTL1_DCDC2, + .enable_mask = (uint8_t) AXP_POWERCTL1_DCDC2, + .enable_value = AXP_POWERCTL1_DCDC2, .voltage_reg = AXP_VOLTCTL_DCDC2, .voltage_min = 500, .voltage_max = 1300, @@ -253,7 +265,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DCDC3, .name = "dcdc3", .enable_reg = AXP_POWERCTL1, - .enable_mask = AXP_POWERCTL1_DCDC3, + .enable_mask = (uint8_t) AXP_POWERCTL1_DCDC3, + .enable_value = AXP_POWERCTL1_DCDC3, .voltage_reg = AXP_VOLTCTL_DCDC3, .voltage_min = 500, .voltage_max = 1300, @@ -266,7 +279,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DCDC4, .name = "dcdc4", .enable_reg = AXP_POWERCTL1, - .enable_mask = AXP_POWERCTL1_DCDC4, + .enable_mask = (uint8_t) AXP_POWERCTL1_DCDC4, + .enable_value = AXP_POWERCTL1_DCDC4, .voltage_reg = AXP_VOLTCTL_DCDC4, .voltage_min = 500, .voltage_max = 1300, @@ -279,7 +293,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DCDC5, .name = "dcdc5", .enable_reg = AXP_POWERCTL1, - .enable_mask = AXP_POWERCTL1_DCDC5, + .enable_mask = (uint8_t) AXP_POWERCTL1_DCDC5, + .enable_value = AXP_POWERCTL1_DCDC5, .voltage_reg = AXP_VOLTCTL_DCDC5, .voltage_min = 800, .voltage_max = 1840, @@ -292,7 +307,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DCDC6, .name = "dcdc6", .enable_reg = AXP_POWERCTL1, - .enable_mask = AXP_POWERCTL1_DCDC6, + .enable_mask = (uint8_t) AXP_POWERCTL1_DCDC6, + .enable_value = AXP_POWERCTL1_DCDC6, .voltage_reg = AXP_VOLTCTL_DCDC6, .voltage_min = 600, .voltage_max = 1520, @@ -305,7 +321,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DLDO1, .name = "dldo1", .enable_reg = AXP_POWERCTL2, - .enable_mask = AXP_POWERCTL2_DLDO1, + .enable_mask = (uint8_t) AXP_POWERCTL2_DLDO1, + .enable_value = AXP_POWERCTL2_DLDO1, .voltage_reg = AXP_VOLTCTL_DLDO1, .voltage_min = 700, .voltage_max = 3300, @@ -316,7 +333,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DLDO2, .name = "dldo2", .enable_reg = AXP_POWERCTL2, - .enable_mask = AXP_POWERCTL2_DLDO2, + .enable_mask = (uint8_t) AXP_POWERCTL2_DLDO2, + .enable_value = AXP_POWERCTL2_DLDO2, .voltage_reg = AXP_VOLTCTL_DLDO2, .voltage_min = 700, .voltage_max = 4200, @@ -329,7 +347,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DLDO3, .name = "dldo3", .enable_reg = AXP_POWERCTL2, - .enable_mask = AXP_POWERCTL2_DLDO3, + .enable_mask = (uint8_t) AXP_POWERCTL2_DLDO3, + .enable_value = AXP_POWERCTL2_DLDO3, .voltage_reg = AXP_VOLTCTL_DLDO3, .voltage_min = 700, .voltage_max = 3300, @@ -340,7 +359,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_DLDO4, .name = "dldo4", .enable_reg = AXP_POWERCTL2, - .enable_mask = AXP_POWERCTL2_DLDO4, + .enable_mask = (uint8_t) AXP_POWERCTL2_DLDO4, + .enable_value = AXP_POWERCTL2_DLDO4, .voltage_reg = AXP_VOLTCTL_DLDO4, .voltage_min = 700, .voltage_max = 3300, @@ -351,7 +371,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_ALDO1, .name = "aldo1", .enable_reg = AXP_POWERCTL3, - .enable_mask = AXP_POWERCTL3_ALDO1, + .enable_mask = (uint8_t) AXP_POWERCTL3_ALDO1, + .enable_value = AXP_POWERCTL3_ALDO1, .voltage_min = 700, .voltage_max = 3300, .voltage_step1 = 100, @@ -361,7 +382,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_ALDO2, .name = "aldo2", .enable_reg = AXP_POWERCTL3, - .enable_mask = AXP_POWERCTL3_ALDO2, + .enable_mask = (uint8_t) AXP_POWERCTL3_ALDO2, + .enable_value = AXP_POWERCTL3_ALDO2, .voltage_min = 700, .voltage_max = 3300, .voltage_step1 = 100, @@ -371,7 +393,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_ALDO3, .name = "aldo3", .enable_reg = AXP_POWERCTL3, - .enable_mask = AXP_POWERCTL3_ALDO3, + .enable_mask = (uint8_t) AXP_POWERCTL3_ALDO3, + .enable_value = AXP_POWERCTL3_ALDO3, .voltage_min = 700, .voltage_max = 3300, .voltage_step1 = 100, @@ -381,7 +404,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_ELDO1, .name = "eldo1", .enable_reg = AXP_POWERCTL2, - .enable_mask = AXP_POWERCTL2_ELDO1, + .enable_mask = (uint8_t) AXP_POWERCTL2_ELDO1, + .enable_value = AXP_POWERCTL2_ELDO1, .voltage_min = 700, .voltage_max = 1900, .voltage_step1 = 50, @@ -391,7 +415,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_ELDO2, .name = "eldo2", .enable_reg = AXP_POWERCTL2, - .enable_mask = AXP_POWERCTL2_ELDO2, + .enable_mask = (uint8_t) AXP_POWERCTL2_ELDO2, + .enable_value = AXP_POWERCTL2_ELDO2, .voltage_min = 700, .voltage_max = 1900, .voltage_step1 = 50, @@ -401,7 +426,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_ELDO3, .name = "eldo3", .enable_reg = AXP_POWERCTL2, - .enable_mask = AXP_POWERCTL2_ELDO3, + .enable_mask = (uint8_t) AXP_POWERCTL2_ELDO3, + .enable_value = AXP_POWERCTL2_ELDO3, .voltage_min = 700, .voltage_max = 1900, .voltage_step1 = 50, @@ -411,7 +437,8 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_FLDO1, .name = "fldo1", .enable_reg = AXP_POWERCTL3, - .enable_mask = AXP_POWERCTL3_FLDO1, + .enable_mask = (uint8_t) AXP_POWERCTL3_FLDO1, + .enable_value = AXP_POWERCTL3_FLDO1, .voltage_min = 700, .voltage_max = 1450, .voltage_step1 = 50, @@ -421,12 +448,39 @@ static struct axp8xx_regdef axp8xx_common_regdefs[] = .id = AXP8XX_REG_ID_FLDO2, .name = "fldo2", .enable_reg = AXP_POWERCTL3, - .enable_mask = AXP_POWERCTL3_FLDO2, + .enable_mask = (uint8_t) AXP_POWERCTL3_FLDO2, + .enable_value = AXP_POWERCTL3_FLDO2, .voltage_min = 700, .voltage_max = 1450, .voltage_step1 = 50, .voltage_nstep1 = 15, }, + { + .id = AXP8XX_REG_ID_GPIO0_LDO, + .name = "ldo-io0", + .enable_reg = AXP_GPIO0_CTRL, + .enable_mask = (uint8_t) AXP_GPIO_FUNC, + .enable_value = AXP_GPIO_FUNC_LDO_ON, + .disable_value = AXP_GPIO_FUNC_LDO_OFF, + .voltage_reg = AXP_GPIO0LDO_CTRL, + .voltage_min = 700, + .voltage_max = 3300, + .voltage_step1 = 100, + .voltage_nstep1 = 26, + }, + { + .id = AXP8XX_REG_ID_GPIO1_LDO, + .name = "ldo-io1", + .enable_reg = AXP_GPIO1_CTRL, + .enable_mask = (uint8_t) AXP_GPIO_FUNC, + .enable_value = AXP_GPIO_FUNC_LDO_ON, + .disable_value = AXP_GPIO_FUNC_LDO_OFF, + .voltage_reg = AXP_GPIO1LDO_CTRL, + .voltage_min = 700, + .voltage_max = 3300, + .voltage_step1 = 100, + .voltage_nstep1 = 26, + }, }; struct axp8xx_softc; @@ -520,10 +574,15 @@ axp8xx_regnode_enable(struct regnode *regnode, bool en sc->def->name); axp8xx_read(sc->base_dev, sc->def->enable_reg, &val, 1); + val &= ~sc->def->enable_mask; if (enable) - val |= sc->def->enable_mask; - else - val &= ~sc->def->enable_mask; + val |= sc->def->enable_value; + else { + if (sc->def->disable_value) + val |= sc->def->disable_value; + else + val &= ~sc->def->enable_value; + } axp8xx_write(sc->base_dev, sc->def->enable_reg, val); *udelay = 0; Modified: stable/12/sys/conf/files ============================================================================== --- stable/12/sys/conf/files Mon Aug 5 15:56:44 2019 (r350591) +++ stable/12/sys/conf/files Mon Aug 5 16:36:11 2019 (r350592) @@ -1756,6 +1756,8 @@ dev/extres/clk/clk_mux.c optional ext_resources clk fd dev/extres/phy/phy.c optional ext_resources phy fdt dev/extres/phy/phydev_if.m optional ext_resources phy fdt dev/extres/phy/phynode_if.m optional ext_resources phy fdt +dev/extres/phy/phy_usb.c optional ext_resources phy fdt +dev/extres/phy/phynode_usb_if.m optional ext_resources phy fdt dev/extres/hwreset/hwreset.c optional ext_resources hwreset fdt dev/extres/hwreset/hwreset_if.m optional ext_resources hwreset fdt dev/extres/nvmem/nvmem.c optional ext_resources nvmem fdt Modified: stable/12/sys/dev/extres/phy/phy.c ============================================================================== --- stable/12/sys/dev/extres/phy/phy.c Mon Aug 5 15:56:44 2019 (r350591) +++ stable/12/sys/dev/extres/phy/phy.c Mon Aug 5 16:36:11 2019 (r350592) @@ -43,18 +43,12 @@ __FBSDID("$FreeBSD$"); #endif #include +#include #include "phydev_if.h" MALLOC_DEFINE(M_PHY, "phy", "Phy framework"); -/* Forward declarations. */ -struct phy; -struct phynode; - -typedef TAILQ_HEAD(phynode_list, phynode) phynode_list_t; -typedef TAILQ_HEAD(phy_list, phy) phy_list_t; - /* Default phy methods. */ static int phynode_method_init(struct phynode *phynode); static int phynode_method_enable(struct phynode *phynode, bool disable); @@ -73,52 +67,9 @@ static phynode_method_t phynode_methods[] = { }; DEFINE_CLASS_0(phynode, phynode_class, phynode_methods, 0); -/* - * Phy node - */ -struct phynode { - KOBJ_FIELDS; - - TAILQ_ENTRY(phynode) phylist_link; /* Global list entry */ - phy_list_t consumers_list; /* Consumers list */ - - - /* Details of this device. */ - const char *name; /* Globally unique name */ - - device_t pdev; /* Producer device_t */ - void *softc; /* Producer softc */ - intptr_t id; /* Per producer unique id */ -#ifdef FDT - phandle_t ofw_node; /* OFW node of phy */ -#endif - struct sx lock; /* Lock for this phy */ - int ref_cnt; /* Reference counter */ - int enable_cnt; /* Enabled counter */ -}; - -struct phy { - device_t cdev; /* consumer device*/ - struct phynode *phynode; - TAILQ_ENTRY(phy) link; /* Consumers list entry */ - - int enable_cnt; -}; - static phynode_list_t phynode_list = TAILQ_HEAD_INITIALIZER(phynode_list); -static struct sx phynode_topo_lock; SX_SYSINIT(phy_topology, &phynode_topo_lock, "Phy topology lock"); - -#define PHY_TOPO_SLOCK() sx_slock(&phynode_topo_lock) -#define PHY_TOPO_XLOCK() sx_xlock(&phynode_topo_lock) -#define PHY_TOPO_UNLOCK() sx_unlock(&phynode_topo_lock) -#define PHY_TOPO_ASSERT() sx_assert(&phynode_topo_lock, SA_LOCKED) -#define PHY_TOPO_XASSERT() sx_assert(&phynode_topo_lock, SA_XLOCKED) - -#define PHYNODE_SLOCK(_sc) sx_slock(&((_sc)->lock)) -#define PHYNODE_XLOCK(_sc) sx_xlock(&((_sc)->lock)) -#define PHYNODE_UNLOCK(_sc) sx_unlock(&((_sc)->lock)) /* ---------------------------------------------------------------------------- * Copied: stable/12/sys/dev/extres/phy/phy_internal.h (from r340848, head/sys/dev/extres/phy/phy_internal.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dev/extres/phy/phy_internal.h Mon Aug 5 16:36:11 2019 (r350592, copy of r340848, head/sys/dev/extres/phy/phy_internal.h) @@ -0,0 +1,83 @@ +/*- + * Copyright 2018 Michal Meloun + * 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. + * + * 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. + * + * $FreeBSD$ + */ + +#ifndef DEV_EXTRES_PHY_INTERNAL_H +#define DEV_EXTRES_PHY_INTERNAL_H + +/* Forward declarations. */ +struct phy; +struct phynode; + +typedef TAILQ_HEAD(phynode_list, phynode) phynode_list_t; +typedef TAILQ_HEAD(phy_list, phy) phy_list_t; + +/* + * Phy node + */ +struct phynode { + KOBJ_FIELDS; + + TAILQ_ENTRY(phynode) phylist_link; /* Global list entry */ + phy_list_t consumers_list; /* Consumers list */ + + + /* Details of this device. */ + const char *name; /* Globally unique name */ + + device_t pdev; /* Producer device_t */ + void *softc; /* Producer softc */ + intptr_t id; /* Per producer unique id */ +#ifdef FDT + phandle_t ofw_node; /* OFW node of phy */ +#endif + struct sx lock; /* Lock for this phy */ + int ref_cnt; /* Reference counter */ + int enable_cnt; /* Enabled counter */ +}; + +struct phy { + device_t cdev; /* consumer device*/ + struct phynode *phynode; + TAILQ_ENTRY(phy) link; /* Consumers list entry */ + + int enable_cnt; +}; + + +#define PHY_TOPO_SLOCK() sx_slock(&phynode_topo_lock) +#define PHY_TOPO_XLOCK() sx_xlock(&phynode_topo_lock) +#define PHY_TOPO_UNLOCK() sx_unlock(&phynode_topo_lock) +#define PHY_TOPO_ASSERT() sx_assert(&phynode_topo_lock, SA_LOCKED) +#define PHY_TOPO_XASSERT() sx_assert(&phynode_topo_lock, SA_XLOCKED) + +#define PHYNODE_SLOCK(_sc) sx_slock(&((_sc)->lock)) +#define PHYNODE_XLOCK(_sc) sx_xlock(&((_sc)->lock)) +#define PHYNODE_UNLOCK(_sc) sx_unlock(&((_sc)->lock)) + +struct sx phynode_topo_lock; + +#endif /* DEV_EXTRES_PHY_INTERNAL_H */ Copied: stable/12/sys/dev/extres/phy/phy_usb.c (from r340848, head/sys/dev/extres/phy/phy_usb.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dev/extres/phy/phy_usb.c Mon Aug 5 16:36:11 2019 (r350592, copy of r340848, head/sys/dev/extres/phy/phy_usb.c) @@ -0,0 +1,149 @@ +/*- + * Copyright 2018 Michal Meloun + * 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. + * + * 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 "phydev_if.h" + +/* + * USB phy controller methods. + */ +static phynode_usb_method_t phynode_usb_methods[] = { + + PHYNODEUSBMETHOD_END +}; +DEFINE_CLASS_1(phynode_usb, phynode_usb_class, phynode_usb_methods, + 0, phynode_class); + +/* + * Create and initialize phy object, but do not register it. + */ +struct phynode * +phynode_usb_create(device_t pdev, phynode_class_t phynode_class, + struct phynode_usb_init_def *def) + +{ + struct phynode *phynode; + struct phynode_usb_sc *sc; + + phynode = phynode_create(pdev, phynode_class, &def->phynode_init_def); + if (phynode == NULL) + return (NULL); + sc = phynode_get_softc(phynode); + sc->std_param = def->std_param; + return (phynode); +} + +struct phynode +*phynode_usb_register(struct phynode *phynode) +{ + + return (phynode_register(phynode)); +} + +/* -------------------------------------------------------------------------- + * + * Real consumers executive + * + */ + +/* + * Set USB phy mode. (PHY_USB_MODE_*) + */ +int +phynode_usb_set_mode(struct phynode *phynode, int usb_mode) +{ + int rv; + + PHY_TOPO_ASSERT(); + + PHYNODE_XLOCK(phynode); + rv = PHYNODE_USB_SET_MODE(phynode, usb_mode); + PHYNODE_UNLOCK(phynode); + return (rv); +} + +/* + * Get USB phy mode. (PHY_USB_MODE_*) + */ +int +phynode_usb_get_mode(struct phynode *phynode, int *usb_mode) +{ + int rv; + + PHY_TOPO_ASSERT(); + + PHYNODE_XLOCK(phynode); + rv = PHYNODE_USB_GET_MODE(phynode, usb_mode); + PHYNODE_UNLOCK(phynode); + return (rv); +} + + /* -------------------------------------------------------------------------- + * + * USB phy consumers interface. + * + */ +int phy_usb_set_mode(phy_t phy, int usb_mode) +{ + int rv; + struct phynode *phynode; + + phynode = phy->phynode; + KASSERT(phynode->ref_cnt > 0, + ("Attempt to access unreferenced phy.\n")); + + PHY_TOPO_SLOCK(); + rv = phynode_usb_set_mode(phynode, usb_mode); + PHY_TOPO_UNLOCK(); + return (rv); +} + +int phy_usb_get_mode(phy_t phy, int *usb_mode) +{ + int rv; + struct phynode *phynode; + + phynode = phy->phynode; + KASSERT(phynode->ref_cnt > 0, + ("Attempt to access unreferenced phy.\n")); + + PHY_TOPO_SLOCK(); + rv = phynode_usb_get_mode(phynode, usb_mode); + PHY_TOPO_UNLOCK(); + return (rv); +} Copied: stable/12/sys/dev/extres/phy/phy_usb.h (from r340848, head/sys/dev/extres/phy/phy_usb.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dev/extres/phy/phy_usb.h Mon Aug 5 16:36:11 2019 (r350592, copy of r340848, head/sys/dev/extres/phy/phy_usb.h) @@ -0,0 +1,85 @@ +/*- + * Copyright 2018 Michal Meloun + * 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. + * + * 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 _DEV_EXTRES_PHY_USB_H_ +#define _DEV_EXTRES_PHY_USB_H_ + +#include +#include "phynode_usb_if.h" + +#define PHY_USB_MODE_UNKNOWN 0 +#define PHY_USB_MODE_HOST 1 +#define PHY_USB_MODE_OTG 2 +#define PHY_USB_MODE_DEVICE 3 + +/* Standard USB phy parameters. */ +struct phynode_usb_std_param { + int usb_mode; +}; + +struct phynode_usb_sc { + struct phynode_usb_std_param std_param; +}; + +/* Initialization parameters. */ +struct phynode_usb_init_def { + struct phynode_init_def phynode_init_def; + struct phynode_usb_std_param std_param; /* Standard parameters */ +}; + + +/* + * Shorthands for constructing method tables. + */ +#define PHYNODEUSBMETHOD KOBJMETHOD +#define PHYNODEUSBMETHOD_END KOBJMETHOD_END +#define phynode_usb_method_t kobj_method_t +#define phynode_usb_class_t kobj_class_t +DECLARE_CLASS(phynode_usb_class); + +struct phynode *phynode_usb_create(device_t pdev, phynode_class_t phynode_class, + struct phynode_usb_init_def *def); +struct phynode *phynode_usb_register(struct phynode *phynode); + +#if 0 +/* XXX to be implemented */ +#ifdef FDT +int phynode_usb_parse_ofw_stdparam(device_t dev, phandle_t node, + struct phynode_usb_init_def *def); +#endif +#endif + +/* Phynode functions. */ +int phynode_usb_set_mode(struct phynode *phynode, int usb_mode); +int phynode_usb_get_mode(struct phynode *phynode, int *usb_mode); + +/* Consumer functions. */ +int phy_usb_set_mode(phy_t phy, int usb_mode); +int phy_usb_get_mode(phy_t phy, int *usb_mode); + +#endif /*_DEV_EXTRES_PHY_USB_H_*/ Copied: stable/12/sys/dev/extres/phy/phynode_usb_if.m (from r340848, head/sys/dev/extres/phy/phynode_usb_if.m) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dev/extres/phy/phynode_usb_if.m Mon Aug 5 16:36:11 2019 (r350592, copy of r340848, head/sys/dev/extres/phy/phynode_usb_if.m) @@ -0,0 +1,51 @@ +#- +# Copyright 2018 Michal Meloun +# 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. +# +# 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$ +# + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Mon Aug 5 16:48:18 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 94C32C78E6; Mon, 5 Aug 2019 16:48:18 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462NxZ3Svfz3QGj; Mon, 5 Aug 2019 16:48:18 +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 542AF1EA6F; Mon, 5 Aug 2019 16:48:18 +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 x75GmIox062613; Mon, 5 Aug 2019 16:48:18 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75GmGdd062605; Mon, 5 Aug 2019 16:48:16 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051648.x75GmGdd062605@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 16:48:16 +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: r350593 - in stable/12: release/arm64 sys/arm64/conf sys/dev/extres/clk sys/dev/extres/regulator sys/dts/arm64/overlays X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12: release/arm64 sys/arm64/conf sys/dev/extres/clk sys/dev/extres/regulator sys/dts/arm64/overlays X-SVN-Commit-Revision: 350593 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 16:48:18 -0000 Author: manu Date: Mon Aug 5 16:48:16 2019 New Revision: 350593 URL: https://svnweb.freebsd.org/changeset/base/350593 Log: MFC r340987, r340989, r341254, r341269, r341333 r340987: arm64: Add evdev support to GENERIC r340989: regulator_fixed: Do not disable fixed regulator at probe If the regulator is unused it will be disabled by the regulator_shutdown sysinit. Tested on pinebook where the backlight is controlled by a fixed-regulator. The regulator doesn't have a regulator-boot-on param (I'm gonna upstream this) and so we disable it at probe. We later enable it but this cause the screen to go black. Linux doesn't disable regulator at boot (at least for fixed-regulator) so better match this to have the same UX. Differential Revision: https://reviews.freebsd.org/D17978 r341254: extres: clk: Fix clk_set_assigned ofw_bus_parse_xref_list_get_length doesn't returns the number of elements, fix this. While here when setting the clock to the assigned freqeuncy, allow the clock driver to round down or up the frequency as sometimes the exact frequency cannot be obtain. r341269: release: arm64: Add opp dtbo to PINE* boards r341333: arm64: allwinner: Add 792Mhz frequency to sun50i-a64-opp This is the frequency of the cpu on the Pinebook so add it to make cpufreq find the current setting. Note that this dtbo on the Pinebook doesn't work right now as u-boot dtb doesn't have symbols and so it fails to apply. Linux 4.20 have the dts and will be imported once taggued. X-MFC with: r341268 Modified: stable/12/release/arm64/PINE64-LTS.conf stable/12/release/arm64/PINE64.conf stable/12/release/arm64/PINEBOOK.conf stable/12/sys/arm64/conf/GENERIC stable/12/sys/dev/extres/clk/clk.c stable/12/sys/dev/extres/regulator/regulator_fixed.c stable/12/sys/dts/arm64/overlays/sun50i-a64-opp.dtso Directory Properties: stable/12/ (props changed) Modified: stable/12/release/arm64/PINE64-LTS.conf ============================================================================== --- stable/12/release/arm64/PINE64-LTS.conf Mon Aug 5 16:36:11 2019 (r350592) +++ stable/12/release/arm64/PINE64-LTS.conf Mon Aug 5 16:48:16 2019 (r350593) @@ -14,7 +14,7 @@ KERNEL="GENERIC" MD_ARGS="-x 63 -y 255" NODOC=1 PART_SCHEME="MBR" -FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64-timer" +FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64-timer,sun50i-a64-opp" export BOARDNAME="PINE64-LTS" arm_install_uboot() { Modified: stable/12/release/arm64/PINE64.conf ============================================================================== --- stable/12/release/arm64/PINE64.conf Mon Aug 5 16:36:11 2019 (r350592) +++ stable/12/release/arm64/PINE64.conf Mon Aug 5 16:48:16 2019 (r350593) @@ -14,7 +14,7 @@ KERNEL="GENERIC" MD_ARGS="-x 63 -y 255" NODOC=1 PART_SCHEME="MBR" -FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64-timer" +FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64-timer,sun50i-a64-opp" export BOARDNAME="PINE64" arm_install_uboot() { Modified: stable/12/release/arm64/PINEBOOK.conf ============================================================================== --- stable/12/release/arm64/PINEBOOK.conf Mon Aug 5 16:36:11 2019 (r350592) +++ stable/12/release/arm64/PINEBOOK.conf Mon Aug 5 16:48:16 2019 (r350593) @@ -14,7 +14,7 @@ KERNEL="GENERIC" MD_ARGS="-x 63 -y 255" NODOC=1 PART_SCHEME="MBR" -FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64-timer" +FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64-timer,sun50i-a64-opp" export BOARDNAME="PINEBOOK" arm_install_uboot() { Modified: stable/12/sys/arm64/conf/GENERIC ============================================================================== --- stable/12/sys/arm64/conf/GENERIC Mon Aug 5 16:36:11 2019 (r350592) +++ stable/12/sys/arm64/conf/GENERIC Mon Aug 5 16:48:16 2019 (r350593) @@ -241,6 +241,11 @@ device kbdmux device vt_efifb +# EVDEV support +device evdev # input event device support +options EVDEV_SUPPORT # evdev support in legacy drivers +device uinput # install /dev/uinput cdev + # Pseudo devices. device crypto # core crypto support device loop # Network loopback Modified: stable/12/sys/dev/extres/clk/clk.c ============================================================================== --- stable/12/sys/dev/extres/clk/clk.c Mon Aug 5 16:36:11 2019 (r350592) +++ stable/12/sys/dev/extres/clk/clk.c Mon Aug 5 16:48:16 2019 (r350593) @@ -1297,7 +1297,7 @@ clk_set_assigned_rates(device_t dev, clk_t clk, uint32 { int rv; - rv = clk_set_freq(clk, freq, 0); + rv = clk_set_freq(clk, freq, CLK_SET_ROUND_DOWN | CLK_SET_ROUND_UP); if (rv != 0) { device_printf(dev, "Failed to set %s to a frequency of %u\n", clk_get_name(clk), freq); @@ -1330,9 +1330,9 @@ clk_set_assigned(device_t dev, phandle_t node) if (nrates <= 0) nrates = 0; - nparents = ofw_bus_parse_xref_list_get_length(node, - "assigned-clock-parents", "#clock-cells", &nparents); - + if (ofw_bus_parse_xref_list_get_length(node, + "assigned-clock-parents", "#clock-cells", &nparents) != 0) + nparents = -1; for (i = 0; i < nclocks; i++) { /* First get the clock we are supposed to modify */ rv = clk_get_by_ofw_index_prop(dev, 0, "assigned-clocks", Modified: stable/12/sys/dev/extres/regulator/regulator_fixed.c ============================================================================== --- stable/12/sys/dev/extres/regulator/regulator_fixed.c Mon Aug 5 16:36:11 2019 (r350592) +++ stable/12/sys/dev/extres/regulator/regulator_fixed.c Mon Aug 5 16:48:16 2019 (r350593) @@ -145,7 +145,6 @@ regnode_fixed_init(struct regnode *regnode) struct regnode_fixed_sc *sc; struct gpiobus_pin *pin; uint32_t flags; - bool enable; int rv; sc = regnode_get_softc(regnode); @@ -158,14 +157,15 @@ regnode_fixed_init(struct regnode *regnode) flags = GPIO_PIN_OUTPUT; if (sc->gpio_open_drain) flags |= GPIO_PIN_OPENDRAIN; - enable = sc->param->boot_on || sc->param->always_on; - if (!sc->param->enable_active_high) - enable = !enable; - rv = GPIO_PIN_SET(pin->dev, pin->pin, enable); - if (rv != 0) { - device_printf(dev, "Cannot set GPIO pin: %d\n", pin->pin); - return (rv); + if (sc->param->boot_on || sc->param->always_on) { + rv = GPIO_PIN_SET(pin->dev, pin->pin, sc->param->enable_active_high); + if (rv != 0) { + device_printf(dev, "Cannot set GPIO pin: %d\n", + pin->pin); + return (rv); + } } + rv = GPIO_PIN_SETFLAGS(pin->dev, pin->pin, flags); if (rv != 0) { device_printf(dev, "Cannot configure GPIO pin: %d\n", pin->pin); Modified: stable/12/sys/dts/arm64/overlays/sun50i-a64-opp.dtso ============================================================================== --- stable/12/sys/dts/arm64/overlays/sun50i-a64-opp.dtso Mon Aug 5 16:36:11 2019 (r350592) +++ stable/12/sys/dts/arm64/overlays/sun50i-a64-opp.dtso Mon Aug 5 16:48:16 2019 (r350593) @@ -15,6 +15,11 @@ opp-microvolt = <1040000>; clock-latency-ns = <244144>; /* 8 32k periods */ }; + opp-792000000 { + opp-hz = /bits/ 64 <792000000>; + opp-microvolt = <1100000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; opp-816000000 { opp-hz = /bits/ 64 <816000000>; opp-microvolt = <1100000>; From owner-svn-src-stable@freebsd.org Mon Aug 5 16:56:16 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9BBA1C7C32; Mon, 5 Aug 2019 16:56:16 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462P6m3fvxz3Qq5; Mon, 5 Aug 2019 16:56:16 +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 5EF661EC45; Mon, 5 Aug 2019 16:56:16 +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 x75GuGYO068446; Mon, 5 Aug 2019 16:56:16 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75GuBxx068422; Mon, 5 Aug 2019 16:56:11 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051656.x75GuBxx068422@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 16:56:11 +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: r350594 - in stable/12/sys: gnu/dts/arm gnu/dts/arm64/actions gnu/dts/arm64/allwinner gnu/dts/arm64/altera gnu/dts/arm64/amd gnu/dts/arm64/amlogic gnu/dts/arm64/arm gnu/dts/arm64/broadc... X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: gnu/dts/arm gnu/dts/arm64/actions gnu/dts/arm64/allwinner gnu/dts/arm64/altera gnu/dts/arm64/amd gnu/dts/arm64/amlogic gnu/dts/arm64/arm gnu/dts/arm64/broadcom gnu/dts/arm64/broadcom... X-SVN-Commit-Revision: 350594 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 16:56:16 -0000 Author: manu Date: Mon Aug 5 16:56:11 2019 New Revision: 350594 URL: https://svnweb.freebsd.org/changeset/base/350594 Log: MFC r342936, r343873 r342936: Import DTS from Linux 4.20 r343873: arm64: dtb: allwinner: Add the new pine64-lts dtb file to the build X-MFC-With: r342936 Added: stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2101.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/am335x-moxa-uc-2101.dts stable/12/sys/gnu/dts/arm/am3517-evm-ui.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/am3517-evm-ui.dtsi stable/12/sys/gnu/dts/arm/armada-385-db-88f6820-amc.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/armada-385-db-88f6820-amc.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-arm-stardragon4800-rep2.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/aspeed-bmc-arm-stardragon4800-rep2.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-facebook-tiogapass.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/aspeed-bmc-facebook-tiogapass.dts stable/12/sys/gnu/dts/arm/bcm2837-rpi-cm3-io3.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/bcm2837-rpi-cm3-io3.dts stable/12/sys/gnu/dts/arm/bcm2837-rpi-cm3.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/bcm2837-rpi-cm3.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-icore-1.5.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/imx6qdl-icore-1.5.dtsi stable/12/sys/gnu/dts/arm/imx6ul-ccimx6ulsbcpro.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/imx6ul-ccimx6ulsbcpro.dts stable/12/sys/gnu/dts/arm/imx6ulz-14x14-evk.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/imx6ulz-14x14-evk.dts stable/12/sys/gnu/dts/arm/imx6ulz.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/imx6ulz.dtsi stable/12/sys/gnu/dts/arm/meson8b-ec100.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/meson8b-ec100.dts stable/12/sys/gnu/dts/arm/omap3-gta04a5one.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/omap3-gta04a5one.dts stable/12/sys/gnu/dts/arm/rk3288-tinker-s.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/rk3288-tinker-s.dts stable/12/sys/gnu/dts/arm/rk3288-tinker.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/rk3288-tinker.dtsi stable/12/sys/gnu/dts/arm/socfpga_cyclone5_de0_nano_soc.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/socfpga_cyclone5_de0_nano_soc.dts stable/12/sys/gnu/dts/arm/sun8i-h3-bananapi-m2-plus-v1.2.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/sun8i-h3-bananapi-m2-plus-v1.2.dts stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-zero-plus2.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/sun8i-h3-orangepi-zero-plus2.dts stable/12/sys/gnu/dts/arm/sunxi-bananapi-m2-plus-v1.2.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/sunxi-bananapi-m2-plus-v1.2.dtsi stable/12/sys/gnu/dts/arm/sunxi-bananapi-m2-plus.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/sunxi-bananapi-m2-plus.dtsi stable/12/sys/gnu/dts/arm/tegra20-colibri-eval-v3.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/tegra20-colibri-eval-v3.dts stable/12/sys/gnu/dts/arm/tegra30-apalis-v1.1-eval.dts - copied unchanged from r342936, head/sys/gnu/dts/arm/tegra30-apalis-v1.1-eval.dts stable/12/sys/gnu/dts/arm/tegra30-apalis-v1.1.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm/tegra30-apalis-v1.1.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pine64-lts.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/allwinner/sun50i-a64-pine64-lts.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-bananapi-m2-plus-v1.2.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/allwinner/sun50i-h5-bananapi-m2-plus-v1.2.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-bananapi-m2-plus.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/allwinner/sun50i-h5-bananapi-m2-plus.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi-one-plus.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi-one-plus.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-g12a-u200.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/amlogic/meson-g12a-u200.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-g12a.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/amlogic/meson-g12a.dtsi stable/12/sys/gnu/dts/arm64/broadcom/bcm2837-rpi-cm3-io3.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/broadcom/bcm2837-rpi-cm3-io3.dts stable/12/sys/gnu/dts/arm64/hisilicon/hi3670-hikey970.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/hisilicon/hi3670-hikey970.dts stable/12/sys/gnu/dts/arm64/hisilicon/hi3670.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/hisilicon/hi3670.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-8040-clearfog-gt-8k.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/marvell/armada-8040-clearfog-gt-8k.dts stable/12/sys/gnu/dts/arm64/mediatek/mt7622-bananapi-bpi-r64.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/mediatek/mt7622-bananapi-bpi-r64.dts stable/12/sys/gnu/dts/arm64/qcom/msm8998-mtp.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/qcom/msm8998-mtp.dts stable/12/sys/gnu/dts/arm64/qcom/msm8998-mtp.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/qcom/msm8998-mtp.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8998.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/qcom/msm8998.dtsi stable/12/sys/gnu/dts/arm64/qcom/pmi8998.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/qcom/pmi8998.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a774a1.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/renesas/r8a774a1.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77965-m3nulcb-kf.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/renesas/r8a77965-m3nulcb-kf.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77965-m3nulcb.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/renesas/r8a77965-m3nulcb.dts stable/12/sys/gnu/dts/arm64/rockchip/px30-evb.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/rockchip/px30-evb.dts stable/12/sys/gnu/dts/arm64/rockchip/px30.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/rockchip/px30.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-roc-pc.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/rockchip/rk3399-roc-pc.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rock960.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/rockchip/rk3399-rock960.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rock960.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/rockchip/rk3399-rock960.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rockpro64.dts - copied unchanged from r342936, head/sys/gnu/dts/arm64/rockchip/rk3399-rockpro64.dts stable/12/sys/gnu/dts/arm64/synaptics/as370.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/synaptics/as370.dtsi stable/12/sys/gnu/dts/arm64/ti/k3-am65-mcu.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/ti/k3-am65-mcu.dtsi stable/12/sys/gnu/dts/arm64/ti/k3-am65-wakeup.dtsi - copied unchanged from r342936, head/sys/gnu/dts/arm64/ti/k3-am65-wakeup.dtsi stable/12/sys/gnu/dts/include/dt-bindings/clock/hi3670-clock.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/hi3670-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/jz4725b-cgu.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/jz4725b-cgu.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,camcc-sdm845.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/qcom,camcc-sdm845.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-qcs404.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-qcs404.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-sdm660.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-sdm660.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r7s9210-cpg-mssr.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/r7s9210-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7744-cpg-mssr.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/r8a7744-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a774a1-cpg-mssr.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/r8a774a1-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a774c0-cpg-mssr.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/r8a774c0-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/xlnx,zynqmp-clk.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/clock/xlnx,zynqmp-clk.h stable/12/sys/gnu/dts/include/dt-bindings/gpio/meson-g12a-gpio.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/gpio/meson-g12a-gpio.h stable/12/sys/gnu/dts/include/dt-bindings/mfd/at91-usart.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/mfd/at91-usart.h stable/12/sys/gnu/dts/include/dt-bindings/phy/phy-ocelot-serdes.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/phy/phy-ocelot-serdes.h stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/rzn1-pinctrl.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/pinctrl/rzn1-pinctrl.h stable/12/sys/gnu/dts/include/dt-bindings/power/owl-s900-powergate.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/power/owl-s900-powergate.h stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7744-sysc.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/power/r8a7744-sysc.h stable/12/sys/gnu/dts/include/dt-bindings/power/r8a774a1-sysc.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/power/r8a774a1-sysc.h stable/12/sys/gnu/dts/include/dt-bindings/power/r8a774c0-sysc.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/power/r8a774c0-sysc.h stable/12/sys/gnu/dts/include/dt-bindings/reset/actions,s700-reset.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/reset/actions,s700-reset.h stable/12/sys/gnu/dts/include/dt-bindings/reset/actions,s900-reset.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/reset/actions,s900-reset.h stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,sdm845-pdc.h - copied unchanged from r342936, head/sys/gnu/dts/include/dt-bindings/reset/qcom,sdm845-pdc.h Deleted: stable/12/sys/gnu/dts/arm/socfpga_cyclone5_de0_sockit.dts Modified: stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi stable/12/sys/gnu/dts/arm/am335x-boneblack-common.dtsi stable/12/sys/gnu/dts/arm/am335x-chiliboard.dts stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts stable/12/sys/gnu/dts/arm/am335x-evm.dts stable/12/sys/gnu/dts/arm/am335x-evmsk.dts stable/12/sys/gnu/dts/arm/am335x-igep0033.dtsi stable/12/sys/gnu/dts/arm/am335x-lxm.dts stable/12/sys/gnu/dts/arm/am335x-moxa-uc-8100-me-t.dts stable/12/sys/gnu/dts/arm/am335x-nano.dts stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-pdu001.dts stable/12/sys/gnu/dts/arm/am335x-pepper.dts stable/12/sys/gnu/dts/arm/am335x-sancloud-bbe.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-shc.dts stable/12/sys/gnu/dts/arm/am3517-evm.dts stable/12/sys/gnu/dts/arm/am3517-som.dtsi stable/12/sys/gnu/dts/arm/am4372.dtsi stable/12/sys/gnu/dts/arm/am437x-cm-t43.dts stable/12/sys/gnu/dts/arm/am437x-gp-evm.dts stable/12/sys/gnu/dts/arm/am437x-idk-evm.dts stable/12/sys/gnu/dts/arm/am437x-sk-evm.dts stable/12/sys/gnu/dts/arm/am43x-epos-evm.dts stable/12/sys/gnu/dts/arm/am571x-idk.dts stable/12/sys/gnu/dts/arm/am572x-idk-common.dtsi stable/12/sys/gnu/dts/arm/am572x-idk.dts stable/12/sys/gnu/dts/arm/am57xx-cl-som-am57x.dts stable/12/sys/gnu/dts/arm/am57xx-idk-common.dtsi stable/12/sys/gnu/dts/arm/arm-realview-eb.dtsi stable/12/sys/gnu/dts/arm/arm-realview-pb1176.dts stable/12/sys/gnu/dts/arm/arm-realview-pb11mp.dts stable/12/sys/gnu/dts/arm/arm-realview-pbx.dtsi stable/12/sys/gnu/dts/arm/armada-388-clearfog.dtsi stable/12/sys/gnu/dts/arm/armada-xp-98dx3236.dtsi stable/12/sys/gnu/dts/arm/armada-xp-98dx3336.dtsi stable/12/sys/gnu/dts/arm/armada-xp-98dx4251.dtsi stable/12/sys/gnu/dts/arm/armada-xp-db-dxbc2.dts stable/12/sys/gnu/dts/arm/armada-xp-db-xc3-24g4xg.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-quanta-q71l.dts stable/12/sys/gnu/dts/arm/aspeed-g4.dtsi stable/12/sys/gnu/dts/arm/aspeed-g5.dtsi stable/12/sys/gnu/dts/arm/at91-dvk_su60_somc.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91-dvk_su60_somc_lcm.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91-nattis-2-natte-2.dts stable/12/sys/gnu/dts/arm/at91-sama5d27_som1_ek.dts stable/12/sys/gnu/dts/arm/at91-sama5d2_ptc_ek.dts stable/12/sys/gnu/dts/arm/at91-sama5d2_xplained.dts stable/12/sys/gnu/dts/arm/at91-sama5d3_xplained.dts stable/12/sys/gnu/dts/arm/at91-sama5d4_xplained.dts stable/12/sys/gnu/dts/arm/at91-tse850-3.dts stable/12/sys/gnu/dts/arm/at91-vinco.dts stable/12/sys/gnu/dts/arm/at91sam9260ek.dts stable/12/sys/gnu/dts/arm/at91sam9261ek.dts stable/12/sys/gnu/dts/arm/at91sam9g20ek_common.dtsi stable/12/sys/gnu/dts/arm/at91sam9g45.dtsi stable/12/sys/gnu/dts/arm/at91sam9x5cm.dtsi stable/12/sys/gnu/dts/arm/bcm-hr2.dtsi stable/12/sys/gnu/dts/arm/bcm-nsp.dtsi stable/12/sys/gnu/dts/arm/bcm2837-rpi-3-b-plus.dts stable/12/sys/gnu/dts/arm/bcm2837-rpi-3-b.dts stable/12/sys/gnu/dts/arm/bcm283x-rpi-lan7515.dtsi stable/12/sys/gnu/dts/arm/bcm47081-tplink-archer-c5-v2.dts stable/12/sys/gnu/dts/arm/bcm4709-asus-rt-ac87u.dts stable/12/sys/gnu/dts/arm/bcm4709-tplink-archer-c9-v1.dts stable/12/sys/gnu/dts/arm/bcm5301x-nand-cs0.dtsi stable/12/sys/gnu/dts/arm/bcm5301x.dtsi stable/12/sys/gnu/dts/arm/bcm958625hr.dts stable/12/sys/gnu/dts/arm/da850-evm.dts stable/12/sys/gnu/dts/arm/da850-lego-ev3.dts stable/12/sys/gnu/dts/arm/dm8148-evm.dts stable/12/sys/gnu/dts/arm/dm8148-t410.dts stable/12/sys/gnu/dts/arm/dove-cubox.dts stable/12/sys/gnu/dts/arm/dove.dtsi stable/12/sys/gnu/dts/arm/dra62x-j5eco-evm.dts stable/12/sys/gnu/dts/arm/dra7-evm.dts stable/12/sys/gnu/dts/arm/dra7.dtsi stable/12/sys/gnu/dts/arm/dra71-evm.dts stable/12/sys/gnu/dts/arm/dra72-evm-revc.dts stable/12/sys/gnu/dts/arm/dra72-evm.dts stable/12/sys/gnu/dts/arm/dra76-evm.dts stable/12/sys/gnu/dts/arm/exynos3250-artik5.dtsi stable/12/sys/gnu/dts/arm/exynos4210-origen.dts stable/12/sys/gnu/dts/arm/exynos4210-trats.dts stable/12/sys/gnu/dts/arm/exynos4210-universal_c210.dts stable/12/sys/gnu/dts/arm/exynos4412-midas.dtsi stable/12/sys/gnu/dts/arm/exynos4412-odroid-common.dtsi stable/12/sys/gnu/dts/arm/exynos5250-arndale.dts stable/12/sys/gnu/dts/arm/exynos5250-pinctrl.dtsi stable/12/sys/gnu/dts/arm/exynos5250-snow-rev5.dts stable/12/sys/gnu/dts/arm/exynos5250.dtsi stable/12/sys/gnu/dts/arm/exynos5410-odroidxu.dts stable/12/sys/gnu/dts/arm/exynos5420-peach-pit.dts stable/12/sys/gnu/dts/arm/exynos5422-odroid-core.dtsi stable/12/sys/gnu/dts/arm/exynos5422-odroidxu3-common.dtsi stable/12/sys/gnu/dts/arm/exynos5422-odroidxu3.dts stable/12/sys/gnu/dts/arm/exynos5800-peach-pi.dts stable/12/sys/gnu/dts/arm/gr-peach-audiocamerashield.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/hip04.dtsi stable/12/sys/gnu/dts/arm/imx1.dtsi stable/12/sys/gnu/dts/arm/imx23-evk.dts stable/12/sys/gnu/dts/arm/imx23-olinuxino.dts stable/12/sys/gnu/dts/arm/imx23-sansa.dts stable/12/sys/gnu/dts/arm/imx23-stmp378x_devb.dts stable/12/sys/gnu/dts/arm/imx23-xfi3.dts stable/12/sys/gnu/dts/arm/imx23.dtsi stable/12/sys/gnu/dts/arm/imx25.dtsi stable/12/sys/gnu/dts/arm/imx27.dtsi stable/12/sys/gnu/dts/arm/imx28-apf28dev.dts stable/12/sys/gnu/dts/arm/imx28-apx4devkit.dts stable/12/sys/gnu/dts/arm/imx28-cfa10036.dts stable/12/sys/gnu/dts/arm/imx28-duckbill-2-485.dts stable/12/sys/gnu/dts/arm/imx28-duckbill-2-enocean.dts stable/12/sys/gnu/dts/arm/imx28-duckbill-2-spi.dts stable/12/sys/gnu/dts/arm/imx28-duckbill-2.dts stable/12/sys/gnu/dts/arm/imx28-duckbill.dts stable/12/sys/gnu/dts/arm/imx28-evk.dts stable/12/sys/gnu/dts/arm/imx28-m28cu3.dts stable/12/sys/gnu/dts/arm/imx28-m28evk.dts stable/12/sys/gnu/dts/arm/imx28-sps1.dts stable/12/sys/gnu/dts/arm/imx28-ts4600.dts stable/12/sys/gnu/dts/arm/imx28.dtsi stable/12/sys/gnu/dts/arm/imx31.dtsi stable/12/sys/gnu/dts/arm/imx35.dtsi stable/12/sys/gnu/dts/arm/imx50.dtsi stable/12/sys/gnu/dts/arm/imx51-babbage.dts stable/12/sys/gnu/dts/arm/imx51-zii-rdu1.dts stable/12/sys/gnu/dts/arm/imx51-zii-scu2-mezz.dts (contents, props changed) stable/12/sys/gnu/dts/arm/imx51-zii-scu3-esb.dts (contents, props changed) stable/12/sys/gnu/dts/arm/imx51.dtsi stable/12/sys/gnu/dts/arm/imx53-ppd.dts stable/12/sys/gnu/dts/arm/imx53.dtsi stable/12/sys/gnu/dts/arm/imx6dl-colibri-eval-v3.dts stable/12/sys/gnu/dts/arm/imx6dl-icore-mipi.dts (contents, props changed) stable/12/sys/gnu/dts/arm/imx6dl-icore-rqs.dts stable/12/sys/gnu/dts/arm/imx6dl-icore.dts stable/12/sys/gnu/dts/arm/imx6dl-riotboard.dts stable/12/sys/gnu/dts/arm/imx6q-apalis-eval.dts stable/12/sys/gnu/dts/arm/imx6q-apalis-ixora-v1.1.dts stable/12/sys/gnu/dts/arm/imx6q-apalis-ixora.dts stable/12/sys/gnu/dts/arm/imx6q-icore-mipi.dts stable/12/sys/gnu/dts/arm/imx6q-icore-ofcap10.dts stable/12/sys/gnu/dts/arm/imx6q-icore-ofcap12.dts stable/12/sys/gnu/dts/arm/imx6q-icore-rqs.dts stable/12/sys/gnu/dts/arm/imx6q-icore.dts stable/12/sys/gnu/dts/arm/imx6q.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-apalis.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-icore-rqs.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-icore.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-sabreauto.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-wandboard.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-zii-rdu2.dtsi stable/12/sys/gnu/dts/arm/imx6qdl.dtsi stable/12/sys/gnu/dts/arm/imx6sl.dtsi stable/12/sys/gnu/dts/arm/imx6sll.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6sx-sdb.dtsi stable/12/sys/gnu/dts/arm/imx6sx.dtsi stable/12/sys/gnu/dts/arm/imx6ul-geam.dts stable/12/sys/gnu/dts/arm/imx6ul-isiot-emmc.dts stable/12/sys/gnu/dts/arm/imx6ul-isiot-nand.dts stable/12/sys/gnu/dts/arm/imx6ul-isiot.dtsi stable/12/sys/gnu/dts/arm/imx6ul.dtsi stable/12/sys/gnu/dts/arm/imx6ull-14x14-evk.dts stable/12/sys/gnu/dts/arm/imx6ull-pinfunc.h stable/12/sys/gnu/dts/arm/imx6ull.dtsi stable/12/sys/gnu/dts/arm/imx7d-nitrogen7.dts stable/12/sys/gnu/dts/arm/imx7d-pico.dtsi stable/12/sys/gnu/dts/arm/imx7d-sdb.dts stable/12/sys/gnu/dts/arm/imx7d.dtsi stable/12/sys/gnu/dts/arm/imx7s-warp.dts stable/12/sys/gnu/dts/arm/imx7s.dtsi stable/12/sys/gnu/dts/arm/imx7ulp-pinfunc.h stable/12/sys/gnu/dts/arm/iwg20d-q7-common.dtsi stable/12/sys/gnu/dts/arm/keystone-k2g.dtsi stable/12/sys/gnu/dts/arm/logicpd-som-lv.dtsi stable/12/sys/gnu/dts/arm/logicpd-torpedo-37xx-devkit.dts stable/12/sys/gnu/dts/arm/lpc32xx.dtsi stable/12/sys/gnu/dts/arm/ls1021a-qds.dts stable/12/sys/gnu/dts/arm/ls1021a-twr.dts stable/12/sys/gnu/dts/arm/ls1021a.dtsi stable/12/sys/gnu/dts/arm/meson8.dtsi stable/12/sys/gnu/dts/arm/meson8b-odroidc1.dts stable/12/sys/gnu/dts/arm/meson8b.dtsi stable/12/sys/gnu/dts/arm/mt7623.dtsi stable/12/sys/gnu/dts/arm/omap2.dtsi stable/12/sys/gnu/dts/arm/omap2430.dtsi stable/12/sys/gnu/dts/arm/omap3-beagle-xm.dts stable/12/sys/gnu/dts/arm/omap3-beagle.dts stable/12/sys/gnu/dts/arm/omap3-gta04.dtsi stable/12/sys/gnu/dts/arm/omap3-gta04a3.dts stable/12/sys/gnu/dts/arm/omap3-gta04a4.dts stable/12/sys/gnu/dts/arm/omap3-gta04a5.dts stable/12/sys/gnu/dts/arm/omap3-n9.dts stable/12/sys/gnu/dts/arm/omap5-board-common.dtsi stable/12/sys/gnu/dts/arm/orion5x-linkstation.dtsi stable/12/sys/gnu/dts/arm/owl-s500-cubieboard6.dts stable/12/sys/gnu/dts/arm/owl-s500-guitar-bb-rev-b.dts stable/12/sys/gnu/dts/arm/owl-s500-guitar.dtsi stable/12/sys/gnu/dts/arm/owl-s500.dtsi stable/12/sys/gnu/dts/arm/pxa25x.dtsi stable/12/sys/gnu/dts/arm/pxa27x.dtsi stable/12/sys/gnu/dts/arm/pxa2xx.dtsi stable/12/sys/gnu/dts/arm/qcom-apq8064.dtsi stable/12/sys/gnu/dts/arm/qcom-ipq4019.dtsi stable/12/sys/gnu/dts/arm/qcom-ipq8064-ap148.dts stable/12/sys/gnu/dts/arm/qcom-ipq8064-v1.0.dtsi stable/12/sys/gnu/dts/arm/qcom-ipq8064.dtsi stable/12/sys/gnu/dts/arm/qcom-msm8974-lge-nexus5-hammerhead.dts stable/12/sys/gnu/dts/arm/qcom-msm8974.dtsi stable/12/sys/gnu/dts/arm/r8a7743-iwg20d-q7-dbcm-ca.dts stable/12/sys/gnu/dts/arm/r8a7743-iwg20d-q7.dts stable/12/sys/gnu/dts/arm/r8a77470-iwg23s-sbc.dts stable/12/sys/gnu/dts/arm/r8a77470.dtsi stable/12/sys/gnu/dts/arm/r8a7778-bockw.dts stable/12/sys/gnu/dts/arm/r8a7778.dtsi stable/12/sys/gnu/dts/arm/r8a7779-marzen.dts stable/12/sys/gnu/dts/arm/r8a7779.dtsi stable/12/sys/gnu/dts/arm/r8a7790-stout.dts stable/12/sys/gnu/dts/arm/r8a7790.dtsi stable/12/sys/gnu/dts/arm/r8a7791.dtsi stable/12/sys/gnu/dts/arm/r8a7792.dtsi stable/12/sys/gnu/dts/arm/r8a7793-gose.dts stable/12/sys/gnu/dts/arm/r8a7793.dtsi stable/12/sys/gnu/dts/arm/r8a7794-silk.dts stable/12/sys/gnu/dts/arm/r8a7794.dtsi stable/12/sys/gnu/dts/arm/r9a06g032.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/rk3036.dtsi stable/12/sys/gnu/dts/arm/rk3188-radxarock.dts stable/12/sys/gnu/dts/arm/rk3188.dtsi stable/12/sys/gnu/dts/arm/rk3288-tinker.dts stable/12/sys/gnu/dts/arm/rk3288-veyron.dtsi stable/12/sys/gnu/dts/arm/s5pv210.dtsi stable/12/sys/gnu/dts/arm/sama5d2.dtsi stable/12/sys/gnu/dts/arm/sama5d4.dtsi stable/12/sys/gnu/dts/arm/socfpga.dtsi stable/12/sys/gnu/dts/arm/socfpga_arria10.dtsi stable/12/sys/gnu/dts/arm/socfpga_cyclone5_socrates.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5_vining_fpga.dts stable/12/sys/gnu/dts/arm/ste-dbx5x0.dtsi stable/12/sys/gnu/dts/arm/ste-href-family-pinctrl.dtsi stable/12/sys/gnu/dts/arm/ste-href.dtsi stable/12/sys/gnu/dts/arm/ste-hrefprev60.dtsi stable/12/sys/gnu/dts/arm/ste-snowball.dts stable/12/sys/gnu/dts/arm/ste-u300.dts stable/12/sys/gnu/dts/arm/stih410-b2260.dts stable/12/sys/gnu/dts/arm/stihxxx-b2120.dtsi stable/12/sys/gnu/dts/arm/stm32429i-eval.dts stable/12/sys/gnu/dts/arm/stm32f429.dtsi stable/12/sys/gnu/dts/arm/stm32f469-disco.dts stable/12/sys/gnu/dts/arm/stm32f746-disco.dts stable/12/sys/gnu/dts/arm/stm32f769-disco.dts stable/12/sys/gnu/dts/arm/stm32h743.dtsi stable/12/sys/gnu/dts/arm/stm32mp157c-ev1.dts stable/12/sys/gnu/dts/arm/stm32mp157c.dtsi stable/12/sys/gnu/dts/arm/sun5i-reference-design-tablet.dtsi stable/12/sys/gnu/dts/arm/sun5i.dtsi stable/12/sys/gnu/dts/arm/sun7i-a20.dtsi stable/12/sys/gnu/dts/arm/sun8i-a33.dtsi stable/12/sys/gnu/dts/arm/sun8i-a83t-bananapi-m3.dts stable/12/sys/gnu/dts/arm/sun8i-a83t.dtsi stable/12/sys/gnu/dts/arm/sun8i-h3-bananapi-m2-plus.dts stable/12/sys/gnu/dts/arm/sun8i-h3.dtsi stable/12/sys/gnu/dts/arm/sun8i-r40-bananapi-m2-ultra.dts stable/12/sys/gnu/dts/arm/sun8i-r40.dtsi stable/12/sys/gnu/dts/arm/sun8i-reference-design-tablet.dtsi stable/12/sys/gnu/dts/arm/sun8i-v40-bananapi-m2-berry.dts stable/12/sys/gnu/dts/arm/sun9i-a80.dtsi stable/12/sys/gnu/dts/arm/sunxi-h3-h5.dtsi stable/12/sys/gnu/dts/arm/tegra124-apalis-eval.dts stable/12/sys/gnu/dts/arm/tegra124-apalis-v1.2-eval.dts stable/12/sys/gnu/dts/arm/tegra124-apalis-v1.2.dtsi stable/12/sys/gnu/dts/arm/tegra124-apalis.dtsi stable/12/sys/gnu/dts/arm/tegra20-colibri-iris.dts (contents, props changed) stable/12/sys/gnu/dts/arm/tegra20-colibri.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/tegra20-paz00.dts stable/12/sys/gnu/dts/arm/tegra20.dtsi stable/12/sys/gnu/dts/arm/tegra30-apalis-eval.dts stable/12/sys/gnu/dts/arm/tegra30-apalis.dtsi stable/12/sys/gnu/dts/arm/tegra30-colibri-eval-v3.dts stable/12/sys/gnu/dts/arm/tegra30-colibri.dtsi stable/12/sys/gnu/dts/arm/tegra30.dtsi stable/12/sys/gnu/dts/arm/uniphier-ld4-ref.dts stable/12/sys/gnu/dts/arm/uniphier-ld4.dtsi stable/12/sys/gnu/dts/arm/uniphier-ld6b-ref.dts stable/12/sys/gnu/dts/arm/uniphier-pinctrl.dtsi stable/12/sys/gnu/dts/arm/uniphier-pro4-ace.dts stable/12/sys/gnu/dts/arm/uniphier-pro4-ref.dts stable/12/sys/gnu/dts/arm/uniphier-pro4-sanji.dts stable/12/sys/gnu/dts/arm/uniphier-pro4.dtsi stable/12/sys/gnu/dts/arm/uniphier-pro5.dtsi stable/12/sys/gnu/dts/arm/uniphier-pxs2-gentil.dts stable/12/sys/gnu/dts/arm/uniphier-pxs2-vodka.dts stable/12/sys/gnu/dts/arm/uniphier-pxs2.dtsi stable/12/sys/gnu/dts/arm/uniphier-sld8-ref.dts stable/12/sys/gnu/dts/arm/uniphier-sld8.dtsi stable/12/sys/gnu/dts/arm/versatile-ab.dts stable/12/sys/gnu/dts/arm/vf500.dtsi stable/12/sys/gnu/dts/arm/vf610-twr.dts stable/12/sys/gnu/dts/arm/vf610-zii-cfu1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/vf610-zii-dev-rev-c.dts stable/12/sys/gnu/dts/arm/vf610.dtsi stable/12/sys/gnu/dts/arm/vf610m4-colibri.dts stable/12/sys/gnu/dts/arm/vfxxx.dtsi stable/12/sys/gnu/dts/arm/zynq-zc702.dts stable/12/sys/gnu/dts/arm/zynq-zc770-xm010.dts stable/12/sys/gnu/dts/arm/zynq-zc770-xm013.dts stable/12/sys/gnu/dts/arm64/actions/s700-cubieboard7.dts stable/12/sys/gnu/dts/arm64/actions/s700.dtsi stable/12/sys/gnu/dts/arm64/actions/s900-bubblegum-96.dts stable/12/sys/gnu/dts/arm64/actions/s900.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-amarula-relic.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-bananapi-m64.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-nanopi-a64.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-olinuxino.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-orangepi-win.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pine64.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pinebook.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-sopine-baseboard.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-teres-i.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6.dtsi stable/12/sys/gnu/dts/arm64/altera/socfpga_stratix10.dtsi stable/12/sys/gnu/dts/arm64/altera/socfpga_stratix10_socdk.dts stable/12/sys/gnu/dts/arm64/amd/amd-seattle-soc.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-axg-s400.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-axg.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gx.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-libretech-cc.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl.dtsi stable/12/sys/gnu/dts/arm64/arm/juno-base.dtsi stable/12/sys/gnu/dts/arm64/arm/juno-cs-r1r2.dtsi stable/12/sys/gnu/dts/arm64/arm/juno.dts stable/12/sys/gnu/dts/arm64/broadcom/northstar2/ns2.dtsi stable/12/sys/gnu/dts/arm64/broadcom/stingray/bcm958742-base.dtsi stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray.dtsi stable/12/sys/gnu/dts/arm64/exynos/exynos5433-tm2-common.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043a-qds.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043a-rdb.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a-qds.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a-rdb.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls208xa.dtsi stable/12/sys/gnu/dts/arm64/hisilicon/hi6220-coresight.dtsi stable/12/sys/gnu/dts/arm64/hisilicon/hi6220.dtsi stable/12/sys/gnu/dts/arm64/lg/lg1312.dtsi stable/12/sys/gnu/dts/arm64/lg/lg1313.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-372x.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-37xx.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-ap806-dual.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-ap806-quad.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-ap806.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-ap810-ap0-octa-core.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-common.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-cp110.dtsi stable/12/sys/gnu/dts/arm64/mediatek/mt2712e.dtsi stable/12/sys/gnu/dts/arm64/mediatek/mt7622-rfb1.dts stable/12/sys/gnu/dts/arm64/mediatek/mt7622.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra186.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra194.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2180.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2597.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra210.dtsi stable/12/sys/gnu/dts/arm64/qcom/apq8016-sbc.dtsi stable/12/sys/gnu/dts/arm64/qcom/apq8096-db820c.dts stable/12/sys/gnu/dts/arm64/qcom/apq8096-db820c.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8916.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8996.dtsi stable/12/sys/gnu/dts/arm64/qcom/pm8916.dtsi stable/12/sys/gnu/dts/arm64/qcom/pm8994.dtsi stable/12/sys/gnu/dts/arm64/qcom/pm8998.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/sdm845-mtp.dts stable/12/sys/gnu/dts/arm64/qcom/sdm845.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a7795-es1-salvator-x.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7795-es1.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a7795-h3ulcb.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7795-salvator-x.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7795-salvator-xs.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7795.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a7796-m3ulcb.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7796-salvator-x.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7796.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77965-salvator-xs.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77965.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77970-v3msk.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77970.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77980-condor.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77980-v3hsk.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77980.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77990-ebisu.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77990.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77995-draak.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77995.dtsi stable/12/sys/gnu/dts/arm64/renesas/salvator-common.dtsi stable/12/sys/gnu/dts/arm64/renesas/ulcb-kf.dtsi stable/12/sys/gnu/dts/arm64/renesas/ulcb.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3328-roc-cc.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3328-rock64.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3328.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-ficus.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-firefly.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-puma-haikou.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-sapphire.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399.dtsi stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld11.dtsi stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld20-global.dts stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld20-ref.dts stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld20.dtsi stable/12/sys/gnu/dts/arm64/socionext/uniphier-pxs3-ref.dts stable/12/sys/gnu/dts/arm64/socionext/uniphier-pxs3.dtsi stable/12/sys/gnu/dts/arm64/ti/k3-am65-main.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am65.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am654-base-board.dts (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/am3.h stable/12/sys/gnu/dts/include/dt-bindings/clock/am4.h stable/12/sys/gnu/dts/include/dt-bindings/clock/at91.h stable/12/sys/gnu/dts/include/dt-bindings/clock/dra7.h stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos3250.h stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos4.h stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5250.h stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5260-clk.h stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5410.h stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5420.h stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5433.h stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos7-clk.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6qdl-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6sl-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6sll-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6sx-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6ul-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/maxim,max77686.h stable/12/sys/gnu/dts/include/dt-bindings/clock/maxim,max77802.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8960.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8996.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-sdm845.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r7s72100-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7743-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7745-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7790-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7791-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7792-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7793-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7793-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7794-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7794-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7795-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7796-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77970-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77995-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/renesas-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3188-cru-common.h stable/12/sys/gnu/dts/include/dt-bindings/clock/s3c2410.h stable/12/sys/gnu/dts/include/dt-bindings/clock/s3c2412.h stable/12/sys/gnu/dts/include/dt-bindings/clock/s3c2443.h stable/12/sys/gnu/dts/include/dt-bindings/clock/samsung,s2mps11.h stable/12/sys/gnu/dts/include/dt-bindings/clock/samsung,s3c64xx-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/sun50i-a64-ccu.h stable/12/sys/gnu/dts/include/dt-bindings/iio/qcom,spmi-vadc.h stable/12/sys/gnu/dts/include/dt-bindings/input/linux-event-codes.h stable/12/sys/gnu/dts/include/dt-bindings/interrupt-controller/arm-gic.h stable/12/sys/gnu/dts/include/dt-bindings/interrupt-controller/irq.h stable/12/sys/gnu/dts/include/dt-bindings/net/mscc-phy-vsc8531.h stable/12/sys/gnu/dts/include/dt-bindings/reset/imx7-reset.h stable/12/sys/gnu/dts/include/dt-bindings/thermal/thermal_exynos.h stable/12/sys/gnu/dts/include/dt-bindings/usb/pd.h stable/12/sys/modules/dtb/allwinner/Makefile Directory Properties: stable/12/ (props changed) stable/12/sys/gnu/dts/arm/armada-388-helios4.dts (props changed) stable/12/sys/gnu/dts/arm/at91-dvk_som60.dts (props changed) stable/12/sys/gnu/dts/arm/at91-gatwick.dts (props changed) stable/12/sys/gnu/dts/arm/at91-som60.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-wb45n.dts (props changed) stable/12/sys/gnu/dts/arm/at91-wb45n.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-wb50n.dts (props changed) stable/12/sys/gnu/dts/arm/at91-wb50n.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-cm1-io1.dts (props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-cm1.dtsi (props changed) stable/12/sys/gnu/dts/arm/gemini-sl93512r.dts (props changed) stable/12/sys/gnu/dts/arm/imx31-lite.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-kp-ddc.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-kp-hsc.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-kp.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6sll-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-ccimx6ulsbcexpress.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-ccimx6ulsom.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2g-netcp.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4-l4.dtsi (props changed) stable/12/sys/gnu/dts/arm/r9a06g032-rzn1d400-db.dts (props changed) stable/12/sys/gnu/dts/arm/s5pv210-aries.dtsi (props changed) stable/12/sys/gnu/dts/arm/s5pv210-fascinate4g.dts (props changed) stable/12/sys/gnu/dts/arm/s5pv210-galaxys.dts (props changed) stable/12/sys/gnu/dts/arm/vf610-zii-ssmb-spu3.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zturn.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s805x-p241.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905w-p281.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905w-tx3-mini.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/bcm958802a802x.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray-board-base.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray-pcie.dtsi (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6797-x20-dev.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/pm8005.dtsi (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-bob.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-chromebook.dtsi (props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am654.dtsi (props changed) stable/12/sys/gnu/dts/arm64/xilinx/avnet-ultra96-rev1.dts (props changed) Modified: stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi Mon Aug 5 16:56:11 2019 (r350594) @@ -379,7 +379,7 @@ }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "mii"; }; @@ -396,6 +396,10 @@ pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; }; &mmc1 { Modified: stable/12/sys/gnu/dts/arm/am335x-boneblack-common.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-boneblack-common.dtsi Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-boneblack-common.dtsi Mon Aug 5 16:56:11 2019 (r350594) @@ -7,6 +7,7 @@ */ #include +#include &ldo3_reg { regulator-min-microvolt = <1800000>; @@ -88,9 +89,11 @@ }; &i2c0 { - tda19988: tda19988 { + tda19988: tda19988@70 { compatible = "nxp,tda998x"; reg = <0x70>; + nxp,calib-gpios = <&gpio1 25 0>; + interrupts-extended = <&gpio1 25 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default", "off"; pinctrl-0 = <&nxp_hdmi_bonelt_pins>; Modified: stable/12/sys/gnu/dts/arm/am335x-chiliboard.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-chiliboard.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-chiliboard.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -140,10 +140,14 @@ pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "rmii"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -486,10 +486,14 @@ status = "okay"; pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "rgmii-txid"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-evm.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-evm.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-evm.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -713,6 +713,7 @@ pinctrl-0 = <&cpsw_default>; pinctrl-1 = <&cpsw_sleep>; status = "okay"; + slaves = <1>; }; &davinci_mdio { @@ -720,15 +721,14 @@ pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; -}; -&cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; - phy-mode = "rgmii-txid"; + ethphy0: ethernet-phy@0 { + reg = <0>; + }; }; -&cpsw_emac1 { - phy_id = <&davinci_mdio>, <1>; +&cpsw_emac0 { + phy-handle = <ðphy0>; phy-mode = "rgmii-txid"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-evmsk.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-evmsk.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-evmsk.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -639,16 +639,24 @@ pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; + + ethphy1: ethernet-phy@1 { + reg = <1>; + }; }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "rgmii-txid"; dual_emac_res_vlan = <1>; }; &cpsw_emac1 { - phy_id = <&davinci_mdio>, <1>; + phy-handle = <ðphy1>; phy-mode = "rgmii-txid"; dual_emac_res_vlan = <2>; }; Modified: stable/12/sys/gnu/dts/arm/am335x-igep0033.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-igep0033.dtsi Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-igep0033.dtsi Mon Aug 5 16:56:11 2019 (r350594) @@ -102,15 +102,24 @@ &davinci_mdio { status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; + + ethphy1: ethernet-phy@1 { + reg = <1>; + }; }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "rmii"; + }; &cpsw_emac1 { - phy_id = <&davinci_mdio>, <1>; + phy-handle = <ðphy1>; phy-mode = "rmii"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-lxm.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-lxm.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-lxm.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -317,13 +317,13 @@ }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <5>; + phy-handle = <ðphy0>; phy-mode = "rmii"; dual_emac_res_vlan = <2>; }; &cpsw_emac1 { - phy_id = <&davinci_mdio>, <4>; + phy-handle = <ðphy1>; phy-mode = "rmii"; dual_emac_res_vlan = <3>; }; @@ -345,6 +345,14 @@ pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; + + ethphy0: ethernet-phy@5 { + reg = <5>; + }; + + ethphy1: ethernet-phy@4 { + reg = <4>; + }; }; &mmc1 { Copied: stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi (from r342936, head/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi Mon Aug 5 16:56:11 2019 (r350594, copy of r342936, head/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi) @@ -0,0 +1,249 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2018 MOXA Inc. - https://www.moxa.com/ + * + * Authors: SZ Lin (林上智) + * Wes Huang (黃淵河) + * Fero JD Zhou (周俊達) + */ + +#include "am33xx.dtsi" + +/ { + vbat: vbat-regulator { + compatible = "regulator-fixed"; + }; + + /* Power supply provides a fixed 3.3V @3A */ + vmmcsd_fixed: vmmcsd-regulator { + compatible = "regulator-fixed"; + regulator-name = "vmmcsd_fixed"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + buttons: push_button { + compatible = "gpio-keys"; + }; +}; + +&am33xx_pinmux { + pinctrl-names = "default"; + + i2c0_pins: pinmux_i2c0_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x988, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_sda.i2c0_sda */ + AM33XX_IOPAD(0x98c, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_scl.i2c0_scl */ + >; + }; + + push_button_pins: pinmux_push_button { + pinctrl-single,pins = < + AM33XX_IOPAD(0x8e4, PIN_INPUT_PULLDOWN | MUX_MODE7) /* lcd_hsync.gpio2_23 */ + >; + }; + + uart0_pins: pinmux_uart0_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */ + AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */ + >; + }; + + davinci_mdio_default: davinci_mdio_default { + pinctrl-single,pins = < + /* MDIO */ + AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */ + AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ + >; + }; + + mmc1_pins_default: pinmux_mmc1_pins { + pinctrl-single,pins = < + /* eMMC */ + AM33XX_IOPAD(0x800, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad12.mmc1_dat0 */ + AM33XX_IOPAD(0x804, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad13.mmc1_dat1 */ + AM33XX_IOPAD(0x808, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad14.mmc1_dat2 */ + AM33XX_IOPAD(0x80c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad15.mmc1_dat3 */ + AM33XX_IOPAD(0x810, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad8.mmc1_dat4 */ + AM33XX_IOPAD(0x814, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad9.mmc1_dat5 */ + AM33XX_IOPAD(0x818, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad10.mmc1_dat6 */ + AM33XX_IOPAD(0x81c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad11.mmc1_dat7 */ + AM33XX_IOPAD(0x884, PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */ + AM33XX_IOPAD(0x880, PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */ + >; + }; + + spi0_pins: pinmux_spi0 { + pinctrl-single,pins = < + AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_sclk.spi0_sclk */ + AM33XX_IOPAD(0x95c, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_cs0.spi0_cs0 */ + AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_d0.spi0_d0 */ + AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_d1.spi0_d1 */ + >; + }; +}; + +&uart0 { + /* Console */ + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + + status = "okay"; + clock-frequency = <400000>; + + eeprom: eeprom@50 { + compatible = "atmel,24c16"; + pagesize = <16>; + reg = <0x50>; + }; + + rtc_wdt: rtc_wdt@68 { + compatible = "dallas,ds1374"; + reg = <0x68>; + }; +}; + +&usb { + status = "okay"; +}; + +&usb_ctrl_mod { + status = "okay"; +}; + +&usb0_phy { + status = "okay"; +}; + +&usb0 { + status = "okay"; + dr_mode = "host"; +}; + +&cppi41dma { + status = "okay"; +}; + +/* Power */ +&vbat { + regulator-name = "vbat"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; +}; + +&mac { + pinctrl-names = "default"; + pinctrl-0 = <&cpsw_default>; + status = "okay"; +}; + +&davinci_mdio { + pinctrl-names = "default"; + pinctrl-0 = <&davinci_mdio_default>; + status = "okay"; +}; + +&cpsw_emac0 { + status = "okay"; +}; + +&cpsw_emac1 { + status = "okay"; +}; + +&phy_sel { + reg= <0x44e10650 0xf5>; + rmii-clock-ext; +}; + +&sham { + status = "okay"; +}; + +&aes { + status = "okay"; +}; + +&gpio0 { + ti,no-reset-on-init; +}; + +&mmc2 { + pinctrl-names = "default"; + vmmc-supply = <&vmmcsd_fixed>; + bus-width = <8>; + pinctrl-0 = <&mmc1_pins_default>; + ti,non-removable; + status = "okay"; +}; + +&buttons { + pinctrl-names = "default"; + pinctrl-0 = <&push_button_pins>; + #address-cells = <1>; + #size-cells = <0>; + + button@0 { + label = "push_button"; + linux,code = <0x100>; + gpios = <&gpio2 23 GPIO_ACTIVE_LOW>; + }; +}; + +/* SPI Busses */ +&spi0 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; + + m25p80@0 { + compatible = "mx25l6405d"; + spi-max-frequency = <40000000>; + + reg = <0>; + spi-cpol; + spi-cpha; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* reg : The partition's offset and size within the mtd bank. */ + partitions@0 { + label = "MLO"; + reg = <0x0 0x80000>; + }; + + partitions@1 { + label = "U-Boot"; + reg = <0x80000 0x100000>; + }; + + partitions@2 { + label = "U-Boot Env"; + reg = <0x180000 0x40000>; + }; + }; + }; +}; + +&spi1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&spi1_pins>; + + tpm_spi_tis@0 { + compatible = "tcg,tpm_tis-spi"; + reg = <0>; + spi-max-frequency = <500000>; + }; +}; Copied: stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2101.dts (from r342936, head/sys/gnu/dts/arm/am335x-moxa-uc-2101.dts) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2101.dts Mon Aug 5 16:56:11 2019 (r350594, copy of r342936, head/sys/gnu/dts/arm/am335x-moxa-uc-2101.dts) @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2018 MOXA Inc. - https://www.moxa.com/ + * + * Authors: SZ Lin (林上智) + * Wes Huang (黃淵河) + * Fero JD Zhou (周俊達) + */ + +/dts-v1/; + +#include "am335x-moxa-uc-2100-common.dtsi" + +/ { + model = "Moxa UC-2101"; + compatible = "moxa,uc-2101", "ti,am33xx"; + + leds { + compatible = "gpio-leds"; + led1 { + label = "UC2100:GREEN:USER"; + gpios = <&gpio3 10 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + }; +}; + +&am33xx_pinmux { + pinctrl-names = "default"; + + cpsw_default: cpsw_default { + pinctrl-single,pins = < + /* Slave 1 */ + AM33XX_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_crs.rmii1_crs_dv */ + AM33XX_IOPAD(0x910, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxerr.rmii1_rxerr */ + AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txen.rmii1_txen */ + AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */ + AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */ + AM33XX_IOPAD(0x93c, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd1.rmii1_rxd1 */ + AM33XX_IOPAD(0x940, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd0.rmii1_rxd0 */ + AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE0) /* mii1_refclk.rmii1_refclk */ + >; + }; + + spi1_pins: pinmux_spi1 { + pinctrl-single,pins = < + AM33XX_IOPAD(0x964, PIN_INPUT_PULLUP | MUX_MODE4) /* ecap0_in_pwm0_out.spi1_sclk */ + AM33XX_IOPAD(0x978, PIN_INPUT_PULLUP | MUX_MODE4) /* uart1_ctsn.spi1_cs0 */ + AM33XX_IOPAD(0x968, PIN_INPUT_PULLUP | MUX_MODE4) /* uart0_ctsn.spi1_d0 */ + AM33XX_IOPAD(0x96c, PIN_INPUT_PULLUP | MUX_MODE4) /* uart0_rtsn.spi1_d1 */ + >; + }; +}; + +&davinci_mdio { + phy0: ethernet-phy@4 { + reg = <4>; + }; +}; + +&cpsw_emac0 { + status = "okay"; + phy-handle = <&phy0>; + phy-mode = "rmii"; +}; + +&cpsw_emac1 { + status = "disabled"; +}; Modified: stable/12/sys/gnu/dts/arm/am335x-moxa-uc-8100-me-t.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-moxa-uc-8100-me-t.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-moxa-uc-8100-me-t.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -422,18 +422,26 @@ pinctrl-names = "default"; pinctrl-0 = <&davinci_mdio_default>; status = "okay"; + + ethphy0: ethernet-phy@4 { + reg = <4>; + }; + + ethphy1: ethernet-phy@5 { + reg = <5>; + }; }; &cpsw_emac0 { status = "okay"; - phy_id = <&davinci_mdio>, <4>; + phy-handle = <ðphy0>; phy-mode = "rmii"; dual_emac_res_vlan = <1>; }; &cpsw_emac1 { status = "okay"; - phy_id = <&davinci_mdio>, <5>; + phy-handle = <ðphy1>; phy-mode = "rmii"; dual_emac_res_vlan = <2>; }; Modified: stable/12/sys/gnu/dts/arm/am335x-nano.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-nano.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-nano.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -380,16 +380,24 @@ &davinci_mdio { status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; + + ethphy1: ethernet-phy@1 { + reg = <1>; + }; }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "mii"; dual_emac_res_vlan = <1>; }; &cpsw_emac1 { - phy_id = <&davinci_mdio>, <1>; + phy-handle = <ðphy1>; phy-mode = "mii"; dual_emac_res_vlan = <2>; }; Modified: stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -161,7 +161,7 @@ invensense,key = [4e cc 7e eb f6 1e 35 22 00 34 0d 65 32 e9 94 89];*/ }; - bmp280: pressure@78 { + bmp280: pressure@76 { compatible = "bosch,bmp280"; reg = <0x76>; }; @@ -424,7 +424,7 @@ }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <4>; + phy-handle = <ðphy0>; phy-mode = "rgmii-txid"; }; @@ -441,6 +441,10 @@ pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; + + ethphy0: ethernet-phy@4 { + reg = <4>; + }; }; &mmc1 { Modified: stable/12/sys/gnu/dts/arm/am335x-pdu001.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-pdu001.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-pdu001.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -373,7 +373,7 @@ ti,pindir-d0-out-d1-in; status = "okay"; - cfaf240320a032t { + display-controller@0 { compatible = "orisetech,otm3225a"; reg = <0>; spi-max-frequency = <1000000>; @@ -533,16 +533,24 @@ pinctrl-names = "default"; pinctrl-0 = <&davinci_mdio_default>; status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; + + ethphy1: ethernet-phy@1 { + reg = <1>; + }; }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "mii"; dual_emac_res_vlan = <1>; }; &cpsw_emac1 { - phy_id = <&davinci_mdio>, <1>; + phy-handle = <ðphy1>; phy-mode = "mii"; dual_emac_res_vlan = <2>; }; Modified: stable/12/sys/gnu/dts/arm/am335x-pepper.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-pepper.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-pepper.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -265,13 +265,13 @@ /* Ethernet */ &cpsw_emac0 { status = "okay"; - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "rgmii"; }; &cpsw_emac1 { status = "okay"; - phy_id = <&davinci_mdio>, <1>; + phy-handle = <ðphy1>; phy-mode = "rgmii"; }; @@ -279,6 +279,14 @@ status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&mdio_pins>; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; + + ethphy1: ethernet-phy@1 { + reg = <1>; + }; }; &mac { Modified: stable/12/sys/gnu/dts/arm/am335x-sancloud-bbe.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-sancloud-bbe.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-sancloud-bbe.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -103,10 +103,14 @@ pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; phy-mode = "rgmii-txid"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-shc.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-shc.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am335x-shc.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -206,7 +206,6 @@ status = "okay"; slaves = <1>; cpsw_emac0: slave@4a100200 { - phy_id = <&davinci_mdio>, <0>; phy-mode = "mii"; phy-handle = <ðernetphy0>; }; Copied: stable/12/sys/gnu/dts/arm/am3517-evm-ui.dtsi (from r342936, head/sys/gnu/dts/arm/am3517-evm-ui.dtsi) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/gnu/dts/arm/am3517-evm-ui.dtsi Mon Aug 5 16:56:11 2019 (r350594, copy of r342936, head/sys/gnu/dts/arm/am3517-evm-ui.dtsi) @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2018 Logic PD, Inc - http://www.logicpd.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include + +/ { + codec1 { + compatible = "simple-audio-card"; + simple-audio-card,name = "tlv320aic23-hifi"; + + simple-audio-card,widgets = + "Microphone", "Mic In", + "Line", "Line In", + "Line", "Line Out"; + + simple-audio-card,routing = + "Line Out", "LOUT", + "Line Out", "ROUT", + "LLINEIN", "Line In", + "RLINEIN", "Line In", + "MICIN", "Mic In"; + + simple-audio-card,format = "i2s"; + simple-audio-card,bitclock-master = <&sound_master>; + simple-audio-card,frame-master = <&sound_master>; + + simple-audio-card,cpu { + sound-dai = <&mcbsp1>; + }; + + sound_master: simple-audio-card,codec { + sound-dai = <&tlv320aic23_1>; + system-clock-frequency = <12000000>; + }; + }; + + codec2 { + compatible = "simple-audio-card"; + simple-audio-card,name = "tlv320aic23-hifi"; + + simple-audio-card,widgets = + "Microphone", "Mic In", + "Line", "Line In", + "Line", "Line Out"; + + simple-audio-card,routing = + "Line Out", "LOUT", + "Line Out", "ROUT", + "LLINEIN", "Line In", + "RLINEIN", "Line In", + "MICIN", "Mic In"; + + simple-audio-card,format = "i2s"; + simple-audio-card,bitclock-master = <&sound_master2>; + simple-audio-card,frame-master = <&sound_master2>; + + simple-audio-card,cpu { + sound-dai = <&mcbsp2>; + }; + + sound_master2: simple-audio-card,codec { + sound-dai = <&tlv320aic23_2>; + system-clock-frequency = <12000000>; + }; + }; + + expander-keys { + compatible = "gpio-keys-polled"; + poll-interval = <100>; + + record { + label = "Record"; + /* linux,code = ; */ + gpios = <&tca6416_2 15 GPIO_ACTIVE_LOW>; + }; + + play { + label = "Play"; + linux,code = ; + gpios = <&tca6416_2 14 GPIO_ACTIVE_LOW>; + }; + + Stop { + label = "Stop"; + linux,code = ; + gpios = <&tca6416_2 13 GPIO_ACTIVE_LOW>; + }; + + fwd { + label = "FWD"; + linux,code = ; + gpios = <&tca6416_2 12 GPIO_ACTIVE_LOW>; + }; + + rwd { + label = "RWD"; + linux,code = ; + gpios = <&tca6416_2 11 GPIO_ACTIVE_LOW>; + }; + + shift { + label = "Shift"; + linux,code = ; + gpios = <&tca6416_2 10 GPIO_ACTIVE_LOW>; + }; + + Mode { + label = "Mode"; + linux,code = ; + gpios = <&tca6416_2 9 GPIO_ACTIVE_LOW>; + }; + + Menu { + label = "Menu"; + linux,code = ; + gpios = <&tca6416_2 8 GPIO_ACTIVE_LOW>; + }; + + Up { + label = "Up"; + linux,code = ; + gpios = <&tca6416_2 7 GPIO_ACTIVE_LOW>; + }; + + Down { + label = "Down"; + linux,code = ; + gpios = <&tca6416_2 6 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&i2c2 { + /* Audio codecs */ + tlv320aic23_1: codec@1a { + compatible = "ti,tlv320aic23"; + reg = <0x1a>; + #sound-dai-cells= <0>; + status = "okay"; + }; + + tlv320aic23_2: codec@1b { + compatible = "ti,tlv320aic23"; + reg = <0x1b>; + #sound-dai-cells= <0>; + status = "okay"; + }; +}; + +&i2c3 { + /* Audio codecs */ + tlv320aic23_3: codec@1a { + compatible = "ti,tlv320aic23"; + reg = <0x1a>; + #sound-dai-cells= <0>; + status = "okay"; + }; + + /* GPIO Expanders */ + tca6416_2: gpio@20 { + compatible = "ti,tca6416"; + reg = <0x20>; + gpio-controller; + #gpio-cells = <2>; + vcc-supply = <&vdd_io_reg>; + }; + + tca6416_3: gpio@21 { + compatible = "ti,tca6416"; + reg = <0x21>; + gpio-controller; + #gpio-cells = <2>; + vcc-supply = <&vdd_io_reg>; + }; + + /* TVP5146 Analog Video decoder input */ + tvp5146@5c { + compatible = "ti,tvp5146m2"; + reg = <0x5c>; + }; +}; + +&mcbsp1 { + status = "ok"; + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&mcbsp1_pins>; +}; + +&mcbsp2 { + status = "ok"; + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&mcbsp2_pins>; +}; + +&omap3_pmx_core { + mcbsp1_pins: pinmux_mcbsp1_pins { + pinctrl-single,pins = < + OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0) /* mcbsp1_dx.mcbsp1_dx */ + OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT | MUX_MODE0) /* mcbsp1_dx.mcbsp1_dr */ + OMAP3_CORE1_IOPAD(0x2196, PIN_INPUT | MUX_MODE0) /* mcbsp_clks.mcbsp1_fsx */ + OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0) /* mcbsp1_clkx.mcbsp1_clkx */ + >; + }; + + mcbsp2_pins: pinmux_mcbsp2_pins { + pinctrl-single,pins = < + OMAP3_CORE1_IOPAD(0x213c, PIN_INPUT | MUX_MODE0) /* mcbsp2_fsx.mcbsp2_fsx */ + OMAP3_CORE1_IOPAD(0x213e, PIN_INPUT | MUX_MODE0) /* mcbsp2_clkx.mcbsp2_clkx */ + OMAP3_CORE1_IOPAD(0x2140, PIN_INPUT | MUX_MODE0) /* mcbsp2_dr.mcbsp2.dr */ + OMAP3_CORE1_IOPAD(0x2142, PIN_OUTPUT | MUX_MODE0) /* mcbsp2_dx.mcbsp2_dx */ + >; + }; +}; Modified: stable/12/sys/gnu/dts/arm/am3517-evm.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am3517-evm.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am3517-evm.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -9,6 +9,7 @@ #include "am3517.dtsi" #include "am3517-som.dtsi" +#include "am3517-evm-ui.dtsi" #include / { @@ -227,7 +228,7 @@ vmmc-supply = <&vmmc_fixed>; bus-width = <4>; wp-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>; /* gpio_126 */ - cd-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>; /* gpio_127 */ + cd-gpios = <&gpio4 31 GPIO_ACTIVE_LOW>; /* gpio_127 */ }; &mmc3 { Modified: stable/12/sys/gnu/dts/arm/am3517-som.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am3517-som.dtsi Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am3517-som.dtsi Mon Aug 5 16:56:11 2019 (r350594) @@ -163,7 +163,7 @@ compatible = "ti,wl1271"; reg = <2>; interrupt-parent = <&gpio6>; - interrupts = <10 IRQ_TYPE_LEVEL_HIGH>; /* gpio_170 */ + interrupts = <10 IRQ_TYPE_EDGE_RISING>; /* gpio_170 */ ref-clock-frequency = <26000000>; tcxo-clock-frequency = <26000000>; }; Modified: stable/12/sys/gnu/dts/arm/am4372.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am4372.dtsi Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am4372.dtsi Mon Aug 5 16:56:11 2019 (r350594) @@ -1101,7 +1101,7 @@ }; }; - qspi: qspi@47900000 { + qspi: spi@47900000 { compatible = "ti,am4372-qspi"; reg = <0x47900000 0x100>, <0x30000000 0x4000000>; Modified: stable/12/sys/gnu/dts/arm/am437x-cm-t43.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am437x-cm-t43.dts Mon Aug 5 16:48:16 2019 (r350593) +++ stable/12/sys/gnu/dts/arm/am437x-cm-t43.dts Mon Aug 5 16:56:11 2019 (r350594) @@ -339,16 +339,24 @@ pinctrl-names = "default"; pinctrl-0 = <&davinci_mdio_default>; status = "okay"; + + ethphy0: ethernet-phy@0 { + reg = <0>; + }; + + ethphy1: ethernet-phy@1 { + reg = <1>; + }; }; &cpsw_emac0 { - phy_id = <&davinci_mdio>, <0>; + phy-handle = <ðphy0>; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Mon Aug 5 17:01:21 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6D644A803E; Mon, 5 Aug 2019 17:01:21 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462PDd1xf1z3wYm; Mon, 5 Aug 2019 17:01:21 +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 0690B1EC8A; Mon, 5 Aug 2019 17:01:21 +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 x75H1KHP070531; Mon, 5 Aug 2019 17:01:20 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75H1JKE070523; Mon, 5 Aug 2019 17:01:19 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051701.x75H1JKE070523@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 17:01:19 +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: r350595 - in stable/12: etc/mtree release/arm64 sys/arm/allwinner/clkng sys/conf sys/modules/dtb/allwinner X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12: etc/mtree release/arm64 sys/arm/allwinner/clkng sys/conf sys/modules/dtb/allwinner X-SVN-Commit-Revision: 350595 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 17:01:21 -0000 Author: manu Date: Mon Aug 5 17:01:19 2019 New Revision: 350595 URL: https://svnweb.freebsd.org/changeset/base/350595 Log: MFC r342924, r343749-r343750, r343874, r344893-r344895, r345711 r342924: dtb: allwinner: Add orangepi-pc to the build PR: 226011 Submitted by: Greg V r343749: release: arm64: rpi3: Install the RPI3B+ DTB file We should use the correct DTB file otherwise the firmware uses the RPI3B one. r343750: release: arm64: pine64-lts: Use the newly created u-boot-pine64-lts port In U-Boot 2019.01 there is now a config for this board, use it for the release image. r343874: mtree: Add dtb subdir to the mtree file makefs will fails otherwise Reported by: emaste r344893: arm: allwinner: Fix NM clock recalc If the NM clock is using a fractional divider the formula isn't the same. r344894: arm64: allwinner: Add CCU DE2 The Display Engine 2 have it's own Clock and Control Unit, add support for it. r344895: arm64: allwinner: a64: Add TCON clock The tcon clock need a mux table for it's parent, for now just list the parents twice. r345711: arm: allwinner: clk: Fix nm_recalc When comparing best frequencies use the absolute value. If we do not do that we end up choosing an always lower value than the best one if the exact freq cannot be met. Added: stable/12/sys/arm/allwinner/clkng/ccu_de2.c - copied unchanged from r344895, head/sys/arm/allwinner/clkng/ccu_de2.c Modified: stable/12/etc/mtree/BSD.root.dist stable/12/release/arm64/PINE64-LTS.conf stable/12/release/arm64/RPI3.conf stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c stable/12/sys/arm/allwinner/clkng/ccu_a64.c stable/12/sys/conf/files.arm64 stable/12/sys/modules/dtb/allwinner/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/etc/mtree/BSD.root.dist ============================================================================== --- stable/12/etc/mtree/BSD.root.dist Mon Aug 5 16:56:11 2019 (r350594) +++ stable/12/etc/mtree/BSD.root.dist Mon Aug 5 17:01:19 2019 (r350595) @@ -11,7 +11,11 @@ defaults .. dtb + allwinner tags=package=runtime + .. overlays tags=package=runtime + .. + rockchip tags=package=runtime .. .. firmware Modified: stable/12/release/arm64/PINE64-LTS.conf ============================================================================== --- stable/12/release/arm64/PINE64-LTS.conf Mon Aug 5 16:56:11 2019 (r350594) +++ stable/12/release/arm64/PINE64-LTS.conf Mon Aug 5 17:01:19 2019 (r350595) @@ -6,7 +6,7 @@ EMBEDDED_TARGET_ARCH="aarch64" EMBEDDED_TARGET="arm64" EMBEDDEDBUILD=1 -EMBEDDEDPORTS="sysutils/u-boot-sopine" +EMBEDDEDPORTS="sysutils/u-boot-pine64-lts" FAT_SIZE="54m -b 1m" FAT_TYPE="16" IMAGE_SIZE="3072M" @@ -18,7 +18,7 @@ FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64 export BOARDNAME="PINE64-LTS" arm_install_uboot() { - UBOOT_DIR="/usr/local/share/u-boot/u-boot-sopine" + UBOOT_DIR="/usr/local/share/u-boot/u-boot-pine64-lts" UBOOT_FILES="u-boot-sunxi-with-spl.bin" chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \ of=/dev/${mddev} bs=1k seek=8 conv=sync Modified: stable/12/release/arm64/RPI3.conf ============================================================================== --- stable/12/release/arm64/RPI3.conf Mon Aug 5 16:56:11 2019 (r350594) +++ stable/12/release/arm64/RPI3.conf Mon Aug 5 17:01:19 2019 (r350595) @@ -4,7 +4,7 @@ # DTB_DIR="/usr/local/share/rpi-firmware" -DTB="bcm2710-rpi-3-b.dtb" +DTB="bcm2710-rpi-3-b.dtb bcm2710-rpi-3-b-plus.dtb" EMBEDDED_TARGET_ARCH="aarch64" EMBEDDED_TARGET="arm64" EMBEDDEDBUILD=1 Modified: stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c Mon Aug 5 16:56:11 2019 (r350594) +++ stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c Mon Aug 5 17:01:19 2019 (r350595) @@ -155,7 +155,7 @@ aw_clk_nm_find_best(struct aw_clk_nm_sc *sc, uint64_t for (m = min_m; m <= max_m; ) { for (n = min_m; n <= max_n; ) { cur = fparent / n / m; - if ((*fout - cur) < (*fout - best)) { + if (abs(*fout - cur) < abs(*fout - best)) { best = cur; *factor_n = n; *factor_m = m; @@ -300,7 +300,11 @@ aw_clk_nm_recalc(struct clknode *clk, uint64_t *freq) else prediv = 1; - *freq = *freq / prediv / n / m; + /* For FRAC NM the formula is freq_parent * n / m */ + if (sc->flags & AW_CLK_HAS_FRAC) + *freq = *freq * n / m; + else + *freq = *freq / prediv / n / m; } return (0); Modified: stable/12/sys/arm/allwinner/clkng/ccu_a64.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_a64.c Mon Aug 5 16:56:11 2019 (r350594) +++ stable/12/sys/arm/allwinner/clkng/ccu_a64.c Mon Aug 5 17:01:19 2019 (r350595) @@ -289,6 +289,15 @@ NM_CLK_WITH_FRAC(pll_video0_clk, AW_CLK_HAS_LOCK, /* flags */ 270000000, 297000000, /* freq0, freq1 */ 24, 25); /* mode sel, freq sel */ +static const char *pll_video0_2x_parents[] = {"pll_video0"}; +FIXED_CLK(pll_video0_2x_clk, + CLK_PLL_VIDEO0_2X, /* id */ + "pll_video0-2x", /* name */ + pll_video0_2x_parents, /* parent */ + 0, /* freq */ + 2, /* mult */ + 1, /* div */ + 0); /* flags */ static const char *pll_ve_parents[] = {"osc24M"}; NM_CLK_WITH_FRAC(pll_ve_clk, @@ -631,6 +640,15 @@ NM_CLK(de_clk, AW_CLK_HAS_MUX | AW_CLK_HAS_GATE); /* flags */ /* TCON0/1 Needs mux table */ +static const char *tcon1_parents[] = {"pll_video0", "pll_video0", "pll_video1"}; +NM_CLK(tcon1_clk, + CLK_TCON1, "tcon1", tcon1_parents, + 0x11C, + 0, 0, 1, AW_CLK_FACTOR_FIXED, + 0, 4, 0, 0, + 24, 2, + 31, + AW_CLK_HAS_MUX | AW_CLK_HAS_GATE); static const char *deinterlace_parents[] = {"pll_periph0", "pll_periph1"}; NM_CLK(deinterlace_clk, @@ -727,6 +745,7 @@ static struct aw_ccung_clk a64_ccu_clks[] = { { .type = AW_CLK_NM, .clk.nm = &spdif_clk}, { .type = AW_CLK_NM, .clk.nm = &dram_clk}, { .type = AW_CLK_NM, .clk.nm = &de_clk}, + { .type = AW_CLK_NM, .clk.nm = &tcon1_clk}, { .type = AW_CLK_NM, .clk.nm = &deinterlace_clk}, { .type = AW_CLK_NM, .clk.nm = &csi_sclk_clk}, { .type = AW_CLK_NM, .clk.nm = &csi_mclk_clk}, @@ -750,6 +769,7 @@ static struct aw_ccung_clk a64_ccu_clks[] = { { .type = AW_CLK_FIXED, .clk.fixed = &pll_audio_2x_clk}, { .type = AW_CLK_FIXED, .clk.fixed = &pll_audio_4x_clk}, { .type = AW_CLK_FIXED, .clk.fixed = &pll_audio_8x_clk}, + { .type = AW_CLK_FIXED, .clk.fixed = &pll_video0_2x_clk}, }; static struct aw_clk_init a64_init_clks[] = { Copied: stable/12/sys/arm/allwinner/clkng/ccu_de2.c (from r344895, head/sys/arm/allwinner/clkng/ccu_de2.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm/allwinner/clkng/ccu_de2.c Mon Aug 5 17:01:19 2019 (r350595, copy of r344895, head/sys/arm/allwinner/clkng/ccu_de2.c) @@ -0,0 +1,167 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Emmanuel Vadot + * + * 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. + * + * $FreeBSD$ + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include "opt_soc.h" + +#include +#include +#include + +#include + +#include +#include + +/* Non exported clocks */ +#define CLK_MIXER0_DIV 3 +#define CLK_MIXER1_DIV 4 +#define CLK_WB_DIV 5 + +static struct aw_ccung_reset de2_ccu_resets[] = { + CCU_RESET(RST_MIXER0, 0x08, 0) + CCU_RESET(RST_MIXER1, 0x08, 1) + CCU_RESET(RST_WB, 0x08, 2) +}; + +static struct aw_ccung_gate de2_ccu_gates[] = { + CCU_GATE(CLK_BUS_MIXER0, "mixer0", "mixer0-div", 0x00, 0) + CCU_GATE(CLK_BUS_MIXER1, "mixer1", "mixer1-div", 0x00, 1) + CCU_GATE(CLK_BUS_WB, "wb", "wb-div", 0x00, 2) + + CCU_GATE(CLK_MIXER0, "bus-mixer0", "bus-de", 0x04, 0) + CCU_GATE(CLK_MIXER1, "bus-mixer1", "bus-de", 0x04, 1) + CCU_GATE(CLK_WB, "bus-wb", "bus-de", 0x04, 2) +}; + +static const char *div_parents[] = {"de"}; + +NM_CLK(mixer0_div_clk, + CLK_MIXER0_DIV, /* id */ + "mixer0-div", div_parents, /* names, parents */ + 0x0C, /* offset */ + 0, 0, 1, AW_CLK_FACTOR_FIXED, /* N factor (fake)*/ + 0, 4, 0, 0, /* M flags */ + 0, 0, /* mux */ + 0, /* gate */ + AW_CLK_SCALE_CHANGE); /* flags */ + +NM_CLK(mixer1_div_clk, + CLK_MIXER1_DIV, /* id */ + "mixer1-div", div_parents, /* names, parents */ + 0x0C, /* offset */ + 0, 0, 1, AW_CLK_FACTOR_FIXED, /* N factor (fake)*/ + 4, 4, 0, 0, /* M flags */ + 0, 0, /* mux */ + 0, /* gate */ + AW_CLK_SCALE_CHANGE); /* flags */ + +NM_CLK(wb_div_clk, + CLK_WB_DIV, /* id */ + "wb-div", div_parents, /* names, parents */ + 0x0C, /* offset */ + 0, 0, 1, AW_CLK_FACTOR_FIXED, /* N factor (fake)*/ + 8, 4, 0, 0, /* M flags */ + 0, 0, /* mux */ + 0, /* gate */ + AW_CLK_SCALE_CHANGE); /* flags */ + +static struct aw_ccung_clk de2_ccu_clks[] = { + { .type = AW_CLK_NM, .clk.nm = &mixer0_div_clk}, + { .type = AW_CLK_NM, .clk.nm = &mixer1_div_clk}, + { .type = AW_CLK_NM, .clk.nm = &wb_div_clk}, +}; + +static struct ofw_compat_data compat_data[] = { + {"allwinner,sun50i-a64-de2-clk", 1}, + {"allwinner,sun50i-h5-de2-clk", 1}, + {NULL, 0} +}; + +static int +ccu_de2_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, "Allwinner DE2 Clock Control Unit"); + return (BUS_PROBE_DEFAULT); +} + +static int +ccu_de2_attach(device_t dev) +{ + struct aw_ccung_softc *sc; + + sc = device_get_softc(dev); + + sc->resets = de2_ccu_resets; + sc->nresets = nitems(de2_ccu_resets); + sc->gates = de2_ccu_gates; + sc->ngates = nitems(de2_ccu_gates); + sc->clks = de2_ccu_clks; + sc->nclks = nitems(de2_ccu_clks); + + return (aw_ccung_attach(dev)); +} + +static device_method_t ccu_de2_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ccu_de2_probe), + DEVMETHOD(device_attach, ccu_de2_attach), + + DEVMETHOD_END +}; + +static devclass_t ccu_de2ng_devclass; + +DEFINE_CLASS_1(ccu_de2, ccu_de2_driver, ccu_de2_methods, + sizeof(struct aw_ccung_softc), aw_ccung_driver); + +EARLY_DRIVER_MODULE(ccu_de2, simplebus, ccu_de2_driver, + ccu_de2ng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_LAST); Modified: stable/12/sys/conf/files.arm64 ============================================================================== --- stable/12/sys/conf/files.arm64 Mon Aug 5 16:56:11 2019 (r350594) +++ stable/12/sys/conf/files.arm64 Mon Aug 5 17:01:19 2019 (r350595) @@ -51,6 +51,7 @@ arm/allwinner/clkng/aw_clk_prediv_mux.c optional aw_cc arm/allwinner/clkng/ccu_a64.c optional soc_allwinner_a64 aw_ccu fdt arm/allwinner/clkng/ccu_h3.c optional soc_allwinner_h5 aw_ccu fdt arm/allwinner/clkng/ccu_sun8i_r.c optional aw_ccu fdt +arm/allwinner/clkng/ccu_de2.c optional aw_ccu fdt # Allwinner padconf files arm/allwinner/a64/a64_padconf.c optional soc_allwinner_a64 fdt Modified: stable/12/sys/modules/dtb/allwinner/Makefile ============================================================================== --- stable/12/sys/modules/dtb/allwinner/Makefile Mon Aug 5 16:56:11 2019 (r350594) +++ stable/12/sys/modules/dtb/allwinner/Makefile Mon Aug 5 17:01:19 2019 (r350595) @@ -20,6 +20,7 @@ DTS= \ sun8i-h3-nanopi-m1-plus.dts \ sun8i-h3-nanopi-neo.dts \ sun8i-h3-orangepi-one.dts \ + sun8i-h3-orangepi-pc.dts \ sun8i-h3-orangepi-plus2e.dts DTSO= sun8i-a83t-sid.dtso \ From owner-svn-src-stable@freebsd.org Mon Aug 5 17:06:21 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 78BAEA8300; Mon, 5 Aug 2019 17:06:21 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462PLP3Pq0z3wqH; Mon, 5 Aug 2019 17:06:21 +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 3E04B1EE11; Mon, 5 Aug 2019 17:06:21 +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 x75H6Le1074581; Mon, 5 Aug 2019 17:06:21 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75H6KBO074578; Mon, 5 Aug 2019 17:06:20 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051706.x75H6KBO074578@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 17:06:20 +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: r350596 - stable/12/sys/dev/iicbus/twsi X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: stable/12/sys/dev/iicbus/twsi X-SVN-Commit-Revision: 350596 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 17:06:21 -0000 Author: manu Date: Mon Aug 5 17:06:20 2019 New Revision: 350596 URL: https://svnweb.freebsd.org/changeset/base/350596 Log: MFC r345948, r345951 r345948: twsi: Add interrupt mode Add the ability to use interrupts for i2c message. We still use polling for early boot i2c transfer (for PMIC for example) but as soon as interrupts are available use them. On Allwinner SoC >A20 is seems that polling mode is broken for some reason, this is now fixed by using interrupt mode. For Allwinner also fix the frequency calculation, the one in the code was for when the APB frequency is at 48Mhz while it is at 24Mhz on most (all?) Allwinner SoCs. We now support both cases. While here add more debug info when it's compiled in. Tested On: A20, H3, A64 r345951: twsi: Use config_intrhook_oneshot instead of config_intrhook_establish Suggested by: ian X-MFC-With: 345948 Modified: stable/12/sys/dev/iicbus/twsi/a10_twsi.c stable/12/sys/dev/iicbus/twsi/twsi.c stable/12/sys/dev/iicbus/twsi/twsi.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/iicbus/twsi/a10_twsi.c ============================================================================== --- stable/12/sys/dev/iicbus/twsi/a10_twsi.c Mon Aug 5 17:01:19 2019 (r350595) +++ stable/12/sys/dev/iicbus/twsi/a10_twsi.c Mon Aug 5 17:06:20 2019 (r350596) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2016 Emmanuel Vadot - * All rights reserved. + * Copyright (c) 2016-2019 Emmanuel Vadot * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -90,6 +89,7 @@ a10_twsi_attach(device_t dev) struct twsi_softc *sc; clk_t clk; hwreset_t rst; + uint64_t freq; int error; sc = device_get_softc(dev); @@ -124,10 +124,31 @@ a10_twsi_attach(device_t dev) sc->reg_soft_reset = TWI_SRST; /* Setup baud rate params */ - sc->baud_rate[IIC_SLOW].param = TWSI_BAUD_RATE_PARAM(11, 2); - sc->baud_rate[IIC_FAST].param = TWSI_BAUD_RATE_PARAM(11, 2); - sc->baud_rate[IIC_FASTEST].param = TWSI_BAUD_RATE_PARAM(2, 2); + clk_get_freq(clk, &freq); + switch (freq) { + /* + * Formula is + * F0 = FINT / 2 ^ CLK_N + * F1 = F0 / (CLK_M + 1) + * + * Doc says that the output freq is F1/10 but my logic analyzer says otherwise + */ + case 48000000: + sc->baud_rate[IIC_SLOW].param = TWSI_BAUD_RATE_PARAM(11, 1); + sc->baud_rate[IIC_FAST].param = TWSI_BAUD_RATE_PARAM(11, 1); + sc->baud_rate[IIC_FASTEST].param = TWSI_BAUD_RATE_PARAM(2, 1); + break; + case 24000000: + sc->baud_rate[IIC_SLOW].param = TWSI_BAUD_RATE_PARAM(5, 2); + sc->baud_rate[IIC_FAST].param = TWSI_BAUD_RATE_PARAM(5, 2); + sc->baud_rate[IIC_FASTEST].param = TWSI_BAUD_RATE_PARAM(2, 2); + break; + default: + device_printf(dev, "Non supported frequency\n"); + return (ENXIO); + } + sc->need_ack = true; return (twsi_attach(dev)); } @@ -154,8 +175,8 @@ DEFINE_CLASS_1(iichb, a10_twsi_driver, a10_twsi_method static devclass_t a10_twsi_devclass; EARLY_DRIVER_MODULE(a10_twsi, simplebus, a10_twsi_driver, a10_twsi_devclass, - 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); EARLY_DRIVER_MODULE(iicbus, a10_twsi, iicbus_driver, iicbus_devclass, - 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); MODULE_DEPEND(a10_twsi, iicbus, 1, 1, 1); SIMPLEBUS_PNP_INFO(compat_data); Modified: stable/12/sys/dev/iicbus/twsi/twsi.c ============================================================================== --- stable/12/sys/dev/iicbus/twsi/twsi.c Mon Aug 5 17:01:19 2019 (r350595) +++ stable/12/sys/dev/iicbus/twsi/twsi.c Mon Aug 5 17:06:20 2019 (r350596) @@ -31,7 +31,7 @@ /* * Driver for the TWSI (aka I2C, aka IIC) bus controller found on Marvell - * and Allwinner SoCs. Supports master operation only, and works in polling mode. + * and Allwinner SoCs. Supports master operation only. * * Calls to DELAY() are needed per Application Note AN-179 "TWSI Software * Guidelines for Discovery(TM), Horizon (TM) and Feroceon(TM) Devices". @@ -75,8 +75,11 @@ __FBSDID("$FreeBSD$"); #define TWSI_STATUS_START 0x08 #define TWSI_STATUS_RPTD_START 0x10 #define TWSI_STATUS_ADDR_W_ACK 0x18 +#define TWSI_STATUS_ADDR_W_NACK 0x20 #define TWSI_STATUS_DATA_WR_ACK 0x28 +#define TWSI_STATUS_DATA_WR_NACK 0x30 #define TWSI_STATUS_ADDR_R_ACK 0x40 +#define TWSI_STATUS_ADDR_R_NACK 0x48 #define TWSI_STATUS_DATA_RD_ACK 0x50 #define TWSI_STATUS_DATA_RD_NOACK 0x58 @@ -84,27 +87,32 @@ __FBSDID("$FreeBSD$"); #undef TWSI_DEBUG #ifdef TWSI_DEBUG -#define debugf(fmt, args...) do { printf("%s(): ", __func__); printf(fmt,##args); } while (0) +#define debugf(dev, fmt, args...) device_printf(dev, "%s: " fmt, __func__, ##args) #else -#define debugf(fmt, args...) +#define debugf(dev, fmt, args...) #endif static struct resource_spec res_spec[] = { { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 0, RF_ACTIVE | RF_SHAREABLE}, { -1, 0 } }; static __inline uint32_t TWSI_READ(struct twsi_softc *sc, bus_size_t off) { + uint32_t val; - return (bus_read_4(sc->res[0], off)); + val = bus_read_4(sc->res[0], off); + debugf(sc->dev, "read %x from %lx\n", val, off); + return (val); } static __inline void TWSI_WRITE(struct twsi_softc *sc, bus_size_t off, uint32_t val) { + debugf(sc->dev, "Writing %x to %lx\n", val, off); bus_write_4(sc->res[0], off, val); } @@ -114,8 +122,10 @@ twsi_control_clear(struct twsi_softc *sc, uint32_t mas uint32_t val; val = TWSI_READ(sc, sc->reg_control); + debugf(sc->dev, "read val=%x\n", val); val &= ~(TWSI_CONTROL_STOP | TWSI_CONTROL_START); val &= ~mask; + debugf(sc->dev, "write val=%x\n", val); TWSI_WRITE(sc, sc->reg_control, val); } @@ -125,8 +135,10 @@ twsi_control_set(struct twsi_softc *sc, uint32_t mask) uint32_t val; val = TWSI_READ(sc, sc->reg_control); + debugf(sc->dev, "read val=%x\n", val); val &= ~(TWSI_CONTROL_STOP | TWSI_CONTROL_START); val |= mask; + debugf(sc->dev, "write val=%x\n", val); TWSI_WRITE(sc, sc->reg_control, val); } @@ -151,11 +163,13 @@ twsi_poll_ctrl(struct twsi_softc *sc, int timeout, uin { timeout /= 10; + debugf(sc->dev, "Waiting for ctrl reg to match mask %x\n", mask); while (!(TWSI_READ(sc, sc->reg_control) & mask)) { DELAY(10); if (--timeout < 0) return (timeout); } + debugf(sc->dev, "done\n"); return (0); } @@ -179,10 +193,11 @@ twsi_locked_start(device_t dev, struct twsi_softc *sc, /* read IFLG to know if it should be cleared later; from NBSD */ iflg_set = TWSI_READ(sc, sc->reg_control) & TWSI_CONTROL_IFLG; + debugf(dev, "send start\n"); twsi_control_set(sc, TWSI_CONTROL_START); if (mask == TWSI_STATUS_RPTD_START && iflg_set) { - debugf("IFLG set, clearing\n"); + debugf(dev, "IFLG set, clearing (mask=%x)\n", mask); twsi_clear_iflg(sc); } @@ -193,14 +208,16 @@ twsi_locked_start(device_t dev, struct twsi_softc *sc, DELAY(1000); if (twsi_poll_ctrl(sc, timeout, TWSI_CONTROL_IFLG)) { - debugf("timeout sending %sSTART condition\n", + debugf(dev, "timeout sending %sSTART condition\n", mask == TWSI_STATUS_START ? "" : "repeated "); return (IIC_ETIMEOUT); } status = TWSI_READ(sc, sc->reg_status); + debugf(dev, "status=%x\n", status); + if (status != mask) { - debugf("wrong status (%02x) after sending %sSTART condition\n", + debugf(dev, "wrong status (%02x) after sending %sSTART condition\n", status, mask == TWSI_STATUS_START ? "" : "repeated "); return (IIC_ESTATUS); } @@ -210,15 +227,15 @@ twsi_locked_start(device_t dev, struct twsi_softc *sc, DELAY(1000); if (twsi_poll_ctrl(sc, timeout, TWSI_CONTROL_IFLG)) { - debugf("timeout sending slave address\n"); + debugf(dev, "timeout sending slave address (timeout=%d)\n", timeout); return (IIC_ETIMEOUT); } - + read_access = (slave & 0x1) ? 1 : 0; status = TWSI_READ(sc, sc->reg_status); if (status != (read_access ? TWSI_STATUS_ADDR_R_ACK : TWSI_STATUS_ADDR_W_ACK)) { - debugf("no ACK (status: %02x) after sending slave address\n", + debugf(dev, "no ACK (status: %02x) after sending slave address\n", status); return (IIC_ENOACK); } @@ -234,6 +251,7 @@ twsi_reset(device_t dev, u_char speed, u_char addr, u_ { struct twsi_softc *sc; uint32_t param; + /* uint32_t val; */ sc = device_get_softc(dev); @@ -241,17 +259,18 @@ twsi_reset(device_t dev, u_char speed, u_char addr, u_ case IIC_SLOW: case IIC_FAST: param = sc->baud_rate[speed].param; + debugf(dev, "Using IIC_FAST mode with speed param=%x\n", param); break; case IIC_FASTEST: case IIC_UNKNOWN: default: param = sc->baud_rate[IIC_FAST].param; + debugf(dev, "Using IIC_FASTEST/UNKNOWN mode with speed param=%x\n", param); break; } mtx_lock(&sc->mutex); TWSI_WRITE(sc, sc->reg_soft_reset, 0x0); - DELAY(2000); TWSI_WRITE(sc, sc->reg_baud_rate, param); TWSI_WRITE(sc, sc->reg_control, TWSI_CONTROL_TWSIEN); DELAY(1000); @@ -267,6 +286,7 @@ twsi_stop(device_t dev) sc = device_get_softc(dev); + debugf(dev, "%s\n", __func__); mtx_lock(&sc->mutex); twsi_control_clear(sc, TWSI_CONTROL_ACK); twsi_control_set(sc, TWSI_CONTROL_STOP); @@ -288,6 +308,7 @@ twsi_repeated_start(device_t dev, u_char slave, int ti sc = device_get_softc(dev); + debugf(dev, "%s: slave=%x\n", __func__, slave); mtx_lock(&sc->mutex); rv = twsi_locked_start(dev, sc, TWSI_STATUS_RPTD_START, slave, timeout); @@ -311,6 +332,7 @@ twsi_start(device_t dev, u_char slave, int timeout) sc = device_get_softc(dev); + debugf(dev, "%s: slave=%x\n", __func__, slave); mtx_lock(&sc->mutex); rv = twsi_locked_start(dev, sc, TWSI_STATUS_START, slave, timeout); mtx_unlock(&sc->mutex); @@ -348,7 +370,7 @@ twsi_read(device_t dev, char *buf, int len, int *read, DELAY(1000); if (twsi_poll_ctrl(sc, delay, TWSI_CONTROL_IFLG)) { - debugf("timeout reading data\n"); + debugf(dev, "timeout reading data (delay=%d)\n", delay); rv = IIC_ETIMEOUT; goto out; } @@ -356,7 +378,7 @@ twsi_read(device_t dev, char *buf, int len, int *read, status = TWSI_READ(sc, sc->reg_status); if (status != (last_byte ? TWSI_STATUS_DATA_RD_NOACK : TWSI_STATUS_DATA_RD_ACK)) { - debugf("wrong status (%02x) while reading\n", status); + debugf(dev, "wrong status (%02x) while reading\n", status); rv = IIC_ESTATUS; goto out; } @@ -387,14 +409,14 @@ twsi_write(device_t dev, const char *buf, int len, int twsi_clear_iflg(sc); DELAY(1000); if (twsi_poll_ctrl(sc, timeout, TWSI_CONTROL_IFLG)) { - debugf("timeout writing data\n"); + debugf(dev, "timeout writing data (timeout=%d)\n", timeout); rv = IIC_ETIMEOUT; goto out; } status = TWSI_READ(sc, sc->reg_status); if (status != TWSI_STATUS_DATA_WR_ACK) { - debugf("wrong status (%02x) while writing\n", status); + debugf(dev, "wrong status (%02x) while writing\n", status); rv = IIC_ESTATUS; goto out; } @@ -406,6 +428,201 @@ out: return (rv); } +static int +twsi_transfer(device_t dev, struct iic_msg *msgs, uint32_t nmsgs) +{ + struct twsi_softc *sc; + int i; + + sc = device_get_softc(dev); + + if (sc->have_intr == false) + return (iicbus_transfer_gen(dev, msgs, nmsgs)); + + sc->error = 0; + + sc->control_val = TWSI_CONTROL_TWSIEN | + TWSI_CONTROL_INTEN | TWSI_CONTROL_ACK; + TWSI_WRITE(sc, sc->reg_control, sc->control_val); + debugf(dev, "transmitting %d messages\n", nmsgs); + debugf(sc->dev, "status=%x\n", TWSI_READ(sc, sc->reg_status)); + for (i = 0; i < nmsgs && sc->error == 0; i++) { + sc->transfer = 1; + sc->msg = &msgs[i]; + debugf(dev, "msg[%d] flags: %x\n", i, msgs[i].flags); + debugf(dev, "msg[%d] len: %d\n", i, msgs[i].len); + + /* Send start and re-enable interrupts */ + sc->control_val = TWSI_CONTROL_TWSIEN | + TWSI_CONTROL_INTEN | TWSI_CONTROL_ACK; + if (sc->msg->len == 1) + sc->control_val &= ~TWSI_CONTROL_ACK; + TWSI_WRITE(sc, sc->reg_control, sc->control_val | TWSI_CONTROL_START); + while (sc->error == 0 && sc->transfer != 0) { + pause_sbt("twsi", SBT_1MS * 30, SBT_1MS, 0); + } + + debugf(dev, "Done with msg[%d]\n", i); + if (sc->error) { + debugf(sc->dev, "Error, aborting (%d)\n", sc->error); + TWSI_WRITE(sc, sc->reg_control, 0); + goto out; + } + } + + /* Disable module and interrupts */ + debugf(sc->dev, "status=%x\n", TWSI_READ(sc, sc->reg_status)); + TWSI_WRITE(sc, sc->reg_control, 0); + debugf(sc->dev, "status=%x\n", TWSI_READ(sc, sc->reg_status)); + +out: + return (sc->error); +} + +static void +twsi_intr(void *arg) +{ + struct twsi_softc *sc; + uint32_t status; + int transfer_done = 0; + + sc = arg; + + debugf(sc->dev, "Got interrupt\n"); + + while (TWSI_READ(sc, sc->reg_control) & TWSI_CONTROL_IFLG) { + status = TWSI_READ(sc, sc->reg_status); + debugf(sc->dev, "status=%x\n", status); + + switch (status) { + case TWSI_STATUS_START: + case TWSI_STATUS_RPTD_START: + /* Transmit the address */ + debugf(sc->dev, "Send the address\n"); + + if (sc->msg->flags & IIC_M_RD) + TWSI_WRITE(sc, sc->reg_data, + sc->msg->slave | LSB); + else + TWSI_WRITE(sc, sc->reg_data, + sc->msg->slave & ~LSB); + + TWSI_WRITE(sc, sc->reg_control, sc->control_val); + break; + + case TWSI_STATUS_ADDR_W_ACK: + debugf(sc->dev, "Ack received after transmitting the address\n"); + /* Directly send the first byte */ + sc->sent_bytes = 0; + debugf(sc->dev, "Sending byte 0 = %x\n", sc->msg->buf[0]); + TWSI_WRITE(sc, sc->reg_data, sc->msg->buf[0]); + + TWSI_WRITE(sc, sc->reg_control, sc->control_val); + break; + + case TWSI_STATUS_ADDR_R_ACK: + sc->recv_bytes = 0; + + TWSI_WRITE(sc, sc->reg_control, sc->control_val); + break; + + case TWSI_STATUS_ADDR_W_NACK: + case TWSI_STATUS_ADDR_R_NACK: + debugf(sc->dev, "No ack received after transmitting the address\n"); + sc->transfer = 0; + sc->error = ETIMEDOUT; + sc->control_val = 0; + wakeup(sc); + break; + + case TWSI_STATUS_DATA_WR_ACK: + debugf(sc->dev, "Ack received after transmitting data\n"); + if (sc->sent_bytes++ == (sc->msg->len - 1)) { + debugf(sc->dev, "Done sending all the bytes\n"); + /* Send stop, no interrupts on stop */ + if (!(sc->msg->flags & IIC_M_NOSTOP)) { + debugf(sc->dev, "Done TX data, send stop\n"); + TWSI_WRITE(sc, sc->reg_control, + sc->control_val | TWSI_CONTROL_STOP); + } else { + sc->control_val &= ~TWSI_CONTROL_INTEN; + TWSI_WRITE(sc, sc->reg_control, + sc->control_val); + } + transfer_done = 1; + } else { + debugf(sc->dev, "Sending byte %d = %x\n", + sc->sent_bytes, + sc->msg->buf[sc->sent_bytes]); + TWSI_WRITE(sc, sc->reg_data, + sc->msg->buf[sc->sent_bytes]); + TWSI_WRITE(sc, sc->reg_control, + sc->control_val); + } + + break; + case TWSI_STATUS_DATA_RD_ACK: + debugf(sc->dev, "Ack received after receiving data\n"); + debugf(sc->dev, "msg_len=%d recv_bytes=%d\n", sc->msg->len, sc->recv_bytes); + sc->msg->buf[sc->recv_bytes++] = TWSI_READ(sc, sc->reg_data); + + /* If we only have one byte left, disable ACK */ + if (sc->msg->len - sc->recv_bytes == 1) + sc->control_val &= ~TWSI_CONTROL_ACK; + TWSI_WRITE(sc, sc->reg_control, sc->control_val); + break; + + case TWSI_STATUS_DATA_RD_NOACK: + if (sc->msg->len - sc->recv_bytes == 1) { + sc->msg->buf[sc->recv_bytes++] = TWSI_READ(sc, sc->reg_data); + debugf(sc->dev, "Done RX data, send stop (2)\n"); + if (!(sc->msg->flags & IIC_M_NOSTOP)) + TWSI_WRITE(sc, sc->reg_control, + sc->control_val | TWSI_CONTROL_STOP); + } else { + debugf(sc->dev, "No ack when receiving data\n"); + sc->error = ENXIO; + sc->control_val = 0; + } + sc->transfer = 0; + transfer_done = 1; + break; + + default: + debugf(sc->dev, "status=%x hot handled\n", status); + sc->transfer = 0; + sc->error = ENXIO; + sc->control_val = 0; + wakeup(sc); + break; + } + + if (sc->need_ack) + TWSI_WRITE(sc, sc->reg_control, + sc->control_val | TWSI_CONTROL_IFLG); + } + + debugf(sc->dev, "Done with interrupts\n"); + if (transfer_done == 1) { + sc->transfer = 0; + wakeup(sc); + } +} + +static void +twsi_intr_start(void *pdev) +{ + struct twsi_softc *sc; + + sc = device_get_softc(pdev); + + if ((bus_setup_intr(pdev, sc->res[1], INTR_TYPE_MISC | INTR_MPSAFE, + NULL, twsi_intr, sc, &sc->intrhand))) + device_printf(pdev, "unable to register interrupt handler\n"); + + sc->have_intr = true; +} + int twsi_attach(device_t dev) { @@ -430,6 +647,8 @@ twsi_attach(device_t dev) } bus_generic_attach(dev); + config_intrhook_oneshot(twsi_intr_start, dev); + return (0); } @@ -448,6 +667,9 @@ twsi_detach(device_t dev) if ((rv = device_delete_child(dev, sc->iicbus)) != 0) return (rv); + if (sc->intrhand != NULL) + bus_teardown_intr(sc->dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, res_spec, sc->res); mtx_destroy(&sc->mutex); @@ -477,7 +699,7 @@ static device_method_t twsi_methods[] = { DEVMETHOD(iicbus_write, twsi_write), DEVMETHOD(iicbus_read, twsi_read), DEVMETHOD(iicbus_reset, twsi_reset), - DEVMETHOD(iicbus_transfer, iicbus_transfer_gen), + DEVMETHOD(iicbus_transfer, twsi_transfer), { 0, 0 } }; Modified: stable/12/sys/dev/iicbus/twsi/twsi.h ============================================================================== --- stable/12/sys/dev/iicbus/twsi/twsi.h Mon Aug 5 17:01:19 2019 (r350595) +++ stable/12/sys/dev/iicbus/twsi/twsi.h Mon Aug 5 17:06:20 2019 (r350596) @@ -43,9 +43,19 @@ struct twsi_baud_rate { struct twsi_softc { device_t dev; - struct resource *res[1]; /* SYS_RES_MEMORY */ + struct resource *res[2]; struct mtx mutex; device_t iicbus; + void * intrhand; + bool have_intr; + + struct iic_msg *msg; + uint16_t sent_bytes; + uint16_t recv_bytes; + int transfer; + int error; + uint32_t control_val; + bool need_ack; bus_size_t reg_data; bus_size_t reg_slave_addr; From owner-svn-src-stable@freebsd.org Mon Aug 5 17:23:27 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4980BA89C8; Mon, 5 Aug 2019 17:23:27 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462Pk71yf4z3xsw; Mon, 5 Aug 2019 17:23:27 +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 0783C1F191; Mon, 5 Aug 2019 17:23:27 +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 x75HNRgG086445; Mon, 5 Aug 2019 17:23:27 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75HNNVE086427; Mon, 5 Aug 2019 17:23:23 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051723.x75HNNVE086427@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 17:23:23 +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: r350597 - in stable/12/sys: arm/allwinner arm/allwinner/clkng gnu/dts/arm gnu/dts/arm64/allwinner gnu/dts/arm64/altera gnu/dts/arm64/amlogic gnu/dts/arm64/arm gnu/dts/arm64/exynos gnu/d... X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/allwinner arm/allwinner/clkng gnu/dts/arm gnu/dts/arm64/allwinner gnu/dts/arm64/altera gnu/dts/arm64/amlogic gnu/dts/arm64/arm gnu/dts/arm64/exynos gnu/dts/arm64/freescale gnu/dt... X-SVN-Commit-Revision: 350597 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 17:23:27 -0000 Author: manu Date: Mon Aug 5 17:23:23 2019 New Revision: 350597 URL: https://svnweb.freebsd.org/changeset/base/350597 Log: MFC r346092, r346271-r346272 r346092: Import DTS files from Linux 5.0 r346271: aw_rtc: Register the clocks Since latest DTS update the rtc is supposed to register two clocks : - osc32k (the 32k oscillator on the board that the RTC uses directly and that other peripheral can use) - iosc (the internal oscillator of the RTC when available which frequency depend on the SoC revision) Since we need the RTC before the proper clock control unit (because it uses those clocks) attach it a BUS_PASS_BUS + MIDDLE and attach the clock control unit at BUS_PASS_BUS + LAST for the SoC that requires it. Tested On: A20, H3, A64 r346272: aw_syscon: Add a new compatible Since 5.0 DTS the syscon controller have a new compatible as it exports new subnodes, we currently only use it as a syscon provider so just add the new compatible. Tested On: H3 Added: stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/am33xx-l4.dtsi stable/12/sys/gnu/dts/arm/am437x-l4.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/am437x-l4.dtsi stable/12/sys/gnu/dts/arm/aspeed-bmc-facebook-cmm.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/aspeed-bmc-facebook-cmm.dts stable/12/sys/gnu/dts/arm/bcm2836-rpi.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/bcm2836-rpi.dtsi stable/12/sys/gnu/dts/arm/bcm4708-linksys-ea6500-v2.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/bcm4708-linksys-ea6500-v2.dts stable/12/sys/gnu/dts/arm/dra7-l4.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/dra7-l4.dtsi stable/12/sys/gnu/dts/arm/facebook-bmc-flash-layout.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/facebook-bmc-flash-layout.dtsi stable/12/sys/gnu/dts/arm/imx6dl-emcon-avari.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/imx6dl-emcon-avari.dts stable/12/sys/gnu/dts/arm/imx6q-emcon-avari.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/imx6q-emcon-avari.dts stable/12/sys/gnu/dts/arm/imx6qdl-emcon-avari.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/imx6qdl-emcon-avari.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-emcon.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/imx6qdl-emcon.dtsi stable/12/sys/gnu/dts/arm/imx6ul-pico-pi.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/imx6ul-pico-pi.dts stable/12/sys/gnu/dts/arm/imx6ul-pico.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/imx6ul-pico.dtsi stable/12/sys/gnu/dts/arm/imx7d-pico-hobbit.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/imx7d-pico-hobbit.dts stable/12/sys/gnu/dts/arm/imx7d-sdb-reva.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/imx7d-sdb-reva.dts stable/12/sys/gnu/dts/arm/imx7ulp-evk.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/imx7ulp-evk.dts stable/12/sys/gnu/dts/arm/imx7ulp.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/imx7ulp.dtsi stable/12/sys/gnu/dts/arm/omap5-l4.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/omap5-l4.dtsi stable/12/sys/gnu/dts/arm/pxa300-raumfeld-common.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/pxa300-raumfeld-common.dtsi stable/12/sys/gnu/dts/arm/pxa300-raumfeld-connector.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/pxa300-raumfeld-connector.dts stable/12/sys/gnu/dts/arm/pxa300-raumfeld-controller.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/pxa300-raumfeld-controller.dts stable/12/sys/gnu/dts/arm/pxa300-raumfeld-speaker-l.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/pxa300-raumfeld-speaker-l.dts stable/12/sys/gnu/dts/arm/pxa300-raumfeld-speaker-m.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/pxa300-raumfeld-speaker-m.dts stable/12/sys/gnu/dts/arm/pxa300-raumfeld-speaker-one.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/pxa300-raumfeld-speaker-one.dts stable/12/sys/gnu/dts/arm/pxa300-raumfeld-speaker-s.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/pxa300-raumfeld-speaker-s.dts stable/12/sys/gnu/dts/arm/pxa300-raumfeld-tuneable-clock.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/pxa300-raumfeld-tuneable-clock.dtsi stable/12/sys/gnu/dts/arm/r8a7744-iwg20d-q7-dbcm-ca.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/r8a7744-iwg20d-q7-dbcm-ca.dts stable/12/sys/gnu/dts/arm/r8a7744-iwg20d-q7.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/r8a7744-iwg20d-q7.dts stable/12/sys/gnu/dts/arm/r8a7744-iwg20m.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/r8a7744-iwg20m.dtsi stable/12/sys/gnu/dts/arm/r8a7744.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/r8a7744.dtsi stable/12/sys/gnu/dts/arm/rda8810pl-orangepi-2g-iot.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/rda8810pl-orangepi-2g-iot.dts stable/12/sys/gnu/dts/arm/rda8810pl-orangepi-i96.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/rda8810pl-orangepi-i96.dts stable/12/sys/gnu/dts/arm/rda8810pl.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/rda8810pl.dtsi stable/12/sys/gnu/dts/arm/rk3188-bqedison2qc.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/rk3188-bqedison2qc.dts stable/12/sys/gnu/dts/arm/sun8i-h3-mapleboard-mp130.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/sun8i-h3-mapleboard-mp130.dts stable/12/sys/gnu/dts/arm/sun8i-t3-cqa3t-bv3.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/sun8i-t3-cqa3t-bv3.dts stable/12/sys/gnu/dts/arm/suniv-f1c100s-licheepi-nano.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/suniv-f1c100s-licheepi-nano.dts stable/12/sys/gnu/dts/arm/suniv-f1c100s.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm/suniv-f1c100s.dtsi stable/12/sys/gnu/dts/arm/vf610-bk4.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/vf610-bk4.dts stable/12/sys/gnu/dts/arm/vf610-zii-scu4-aib.dts - copied unchanged from r346092, head/sys/gnu/dts/arm/vf610-zii-scu4-aib.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-emlid-neutis-n5-devboard.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/allwinner/sun50i-h5-emlid-neutis-n5-devboard.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-emlid-neutis-n5.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/allwinner/sun50i-h5-emlid-neutis-n5.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi-lite2.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi-lite2.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s805x-libretech-ac.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/amlogic/meson-gxl-s805x-libretech-ac.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905d-phicomm-n1.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/amlogic/meson-gxl-s905d-phicomm-n1.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a-frwy.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/fsl-ls1012a-frwy.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1028a-qds.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/fsl-ls1028a-qds.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1028a-rdb.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/fsl-ls1028a-rdb.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1028a.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/fsl-ls1028a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-lx2160a-qds.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/fsl-lx2160a-qds.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-lx2160a-rdb.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/fsl-lx2160a-rdb.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-lx2160a.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/fsl-lx2160a.dtsi stable/12/sys/gnu/dts/arm64/freescale/imx8mq-evk.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/imx8mq-evk.dts stable/12/sys/gnu/dts/arm64/freescale/imx8mq-pinfunc.h - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/imx8mq-pinfunc.h stable/12/sys/gnu/dts/arm64/freescale/imx8mq.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/freescale/imx8mq.dtsi stable/12/sys/gnu/dts/arm64/hisilicon/hikey970-pinctrl.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/hisilicon/hikey970-pinctrl.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-8040-mcbin-singleshot.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/marvell/armada-8040-mcbin-singleshot.dts stable/12/sys/gnu/dts/arm64/marvell/armada-8040-mcbin.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/marvell/armada-8040-mcbin.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8998-pins.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/qcom/msm8998-pins.dtsi stable/12/sys/gnu/dts/arm64/qcom/pms405.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/qcom/pms405.dtsi stable/12/sys/gnu/dts/arm64/qcom/qcs404-evb-1000.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/qcom/qcs404-evb-1000.dts stable/12/sys/gnu/dts/arm64/qcom/qcs404-evb-4000.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/qcom/qcs404-evb-4000.dts stable/12/sys/gnu/dts/arm64/qcom/qcs404-evb.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/qcom/qcs404-evb.dtsi stable/12/sys/gnu/dts/arm64/qcom/qcs404.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/qcom/qcs404.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet-inx.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet-inx.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet-kd.dts - copied unchanged from r346092, head/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet-kd.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet.dtsi - copied unchanged from r346092, head/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet.dtsi stable/12/sys/gnu/dts/include/dt-bindings/clock/imx7ulp-clock.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/clock/imx7ulp-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx8-clock.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/clock/imx8-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx8mq-clock.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/clock/imx8mq-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/mt7629-clk.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/clock/mt7629-clk.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gpucc-sdm845.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/clock/qcom,gpucc-sdm845.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,lpass-sdm845.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/clock/qcom,lpass-sdm845.h stable/12/sys/gnu/dts/include/dt-bindings/clock/suniv-ccu-f1c100s.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/clock/suniv-ccu-f1c100s.h stable/12/sys/gnu/dts/include/dt-bindings/dma/dw-dmac.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/dma/dw-dmac.h stable/12/sys/gnu/dts/include/dt-bindings/firmware/ - copied from r346092, head/sys/gnu/dts/include/dt-bindings/firmware/ stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/k3.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/pinctrl/k3.h stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/mt6797-pinfunc.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/pinctrl/mt6797-pinfunc.h stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/pads-imx8qm.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/pinctrl/pads-imx8qm.h stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/pads-imx8qxp.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/pinctrl/pads-imx8qxp.h stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/r7s9210-pinctrl.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/pinctrl/r7s9210-pinctrl.h stable/12/sys/gnu/dts/include/dt-bindings/power/imx8mq-power.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/power/imx8mq-power.h stable/12/sys/gnu/dts/include/dt-bindings/power/rk3066-power.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/power/rk3066-power.h stable/12/sys/gnu/dts/include/dt-bindings/power/rk3188-power.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/power/rk3188-power.h stable/12/sys/gnu/dts/include/dt-bindings/regulator/active-semi,8945a-regulator.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/regulator/active-semi,8945a-regulator.h stable/12/sys/gnu/dts/include/dt-bindings/reset/suniv-ccu-f1c100s.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/reset/suniv-ccu-f1c100s.h stable/12/sys/gnu/dts/include/dt-bindings/thermal/tegra194-bpmp-thermal.h - copied unchanged from r346092, head/sys/gnu/dts/include/dt-bindings/thermal/tegra194-bpmp-thermal.h Deleted: stable/12/sys/gnu/dts/arm/qcom-apq8064-arrow-sd-600eval-pins.dtsi stable/12/sys/gnu/dts/arm/qcom-apq8064-arrow-sd-600eval.dts Modified: stable/12/sys/arm/allwinner/aw_rtc.c stable/12/sys/arm/allwinner/aw_syscon.c stable/12/sys/arm/allwinner/clkng/ccu_a31.c stable/12/sys/arm/allwinner/clkng/ccu_a64.c stable/12/sys/arm/allwinner/clkng/ccu_a83t.c stable/12/sys/arm/allwinner/clkng/ccu_h3.c stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi stable/12/sys/gnu/dts/arm/am335x-boneblue.dts stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts stable/12/sys/gnu/dts/arm/am335x-evm.dts stable/12/sys/gnu/dts/arm/am335x-evmsk.dts stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts stable/12/sys/gnu/dts/arm/am335x-pdu001.dts stable/12/sys/gnu/dts/arm/am335x-shc.dts stable/12/sys/gnu/dts/arm/am33xx-clocks.dtsi stable/12/sys/gnu/dts/arm/am33xx.dtsi stable/12/sys/gnu/dts/arm/am3517-evm.dts stable/12/sys/gnu/dts/arm/am4372.dtsi stable/12/sys/gnu/dts/arm/am437x-gp-evm.dts stable/12/sys/gnu/dts/arm/am43xx-clocks.dtsi stable/12/sys/gnu/dts/arm/am57xx-beagle-x15-common.dtsi stable/12/sys/gnu/dts/arm/arm-realview-pbx.dtsi stable/12/sys/gnu/dts/arm/armada-xp-db.dts stable/12/sys/gnu/dts/arm/armada-xp-gp.dts stable/12/sys/gnu/dts/arm/armada-xp-lenovo-ix4-300d.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-arm-centriq2400-rep.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-intel-s2600wf.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-lanyang.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-palmetto.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-romulus.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-witherspoon.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-portwell-neptune.dts stable/12/sys/gnu/dts/arm/at91-nattis-2-natte-2.dts stable/12/sys/gnu/dts/arm/at91-sama5d27_som1_ek.dts stable/12/sys/gnu/dts/arm/at91-sama5d2_ptc_ek.dts stable/12/sys/gnu/dts/arm/at91-sama5d2_xplained.dts stable/12/sys/gnu/dts/arm/at91-sama5d4ek.dts stable/12/sys/gnu/dts/arm/at91sam9260.dtsi stable/12/sys/gnu/dts/arm/at91sam9261.dtsi stable/12/sys/gnu/dts/arm/at91sam9263.dtsi stable/12/sys/gnu/dts/arm/at91sam9g15.dtsi stable/12/sys/gnu/dts/arm/at91sam9g20.dtsi stable/12/sys/gnu/dts/arm/at91sam9g25.dtsi stable/12/sys/gnu/dts/arm/at91sam9g25ek.dts stable/12/sys/gnu/dts/arm/at91sam9g35.dtsi stable/12/sys/gnu/dts/arm/at91sam9rl.dtsi stable/12/sys/gnu/dts/arm/at91sam9x25.dtsi stable/12/sys/gnu/dts/arm/at91sam9x35.dtsi stable/12/sys/gnu/dts/arm/at91sam9x5.dtsi stable/12/sys/gnu/dts/arm/at91sam9x5_can.dtsi stable/12/sys/gnu/dts/arm/at91sam9x5_isi.dtsi stable/12/sys/gnu/dts/arm/at91sam9x5_lcd.dtsi stable/12/sys/gnu/dts/arm/at91sam9x5_macb0.dtsi stable/12/sys/gnu/dts/arm/at91sam9x5_macb1.dtsi stable/12/sys/gnu/dts/arm/at91sam9x5_usart3.dtsi stable/12/sys/gnu/dts/arm/axp81x.dtsi stable/12/sys/gnu/dts/arm/bcm-nsp.dtsi stable/12/sys/gnu/dts/arm/bcm2835-rpi-zero-w.dts stable/12/sys/gnu/dts/arm/bcm2835-rpi-zero.dts stable/12/sys/gnu/dts/arm/bcm2835-rpi.dtsi stable/12/sys/gnu/dts/arm/bcm2836-rpi-2-b.dts stable/12/sys/gnu/dts/arm/bcm2837-rpi-3-b-plus.dts stable/12/sys/gnu/dts/arm/bcm2837-rpi-3-b.dts stable/12/sys/gnu/dts/arm/bcm2837-rpi-cm3.dtsi stable/12/sys/gnu/dts/arm/bcm47081.dtsi stable/12/sys/gnu/dts/arm/bcm4709.dtsi stable/12/sys/gnu/dts/arm/bcm47094.dtsi stable/12/sys/gnu/dts/arm/bcm47189-tenda-ac9.dts stable/12/sys/gnu/dts/arm/bcm5301x.dtsi stable/12/sys/gnu/dts/arm/bcm53573.dtsi stable/12/sys/gnu/dts/arm/bcm63138.dtsi stable/12/sys/gnu/dts/arm/bcm958522er.dts stable/12/sys/gnu/dts/arm/bcm958525er.dts stable/12/sys/gnu/dts/arm/bcm958525xmc.dts stable/12/sys/gnu/dts/arm/bcm958622hr.dts stable/12/sys/gnu/dts/arm/bcm958623hr.dts stable/12/sys/gnu/dts/arm/bcm958625hr.dts stable/12/sys/gnu/dts/arm/bcm958625k.dts stable/12/sys/gnu/dts/arm/bcm963138dvt.dts stable/12/sys/gnu/dts/arm/bcm988312hr.dts stable/12/sys/gnu/dts/arm/da850-evm.dts stable/12/sys/gnu/dts/arm/da850-lcdk.dts stable/12/sys/gnu/dts/arm/da850.dtsi stable/12/sys/gnu/dts/arm/dra7-evm-common.dtsi stable/12/sys/gnu/dts/arm/dra7.dtsi stable/12/sys/gnu/dts/arm/dra72-evm-common.dtsi stable/12/sys/gnu/dts/arm/dra72x.dtsi stable/12/sys/gnu/dts/arm/dra74x.dtsi stable/12/sys/gnu/dts/arm/dra76x.dtsi stable/12/sys/gnu/dts/arm/dra7xx-clocks.dtsi stable/12/sys/gnu/dts/arm/emev2.dtsi stable/12/sys/gnu/dts/arm/exynos3250-artik5.dtsi stable/12/sys/gnu/dts/arm/exynos3250-monk.dts stable/12/sys/gnu/dts/arm/exynos3250-rinato.dts stable/12/sys/gnu/dts/arm/exynos3250.dtsi stable/12/sys/gnu/dts/arm/exynos4210-trats.dts stable/12/sys/gnu/dts/arm/exynos4210.dtsi stable/12/sys/gnu/dts/arm/exynos4412-itop-scp-core.dtsi stable/12/sys/gnu/dts/arm/exynos4412-midas.dtsi stable/12/sys/gnu/dts/arm/exynos4412-odroid-common.dtsi stable/12/sys/gnu/dts/arm/exynos4412-odroidu3.dts stable/12/sys/gnu/dts/arm/exynos4412-prime.dtsi stable/12/sys/gnu/dts/arm/exynos4412.dtsi stable/12/sys/gnu/dts/arm/exynos5250-arndale.dts stable/12/sys/gnu/dts/arm/exynos5250.dtsi stable/12/sys/gnu/dts/arm/exynos5420-arndale-octa.dts stable/12/sys/gnu/dts/arm/exynos5420-pinctrl.dtsi stable/12/sys/gnu/dts/arm/exynos5420-smdk5420.dts stable/12/sys/gnu/dts/arm/exynos5422-odroid-core.dtsi stable/12/sys/gnu/dts/arm/exynos5422-odroidhc1.dts stable/12/sys/gnu/dts/arm/exynos5422-odroidxu3-audio.dtsi stable/12/sys/gnu/dts/arm/exynos5422-odroidxu3-common.dtsi stable/12/sys/gnu/dts/arm/exynos5422-odroidxu4.dts stable/12/sys/gnu/dts/arm/gemini-dlink-dir-685.dts stable/12/sys/gnu/dts/arm/gemini-dlink-dns-313.dts stable/12/sys/gnu/dts/arm/gemini-nas4220b.dts stable/12/sys/gnu/dts/arm/gemini-rut1xx.dts stable/12/sys/gnu/dts/arm/gemini-sl93512r.dts stable/12/sys/gnu/dts/arm/gemini-sq201.dts stable/12/sys/gnu/dts/arm/gemini-wbd111.dts stable/12/sys/gnu/dts/arm/gemini-wbd222.dts stable/12/sys/gnu/dts/arm/gemini.dtsi stable/12/sys/gnu/dts/arm/imx1-ads.dts stable/12/sys/gnu/dts/arm/imx1-apf9328.dts stable/12/sys/gnu/dts/arm/imx1.dtsi stable/12/sys/gnu/dts/arm/imx23-evk.dts stable/12/sys/gnu/dts/arm/imx23-olinuxino.dts stable/12/sys/gnu/dts/arm/imx23-sansa.dts stable/12/sys/gnu/dts/arm/imx23-stmp378x_devb.dts stable/12/sys/gnu/dts/arm/imx23-xfi3.dts stable/12/sys/gnu/dts/arm/imx23.dtsi stable/12/sys/gnu/dts/arm/imx25-eukrea-cpuimx25.dtsi stable/12/sys/gnu/dts/arm/imx25-karo-tx25.dts stable/12/sys/gnu/dts/arm/imx25-pdk.dts stable/12/sys/gnu/dts/arm/imx25.dtsi stable/12/sys/gnu/dts/arm/imx27-apf27.dts stable/12/sys/gnu/dts/arm/imx27-eukrea-cpuimx27.dtsi stable/12/sys/gnu/dts/arm/imx27-pdk.dts stable/12/sys/gnu/dts/arm/imx27-phytec-phycard-s-som.dtsi stable/12/sys/gnu/dts/arm/imx27-phytec-phycore-som.dtsi stable/12/sys/gnu/dts/arm/imx27.dtsi stable/12/sys/gnu/dts/arm/imx28-apf28.dts stable/12/sys/gnu/dts/arm/imx28-apx4devkit.dts stable/12/sys/gnu/dts/arm/imx28-cfa10036.dts stable/12/sys/gnu/dts/arm/imx28-duckbill-2-485.dts stable/12/sys/gnu/dts/arm/imx28-duckbill-2-enocean.dts stable/12/sys/gnu/dts/arm/imx28-duckbill-2-spi.dts stable/12/sys/gnu/dts/arm/imx28-duckbill-2.dts stable/12/sys/gnu/dts/arm/imx28-duckbill.dts stable/12/sys/gnu/dts/arm/imx28-eukrea-mbmx283lc.dts stable/12/sys/gnu/dts/arm/imx28-eukrea-mbmx287lc.dts stable/12/sys/gnu/dts/arm/imx28-evk.dts stable/12/sys/gnu/dts/arm/imx28-m28.dtsi stable/12/sys/gnu/dts/arm/imx28-m28cu3.dts stable/12/sys/gnu/dts/arm/imx28-m28evk.dts stable/12/sys/gnu/dts/arm/imx28-sps1.dts stable/12/sys/gnu/dts/arm/imx28-ts4600.dts stable/12/sys/gnu/dts/arm/imx28-tx28.dts stable/12/sys/gnu/dts/arm/imx28.dtsi stable/12/sys/gnu/dts/arm/imx31-bug.dts stable/12/sys/gnu/dts/arm/imx31-lite.dts stable/12/sys/gnu/dts/arm/imx31.dtsi stable/12/sys/gnu/dts/arm/imx35-eukrea-cpuimx35.dtsi stable/12/sys/gnu/dts/arm/imx35-pdk.dts stable/12/sys/gnu/dts/arm/imx35.dtsi stable/12/sys/gnu/dts/arm/imx50-evk.dts stable/12/sys/gnu/dts/arm/imx50.dtsi stable/12/sys/gnu/dts/arm/imx51-apf51.dts stable/12/sys/gnu/dts/arm/imx51-babbage.dts stable/12/sys/gnu/dts/arm/imx51-digi-connectcore-som.dtsi stable/12/sys/gnu/dts/arm/imx51-eukrea-cpuimx51.dtsi stable/12/sys/gnu/dts/arm/imx51-ts4800.dts stable/12/sys/gnu/dts/arm/imx51-zii-rdu1.dts stable/12/sys/gnu/dts/arm/imx51-zii-scu2-mezz.dts stable/12/sys/gnu/dts/arm/imx51-zii-scu3-esb.dts stable/12/sys/gnu/dts/arm/imx51.dtsi stable/12/sys/gnu/dts/arm/imx53-ard.dts stable/12/sys/gnu/dts/arm/imx53-cx9020.dts stable/12/sys/gnu/dts/arm/imx53-m53.dtsi stable/12/sys/gnu/dts/arm/imx53-qsb-common.dtsi stable/12/sys/gnu/dts/arm/imx53-smd.dts stable/12/sys/gnu/dts/arm/imx53-tqma53.dtsi stable/12/sys/gnu/dts/arm/imx53-tx53.dtsi stable/12/sys/gnu/dts/arm/imx53-usbarmory.dts stable/12/sys/gnu/dts/arm/imx53-voipac-dmm-668.dtsi stable/12/sys/gnu/dts/arm/imx53.dtsi stable/12/sys/gnu/dts/arm/imx6dl-apf6dev.dts stable/12/sys/gnu/dts/arm/imx6dl-aristainetos2_4.dts stable/12/sys/gnu/dts/arm/imx6dl-aristainetos2_7.dts stable/12/sys/gnu/dts/arm/imx6dl-aristainetos_4.dts stable/12/sys/gnu/dts/arm/imx6dl-aristainetos_7.dts stable/12/sys/gnu/dts/arm/imx6dl-colibri-eval-v3.dts stable/12/sys/gnu/dts/arm/imx6dl-dfi-fs700-m60.dts stable/12/sys/gnu/dts/arm/imx6dl-mamoj.dts stable/12/sys/gnu/dts/arm/imx6dl-phytec-pfla02.dtsi stable/12/sys/gnu/dts/arm/imx6dl-rex-basic.dts stable/12/sys/gnu/dts/arm/imx6dl-riotboard.dts stable/12/sys/gnu/dts/arm/imx6dl-ts4900.dts stable/12/sys/gnu/dts/arm/imx6dl-ts7970.dts stable/12/sys/gnu/dts/arm/imx6dl-wandboard-revb1.dts stable/12/sys/gnu/dts/arm/imx6dl-wandboard-revd1.dts stable/12/sys/gnu/dts/arm/imx6dl-wandboard.dts stable/12/sys/gnu/dts/arm/imx6dl.dtsi stable/12/sys/gnu/dts/arm/imx6q-apf6dev.dts stable/12/sys/gnu/dts/arm/imx6q-arm2.dts stable/12/sys/gnu/dts/arm/imx6q-b450v3.dts stable/12/sys/gnu/dts/arm/imx6q-b650v3.dts stable/12/sys/gnu/dts/arm/imx6q-b850v3.dts stable/12/sys/gnu/dts/arm/imx6q-ba16.dtsi stable/12/sys/gnu/dts/arm/imx6q-bx50v3.dtsi stable/12/sys/gnu/dts/arm/imx6q-cm-fx6.dts stable/12/sys/gnu/dts/arm/imx6q-dfi-fs700-m60.dts stable/12/sys/gnu/dts/arm/imx6q-dhcom-som.dtsi stable/12/sys/gnu/dts/arm/imx6q-display5.dtsi stable/12/sys/gnu/dts/arm/imx6q-dmo-edmqmx6.dts stable/12/sys/gnu/dts/arm/imx6q-evi.dts stable/12/sys/gnu/dts/arm/imx6q-gk802.dts stable/12/sys/gnu/dts/arm/imx6q-gw5400-a.dts stable/12/sys/gnu/dts/arm/imx6q-h100.dts stable/12/sys/gnu/dts/arm/imx6q-kp-tpc.dts stable/12/sys/gnu/dts/arm/imx6q-marsboard.dts stable/12/sys/gnu/dts/arm/imx6q-mccmon6.dts stable/12/sys/gnu/dts/arm/imx6q-novena.dts stable/12/sys/gnu/dts/arm/imx6q-phytec-pfla02.dtsi stable/12/sys/gnu/dts/arm/imx6q-pistachio.dts stable/12/sys/gnu/dts/arm/imx6q-rex-pro.dts stable/12/sys/gnu/dts/arm/imx6q-sbc6x.dts stable/12/sys/gnu/dts/arm/imx6q-tbs2910.dts stable/12/sys/gnu/dts/arm/imx6q-ts4900.dts stable/12/sys/gnu/dts/arm/imx6q-ts7970.dts stable/12/sys/gnu/dts/arm/imx6q-wandboard-revb1.dts stable/12/sys/gnu/dts/arm/imx6q-wandboard-revd1.dts stable/12/sys/gnu/dts/arm/imx6q-wandboard.dts stable/12/sys/gnu/dts/arm/imx6q-zii-rdu2.dts stable/12/sys/gnu/dts/arm/imx6q.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-apalis.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-cubox-i.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw51xx.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw52xx.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw53xx.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw54xx.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw551x.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw552x.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw553x.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw560x.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw5903.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-gw5904.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-hummingboard.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-hummingboard2.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-icore-rqs.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-icore.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-nit6xlite.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-nitrogen6_max.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-nitrogen6_som2.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-nitrogen6x.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-phytec-pfla02.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-sabreauto.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-sabrelite.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-sabresd.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-tx6.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-udoo.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-var-dart.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-wandboard-revb1.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-wandboard-revc1.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-wandboard-revd1.dtsi stable/12/sys/gnu/dts/arm/imx6qdl-zii-rdu2.dtsi stable/12/sys/gnu/dts/arm/imx6qdl.dtsi stable/12/sys/gnu/dts/arm/imx6qp-wandboard-revd1.dts stable/12/sys/gnu/dts/arm/imx6qp-zii-rdu2.dts stable/12/sys/gnu/dts/arm/imx6sl-evk.dts stable/12/sys/gnu/dts/arm/imx6sl-warp.dts stable/12/sys/gnu/dts/arm/imx6sl.dtsi stable/12/sys/gnu/dts/arm/imx6sll-evk.dts stable/12/sys/gnu/dts/arm/imx6sll.dtsi stable/12/sys/gnu/dts/arm/imx6sx-nitrogen6sx.dts stable/12/sys/gnu/dts/arm/imx6sx-sabreauto.dts stable/12/sys/gnu/dts/arm/imx6sx-sdb-reva.dts stable/12/sys/gnu/dts/arm/imx6sx-sdb-sai.dts stable/12/sys/gnu/dts/arm/imx6sx-sdb.dts stable/12/sys/gnu/dts/arm/imx6sx-sdb.dtsi stable/12/sys/gnu/dts/arm/imx6sx-softing-vining-2000.dts stable/12/sys/gnu/dts/arm/imx6sx-udoo-neo-basic.dts stable/12/sys/gnu/dts/arm/imx6sx-udoo-neo-extended.dts stable/12/sys/gnu/dts/arm/imx6sx-udoo-neo-full.dts stable/12/sys/gnu/dts/arm/imx6sx.dtsi stable/12/sys/gnu/dts/arm/imx6ul-14x14-evk.dtsi stable/12/sys/gnu/dts/arm/imx6ul-ccimx6ulsbcpro.dts stable/12/sys/gnu/dts/arm/imx6ul-ccimx6ulsom.dtsi stable/12/sys/gnu/dts/arm/imx6ul-geam.dts stable/12/sys/gnu/dts/arm/imx6ul-isiot.dtsi stable/12/sys/gnu/dts/arm/imx6ul-litesom.dtsi stable/12/sys/gnu/dts/arm/imx6ul-opos6ul.dtsi stable/12/sys/gnu/dts/arm/imx6ul-pico-hobbit.dts stable/12/sys/gnu/dts/arm/imx6ul-tx6ul.dtsi stable/12/sys/gnu/dts/arm/imx6ul.dtsi stable/12/sys/gnu/dts/arm/imx6ull-14x14-evk.dts stable/12/sys/gnu/dts/arm/imx6ull-colibri-nonwifi.dtsi stable/12/sys/gnu/dts/arm/imx6ull-colibri-wifi.dtsi stable/12/sys/gnu/dts/arm/imx6ull.dtsi stable/12/sys/gnu/dts/arm/imx6ulz-14x14-evk.dts stable/12/sys/gnu/dts/arm/imx6ulz.dtsi stable/12/sys/gnu/dts/arm/imx7d-cl-som-imx7.dts stable/12/sys/gnu/dts/arm/imx7d-colibri-emmc.dtsi stable/12/sys/gnu/dts/arm/imx7d-colibri.dtsi stable/12/sys/gnu/dts/arm/imx7d-nitrogen7.dts stable/12/sys/gnu/dts/arm/imx7d-pico-pi.dts stable/12/sys/gnu/dts/arm/imx7d-pico.dtsi stable/12/sys/gnu/dts/arm/imx7d-sdb.dts stable/12/sys/gnu/dts/arm/imx7d.dtsi stable/12/sys/gnu/dts/arm/imx7s-colibri.dtsi stable/12/sys/gnu/dts/arm/imx7s-warp.dts stable/12/sys/gnu/dts/arm/imx7s.dtsi stable/12/sys/gnu/dts/arm/iwg20d-q7-common.dtsi stable/12/sys/gnu/dts/arm/kirkwood-dnskw.dtsi stable/12/sys/gnu/dts/arm/ls1021a-moxa-uc-8410a.dts stable/12/sys/gnu/dts/arm/ls1021a.dtsi stable/12/sys/gnu/dts/arm/meson.dtsi stable/12/sys/gnu/dts/arm/meson6-atv1200.dts stable/12/sys/gnu/dts/arm/meson6.dtsi stable/12/sys/gnu/dts/arm/meson8-minix-neo-x8.dts stable/12/sys/gnu/dts/arm/meson8.dtsi stable/12/sys/gnu/dts/arm/meson8b-ec100.dts stable/12/sys/gnu/dts/arm/meson8b-mxq.dts stable/12/sys/gnu/dts/arm/meson8b-odroidc1.dts stable/12/sys/gnu/dts/arm/meson8b.dtsi stable/12/sys/gnu/dts/arm/meson8m2-mxiii-plus.dts stable/12/sys/gnu/dts/arm/meson8m2.dtsi stable/12/sys/gnu/dts/arm/mmp2.dtsi stable/12/sys/gnu/dts/arm/motorola-cpcap-mapphone.dtsi stable/12/sys/gnu/dts/arm/mt7623.dtsi stable/12/sys/gnu/dts/arm/omap3-gta04.dtsi stable/12/sys/gnu/dts/arm/omap3-n900.dts stable/12/sys/gnu/dts/arm/omap3-n950-n9.dtsi stable/12/sys/gnu/dts/arm/omap4-droid4-xt894.dts stable/12/sys/gnu/dts/arm/omap4-l4.dtsi stable/12/sys/gnu/dts/arm/omap4-sdp.dts stable/12/sys/gnu/dts/arm/omap5-board-common.dtsi stable/12/sys/gnu/dts/arm/omap5-cm-t54.dts stable/12/sys/gnu/dts/arm/omap5.dtsi stable/12/sys/gnu/dts/arm/pxa27x.dtsi stable/12/sys/gnu/dts/arm/pxa2xx.dtsi stable/12/sys/gnu/dts/arm/pxa3xx.dtsi stable/12/sys/gnu/dts/arm/qcom-apq8084.dtsi stable/12/sys/gnu/dts/arm/qcom-msm8974-lge-nexus5-hammerhead.dts stable/12/sys/gnu/dts/arm/qcom-msm8974.dtsi stable/12/sys/gnu/dts/arm/r8a7740.dtsi stable/12/sys/gnu/dts/arm/r8a7743-iwg20m.dtsi stable/12/sys/gnu/dts/arm/r8a7743.dtsi stable/12/sys/gnu/dts/arm/r8a77470-iwg23s-sbc.dts stable/12/sys/gnu/dts/arm/r8a77470.dtsi stable/12/sys/gnu/dts/arm/r8a7790-lager.dts stable/12/sys/gnu/dts/arm/r8a7791-koelsch.dts stable/12/sys/gnu/dts/arm/r8a7791-porter.dts stable/12/sys/gnu/dts/arm/r9a06g032.dtsi stable/12/sys/gnu/dts/arm/rk3066a.dtsi stable/12/sys/gnu/dts/arm/rk3188-px3-evb.dts stable/12/sys/gnu/dts/arm/rk3188-radxarock.dts stable/12/sys/gnu/dts/arm/rk3188.dtsi stable/12/sys/gnu/dts/arm/rk322x.dtsi stable/12/sys/gnu/dts/arm/rk3288-rock2-som.dtsi stable/12/sys/gnu/dts/arm/rk3288-veyron-mickey.dts stable/12/sys/gnu/dts/arm/rk3288.dtsi stable/12/sys/gnu/dts/arm/rk3xxx.dtsi stable/12/sys/gnu/dts/arm/rv1108.dtsi stable/12/sys/gnu/dts/arm/s5pv210.dtsi stable/12/sys/gnu/dts/arm/sama5d2.dtsi stable/12/sys/gnu/dts/arm/sama5d4.dtsi stable/12/sys/gnu/dts/arm/sh73a0.dtsi stable/12/sys/gnu/dts/arm/socfpga.dtsi stable/12/sys/gnu/dts/arm/socfpga_arria10.dtsi stable/12/sys/gnu/dts/arm/socfpga_arria10_socdk.dtsi stable/12/sys/gnu/dts/arm/socfpga_arria10_socdk_nand.dts stable/12/sys/gnu/dts/arm/socfpga_arria10_socdk_qspi.dts stable/12/sys/gnu/dts/arm/socfpga_arria10_socdk_sdmmc.dts stable/12/sys/gnu/dts/arm/socfpga_arria5.dtsi stable/12/sys/gnu/dts/arm/socfpga_arria5_socdk.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5.dtsi stable/12/sys/gnu/dts/arm/socfpga_cyclone5_de0_nano_soc.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5_mcv.dtsi stable/12/sys/gnu/dts/arm/socfpga_cyclone5_mcvevk.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5_socdk.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5_sockit.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5_socrates.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5_sodia.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5_vining_fpga.dts stable/12/sys/gnu/dts/arm/socfpga_vt.dts stable/12/sys/gnu/dts/arm/sun4i-a10-inet9f-rev03.dts stable/12/sys/gnu/dts/arm/sun4i-a10-pcduino.dts stable/12/sys/gnu/dts/arm/sun4i-a10.dtsi stable/12/sys/gnu/dts/arm/sun5i-a10s-auxtek-t003.dts stable/12/sys/gnu/dts/arm/sun5i-a10s-auxtek-t004.dts stable/12/sys/gnu/dts/arm/sun5i-a10s-mk802.dts stable/12/sys/gnu/dts/arm/sun5i-a10s-olinuxino-micro.dts stable/12/sys/gnu/dts/arm/sun5i-a10s-r7-tv-dongle.dts stable/12/sys/gnu/dts/arm/sun5i-a10s-wobo-i5.dts stable/12/sys/gnu/dts/arm/sun5i-a10s.dtsi stable/12/sys/gnu/dts/arm/sun5i-a13-empire-electronix-d709.dts stable/12/sys/gnu/dts/arm/sun5i-a13-hsg-h702.dts stable/12/sys/gnu/dts/arm/sun5i-a13-licheepi-one.dts stable/12/sys/gnu/dts/arm/sun5i-a13-olinuxino-micro.dts stable/12/sys/gnu/dts/arm/sun5i-a13-olinuxino.dts stable/12/sys/gnu/dts/arm/sun5i-a13-utoo-p66.dts stable/12/sys/gnu/dts/arm/sun5i-a13.dtsi stable/12/sys/gnu/dts/arm/sun5i-gr8-chip-pro.dts stable/12/sys/gnu/dts/arm/sun5i-gr8-evb.dts stable/12/sys/gnu/dts/arm/sun5i-gr8.dtsi stable/12/sys/gnu/dts/arm/sun5i-r8-chip.dts stable/12/sys/gnu/dts/arm/sun5i-reference-design-tablet.dtsi stable/12/sys/gnu/dts/arm/sun5i.dtsi stable/12/sys/gnu/dts/arm/sun6i-a31-app4-evb1.dts stable/12/sys/gnu/dts/arm/sun6i-a31-colombus.dts stable/12/sys/gnu/dts/arm/sun6i-a31-hummingbird.dts stable/12/sys/gnu/dts/arm/sun6i-a31-i7.dts stable/12/sys/gnu/dts/arm/sun6i-a31-m9.dts stable/12/sys/gnu/dts/arm/sun6i-a31-mele-a1000g-quad.dts stable/12/sys/gnu/dts/arm/sun6i-a31.dtsi stable/12/sys/gnu/dts/arm/sun6i-a31s-colorfly-e708-q1.dts stable/12/sys/gnu/dts/arm/sun6i-a31s-cs908.dts stable/12/sys/gnu/dts/arm/sun6i-a31s-inet-q972.dts stable/12/sys/gnu/dts/arm/sun6i-a31s-primo81.dts stable/12/sys/gnu/dts/arm/sun6i-a31s-sina31s-core.dtsi stable/12/sys/gnu/dts/arm/sun6i-a31s-sina31s.dts stable/12/sys/gnu/dts/arm/sun6i-a31s-sinovoip-bpi-m2.dts stable/12/sys/gnu/dts/arm/sun6i-a31s-yones-toptech-bs1078-v2.dts stable/12/sys/gnu/dts/arm/sun6i-reference-design-tablet.dtsi stable/12/sys/gnu/dts/arm/sun7i-a20-bananapi-m1-plus.dts stable/12/sys/gnu/dts/arm/sun7i-a20-bananapi.dts stable/12/sys/gnu/dts/arm/sun7i-a20-bananapro.dts stable/12/sys/gnu/dts/arm/sun7i-a20-cubieboard2.dts stable/12/sys/gnu/dts/arm/sun7i-a20-cubietruck.dts stable/12/sys/gnu/dts/arm/sun7i-a20-hummingbird.dts stable/12/sys/gnu/dts/arm/sun7i-a20-i12-tvbox.dts stable/12/sys/gnu/dts/arm/sun7i-a20-icnova-swac.dts stable/12/sys/gnu/dts/arm/sun7i-a20-itead-ibox.dts stable/12/sys/gnu/dts/arm/sun7i-a20-lamobo-r1.dts stable/12/sys/gnu/dts/arm/sun7i-a20-m3.dts stable/12/sys/gnu/dts/arm/sun7i-a20-mk808c.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olimex-som-evb-emmc.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olimex-som-evb.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olimex-som204-evb-emmc.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olimex-som204-evb.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-lime.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-lime2-emmc.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-lime2.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-micro-emmc.dts stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-micro.dts stable/12/sys/gnu/dts/arm/sun7i-a20-orangepi-mini.dts stable/12/sys/gnu/dts/arm/sun7i-a20-orangepi.dts stable/12/sys/gnu/dts/arm/sun7i-a20-pcduino3-nano.dts stable/12/sys/gnu/dts/arm/sun7i-a20-pcduino3.dts stable/12/sys/gnu/dts/arm/sun7i-a20-wexler-tab7200.dts stable/12/sys/gnu/dts/arm/sun7i-a20-wits-pro-a20-dkt.dts stable/12/sys/gnu/dts/arm/sun7i-a20.dtsi stable/12/sys/gnu/dts/arm/sun8i-a23-a33.dtsi stable/12/sys/gnu/dts/arm/sun8i-a23-evb.dts stable/12/sys/gnu/dts/arm/sun8i-a23-gt90h-v4.dts stable/12/sys/gnu/dts/arm/sun8i-a23-polaroid-mid2407pxe03.dts stable/12/sys/gnu/dts/arm/sun8i-a23-polaroid-mid2809pxe04.dts stable/12/sys/gnu/dts/arm/sun8i-a23.dtsi stable/12/sys/gnu/dts/arm/sun8i-a33-ga10h-v1.1.dts stable/12/sys/gnu/dts/arm/sun8i-a33-inet-d978-rev2.dts stable/12/sys/gnu/dts/arm/sun8i-a33-olinuxino.dts stable/12/sys/gnu/dts/arm/sun8i-a33-sinlinx-sina33.dts stable/12/sys/gnu/dts/arm/sun8i-a33.dtsi stable/12/sys/gnu/dts/arm/sun8i-a83t-bananapi-m3.dts stable/12/sys/gnu/dts/arm/sun8i-a83t-cubietruck-plus.dts stable/12/sys/gnu/dts/arm/sun8i-a83t-tbs-a711.dts stable/12/sys/gnu/dts/arm/sun8i-a83t.dtsi stable/12/sys/gnu/dts/arm/sun8i-h3-beelink-x2.dts stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-plus.dts stable/12/sys/gnu/dts/arm/sun8i-h3.dtsi stable/12/sys/gnu/dts/arm/sun8i-q8-common.dtsi stable/12/sys/gnu/dts/arm/sun8i-r16-bananapi-m2m.dts stable/12/sys/gnu/dts/arm/sun8i-r16-nintendo-nes-classic.dts stable/12/sys/gnu/dts/arm/sun8i-r16-parrot.dts stable/12/sys/gnu/dts/arm/sun8i-r40.dtsi stable/12/sys/gnu/dts/arm/sun8i-reference-design-tablet.dtsi stable/12/sys/gnu/dts/arm/sun8i-v3s-licheepi-zero-dock.dts stable/12/sys/gnu/dts/arm/sun8i-v3s-licheepi-zero.dts stable/12/sys/gnu/dts/arm/sun8i-v3s.dtsi stable/12/sys/gnu/dts/arm/sunxi-h3-h5.dtsi stable/12/sys/gnu/dts/arm/sunxi-itead-core-common.dtsi stable/12/sys/gnu/dts/arm/sunxi-reference-design-tablet.dtsi stable/12/sys/gnu/dts/arm/tegra124-nyan.dtsi stable/12/sys/gnu/dts/arm/tegra124.dtsi stable/12/sys/gnu/dts/arm/tegra20.dtsi stable/12/sys/gnu/dts/arm/uniphier-ld4.dtsi stable/12/sys/gnu/dts/arm/uniphier-pro4.dtsi stable/12/sys/gnu/dts/arm/uniphier-pxs2.dtsi stable/12/sys/gnu/dts/arm/uniphier-sld8.dtsi stable/12/sys/gnu/dts/arm/vexpress-v2m-rs1.dtsi stable/12/sys/gnu/dts/arm/vexpress-v2m.dtsi stable/12/sys/gnu/dts/arm/vexpress-v2p-ca15-tc1.dts stable/12/sys/gnu/dts/arm/vexpress-v2p-ca15_a7.dts stable/12/sys/gnu/dts/arm/vexpress-v2p-ca5s.dts stable/12/sys/gnu/dts/arm/vexpress-v2p-ca9.dts stable/12/sys/gnu/dts/arm/vf500-colibri.dtsi stable/12/sys/gnu/dts/arm/vf500.dtsi stable/12/sys/gnu/dts/arm/vf610-colibri.dtsi stable/12/sys/gnu/dts/arm/vf610-cosmic.dts stable/12/sys/gnu/dts/arm/vf610-twr.dts stable/12/sys/gnu/dts/arm/vf610-zii-cfu1.dts stable/12/sys/gnu/dts/arm/vf610-zii-dev.dtsi stable/12/sys/gnu/dts/arm/vf610-zii-ssmb-spu3.dts stable/12/sys/gnu/dts/arm/vf610m4-colibri.dts stable/12/sys/gnu/dts/arm/vf610m4.dtsi stable/12/sys/gnu/dts/arm/zynq-7000.dtsi stable/12/sys/gnu/dts/arm64/allwinner/axp803.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-bananapi-m64.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-orangepi-win.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pine64.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pinebook.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-sopine-baseboard.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-sopine.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5.dtsi stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi-one-plus.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-pine-h64.dts stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6.dtsi stable/12/sys/gnu/dts/arm64/altera/socfpga_stratix10.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-axg-s400.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-axg.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gx-p23x-q20x.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gx.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-nanopi-k2.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-nexbox-a95x.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-odroidc2.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-p20x.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-vega-s95.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-wetek.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905d-p230.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-hwacom-amazetv.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-khadas-vim.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-libretech-cc.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-nexbox-a95x.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-p212.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-p212.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl.dtsi stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-khadas-vim2.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-nexbox-a1.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-rbox-pro.dts stable/12/sys/gnu/dts/arm64/arm/rtsm_ve-aemv8a.dts stable/12/sys/gnu/dts/arm64/arm/rtsm_ve-motherboard.dtsi stable/12/sys/gnu/dts/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts stable/12/sys/gnu/dts/arm64/arm/vexpress-v2m-rs1.dtsi stable/12/sys/gnu/dts/arm64/exynos/exynos5433-tm2-common.dtsi stable/12/sys/gnu/dts/arm64/exynos/exynos5433-tmu.dtsi stable/12/sys/gnu/dts/arm64/exynos/exynos5433.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043a-qds.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a-qds.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a-rdb.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1088a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls2088a.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls208xa-qds.dtsi stable/12/sys/gnu/dts/arm64/freescale/fsl-ls208xa.dtsi stable/12/sys/gnu/dts/arm64/hisilicon/hi3660-hikey960.dts stable/12/sys/gnu/dts/arm64/hisilicon/hi3660.dtsi stable/12/sys/gnu/dts/arm64/hisilicon/hi3670-hikey970.dts stable/12/sys/gnu/dts/arm64/hisilicon/hi3670.dtsi stable/12/sys/gnu/dts/arm64/hisilicon/hi3798cv200-poplar.dts stable/12/sys/gnu/dts/arm64/hisilicon/hi6220-hikey.dts stable/12/sys/gnu/dts/arm64/hisilicon/hi6220.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-3720-espressobin.dts stable/12/sys/gnu/dts/arm64/marvell/armada-37xx.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-8040-clearfog-gt-8k.dts stable/12/sys/gnu/dts/arm64/marvell/armada-8040-mcbin.dts stable/12/sys/gnu/dts/arm64/marvell/armada-ap806.dtsi stable/12/sys/gnu/dts/arm64/mediatek/mt7622.dtsi stable/12/sys/gnu/dts/arm64/mediatek/mt8173.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra186-p2771-0000.dts stable/12/sys/gnu/dts/arm64/nvidia/tegra186-p3310.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra186.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra194-p2888.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra194-p2972-0000.dts stable/12/sys/gnu/dts/arm64/nvidia/tegra194.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2597.dtsi stable/12/sys/gnu/dts/arm64/nvidia/tegra210.dtsi stable/12/sys/gnu/dts/arm64/qcom/apq8096-db820c.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8916-pins.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8916.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8996-pins.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8996.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8998-mtp.dtsi stable/12/sys/gnu/dts/arm64/qcom/msm8998.dtsi stable/12/sys/gnu/dts/arm64/qcom/pm8998.dtsi stable/12/sys/gnu/dts/arm64/qcom/sdm845.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a774a1.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a7795-es1-salvator-x.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7795-es1.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a7795-salvator-x.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7795-salvator-xs.dts stable/12/sys/gnu/dts/arm64/renesas/r8a7795.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a7796.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77965.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77970.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77980.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77990-ebisu.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77990.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a77995-draak.dts stable/12/sys/gnu/dts/arm64/renesas/r8a77995.dtsi stable/12/sys/gnu/dts/arm64/renesas/salvator-common.dtsi stable/12/sys/gnu/dts/arm64/renesas/ulcb.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3328-rock64.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3328.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3368.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-ficus.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-bob.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-chromebook.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-kevin.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rock960.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rockpro64.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-sapphire-excavator.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-sapphire.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399.dtsi stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld20.dtsi stable/12/sys/gnu/dts/arm64/sprd/sc9836.dtsi stable/12/sys/gnu/dts/arm64/sprd/sc9860.dtsi stable/12/sys/gnu/dts/arm64/ti/k3-am65-main.dtsi stable/12/sys/gnu/dts/arm64/ti/k3-am65-mcu.dtsi stable/12/sys/gnu/dts/arm64/ti/k3-am65-wakeup.dtsi stable/12/sys/gnu/dts/arm64/ti/k3-am65.dtsi stable/12/sys/gnu/dts/arm64/ti/k3-am654-base-board.dts stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-clk.dtsi stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu100-revC.dts stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu102-revA.dts stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu106-revA.dts stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu111-revA.dts stable/12/sys/gnu/dts/arm64/xilinx/zynqmp.dtsi stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm2835-aux.h stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm2835.h stable/12/sys/gnu/dts/include/dt-bindings/clock/gxbb-clkc.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6qdl-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/meson8b-clkc.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8998.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-sdm845.h stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,rpmcc.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7795-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7796-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77995-cpg-mssr.h stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3328-cru.h stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-de2.h stable/12/sys/gnu/dts/include/dt-bindings/gpio/tegra186-gpio.h stable/12/sys/gnu/dts/include/dt-bindings/input/linux-event-codes.h stable/12/sys/gnu/dts/include/dt-bindings/mailbox/tegra186-hsp.h stable/12/sys/gnu/dts/include/dt-bindings/media/xilinx-vip.h stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/bcm2835.h stable/12/sys/gnu/dts/include/dt-bindings/power/r8a77970-sysc.h stable/12/sys/gnu/dts/include/dt-bindings/power/r8a77980-sysc.h stable/12/sys/gnu/dts/include/dt-bindings/power/raspberrypi-power.h stable/12/sys/gnu/dts/include/dt-bindings/reset/amlogic,meson-axg-reset.h stable/12/sys/gnu/dts/include/dt-bindings/reset/sun8i-de2.h stable/12/sys/gnu/dts/include/dt-bindings/sound/qcom,q6afe.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/allwinner/aw_rtc.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_rtc.c Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/arm/allwinner/aw_rtc.c Mon Aug 5 17:23:23 2019 (r350597) @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2019 Emmanuel Vadot * Copyright (c) 2016 Vladimir Belian * All rights reserved. * @@ -43,6 +44,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include + #include #include "clock_if.h" @@ -62,7 +65,7 @@ __FBSDID("$FreeBSD$"); #define LOSC_MAGIC 0x16aa0000 #define LOSC_BUSY_MASK 0x00000380 -#define IS_SUN7I (sc->type == A20_RTC) +#define IS_SUN7I (sc->conf->is_a20 == true) #define YEAR_MIN (IS_SUN7I ? 1970 : 2010) #define YEAR_MAX (IS_SUN7I ? 2100 : 2073) @@ -92,27 +95,68 @@ __FBSDID("$FreeBSD$"); #define RTC_READ(sc, reg) bus_read_4((sc)->res, (reg)) #define RTC_WRITE(sc, reg, val) bus_write_4((sc)->res, (reg), (val)) -#define IS_LEAP_YEAR(y) \ - (((y) % 400) == 0 || (((y) % 100) != 0 && ((y) % 4) == 0)) +#define IS_LEAP_YEAR(y) (((y) % 400) == 0 || (((y) % 100) != 0 && ((y) % 4) == 0)) -#define A10_RTC 1 -#define A20_RTC 2 -#define A31_RTC 3 +struct aw_rtc_conf { + uint64_t iosc_freq; + bus_size_t rtc_date; + bus_size_t rtc_time; + bus_size_t rtc_losc_sta; + bool is_a20; +}; +struct aw_rtc_conf a10_conf = { + .rtc_date = A10_RTC_DATE_REG, + .rtc_time = A10_RTC_TIME_REG, + .rtc_losc_sta = LOSC_CTRL_REG, +}; + +struct aw_rtc_conf a20_conf = { + .rtc_date = A10_RTC_DATE_REG, + .rtc_time = A10_RTC_TIME_REG, + .rtc_losc_sta = LOSC_CTRL_REG, + .is_a20 = true, +}; + +struct aw_rtc_conf a31_conf = { + .iosc_freq = 650000, /* between 600 and 700 Khz */ + .rtc_date = A31_RTC_DATE_REG, + .rtc_time = A31_RTC_TIME_REG, + .rtc_losc_sta = A31_LOSC_AUTO_SWT_STA, +}; + +struct aw_rtc_conf h3_conf = { + .iosc_freq = 16000000, + .rtc_date = A31_RTC_DATE_REG, + .rtc_time = A31_RTC_TIME_REG, + .rtc_losc_sta = A31_LOSC_AUTO_SWT_STA, +}; + static struct ofw_compat_data compat_data[] = { - { "allwinner,sun4i-a10-rtc", A10_RTC }, - { "allwinner,sun7i-a20-rtc", A20_RTC }, - { "allwinner,sun6i-a31-rtc", A31_RTC }, + { "allwinner,sun4i-a10-rtc", (uintptr_t) &a10_conf }, + { "allwinner,sun7i-a20-rtc", (uintptr_t) &a20_conf }, + { "allwinner,sun6i-a31-rtc", (uintptr_t) &a31_conf }, + { "allwinner,sun8i-h3-rtc", (uintptr_t) &h3_conf }, { NULL, 0 } }; struct aw_rtc_softc { struct resource *res; + struct aw_rtc_conf *conf; int type; - bus_size_t rtc_date; - bus_size_t rtc_time; }; +static struct clk_fixed_def aw_rtc_osc32k = { + .clkdef.id = 0, + .freq = 32768, +}; + +static struct clk_fixed_def aw_rtc_iosc = { + .clkdef.id = 2, +}; + +static void aw_rtc_install_clocks(struct aw_rtc_softc *sc, device_t dev); + static int aw_rtc_probe(device_t dev); static int aw_rtc_attach(device_t dev); static int aw_rtc_detach(device_t dev); @@ -140,9 +184,8 @@ static driver_t aw_rtc_driver = { static devclass_t aw_rtc_devclass; EARLY_DRIVER_MODULE(aw_rtc, simplebus, aw_rtc_driver, aw_rtc_devclass, 0, 0, - BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE); + BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); - static int aw_rtc_probe(device_t dev) { @@ -161,7 +204,6 @@ static int aw_rtc_attach(device_t dev) { struct aw_rtc_softc *sc = device_get_softc(dev); - bus_size_t rtc_losc_sta; uint32_t val; int rid = 0; @@ -171,20 +213,7 @@ aw_rtc_attach(device_t dev) return (ENXIO); } - sc->type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; - switch (sc->type) { - case A10_RTC: - case A20_RTC: - sc->rtc_date = A10_RTC_DATE_REG; - sc->rtc_time = A10_RTC_TIME_REG; - rtc_losc_sta = LOSC_CTRL_REG; - break; - case A31_RTC: - sc->rtc_date = A31_RTC_DATE_REG; - sc->rtc_time = A31_RTC_TIME_REG; - rtc_losc_sta = A31_LOSC_AUTO_SWT_STA; - break; - } + sc->conf = (struct aw_rtc_conf *)ofw_bus_search_compatible(dev, compat_data)->ocd_data; val = RTC_READ(sc, LOSC_CTRL_REG); val |= LOSC_AUTO_SW_EN; val |= LOSC_MAGIC | LOSC_GSM | LOSC_OSC_SRC; @@ -193,13 +222,15 @@ aw_rtc_attach(device_t dev) DELAY(100); if (bootverbose) { - val = RTC_READ(sc, rtc_losc_sta); + val = RTC_READ(sc, sc->conf->rtc_losc_sta); if ((val & LOSC_OSC_SRC) == 0) device_printf(dev, "Using internal oscillator\n"); else device_printf(dev, "Using external oscillator\n"); } + aw_rtc_install_clocks(sc, dev); + clock_register(dev, RTC_RES_US); return (0); @@ -212,6 +243,41 @@ aw_rtc_detach(device_t dev) return (EBUSY); } +static void +aw_rtc_install_clocks(struct aw_rtc_softc *sc, device_t dev) { + struct clkdom *clkdom; + const char **clknames; + phandle_t node; + int nclocks; + + node = ofw_bus_get_node(dev); + nclocks = ofw_bus_string_list_to_array(node, "clock-output-names", &clknames); + /* No clocks to export */ + if (nclocks <= 0) + return; + + if (nclocks != 3) { + device_printf(dev, "Having only %d clocks instead of 3, aborting\n", nclocks); + return; + } + + clkdom = clkdom_create(dev); + + aw_rtc_osc32k.clkdef.name = clknames[0]; + if (clknode_fixed_register(clkdom, &aw_rtc_osc32k) != 0) + device_printf(dev, "Cannot register osc32k clock\n"); + + aw_rtc_iosc.clkdef.name = clknames[2]; + aw_rtc_iosc.freq = sc->conf->iosc_freq; + if (clknode_fixed_register(clkdom, &aw_rtc_iosc) != 0) + device_printf(dev, "Cannot register iosc clock\n"); + + clkdom_finit(clkdom); + + if (bootverbose) + clkdom_dump(clkdom); +} + static int aw_rtc_gettime(device_t dev, struct timespec *ts) { @@ -219,11 +285,11 @@ aw_rtc_gettime(device_t dev, struct timespec *ts) struct clocktime ct; uint32_t rdate, rtime; - rdate = RTC_READ(sc, sc->rtc_date); - rtime = RTC_READ(sc, sc->rtc_time); + rdate = RTC_READ(sc, sc->conf->rtc_date); + rtime = RTC_READ(sc, sc->conf->rtc_time); if ((rtime & TIME_MASK) == 0) - rdate = RTC_READ(sc, sc->rtc_date); + rdate = RTC_READ(sc, sc->conf->rtc_date); ct.sec = GET_SEC_VALUE(rtime); ct.min = GET_MIN_VALUE(rtime); @@ -265,7 +331,7 @@ aw_rtc_settime(device_t dev, struct timespec *ts) DELAY(1); } /* reset time register to avoid unexpected date increment */ - RTC_WRITE(sc, sc->rtc_time, 0); + RTC_WRITE(sc, sc->conf->rtc_time, 0); rdate = SET_DAY_VALUE(ct.day) | SET_MON_VALUE(ct.mon) | SET_YEAR_VALUE(ct.year - YEAR_OFFSET) | @@ -281,7 +347,7 @@ aw_rtc_settime(device_t dev, struct timespec *ts) } DELAY(1); } - RTC_WRITE(sc, sc->rtc_date, rdate); + RTC_WRITE(sc, sc->conf->rtc_date, rdate); for (clk = 0; RTC_READ(sc, LOSC_CTRL_REG) & LOSC_BUSY_MASK; clk++) { if (clk > RTC_TIMEOUT) { @@ -290,7 +356,7 @@ aw_rtc_settime(device_t dev, struct timespec *ts) } DELAY(1); } - RTC_WRITE(sc, sc->rtc_time, rtime); + RTC_WRITE(sc, sc->conf->rtc_time, rtime); DELAY(RTC_TIMEOUT); Modified: stable/12/sys/arm/allwinner/aw_syscon.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_syscon.c Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/arm/allwinner/aw_syscon.c Mon Aug 5 17:23:23 2019 (r350597) @@ -52,6 +52,7 @@ static struct ofw_compat_data compat_data[] = { {"allwinner,sun50i-a64-system-control", 1}, {"allwinner,sun8i-a83t-system-controller", 1}, {"allwinner,sun8i-h3-system-controller", 1}, + {"allwinner,sun8i-h3-system-control", 1}, {NULL, 0} }; Modified: stable/12/sys/arm/allwinner/clkng/ccu_a31.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_a31.c Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/arm/allwinner/clkng/ccu_a31.c Mon Aug 5 17:23:23 2019 (r350597) @@ -973,4 +973,4 @@ DEFINE_CLASS_1(ccu_a31ng, ccu_a31ng_driver, ccu_a31ng_ sizeof(struct aw_ccung_softc), aw_ccung_driver); EARLY_DRIVER_MODULE(ccu_a31ng, simplebus, ccu_a31ng_driver, - ccu_a31ng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + ccu_a31ng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_LAST); Modified: stable/12/sys/arm/allwinner/clkng/ccu_a64.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_a64.c Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/arm/allwinner/clkng/ccu_a64.c Mon Aug 5 17:23:23 2019 (r350597) @@ -825,4 +825,4 @@ DEFINE_CLASS_1(ccu_a64ng, ccu_a64ng_driver, ccu_a64ng_ sizeof(struct aw_ccung_softc), aw_ccung_driver); EARLY_DRIVER_MODULE(ccu_a64ng, simplebus, ccu_a64ng_driver, - ccu_a64ng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + ccu_a64ng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_LAST); Modified: stable/12/sys/arm/allwinner/clkng/ccu_a83t.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_a83t.c Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/arm/allwinner/clkng/ccu_a83t.c Mon Aug 5 17:23:23 2019 (r350597) @@ -786,4 +786,4 @@ DEFINE_CLASS_1(ccu_a83tng, ccu_a83tng_driver, ccu_a83t sizeof(struct aw_ccung_softc), aw_ccung_driver); EARLY_DRIVER_MODULE(ccu_a83tng, simplebus, ccu_a83tng_driver, - ccu_a83tng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + ccu_a83tng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_LAST); Modified: stable/12/sys/arm/allwinner/clkng/ccu_h3.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_h3.c Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/arm/allwinner/clkng/ccu_h3.c Mon Aug 5 17:23:23 2019 (r350597) @@ -787,4 +787,4 @@ DEFINE_CLASS_1(ccu_h3ng, ccu_h3ng_driver, ccu_h3ng_met sizeof(struct aw_ccung_softc), aw_ccung_driver); EARLY_DRIVER_MODULE(ccu_h3ng, simplebus, ccu_h3ng_driver, - ccu_h3ng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + ccu_h3ng_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_LAST); Modified: stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi Mon Aug 5 17:23:23 2019 (r350597) @@ -419,6 +419,6 @@ }; &rtc { - clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; clock-names = "ext-clk", "int-clk"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-boneblue.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-boneblue.dts Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am335x-boneblue.dts Mon Aug 5 17:23:23 2019 (r350597) @@ -515,7 +515,7 @@ &rtc { system-power-controller; - clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; clock-names = "ext-clk", "int-clk"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts Mon Aug 5 17:23:23 2019 (r350597) @@ -393,7 +393,7 @@ status = "okay"; &epwmss0 { status = "okay"; - ecap0: ecap@48300100 { + ecap0: ecap@100 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&ecap0_pins>; Modified: stable/12/sys/gnu/dts/arm/am335x-evm.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-evm.dts Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am335x-evm.dts Mon Aug 5 17:23:23 2019 (r350597) @@ -519,7 +519,7 @@ &epwmss0 { status = "okay"; - ecap0: ecap@48300100 { + ecap0: ecap@100 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&ecap0_pins>; @@ -729,7 +729,7 @@ &cpsw_emac0 { phy-handle = <ðphy0>; - phy-mode = "rgmii-txid"; + phy-mode = "rgmii-id"; }; &tscadc { @@ -797,6 +797,6 @@ }; &rtc { - clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; clock-names = "ext-clk", "int-clk"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-evmsk.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-evmsk.dts Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am335x-evmsk.dts Mon Aug 5 17:23:23 2019 (r350597) @@ -540,7 +540,7 @@ &epwmss2 { status = "okay"; - ecap2: ecap@48304100 { + ecap2: ecap@100 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&ecap2_pins>; @@ -651,13 +651,13 @@ &cpsw_emac0 { phy-handle = <ðphy0>; - phy-mode = "rgmii-txid"; + phy-mode = "rgmii-id"; dual_emac_res_vlan = <1>; }; &cpsw_emac1 { phy-handle = <ðphy1>; - phy-mode = "rgmii-txid"; + phy-mode = "rgmii-id"; dual_emac_res_vlan = <2>; }; @@ -738,6 +738,6 @@ }; &rtc { - clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; clock-names = "ext-clk", "int-clk"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts Mon Aug 5 17:23:23 2019 (r350597) @@ -456,6 +456,6 @@ }; &rtc { - clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; clock-names = "ext-clk", "int-clk"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-pdu001.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-pdu001.dts Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am335x-pdu001.dts Mon Aug 5 17:23:23 2019 (r350597) @@ -585,7 +585,7 @@ bus-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&mmc2_pins>; - cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>; + cd-gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>; }; &sham { Modified: stable/12/sys/gnu/dts/arm/am335x-shc.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-shc.dts Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am335x-shc.dts Mon Aug 5 17:23:23 2019 (r350597) @@ -138,7 +138,7 @@ &epwmss1 { status = "okay"; - ehrpwm1: pwm@48302200 { + ehrpwm1: pwm@200 { pinctrl-names = "default"; pinctrl-0 = <&ehrpwm1_pins>; status = "okay"; @@ -205,7 +205,7 @@ pinctrl-1 = <&cpsw_sleep>; status = "okay"; slaves = <1>; - cpsw_emac0: slave@4a100200 { + cpsw_emac0: slave@200 { phy-mode = "mii"; phy-handle = <ðernetphy0>; }; @@ -215,7 +215,7 @@ pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins>; bus-width = <0x4>; - cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; + cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>; cd-inverted; max-frequency = <26000000>; vmmc-supply = <&vmmcsd_fixed>; Modified: stable/12/sys/gnu/dts/arm/am33xx-clocks.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am33xx-clocks.dtsi Mon Aug 5 17:06:20 2019 (r350596) +++ stable/12/sys/gnu/dts/arm/am33xx-clocks.dtsi Mon Aug 5 17:23:23 2019 (r350597) @@ -334,49 +334,49 @@ timer1_fck: timer1_fck@528 { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>, <&tclkin_ck>, <&clk_rc32k_ck>, <&clk_32768_ck>; + clocks = <&sys_clkin_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>, <&tclkin_ck>, <&clk_rc32k_ck>, <&clk_32768_ck>; reg = <0x0528>; }; timer2_fck: timer2_fck@508 { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; reg = <0x0508>; }; timer3_fck: timer3_fck@50c { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; reg = <0x050c>; }; timer4_fck: timer4_fck@510 { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; reg = <0x0510>; }; timer5_fck: timer5_fck@518 { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; reg = <0x0518>; }; timer6_fck: timer6_fck@51c { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; reg = <0x051c>; }; timer7_fck: timer7_fck@504 { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; reg = <0x0504>; }; @@ -407,7 +407,7 @@ wdt1_fck: wdt1_fck@538 { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&clk_rc32k_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&clk_rc32k_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; reg = <0x0538>; }; @@ -477,7 +477,7 @@ gpio0_dbclk_mux_ck: gpio0_dbclk_mux_ck@53c { #clock-cells = <0>; compatible = "ti,mux-clock"; - clocks = <&clk_rc32k_ck>, <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>; + clocks = <&clk_rc32k_ck>, <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; reg = <0x053c>; }; @@ -539,86 +539,140 @@ }; &prcm { - l4_per_cm: l4_per_cm@0 { + per_cm: per-cm@0 { compatible = "ti,omap4-cm"; - reg = <0x0 0x200>; + reg = <0x0 0x400>; #address-cells = <1>; #size-cells = <1>; - ranges = <0 0x0 0x200>; + ranges = <0 0x0 0x400>; - l4_per_clkctrl: clk@14 { + l4ls_clkctrl: l4ls-clkctrl@38 { compatible = "ti,clkctrl"; - reg = <0x14 0x13c>; + reg = <0x38 0x2c>, <0x6c 0x28>, <0xac 0xc>, <0xc0 0x1c>, <0xec 0xc>, <0x10c 0x8>, <0x130 0x4>; #clock-cells = <2>; }; + + l3s_clkctrl: l3s-clkctrl@1c { + compatible = "ti,clkctrl"; + reg = <0x1c 0x4>, <0x30 0x8>, <0x68 0x4>, <0xf8 0x4>; + #clock-cells = <2>; + }; + + l3_clkctrl: l3-clkctrl@24 { + compatible = "ti,clkctrl"; + reg = <0x24 0xc>, <0x94 0x10>, <0xbc 0x4>, <0xdc 0x8>, <0xfc 0x8>; + #clock-cells = <2>; + }; + + l4hs_clkctrl: l4hs-clkctrl@120 { + compatible = "ti,clkctrl"; + reg = <0x120 0x4>; + #clock-cells = <2>; + }; + + pruss_ocp_clkctrl: pruss-ocp-clkctrl@e8 { + compatible = "ti,clkctrl"; + reg = <0xe8 0x4>; + #clock-cells = <2>; + }; + + cpsw_125mhz_clkctrl: cpsw-125mhz-clkctrl@0 { + compatible = "ti,clkctrl"; + reg = <0x0 0x18>; + #clock-cells = <2>; + }; + + lcdc_clkctrl: lcdc-clkctrl@18 { + compatible = "ti,clkctrl"; + reg = <0x18 0x4>; + #clock-cells = <2>; + }; + + clk_24mhz_clkctrl: clk-24mhz-clkctrl@14c { + compatible = "ti,clkctrl"; + reg = <0x14c 0x4>; + #clock-cells = <2>; + }; }; - l4_wkup_cm: l4_wkup_cm@400 { + wkup_cm: wkup-cm@400 { compatible = "ti,omap4-cm"; reg = <0x400 0x100>; #address-cells = <1>; #size-cells = <1>; ranges = <0 0x400 0x100>; - l4_wkup_clkctrl: clk@4 { + l4_wkup_clkctrl: l4-wkup-clkctrl@0 { compatible = "ti,clkctrl"; - reg = <0x4 0xd4>; + reg = <0x0 0x10>, <0xb4 0x24>; #clock-cells = <2>; }; + + l3_aon_clkctrl: l3-aon-clkctrl@14 { + compatible = "ti,clkctrl"; + reg = <0x14 0x4>; + #clock-cells = <2>; + }; + + l4_wkup_aon_clkctrl: l4-wkup-aon-clkctrl@b0 { + compatible = "ti,clkctrl"; + reg = <0xb0 0x4>; + #clock-cells = <2>; + }; }; - mpu_cm: mpu_cm@600 { + mpu_cm: mpu-cm@600 { compatible = "ti,omap4-cm"; reg = <0x600 0x100>; #address-cells = <1>; #size-cells = <1>; ranges = <0 0x600 0x100>; - mpu_clkctrl: clk@4 { + mpu_clkctrl: mpu-clkctrl@0 { compatible = "ti,clkctrl"; - reg = <0x4 0x4>; + reg = <0x0 0x8>; #clock-cells = <2>; }; }; - l4_rtc_cm: l4_rtc_cm@800 { + l4_rtc_cm: l4-rtc-cm@800 { compatible = "ti,omap4-cm"; reg = <0x800 0x100>; #address-cells = <1>; #size-cells = <1>; ranges = <0 0x800 0x100>; - l4_rtc_clkctrl: clk@0 { + l4_rtc_clkctrl: l4-rtc-clkctrl@0 { compatible = "ti,clkctrl"; reg = <0x0 0x4>; #clock-cells = <2>; }; }; - gfx_l3_cm: gfx_l3_cm@900 { + gfx_l3_cm: gfx-l3-cm@900 { compatible = "ti,omap4-cm"; reg = <0x900 0x100>; #address-cells = <1>; #size-cells = <1>; ranges = <0 0x900 0x100>; - gfx_l3_clkctrl: clk@4 { + gfx_l3_clkctrl: gfx-l3-clkctrl@0 { compatible = "ti,clkctrl"; - reg = <0x4 0x4>; + reg = <0x0 0x8>; #clock-cells = <2>; }; }; - l4_cefuse_cm: l4_cefuse_cm@a00 { + l4_cefuse_cm: l4-cefuse-cm@a00 { compatible = "ti,omap4-cm"; reg = <0xa00 0x100>; #address-cells = <1>; #size-cells = <1>; ranges = <0 0xa00 0x100>; - l4_cefuse_clkctrl: clk@20 { + l4_cefuse_clkctrl: l4-cefuse-clkctrl@0 { compatible = "ti,clkctrl"; - reg = <0x20 0x4>; + reg = <0x0 0x24>; #clock-cells = <2>; }; }; Copied: stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi (from r346092, head/sys/gnu/dts/arm/am33xx-l4.dtsi) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi Mon Aug 5 17:23:23 2019 (r350597, copy of r346092, head/sys/gnu/dts/arm/am33xx-l4.dtsi) @@ -0,0 +1,2132 @@ +&l4_wkup { /* 0x44c00000 */ + compatible = "ti,am33xx-l4-wkup", "simple-bus"; + reg = <0x44c00000 0x800>, + <0x44c00800 0x800>, + <0x44c01000 0x400>, + <0x44c01400 0x400>; + reg-names = "ap", "la", "ia0", "ia1"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x44c00000 0x100000>, /* segment 0 */ + <0x00100000 0x44d00000 0x100000>, /* segment 1 */ + <0x00200000 0x44e00000 0x100000>; /* segment 2 */ + + segment@0 { /* 0x44c00000 */ + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ + <0x00000800 0x00000800 0x000800>, /* ap 1 */ + <0x00001000 0x00001000 0x000400>, /* ap 2 */ + <0x00001400 0x00001400 0x000400>; /* ap 3 */ + }; + + segment@100000 { /* 0x44d00000 */ + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x00100000 0x004000>, /* ap 4 */ + <0x00004000 0x00104000 0x001000>, /* ap 5 */ + <0x00080000 0x00180000 0x002000>, /* ap 6 */ + <0x00082000 0x00182000 0x001000>; /* ap 7 */ + + target-module@0 { /* 0x44d00000, ap 4 28.0 */ + compatible = "ti,sysc-omap4", "ti,sysc"; + reg = <0x0 0x4>; + reg-names = "rev"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x0 0x4000>; + status = "disabled"; + }; + + target-module@80000 { /* 0x44d80000, ap 6 10.0 */ + compatible = "ti,sysc"; + status = "disabled"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x80000 0x2000>; + }; + }; + + segment@200000 { /* 0x44e00000 */ + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x00200000 0x002000>, /* ap 8 */ + <0x00002000 0x00202000 0x001000>, /* ap 9 */ + <0x00003000 0x00203000 0x001000>, /* ap 10 */ + <0x00004000 0x00204000 0x001000>, /* ap 11 */ + <0x00005000 0x00205000 0x001000>, /* ap 12 */ + <0x00006000 0x00206000 0x001000>, /* ap 13 */ + <0x00007000 0x00207000 0x001000>, /* ap 14 */ + <0x00008000 0x00208000 0x001000>, /* ap 15 */ + <0x00009000 0x00209000 0x001000>, /* ap 16 */ + <0x0000a000 0x0020a000 0x001000>, /* ap 17 */ + <0x0000b000 0x0020b000 0x001000>, /* ap 18 */ + <0x0000c000 0x0020c000 0x001000>, /* ap 19 */ + <0x0000d000 0x0020d000 0x001000>, /* ap 20 */ + <0x0000f000 0x0020f000 0x001000>, /* ap 21 */ + <0x00010000 0x00210000 0x010000>, /* ap 22 */ + <0x00020000 0x00220000 0x010000>, /* ap 23 */ + <0x00030000 0x00230000 0x001000>, /* ap 24 */ + <0x00031000 0x00231000 0x001000>, /* ap 25 */ + <0x00032000 0x00232000 0x001000>, /* ap 26 */ + <0x00033000 0x00233000 0x001000>, /* ap 27 */ + <0x00034000 0x00234000 0x001000>, /* ap 28 */ + <0x00035000 0x00235000 0x001000>, /* ap 29 */ + <0x00036000 0x00236000 0x001000>, /* ap 30 */ + <0x00037000 0x00237000 0x001000>, /* ap 31 */ + <0x00038000 0x00238000 0x001000>, /* ap 32 */ + <0x00039000 0x00239000 0x001000>, /* ap 33 */ + <0x0003a000 0x0023a000 0x001000>, /* ap 34 */ + <0x0003e000 0x0023e000 0x001000>, /* ap 35 */ + <0x0003f000 0x0023f000 0x001000>, /* ap 36 */ + <0x0000e000 0x0020e000 0x001000>, /* ap 37 */ + <0x00040000 0x00240000 0x040000>, /* ap 38 */ + <0x00080000 0x00280000 0x001000>; /* ap 39 */ + + target-module@0 { /* 0x44e00000, ap 8 58.0 */ + compatible = "ti,sysc-omap4", "ti,sysc"; + reg = <0 0x4>; + reg-names = "rev"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x0 0x2000>; + + prcm: prcm@0 { + compatible = "ti,am3-prcm", "simple-bus"; + reg = <0 0x2000>; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0 0x2000>; + + prcm_clocks: clocks { + #address-cells = <1>; + #size-cells = <0>; + }; + + prcm_clockdomains: clockdomains { + }; + }; + }; + + target-module@3000 { /* 0x44e03000, ap 10 0a.0 */ + compatible = "ti,sysc"; + status = "disabled"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x3000 0x1000>; + }; + + target-module@5000 { /* 0x44e05000, ap 12 30.0 */ + compatible = "ti,sysc"; + status = "disabled"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x5000 0x1000>; + }; + + target-module@7000 { /* 0x44e07000, ap 14 20.0 */ + compatible = "ti,sysc-omap2", "ti,sysc"; + ti,hwmods = "gpio1"; + reg = <0x7000 0x4>, + <0x7010 0x4>, + <0x7114 0x4>; + reg-names = "rev", "sysc", "syss"; + ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP | + SYSC_OMAP2_SOFTRESET | + SYSC_OMAP2_AUTOIDLE)>; + ti,sysc-sidle = , + , + , + ; + ti,syss-mask = <1>; + /* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */ + clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 0>, + <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 18>; + clock-names = "fck", "dbclk"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x7000 0x1000>; + + gpio0: gpio@0 { + compatible = "ti,omap4-gpio"; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + reg = <0x0 0x1000>; + interrupts = <96>; + }; + }; + + target-module@9000 { /* 0x44e09000, ap 16 04.0 */ + compatible = "ti,sysc-omap2", "ti,sysc"; + ti,hwmods = "uart1"; + reg = <0x9050 0x4>, + <0x9054 0x4>, + <0x9058 0x4>; + reg-names = "rev", "sysc", "syss"; + ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP | + SYSC_OMAP2_SOFTRESET | + SYSC_OMAP2_AUTOIDLE)>; + ti,sysc-sidle = , + , + , + ; + /* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */ + clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_UART1_CLKCTRL 0>; + clock-names = "fck"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x9000 0x1000>; + + uart0: serial@0 { + compatible = "ti,am3352-uart", "ti,omap3-uart"; + clock-frequency = <48000000>; + reg = <0x0 0x2000>; + interrupts = <72>; + status = "disabled"; + dmas = <&edma 26 0>, <&edma 27 0>; + dma-names = "tx", "rx"; + }; + }; + + target-module@b000 { /* 0x44e0b000, ap 18 48.0 */ + compatible = "ti,sysc-omap2", "ti,sysc"; + ti,hwmods = "i2c1"; + reg = <0xb000 0x8>, + <0xb010 0x8>, + <0xb090 0x8>; + reg-names = "rev", "sysc", "syss"; + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | + SYSC_OMAP2_ENAWAKEUP | + SYSC_OMAP2_SOFTRESET | + SYSC_OMAP2_AUTOIDLE)>; + ti,sysc-sidle = , + , + , + ; + ti,syss-mask = <1>; + /* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */ + clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_I2C1_CLKCTRL 0>; + clock-names = "fck"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0xb000 0x1000>; + + i2c0: i2c@0 { + compatible = "ti,omap4-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x0 0x1000>; + interrupts = <70>; + status = "disabled"; + }; + }; + + target-module@d000 { /* 0x44e0d000, ap 20 38.0 */ + compatible = "ti,sysc-omap4", "ti,sysc"; + ti,hwmods = "adc_tsc"; + reg = <0xd000 0x4>, + <0xd010 0x4>; + reg-names = "rev", "sysc"; + ti,sysc-sidle = , + , + , + ; + /* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */ + clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_ADC_TSC_CLKCTRL 0>; + clock-names = "fck"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x0000d000 0x00001000>, + <0x00001000 0x0000e000 0x00001000>; + + tscadc: tscadc@0 { + compatible = "ti,am3359-tscadc"; + reg = <0x0 0x1000>; + interrupts = <16>; + status = "disabled"; + dmas = <&edma 53 0>, <&edma 57 0>; + dma-names = "fifo0", "fifo1"; + + tsc { + compatible = "ti,am3359-tsc"; + }; + am335x_adc: adc { + #io-channel-cells = <1>; + compatible = "ti,am3359-adc"; + }; + }; + }; + + target-module@10000 { /* 0x44e10000, ap 22 0c.0 */ + compatible = "ti,sysc-omap4", "ti,sysc"; + reg = <0x10000 0x4>; + reg-names = "rev"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x00010000 0x00010000>, + <0x00010000 0x00020000 0x00010000>; + + scm: scm@0 { + compatible = "ti,am3-scm", "simple-bus"; + reg = <0x0 0x2000>; + #address-cells = <1>; + #size-cells = <1>; + #pinctrl-cells = <1>; + ranges = <0 0 0x2000>; + + phy_sel: cpsw-phy-sel@650 { + compatible = "ti,am3352-cpsw-phy-sel"; + reg= <0x650 0x4>; + reg-names = "gmii-sel"; + }; + + am33xx_pinmux: pinmux@800 { + compatible = "pinctrl-single"; + reg = <0x800 0x238>; + #address-cells = <1>; + #size-cells = <0>; + #pinctrl-cells = <1>; + pinctrl-single,register-width = <32>; + pinctrl-single,function-mask = <0x7f>; + }; + + scm_conf: scm_conf@0 { + compatible = "syscon", "simple-bus"; + reg = <0x0 0x800>; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0 0x800>; + + scm_clocks: clocks { + #address-cells = <1>; + #size-cells = <0>; + }; + }; + + wkup_m3_ipc: wkup_m3_ipc@1324 { + compatible = "ti,am3352-wkup-m3-ipc"; + reg = <0x1324 0x24>; + interrupts = <78>; + ti,rproc = <&wkup_m3>; + mboxes = <&mailbox &mbox_wkupm3>; + }; + + edma_xbar: dma-router@f90 { + compatible = "ti,am335x-edma-crossbar"; + reg = <0xf90 0x40>; + #dma-cells = <3>; + dma-requests = <32>; + dma-masters = <&edma>; + }; + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Mon Aug 5 17:32:18 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 13383A8D50; Mon, 5 Aug 2019 17:32:18 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462PwK6qYzz3yS9; Mon, 5 Aug 2019 17:32:17 +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 CDA4F1F34E; Mon, 5 Aug 2019 17:32:17 +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 x75HWH83091415; Mon, 5 Aug 2019 17:32:17 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75HWH0J091412; Mon, 5 Aug 2019 17:32:17 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051732.x75HWH0J091412@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 17:32:17 +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: r350598 - in stable/12/sys/arm/allwinner: . clk X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys/arm/allwinner: . clk X-SVN-Commit-Revision: 350598 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 17:32:18 -0000 Author: manu Date: Mon Aug 5 17:32:16 2019 New Revision: 350598 URL: https://svnweb.freebsd.org/changeset/base/350598 Log: MFC r346293: allwinner: clk: Garbage collect old clock implementation The old clocks are disconneted from the build since r337344. Remove all those pseudo drivers. The only one remaining is for gmac (the ethernet controller) so move it to sys/arm/allwinner. While here remove a83t support from gmacclk as it is unneeded since r326114. Added: stable/12/sys/arm/allwinner/aw_gmacclk.c - copied unchanged from r346293, head/sys/arm/allwinner/aw_gmacclk.c Deleted: stable/12/sys/arm/allwinner/clk/ Modified: stable/12/sys/arm/allwinner/aw_ccu.c stable/12/sys/arm/allwinner/files.allwinner Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/allwinner/aw_ccu.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_ccu.c Mon Aug 5 17:23:23 2019 (r350597) +++ stable/12/sys/arm/allwinner/aw_ccu.c Mon Aug 5 17:32:16 2019 (r350598) @@ -53,38 +53,18 @@ __FBSDID("$FreeBSD$"); #define CCU_BASE 0x01c20000 #define CCU_SIZE 0x400 -#define PRCM_BASE 0x01f01400 -#define PRCM_SIZE 0x200 - -#define SYSCTRL_BASE 0x01c00000 -#define SYSCTRL_SIZE 0x34 - struct aw_ccu_softc { struct simplebus_softc sc; bus_space_tag_t bst; - bus_space_handle_t ccu_bsh; - bus_space_handle_t prcm_bsh; - bus_space_handle_t sysctrl_bsh; + bus_space_handle_t bsh; struct mtx mtx; int flags; }; -#define CLOCK_CCU (1 << 0) -#define CLOCK_PRCM (1 << 1) -#define CLOCK_SYSCTRL (1 << 2) - static struct ofw_compat_data compat_data[] = { - { "allwinner,sun4i-a10", CLOCK_CCU }, - { "allwinner,sun5i-a13", CLOCK_CCU }, - { "allwinner,sun7i-a20", CLOCK_CCU }, - { "allwinner,sun6i-a31", CLOCK_CCU }, - { "allwinner,sun6i-a31s", CLOCK_CCU }, - { "allwinner,sun50i-a64", CLOCK_CCU }, - { "allwinner,sun50i-h5", CLOCK_CCU }, - { "allwinner,sun8i-a33", CLOCK_CCU }, - { "allwinner,sun8i-a83t", CLOCK_CCU|CLOCK_PRCM|CLOCK_SYSCTRL }, - { "allwinner,sun8i-h2-plus", CLOCK_CCU|CLOCK_PRCM }, - { "allwinner,sun8i-h3", CLOCK_CCU|CLOCK_PRCM }, + { "allwinner,sun7i-a20", 1 }, + { "allwinner,sun6i-a31", 1 }, + { "allwinner,sun6i-a31s", 1 }, { NULL, 0 } }; @@ -92,24 +72,11 @@ static int aw_ccu_check_addr(struct aw_ccu_softc *sc, bus_addr_t addr, bus_space_handle_t *pbsh, bus_size_t *poff) { - if (addr >= CCU_BASE && addr < (CCU_BASE + CCU_SIZE) && - (sc->flags & CLOCK_CCU) != 0) { + if (addr >= CCU_BASE && addr < (CCU_BASE + CCU_SIZE)) { *poff = addr - CCU_BASE; - *pbsh = sc->ccu_bsh; + *pbsh = sc->bsh; return (0); } - if (addr >= PRCM_BASE && addr < (PRCM_BASE + PRCM_SIZE) && - (sc->flags & CLOCK_PRCM) != 0) { - *poff = addr - PRCM_BASE; - *pbsh = sc->prcm_bsh; - return (0); - } - if (addr >= SYSCTRL_BASE && addr < (SYSCTRL_BASE + SYSCTRL_SIZE) && - (sc->flags & CLOCK_SYSCTRL) != 0) { - *poff = addr - SYSCTRL_BASE; - *pbsh = sc->sysctrl_bsh; - return (0); - } return (EINVAL); } @@ -241,29 +208,11 @@ aw_ccu_attach(device_t dev) * properties. */ sc->bst = bus_get_bus_tag(dev); - if (sc->flags & CLOCK_CCU) { - error = bus_space_map(sc->bst, CCU_BASE, CCU_SIZE, 0, - &sc->ccu_bsh); - if (error != 0) { - device_printf(dev, "couldn't map CCU: %d\n", error); - return (error); - } - } - if (sc->flags & CLOCK_PRCM) { - error = bus_space_map(sc->bst, PRCM_BASE, PRCM_SIZE, 0, - &sc->prcm_bsh); - if (error != 0) { - device_printf(dev, "couldn't map PRCM: %d\n", error); - return (error); - } - } - if (sc->flags & CLOCK_SYSCTRL) { - error = bus_space_map(sc->bst, SYSCTRL_BASE, SYSCTRL_SIZE, 0, - &sc->sysctrl_bsh); - if (error != 0) { - device_printf(dev, "couldn't map SYSCTRL: %d\n", error); - return (error); - } + error = bus_space_map(sc->bst, CCU_BASE, CCU_SIZE, 0, + &sc->bsh); + if (error != 0) { + device_printf(dev, "couldn't map CCU: %d\n", error); + return (error); } mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF); Copied: stable/12/sys/arm/allwinner/aw_gmacclk.c (from r346293, head/sys/arm/allwinner/aw_gmacclk.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm/allwinner/aw_gmacclk.c Mon Aug 5 17:32:16 2019 (r350598, copy of r346293, head/sys/arm/allwinner/aw_gmacclk.c) @@ -0,0 +1,280 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * 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. + * + * 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. + * + * $FreeBSD$ + */ + +/* + * Allwinner GMAC clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" + +#define GMAC_CLK_PIT (0x1 << 2) +#define GMAC_CLK_PIT_SHIFT 2 +#define GMAC_CLK_PIT_MII 0 +#define GMAC_CLK_PIT_RGMII 1 +#define GMAC_CLK_SRC (0x3 << 0) +#define GMAC_CLK_SRC_SHIFT 0 +#define GMAC_CLK_SRC_MII 0 +#define GMAC_CLK_SRC_EXT_RGMII 1 +#define GMAC_CLK_SRC_RGMII 2 + +#define EMAC_TXC_DIV_CFG (1 << 15) +#define EMAC_TXC_DIV_CFG_SHIFT 15 +#define EMAC_TXC_DIV_CFG_125MHZ 0 +#define EMAC_TXC_DIV_CFG_25MHZ 1 +#define EMAC_PHY_SELECT (1 << 16) +#define EMAC_PHY_SELECT_SHIFT 16 +#define EMAC_PHY_SELECT_INT 0 +#define EMAC_PHY_SELECT_EXT 1 +#define EMAC_ETXDC (0x7 << 10) +#define EMAC_ETXDC_SHIFT 10 +#define EMAC_ERXDC (0x1f << 5) +#define EMAC_ERXDC_SHIFT 5 + +#define CLK_IDX_MII 0 +#define CLK_IDX_RGMII 1 +#define CLK_IDX_COUNT 2 + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun7i-a20-gmac-clk", 1 }, + { NULL, 0 } +}; + +struct aw_gmacclk_sc { + device_t clkdev; + bus_addr_t reg; + + int rx_delay; + int tx_delay; +}; + +#define GMACCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define GMACCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_gmacclk_init(struct clknode *clk, device_t dev) +{ + struct aw_gmacclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + GMACCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + switch ((val & GMAC_CLK_SRC) >> GMAC_CLK_SRC_SHIFT) { + case GMAC_CLK_SRC_MII: + index = CLK_IDX_MII; + break; + case GMAC_CLK_SRC_RGMII: + index = CLK_IDX_RGMII; + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_gmacclk_set_mux(struct clknode *clk, int index) +{ + struct aw_gmacclk_sc *sc; + uint32_t val, clk_src, pit, txc_div; + int error; + + sc = clknode_get_softc(clk); + error = 0; + + switch (index) { + case CLK_IDX_MII: + clk_src = GMAC_CLK_SRC_MII; + pit = GMAC_CLK_PIT_MII; + txc_div = EMAC_TXC_DIV_CFG_25MHZ; + break; + case CLK_IDX_RGMII: + clk_src = GMAC_CLK_SRC_RGMII; + pit = GMAC_CLK_PIT_RGMII; + txc_div = EMAC_TXC_DIV_CFG_125MHZ; + break; + default: + return (ENXIO); + } + + DEVICE_LOCK(sc); + GMACCLK_READ(sc, &val); + val &= ~(GMAC_CLK_SRC | GMAC_CLK_PIT); + val |= (clk_src << GMAC_CLK_SRC_SHIFT); + val |= (pit << GMAC_CLK_PIT_SHIFT); + GMACCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static clknode_method_t aw_gmacclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_gmacclk_init), + CLKNODEMETHOD(clknode_set_mux, aw_gmacclk_set_mux), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_gmacclk_clknode, aw_gmacclk_clknode_class, + aw_gmacclk_clknode_methods, sizeof(struct aw_gmacclk_sc), clknode_class); + +static int +aw_gmacclk_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, "Allwinner GMAC Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_gmacclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_gmacclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0 || ncells != CLK_IDX_COUNT) { + device_printf(dev, "couldn't find parent clocks\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, 0, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", error); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_gmacclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + sc->tx_delay = sc->rx_delay = -1; + OF_getencprop(node, "tx-delay", &sc->tx_delay, sizeof(sc->tx_delay)); + OF_getencprop(node, "rx-delay", &sc->rx_delay, sizeof(sc->rx_delay)); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_gmacclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_gmacclk_probe), + DEVMETHOD(device_attach, aw_gmacclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_gmacclk_driver = { + "aw_gmacclk", + aw_gmacclk_methods, + 0 +}; + +static devclass_t aw_gmacclk_devclass; + +EARLY_DRIVER_MODULE(aw_gmacclk, simplebus, aw_gmacclk_driver, + aw_gmacclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); Modified: stable/12/sys/arm/allwinner/files.allwinner ============================================================================== --- stable/12/sys/arm/allwinner/files.allwinner Mon Aug 5 17:23:23 2019 (r350597) +++ stable/12/sys/arm/allwinner/files.allwinner Mon Aug 5 17:32:16 2019 (r350598) @@ -34,7 +34,7 @@ arm/allwinner/aw_cir.c optional aw_cir evdev arm/allwinner/aw_reset.c standard arm/allwinner/aw_ccu.c standard -arm/allwinner/clk/aw_gmacclk.c standard +arm/allwinner/aw_gmacclk.c standard arm/allwinner/clkng/aw_ccung.c standard arm/allwinner/clkng/aw_clk_nkmp.c standard From owner-svn-src-stable@freebsd.org Mon Aug 5 17:43:45 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EC8B5A90FC; Mon, 5 Aug 2019 17:43:45 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462Q9Y6gVXz403R; Mon, 5 Aug 2019 17:43:45 +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 C66931F520; Mon, 5 Aug 2019 17:43:45 +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 x75HhjPh098119; Mon, 5 Aug 2019 17:43:45 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75HhjS9098115; Mon, 5 Aug 2019 17:43:45 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051743.x75HhjS9098115@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 17:43: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: r350600 - in stable/12/sys: arm/mv arm64/conf conf dev/fdt dev/iicbus/twsi dev/sdhci X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/mv arm64/conf conf dev/fdt dev/iicbus/twsi dev/sdhci X-SVN-Commit-Revision: 350600 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 17:43:46 -0000 Author: manu Date: Mon Aug 5 17:43:44 2019 New Revision: 350600 URL: https://svnweb.freebsd.org/changeset/base/350600 Log: MFC r342008, r342010-r342020 r342008: fdt: Add support for simple-mfd bus Quoting the binding Documentation : "These devices comprise a nexus for heterogeneous hardware blocks containing more than one non-unique yet varying hardware functionality." Reviewed by: loos Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D17751 r342010: arm64: Add new SoC type MARVELL_8K Sponsored by: Rubicon Communications, LLC ("Netgate") r342011: arm64: mvebu_pinctrl: Add driver for Marvell Pinmux Controller Add a driver compatible with Marvell mvebu-pinctrl and add ap806-pinctrl support. Sponsored by: Rubicon Communications, LCC ("Netgate") r342012: arm64: marvell: Add driver for Marvell Ap806 System Controller The first two clocks are for the clusters and their frequencies can be found reading a register. Then a fixed 1200Mhz clock is present and two fixed clocks, 'mss' which is 1200 / 6 and 'sdio' which is 1200 / 3. Sponsored by: Rubicon Communications, LLC ("Netgate") r342013: arm64: mv_gpio: Add Marvell 8K support While here put the interrupts setup in it's own function Sponsored by: Rubicon Communications, LCC ("Netgate") r342014: arm64: marvell: Add cp110 clock controller support The cp110 clock controller controls the clocks and gate of the CP110 hardware block. Every clock/gate are implemented except the NAND clock. Sponsored by: Rubicon Communications, LLC ("Netgate") r342015: twsi: Clean up marvell part and add support for Marvell 7k/8k Sponsored by: Rubicon Communications, LLC ("Netgate") r342016: arm64: Add mv_cp110_icu and mv_cp110_gicp icu is a interrupt concentrator in the CP110 block and gicp is a gic extension to allow interrupts in the CP block to be turned into GIC SPI interrupts Sponsored by: Rubicon Communications, LLC ("Netgate") r342017: sdhci_xenon: Add Marvell 8k compatible string Sponsored by: Rubicon Communications, LLC ("Netgate") r342018: mv_gpio: Since it's also an interrupt controller, attach sooner Sponsored by: Rubicon Communications, LLC ("Netgate") r342019: arm64: mv_cp110_icu: Fix build r342020: mv_thermal: Add thermal driver for AP806 and CP110 thermal sensor Sponsored by: Rubicon Communications, LLC ("Netgate") Added: stable/12/sys/arm/mv/mv_ap806_clock.c - copied unchanged from r342020, head/sys/arm/mv/mv_ap806_clock.c stable/12/sys/arm/mv/mv_ap806_gicp.c - copied unchanged from r342020, head/sys/arm/mv/mv_ap806_gicp.c stable/12/sys/arm/mv/mv_cp110_clock.c - copied unchanged from r342020, head/sys/arm/mv/mv_cp110_clock.c stable/12/sys/arm/mv/mv_cp110_clock.h - copied unchanged from r342020, head/sys/arm/mv/mv_cp110_clock.h stable/12/sys/arm/mv/mv_cp110_icu.c - copied unchanged from r342020, head/sys/arm/mv/mv_cp110_icu.c stable/12/sys/arm/mv/mv_thermal.c - copied unchanged from r342020, head/sys/arm/mv/mv_thermal.c stable/12/sys/arm/mv/mvebu_pinctrl.c - copied unchanged from r342020, head/sys/arm/mv/mvebu_pinctrl.c stable/12/sys/dev/fdt/simple_mfd.c - copied unchanged from r342008, head/sys/dev/fdt/simple_mfd.c Modified: stable/12/sys/arm/mv/gpio.c stable/12/sys/arm64/conf/GENERIC stable/12/sys/conf/files stable/12/sys/conf/files.arm64 stable/12/sys/conf/options.arm64 stable/12/sys/dev/fdt/simplebus.c stable/12/sys/dev/fdt/simplebus.h stable/12/sys/dev/iicbus/twsi/mv_twsi.c stable/12/sys/dev/iicbus/twsi/twsi.h stable/12/sys/dev/sdhci/sdhci_xenon.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/mv/gpio.c ============================================================================== --- stable/12/sys/arm/mv/gpio.c Mon Aug 5 17:36:00 2019 (r350599) +++ stable/12/sys/arm/mv/gpio.c Mon Aug 5 17:43:44 2019 (r350600) @@ -60,6 +60,10 @@ __FBSDID("$FreeBSD$"); #include "gpio_if.h" +#ifdef __aarch64__ +#include "opt_soc.h" +#endif + #define GPIO_MAX_INTR_COUNT 8 #define GPIO_PINS_PER_REG 32 #define GPIO_GENERIC_CAP (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | \ @@ -74,6 +78,7 @@ __FBSDID("$FreeBSD$"); #define DEBOUNCE_CHECK_TICKS ((hz / 1000) * DEBOUNCE_CHECK_MS) struct mv_gpio_softc { + device_t dev; device_t sc_busdev; struct resource * mem_res; int mem_rid; @@ -83,6 +88,7 @@ struct mv_gpio_softc { void *ih_cookie[GPIO_MAX_INTR_COUNT]; bus_space_tag_t bst; bus_space_handle_t bsh; + uint32_t offset; struct mtx mutex; uint8_t pin_num; /* number of GPIO pins */ uint8_t irq_num; /* number of real IRQs occupied by GPIO controller */ @@ -187,11 +193,15 @@ static driver_t mv_gpio_driver = { static devclass_t mv_gpio_devclass; -DRIVER_MODULE(mv_gpio, simplebus, mv_gpio_driver, mv_gpio_devclass, 0, 0); +EARLY_DRIVER_MODULE(mv_gpio, simplebus, mv_gpio_driver, mv_gpio_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LAST); -struct ofw_compat_data gpio_controllers[] = { - { "mrvl,gpio", (uintptr_t)true }, - { "marvell,orion-gpio", (uintptr_t)true }, +struct ofw_compat_data compat_data[] = { + { "mrvl,gpio", 1 }, + { "marvell,orion-gpio", 1 }, +#ifdef SOC_MARVELL_8K + { "marvell,armada-8k-gpio", 1 }, +#endif { NULL, 0 } }; @@ -201,7 +211,7 @@ mv_gpio_probe(device_t dev) if (!ofw_bus_status_okay(dev)) return (ENXIO); - if (ofw_bus_search_compatible(dev, gpio_controllers)->ocd_data == 0) + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) return (ENXIO); device_set_desc(dev, "Marvell Integrated GPIO Controller"); @@ -209,61 +219,75 @@ mv_gpio_probe(device_t dev) } static int -mv_gpio_attach(device_t dev) +mv_gpio_setup_interrupts(struct mv_gpio_softc *sc, phandle_t node) { - int i, size; - struct mv_gpio_softc *sc; - pcell_t pincnt = 0; - pcell_t irq_cells = 0; phandle_t iparent; + pcell_t irq_cells; + int i, size; - sc = (struct mv_gpio_softc *)device_get_softc(dev); - if (sc == NULL) - return (ENXIO); - - if (OF_getencprop(ofw_bus_get_node(dev), "pin-count", &pincnt, - sizeof(pcell_t)) >= 0 || - OF_getencprop(ofw_bus_get_node(dev), "ngpios", &pincnt, - sizeof(pcell_t)) >= 0) { - sc->pin_num = MIN(pincnt, MV_GPIO_MAX_NPINS); - if (bootverbose) - device_printf(dev, "%d pins available\n", sc->pin_num); - } else { - device_printf(dev, "ERROR: no pin-count or ngpios entry found!\n"); - return (ENXIO); - } - - /* Assign generic capabilities to every gpio pin */ - for(i = 0; i < sc->pin_num; i++) - sc->gpio_setup[i].gp_caps = GPIO_GENERIC_CAP; - /* Find root interrupt controller */ - iparent = ofw_bus_find_iparent(ofw_bus_get_node(dev)); + iparent = ofw_bus_find_iparent(node); if (iparent == 0) { - device_printf(dev, "No interrupt-parrent found. " + device_printf(sc->dev, "No interrupt-parrent found. " "Error in DTB\n"); return (ENXIO); } else { /* While at parent - store interrupt cells prop */ if (OF_searchencprop(OF_node_from_xref(iparent), "#interrupt-cells", &irq_cells, sizeof(irq_cells)) == -1) { - device_printf(dev, "DTB: Missing #interrupt-cells " + device_printf(sc->dev, "DTB: Missing #interrupt-cells " "property in interrupt parent node\n"); return (ENXIO); } } - size = OF_getproplen(ofw_bus_get_node(dev), "interrupts"); + size = OF_getproplen(node, "interrupts"); if (size != -1) { size = size / sizeof(pcell_t); size = size / irq_cells; sc->irq_num = size; - device_printf(dev, "%d IRQs available\n", sc->irq_num); + device_printf(sc->dev, "%d IRQs available\n", sc->irq_num); } else { - device_printf(dev, "ERROR: no interrupts entry found!\n"); + device_printf(sc->dev, "ERROR: no interrupts entry found!\n"); return (ENXIO); } + for (i = 0; i < sc->irq_num; i++) { + sc->irq_rid[i] = i; + sc->irq_res[i] = bus_alloc_resource_any(sc->dev, SYS_RES_IRQ, + &sc->irq_rid[i], RF_ACTIVE); + if (!sc->irq_res[i]) { + mtx_destroy(&sc->mutex); + device_printf(sc->dev, + "could not allocate gpio%d interrupt\n", i+1); + return (ENXIO); + } + } + + device_printf(sc->dev, "Disable interrupts (offset = %x + EDGE(0x18)\n", sc->offset); + /* Disable all interrupts */ + bus_space_write_4(sc->bst, sc->bsh, sc->offset + GPIO_INT_EDGE_MASK, 0); + device_printf(sc->dev, "Disable interrupts (offset = %x + LEV(0x1C))\n", sc->offset); + bus_space_write_4(sc->bst, sc->bsh, sc->offset + GPIO_INT_LEV_MASK, 0); + + for (i = 0; i < sc->irq_num; i++) { + device_printf(sc->dev, "Setup intr %d\n", i); + if (bus_setup_intr(sc->dev, sc->irq_res[i], + INTR_TYPE_MISC, + (driver_filter_t *)mv_gpio_intr, NULL, + sc, &sc->ih_cookie[i]) != 0) { + mtx_destroy(&sc->mutex); + bus_release_resource(sc->dev, SYS_RES_IRQ, + sc->irq_rid[i], sc->irq_res[i]); + device_printf(sc->dev, "could not set up intr %d\n", i); + return (ENXIO); + } + } + + /* Clear interrupt status. */ + device_printf(sc->dev, "Clear int status (offset = %x)\n", sc->offset); + bus_space_write_4(sc->bst, sc->bsh, sc->offset + GPIO_INT_CAUSE, 0); + sc->debounce_callouts = (struct callout **)malloc(sc->pin_num * sizeof(struct callout *), M_DEVBUF, M_WAITOK | M_ZERO); if (sc->debounce_callouts == NULL) @@ -274,11 +298,46 @@ mv_gpio_attach(device_t dev) if (sc->debounce_counters == NULL) return (ENOMEM); + return (0); +} + +static int +mv_gpio_attach(device_t dev) +{ + int i, rv; + struct mv_gpio_softc *sc; + phandle_t node; + pcell_t pincnt = 0; + + sc = (struct mv_gpio_softc *)device_get_softc(dev); + if (sc == NULL) + return (ENXIO); + + node = ofw_bus_get_node(dev); + sc->dev = dev; + + if (OF_getencprop(node, "pin-count", &pincnt, sizeof(pcell_t)) >= 0 || + OF_getencprop(node, "ngpios", &pincnt, sizeof(pcell_t)) >= 0) { + sc->pin_num = MIN(pincnt, MV_GPIO_MAX_NPINS); + if (bootverbose) + device_printf(dev, "%d pins available\n", sc->pin_num); + } else { + device_printf(dev, "ERROR: no pin-count or ngpios entry found!\n"); + return (ENXIO); + } + + if (OF_getencprop(node, "offset", &sc->offset, sizeof(sc->offset)) == -1) + sc->offset = 0; + + /* Assign generic capabilities to every gpio pin */ + for(i = 0; i < sc->pin_num; i++) + sc->gpio_setup[i].gp_caps = GPIO_GENERIC_CAP; + mtx_init(&sc->mutex, device_get_nameunit(dev), NULL, MTX_SPIN); sc->mem_rid = 0; sc->mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->mem_rid, - RF_ACTIVE); + RF_ACTIVE | RF_SHAREABLE ); if (!sc->mem_res) { mtx_destroy(&sc->mutex); @@ -289,38 +348,10 @@ mv_gpio_attach(device_t dev) sc->bst = rman_get_bustag(sc->mem_res); sc->bsh = rman_get_bushandle(sc->mem_res); - for (i = 0; i < sc->irq_num; i++) { - sc->irq_rid[i] = i; - sc->irq_res[i] = bus_alloc_resource_any(dev, SYS_RES_IRQ, - &sc->irq_rid[i], RF_ACTIVE); - if (!sc->irq_res[i]) { - mtx_destroy(&sc->mutex); - device_printf(dev, - "could not allocate gpio%d interrupt\n", i+1); - return (ENXIO); - } - } + rv = mv_gpio_setup_interrupts(sc, node); + if (rv != 0) + return (rv); - /* Disable all interrupts */ - bus_space_write_4(sc->bst, sc->bsh, GPIO_INT_EDGE_MASK, 0); - bus_space_write_4(sc->bst, sc->bsh, GPIO_INT_LEV_MASK, 0); - - for (i = 0; i < sc->irq_num; i++) { - if (bus_setup_intr(dev, sc->irq_res[i], - INTR_TYPE_MISC, - (driver_filter_t *)mv_gpio_intr, NULL, - sc, &sc->ih_cookie[i]) != 0) { - mtx_destroy(&sc->mutex); - bus_release_resource(dev, SYS_RES_IRQ, - sc->irq_rid[i], sc->irq_res[i]); - device_printf(dev, "could not set up intr %d\n", i); - return (ENXIO); - } - } - - /* Clear interrupt status. */ - bus_space_write_4(sc->bst, sc->bsh, GPIO_INT_CAUSE, 0); - sc->sc_busdev = gpiobus_attach_bus(dev); if (sc->sc_busdev == NULL) { mtx_destroy(&sc->mutex); @@ -540,6 +571,8 @@ mv_gpio_configure(device_t dev, uint32_t pin, uint32_t return (EINVAL); if (mask & MV_GPIO_IN_DEBOUNCE) { + if (sc->irq_num == 0) + return (EINVAL); error = mv_gpio_debounce_prepare(dev, pin); if (error != 0) return (error); @@ -845,7 +878,7 @@ mv_gpio_reg_read(device_t dev, uint32_t reg) struct mv_gpio_softc *sc; sc = (struct mv_gpio_softc *)device_get_softc(dev); - return (bus_space_read_4(sc->bst, sc->bsh, reg)); + return (bus_space_read_4(sc->bst, sc->bsh, sc->offset + reg)); } static void @@ -854,7 +887,7 @@ mv_gpio_reg_write(device_t dev, uint32_t reg, uint32_t struct mv_gpio_softc *sc; sc = (struct mv_gpio_softc *)device_get_softc(dev); - bus_space_write_4(sc->bst, sc->bsh, reg, val); + bus_space_write_4(sc->bst, sc->bsh, sc->offset + reg, val); } static void Copied: stable/12/sys/arm/mv/mv_ap806_clock.c (from r342020, head/sys/arm/mv/mv_ap806_clock.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm/mv/mv_ap806_clock.c Mon Aug 5 17:43:44 2019 (r350600, copy of r342020, head/sys/arm/mv/mv_ap806_clock.c) @@ -0,0 +1,210 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Rubicon Communications, LLC (Netgate) + * + * 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$ + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include + +static struct clk_fixed_def ap806_clk_cluster_0 = { + .clkdef.id = 0, + .clkdef.name = "ap806-cpu-cluster-0", + .freq = 0, +}; + +static struct clk_fixed_def ap806_clk_cluster_1 = { + .clkdef.id = 1, + .clkdef.name = "ap806-cpu-cluster-1", + .freq = 0, +}; + +static struct clk_fixed_def ap806_clk_fixed = { + .clkdef.id = 2, + .clkdef.name = "ap806-fixed", + .freq = 1200000000, +}; + +/* Thoses are the only exported clocks AFAICT */ + +static const char *mss_parents[] = {"ap806-fixed"}; +static struct clk_fixed_def ap806_clk_mss = { + .clkdef.id = 3, + .clkdef.name = "ap806-mss", + .clkdef.parent_names = mss_parents, + .clkdef.parent_cnt = 1, + .mult = 1, + .div = 6, +}; + +static const char *sdio_parents[] = {"ap806-fixed"}; +static struct clk_fixed_def ap806_clk_sdio = { + .clkdef.id = 4, + .clkdef.name = "ap806-sdio", + .clkdef.parent_names = sdio_parents, + .clkdef.parent_cnt = 1, + .mult = 1, + .div = 3, +}; + +struct mv_ap806_clock_softc { + struct simplebus_softc simplebus_sc; + device_t dev; + struct resource *res; +}; + +static struct resource_spec mv_ap806_clock_res_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE | RF_SHAREABLE }, + { -1, 0 } +}; + +static struct ofw_compat_data compat_data[] = { + {"marvell,ap806-clock", 1}, + {NULL, 0} +}; + +#define RD4(sc, reg) bus_read_4((sc)->res, (reg)) +#define WR4(sc, reg, val) bus_write_4((sc)->res, (reg), (val)) + +static int +mv_ap806_clock_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, "Marvell AP806 Clock Controller"); + return (BUS_PROBE_DEFAULT); +} + +static int +mv_ap806_clock_attach(device_t dev) +{ + struct mv_ap806_clock_softc *sc; + struct clkdom *clkdom; + uint64_t clock_freq; + uint32_t reg; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, mv_ap806_clock_res_spec, &sc->res) != 0) { + device_printf(dev, "cannot allocate resources for device\n"); + return (ENXIO); + } + + /* + * We might miss some combinations + * Those are the only possible ones on the mcbin + */ + reg = RD4(sc, 0x400); + switch (reg & 0x1f) { + case 0x0: + case 0x1: + clock_freq = 2000000000; + break; + case 0x6: + clock_freq = 1800000000; + break; + case 0xd: + clock_freq = 1600000000; + break; + case 0x14: + clock_freq = 1333000000; + break; + default: + device_printf(dev, "Cannot guess clock freq with reg %x\n", reg & 0x1f); + return (ENXIO); + break; + }; + + ap806_clk_cluster_0.freq = clock_freq; + ap806_clk_cluster_1.freq = clock_freq; + clkdom = clkdom_create(dev); + + clknode_fixed_register(clkdom, &ap806_clk_cluster_0); + clknode_fixed_register(clkdom, &ap806_clk_cluster_1); + clknode_fixed_register(clkdom, &ap806_clk_fixed); + clknode_fixed_register(clkdom, &ap806_clk_mss); + clknode_fixed_register(clkdom, &ap806_clk_sdio); + + clkdom_finit(clkdom); + + if (bootverbose) + clkdom_dump(clkdom); + return (0); +} + +static int +mv_ap806_clock_detach(device_t dev) +{ + + return (EBUSY); +} + +static device_method_t mv_ap806_clock_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mv_ap806_clock_probe), + DEVMETHOD(device_attach, mv_ap806_clock_attach), + DEVMETHOD(device_detach, mv_ap806_clock_detach), + + DEVMETHOD_END +}; + +static devclass_t mv_ap806_clock_devclass; + +static driver_t mv_ap806_clock_driver = { + "mv_ap806_clock", + mv_ap806_clock_methods, + sizeof(struct mv_ap806_clock_softc), +}; + +EARLY_DRIVER_MODULE(mv_ap806_clock, simplebus, mv_ap806_clock_driver, + mv_ap806_clock_devclass, 0, 0, BUS_PASS_RESOURCE + BUS_PASS_ORDER_LATE); Copied: stable/12/sys/arm/mv/mv_ap806_gicp.c (from r342020, head/sys/arm/mv/mv_ap806_gicp.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm/mv/mv_ap806_gicp.c Mon Aug 5 17:43:44 2019 (r350600, copy of r342020, head/sys/arm/mv/mv_ap806_gicp.c) @@ -0,0 +1,289 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Rubicon Communications, LLC (Netgate) + * + * 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$ + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include "pic_if.h" + +#define MV_AP806_GICP_MAX_NIRQS 207 + +struct mv_ap806_gicp_softc { + device_t dev; + device_t parent; + struct resource *res; + + ssize_t spi_ranges_cnt; + uint32_t *spi_ranges; +}; + +static struct ofw_compat_data compat_data[] = { + {"marvell,ap806-gicp", 1}, + {NULL, 0} +}; + +#define RD4(sc, reg) bus_read_4((sc)->res, (reg)) +#define WR4(sc, reg, val) bus_write_4((sc)->res, (reg), (val)) + +static int +mv_ap806_gicp_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, "Marvell GICP"); + return (BUS_PROBE_DEFAULT); +} + +static int +mv_ap806_gicp_attach(device_t dev) +{ + struct mv_ap806_gicp_softc *sc; + phandle_t node, xref, intr_parent; + + sc = device_get_softc(dev); + sc->dev = dev; + node = ofw_bus_get_node(dev); + + /* Look for our parent */ + if ((intr_parent = ofw_bus_find_iparent(node)) == 0) { + device_printf(dev, "Cannot find our parent interrupt controller\n"); + return (ENXIO); + } + if ((sc->parent = OF_device_from_xref(intr_parent)) == NULL) { + device_printf(dev, "cannot find parent interrupt controller device\n"); + return (ENXIO); + } + + sc->spi_ranges_cnt = OF_getencprop_alloc(node, "marvell,spi-ranges", + (void **)&sc->spi_ranges); + + xref = OF_xref_from_node(node); + if (intr_pic_register(dev, xref) == NULL) { + device_printf(dev, "Cannot register GICP\n"); + return (ENXIO); + } + + OF_device_register_xref(xref, dev); + + return (0); +} + +static int +mv_ap806_gicp_detach(device_t dev) +{ + + return (EBUSY); +} + +static int +mv_ap806_gicp_activate_intr(device_t dev, struct intr_irqsrc *isrc, + struct resource *res, struct intr_map_data *data) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + return (PIC_ACTIVATE_INTR(sc->parent, isrc, res, data)); +} + +static void +mv_ap806_gicp_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + PIC_ENABLE_INTR(sc->parent, isrc); +} + +static void +mv_ap806_gicp_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + PIC_DISABLE_INTR(sc->parent, isrc); +} + +static int +mv_ap806_gicp_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ + struct mv_ap806_gicp_softc *sc; + struct intr_map_data_fdt *daf; + uint32_t group, irq_num, irq_type; + int i; + + sc = device_get_softc(dev); + + if (data->type != INTR_MAP_DATA_FDT) + return (ENOTSUP); + + daf = (struct intr_map_data_fdt *)data; + if (daf->ncells != 3 || daf->cells[0] >= MV_AP806_GICP_MAX_NIRQS) + return (EINVAL); + + group = daf->cells[0]; + irq_num = daf->cells[1]; + irq_type = daf->cells[2]; + + /* Map the interrupt number to spi number */ + for (i = 0; i < sc->spi_ranges_cnt / 2; i += 2) { + if (irq_num < sc->spi_ranges[i + 1]) { + irq_num += sc->spi_ranges[i]; + break; + } + + irq_num -= sc->spi_ranges[i]; + } + + daf->cells[1] = irq_num - 32; + + return (PIC_MAP_INTR(sc->parent, data, isrcp)); +} + +static int +mv_ap806_gicp_deactivate_intr(device_t dev, struct intr_irqsrc *isrc, + struct resource *res, struct intr_map_data *data) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + return (PIC_DEACTIVATE_INTR(sc->parent, isrc, res, data)); +} + +static int +mv_ap806_gicp_setup_intr(device_t dev, struct intr_irqsrc *isrc, + struct resource *res, struct intr_map_data *data) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + return (PIC_SETUP_INTR(sc->parent, isrc, res, data)); +} + +static int +mv_ap806_gicp_teardown_intr(device_t dev, struct intr_irqsrc *isrc, + struct resource *res, struct intr_map_data *data) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + return (PIC_TEARDOWN_INTR(sc->parent, isrc, res, data)); +} + +static void +mv_ap806_gicp_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + PIC_PRE_ITHREAD(sc->parent, isrc); +} + +static void +mv_ap806_gicp_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + PIC_POST_ITHREAD(sc->parent, isrc); +} + +static void +mv_ap806_gicp_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ + struct mv_ap806_gicp_softc *sc; + + sc = device_get_softc(dev); + + PIC_POST_FILTER(sc->parent, isrc); +} + +static device_method_t mv_ap806_gicp_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mv_ap806_gicp_probe), + DEVMETHOD(device_attach, mv_ap806_gicp_attach), + DEVMETHOD(device_detach, mv_ap806_gicp_detach), + + /* Interrupt controller interface */ + DEVMETHOD(pic_activate_intr, mv_ap806_gicp_activate_intr), + DEVMETHOD(pic_disable_intr, mv_ap806_gicp_disable_intr), + DEVMETHOD(pic_enable_intr, mv_ap806_gicp_enable_intr), + DEVMETHOD(pic_map_intr, mv_ap806_gicp_map_intr), + DEVMETHOD(pic_deactivate_intr, mv_ap806_gicp_deactivate_intr), + DEVMETHOD(pic_setup_intr, mv_ap806_gicp_setup_intr), + DEVMETHOD(pic_teardown_intr, mv_ap806_gicp_teardown_intr), + DEVMETHOD(pic_post_filter, mv_ap806_gicp_post_filter), + DEVMETHOD(pic_post_ithread, mv_ap806_gicp_post_ithread), + DEVMETHOD(pic_pre_ithread, mv_ap806_gicp_pre_ithread), + + DEVMETHOD_END +}; + +static devclass_t mv_ap806_gicp_devclass; + +static driver_t mv_ap806_gicp_driver = { + "mv_ap806_gicp", + mv_ap806_gicp_methods, + sizeof(struct mv_ap806_gicp_softc), +}; + +EARLY_DRIVER_MODULE(mv_ap806_gicp, simplebus, mv_ap806_gicp_driver, + mv_ap806_gicp_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); Copied: stable/12/sys/arm/mv/mv_cp110_clock.c (from r342020, head/sys/arm/mv/mv_cp110_clock.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm/mv/mv_cp110_clock.c Mon Aug 5 17:43:44 2019 (r350600, copy of r342020, head/sys/arm/mv/mv_cp110_clock.c) @@ -0,0 +1,375 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Rubicon Communications, LLC (Netgate) + * + * 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$ + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include +#include + +#include + +#include "clkdev_if.h" + +/* Clocks */ +static struct clk_fixed_def cp110_clk_pll_0 = { + .clkdef.id = CP110_PLL_0, + .freq = 1000000000, +}; + +static const char *clk_parents_0[] = {"cp110-pll0-0"}; +static const char *clk_parents_1[] = {"cp110-pll0-1"}; + +static struct clk_fixed_def cp110_clk_ppv2_core = { + .clkdef.id = CP110_PPV2_CORE, + .clkdef.parent_cnt = 1, + .mult = 1, + .div = 3, +}; + +static struct clk_fixed_def cp110_clk_x2core = { + .clkdef.id = CP110_X2CORE, + .clkdef.parent_cnt = 1, + .mult = 1, + .div = 2, +}; + +static const char *core_parents_0[] = {"cp110-x2core-0"}; +static const char *core_parents_1[] = {"cp110-x2core-1"}; + +static struct clk_fixed_def cp110_clk_core = { + .clkdef.id = CP110_CORE, + .clkdef.parent_cnt = 1, + .mult = 1, + .div = 2, +}; + +static struct clk_fixed_def cp110_clk_sdio = { + .clkdef.id = CP110_SDIO, + .clkdef.parent_cnt = 1, + .mult = 2, + .div = 5, +}; + +/* Gates */ + +static struct cp110_gate cp110_gates[] = { + CCU_GATE(CP110_GATE_AUDIO, "cp110-gate-audio", 0) + CCU_GATE(CP110_GATE_COMM_UNIT, "cp110-gate-comm_unit", 1) + /* CCU_GATE(CP110_GATE_NAND, "cp110-gate-nand", 2) */ + CCU_GATE(CP110_GATE_PPV2, "cp110-gate-ppv2", 3) + CCU_GATE(CP110_GATE_SDIO, "cp110-gate-sdio", 4) + CCU_GATE(CP110_GATE_MG, "cp110-gate-mg", 5) + CCU_GATE(CP110_GATE_MG_CORE, "cp110-gate-mg_core", 6) + CCU_GATE(CP110_GATE_XOR1, "cp110-gate-xor1", 7) + CCU_GATE(CP110_GATE_XOR0, "cp110-gate-xor0", 8) + CCU_GATE(CP110_GATE_GOP_DP, "cp110-gate-gop_dp", 9) + CCU_GATE(CP110_GATE_PCIE_X1_0, "cp110-gate-pcie_x10", 11) + CCU_GATE(CP110_GATE_PCIE_X1_1, "cp110-gate-pcie_x11", 12) + CCU_GATE(CP110_GATE_PCIE_X4, "cp110-gate-pcie_x4", 13) + CCU_GATE(CP110_GATE_PCIE_XOR, "cp110-gate-pcie_xor", 14) + CCU_GATE(CP110_GATE_SATA, "cp110-gate-sata", 15) + CCU_GATE(CP110_GATE_SATA_USB, "cp110-gate-sata_usb", 16) + CCU_GATE(CP110_GATE_MAIN, "cp110-gate-main", 17) + CCU_GATE(CP110_GATE_SDMMC_GOP, "cp110-gate-sdmmc_gop", 18) + CCU_GATE(CP110_GATE_SLOW_IO, "cp110-gate-slow_io", 21) + CCU_GATE(CP110_GATE_USB3H0, "cp110-gate-usb3h0", 22) + CCU_GATE(CP110_GATE_USB3H1, "cp110-gate-usb3h1", 23) + CCU_GATE(CP110_GATE_USB3DEV, "cp110-gate-usb3dev", 24) + CCU_GATE(CP110_GATE_EIP150, "cp110-gate-eip150", 25) + CCU_GATE(CP110_GATE_EIP197, "cp110-gate-eip197", 26) +}; + +struct mv_cp110_clock_softc { + struct simplebus_softc simplebus_sc; + device_t dev; + struct resource *res; + struct mtx mtx; +}; + +static struct resource_spec mv_cp110_clock_res_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE | RF_SHAREABLE }, + { -1, 0 } +}; + +static struct ofw_compat_data compat_data[] = { + {"marvell,cp110-clock", 1}, + {NULL, 0} +}; + +#define RD4(sc, reg) bus_read_4((sc)->res, (reg)) +#define WR4(sc, reg, val) bus_write_4((sc)->res, (reg), (val)) + +static char * +mv_cp110_clock_name(device_t dev, const char *name) +{ + char *clkname = NULL; + int unit; + + unit = device_get_unit(dev); + if (asprintf(&clkname, M_DEVBUF, "%s-%d", name, unit) <= 0) + panic("Cannot generate unique clock name for %s\n", name); + return (clkname); +} + +static int +mv_cp110_clock_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, "Marvell CP110 Clock Controller"); + return (BUS_PROBE_DEFAULT); +} + +static int +cp110_ofw_map(struct clkdom *clkdom, uint32_t ncells, + phandle_t *cells, struct clknode **clk) +{ + int id = 0; + + if (ncells != 2) + return (ENXIO); + + id = cells[1]; + if (cells[0] == 1) + id += CP110_MAX_CLOCK; + + *clk = clknode_find_by_id(clkdom, id); + + return (0); +} + +static int +mv_cp110_clock_attach(device_t dev) +{ + struct mv_cp110_clock_softc *sc; + struct clkdom *clkdom; + struct clk_gate_def def; + char *pll0_name; + int unit, i; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, mv_cp110_clock_res_spec, &sc->res) != 0) { + device_printf(dev, "cannot allocate resources for device\n"); + return (ENXIO); + } + + unit = device_get_unit(dev); + if (unit > 1) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Mon Aug 5 17:54:10 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9057EA9345; Mon, 5 Aug 2019 17:54:10 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462QPZ3XDyz40Wl; Mon, 5 Aug 2019 17:54:10 +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 5AE7B1F6E8; Mon, 5 Aug 2019 17:54:10 +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 x75HsAo2004239; Mon, 5 Aug 2019 17:54:10 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75Hs9xr004233; Mon, 5 Aug 2019 17:54:09 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051754.x75Hs9xr004233@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 17:54:09 +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: r350601 - in stable/12/sys: arm/mv arm64/conf conf dev/usb/controller X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/mv arm64/conf conf dev/usb/controller X-SVN-Commit-Revision: 350601 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 17:54:10 -0000 Author: manu Date: Mon Aug 5 17:54:08 2019 New Revision: 350601 URL: https://svnweb.freebsd.org/changeset/base/350601 Log: MFC r344633-r344634, r344638 r344633: usb_nop_xceiv: Add support for this pseudo device This is a "fake" phy that handle regulator, clocks and reset gpio. Only clock and regulator is supported for now. Sponsored-by: Rubicon Communications, LCC ("Netgate") r344634: xhci_mv: Move the driver to generic_xhci Marvell XHCI is in fact generic-xhci, so move the driver and add the compatible string. While here, get and enable the phy if the dtb provide one. The xhci bindings state that phys should be in a 'phys' property but Marvell DTS uses 'usb-phy', only add support for 'usb-phy' for now. Sponsored-by: Rubicon Communications, LCC ("Netgate") r344638: Fix armv6/armv7 build after the move from xhci_mv to generic_xhci Added: stable/12/sys/dev/usb/controller/generic_xhci.c - copied unchanged from r344634, head/sys/dev/usb/controller/generic_xhci.c stable/12/sys/dev/usb/controller/usb_nop_xceiv.c - copied unchanged from r344634, head/sys/dev/usb/controller/usb_nop_xceiv.c Deleted: stable/12/sys/dev/usb/controller/xhci_mv.c Modified: stable/12/sys/arm/mv/files.arm7 stable/12/sys/arm/mv/files.mv stable/12/sys/arm64/conf/GENERIC stable/12/sys/conf/files.arm64 Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/mv/files.arm7 ============================================================================== --- stable/12/sys/arm/mv/files.arm7 Mon Aug 5 17:43:44 2019 (r350600) +++ stable/12/sys/arm/mv/files.arm7 Mon Aug 5 17:54:08 2019 (r350601) @@ -33,7 +33,7 @@ dev/mvs/mvs_soc.c optional mvs 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/xhci_mv.c optional xhci +dev/usb/controller/generic_xhci.c optional xhci dev/ahci/ahci_mv_fdt.c optional ahci kern/kern_clocksource.c standard Modified: stable/12/sys/arm/mv/files.mv ============================================================================== --- stable/12/sys/arm/mv/files.mv Mon Aug 5 17:43:44 2019 (r350600) +++ stable/12/sys/arm/mv/files.mv Mon Aug 5 17:54:08 2019 (r350601) @@ -31,7 +31,7 @@ dev/mvs/mvs_soc.c optional mvs 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/xhci_mv.c optional xhci +dev/usb/controller/generic_xhci.c optional xhci dev/ahci/ahci_mv_fdt.c optional ahci kern/kern_clocksource.c standard Modified: stable/12/sys/arm64/conf/GENERIC ============================================================================== --- stable/12/sys/arm64/conf/GENERIC Mon Aug 5 17:43:44 2019 (r350600) +++ stable/12/sys/arm64/conf/GENERIC Mon Aug 5 17:54:08 2019 (r350601) @@ -182,7 +182,6 @@ device ohci # OHCI USB interface device ehci # EHCI USB interface (USB 2.0) device ehci_mv # Marvell EHCI USB interface device xhci # XHCI PCI->USB interface (USB 3.0) -device xhci_mv # Marvell XHCI USB interface device usb # USB Bus (required) device ukbd # Keyboard device umass # Disks/Mass storage - Requires scbus and da Modified: stable/12/sys/conf/files.arm64 ============================================================================== --- stable/12/sys/conf/files.arm64 Mon Aug 5 17:43:44 2019 (r350600) +++ stable/12/sys/conf/files.arm64 Mon Aug 5 17:54:08 2019 (r350601) @@ -232,7 +232,8 @@ dev/usb/controller/ehci_mv.c optional ehci_mv fdt dev/usb/controller/generic_ehci.c optional ehci acpi dev/usb/controller/generic_ohci.c optional ohci fdt dev/usb/controller/generic_usb_if.m optional ohci fdt -dev/usb/controller/xhci_mv.c optional xhci_mv fdt +dev/usb/controller/usb_nop_xceiv.c optional fdt ext_resources +dev/usb/controller/generic_xhci.c optional xhci fdt dev/vnic/mrml_bridge.c optional vnic fdt dev/vnic/nic_main.c optional vnic pci dev/vnic/nicvf_main.c optional vnic pci pci_iov Copied: stable/12/sys/dev/usb/controller/generic_xhci.c (from r344634, head/sys/dev/usb/controller/generic_xhci.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dev/usb/controller/generic_xhci.c Mon Aug 5 17:54:08 2019 (r350601, copy of r344634, head/sys/dev/usb/controller/generic_xhci.c) @@ -0,0 +1,243 @@ +/*- + * Copyright (c) 2015 Semihalf. + * Copyright (c) 2015 Stormshield. + * 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. + * + * 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 "opt_bus.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef EXT_RESOURCES +#include +#endif + +#define XHCI_HC_DEVSTR "Marvell Integrated USB 3.0 controller" +#define XHCI_HC_VENDOR "Marvell" + +#define IS_DMA_32B 1 + +static device_attach_t xhci_attach; +static device_detach_t xhci_detach; + +static struct ofw_compat_data compat_data[] = { + {"marvell,armada-380-xhci", true}, + {"marvell,armada3700-xhci", true}, + {"marvell,armada-8k-xhci", true}, + {"generic-xhci", true}, + {NULL, false} +}; + +static int +xhci_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data) + return (ENXIO); + + device_set_desc(dev, XHCI_HC_DEVSTR); + + return (BUS_PROBE_DEFAULT); +} + +static int +xhci_attach(device_t dev) +{ + struct xhci_softc *sc = device_get_softc(dev); + int err = 0, rid = 0; +#ifdef EXT_RESOURCES + phandle_t node; + phy_t phy; +#endif + + sc->sc_bus.parent = dev; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = XHCI_MAX_DEVICES; + + sc->sc_io_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->sc_io_res == NULL) { + device_printf(dev, "Failed to map memory\n"); + xhci_detach(dev); + return (ENXIO); + } + + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, + RF_SHAREABLE | RF_ACTIVE); + if (sc->sc_irq_res == NULL) { + device_printf(dev, "Failed to allocate IRQ\n"); + xhci_detach(dev); + return (ENXIO); + } + +#ifdef EXT_RESOURCES + node = ofw_bus_get_node(dev); + if (phy_get_by_ofw_property(dev, node, "usb-phy", &phy) == 0) + if (phy_enable(phy) != 0) + device_printf(dev, "Cannot enable phy\n"); +#endif + + sc->sc_bus.bdev = device_add_child(dev, "usbus", -1); + if (sc->sc_bus.bdev == NULL) { + device_printf(dev, "Failed to add USB device\n"); + xhci_detach(dev); + return (ENXIO); + } + + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + + sprintf(sc->sc_vendor, XHCI_HC_VENDOR); + device_set_desc(sc->sc_bus.bdev, XHCI_HC_DEVSTR); + + err = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, + NULL, (driver_intr_t *)xhci_interrupt, sc, &sc->sc_intr_hdl); + if (err != 0) { + device_printf(dev, "Failed to setup error IRQ, %d\n", err); + sc->sc_intr_hdl = NULL; + xhci_detach(dev); + return (err); + } + + err = xhci_init(sc, dev, IS_DMA_32B); + if (err != 0) { + device_printf(dev, "Failed to init XHCI, with error %d\n", err); + xhci_detach(dev); + return (ENXIO); + } + + err = xhci_start_controller(sc); + if (err != 0) { + device_printf(dev, "Failed to start XHCI controller, with error %d\n", err); + xhci_detach(dev); + return (ENXIO); + } + + err = device_probe_and_attach(sc->sc_bus.bdev); + if (err != 0) { + device_printf(dev, "Failed to initialize USB, with error %d\n", err); + xhci_detach(dev); + return (ENXIO); + } + + return (0); +} + +static int +xhci_detach(device_t dev) +{ + struct xhci_softc *sc = device_get_softc(dev); + int err; + + /* during module unload there are lots of children leftover */ + device_delete_children(dev); + + if (sc->sc_irq_res != NULL && sc->sc_intr_hdl != NULL) { + err = bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_intr_hdl); + if (err != 0) + device_printf(dev, "Could not tear down irq, %d\n", + err); + sc->sc_intr_hdl = NULL; + } + + if (sc->sc_irq_res != NULL) { + bus_release_resource(dev, SYS_RES_IRQ, + rman_get_rid(sc->sc_irq_res), sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + + if (sc->sc_io_res != NULL) { + bus_release_resource(dev, SYS_RES_MEMORY, + rman_get_rid(sc->sc_io_res), sc->sc_io_res); + sc->sc_io_res = NULL; + } + + xhci_uninit(sc); + + return (0); +} + +static device_method_t xhci_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, xhci_probe), + DEVMETHOD(device_attach, xhci_attach), + DEVMETHOD(device_detach, xhci_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t xhci_driver = { + "xhci", + xhci_methods, + sizeof(struct xhci_softc), +}; + +static devclass_t xhci_devclass; + +DRIVER_MODULE(xhci, simplebus, xhci_driver, xhci_devclass, 0, 0); +MODULE_DEPEND(xhci, usb, 1, 1, 1); Copied: stable/12/sys/dev/usb/controller/usb_nop_xceiv.c (from r344634, head/sys/dev/usb/controller/usb_nop_xceiv.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dev/usb/controller/usb_nop_xceiv.c Mon Aug 5 17:54:08 2019 (r350601, copy of r344634, head/sys/dev/usb/controller/usb_nop_xceiv.c) @@ -0,0 +1,211 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 Rubicon Communications, LLC (Netgate) + * + * 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 "phynode_if.h" + +struct usb_nop_xceiv_softc { + device_t dev; + regulator_t vcc_supply; + clk_t clk; + uint32_t clk_freq; +}; + +static struct ofw_compat_data compat_data[] = { + {"usb-nop-xceiv", 1}, + {NULL, 0} +}; + +/* Phy class and methods. */ +static int usb_nop_xceiv_phy_enable(struct phynode *phy, bool enable); +static phynode_usb_method_t usb_nop_xceiv_phynode_methods[] = { + PHYNODEMETHOD(phynode_enable, usb_nop_xceiv_phy_enable), + + PHYNODEMETHOD_END +}; +DEFINE_CLASS_1(usb_nop_xceiv_phynode, usb_nop_xceiv_phynode_class, + usb_nop_xceiv_phynode_methods, + sizeof(struct phynode_usb_sc), phynode_usb_class); + +static int +usb_nop_xceiv_phy_enable(struct phynode *phynode, bool enable) +{ + struct usb_nop_xceiv_softc *sc; + device_t dev; + intptr_t phy; + int error; + + dev = phynode_get_device(phynode); + phy = phynode_get_id(phynode); + sc = device_get_softc(dev); + + if (phy != 0) + return (ERANGE); + + /* Enable the phy clock */ + if (sc->clk_freq != 0) { + if (enable) { + error = clk_set_freq(sc->clk, sc->clk_freq, + CLK_SET_ROUND_ANY); + if (error != 0) { + device_printf(dev, "Cannot set clock to %dMhz\n", + sc->clk_freq); + goto fail; + } + + error = clk_enable(sc->clk); + } else + error = clk_disable(sc->clk); + + if (error != 0) { + device_printf(dev, "Cannot %sable the clock\n", + enable ? "En" : "Dis"); + goto fail; + } + } + if (sc->vcc_supply) { + if (enable) + error = regulator_enable(sc->vcc_supply); + else + error = regulator_disable(sc->vcc_supply); + if (error != 0) { + device_printf(dev, "Cannot %sable the regulator\n", + enable ? "En" : "Dis"); + goto fail; + } + } + + return (0); + +fail: + return (ENXIO); +} + +static int +usb_nop_xceiv_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, "USB NOP PHY"); + return (BUS_PROBE_DEFAULT); +} + +static int +usb_nop_xceiv_attach(device_t dev) +{ + struct usb_nop_xceiv_softc *sc; + struct phynode *phynode; + struct phynode_init_def phy_init; + phandle_t node; + int error; + + sc = device_get_softc(dev); + sc->dev = dev; + node = ofw_bus_get_node(dev); + + /* Parse the optional properties */ + OF_getencprop(node, "clock-frequency", &sc->clk_freq, sizeof(uint32_t)); + + error = clk_get_by_ofw_name(dev, node, "main_clk", &sc->clk); + if (error != 0 && sc->clk_freq != 0) { + device_printf(dev, "clock property is mandatory if clock-frequency is present\n"); + return (ENXIO); + } + + regulator_get_by_ofw_property(dev, node, "vcc-supply", &sc->vcc_supply); + + phy_init.id = 0; + phy_init.ofw_node = node; + phynode = phynode_create(dev, &usb_nop_xceiv_phynode_class, + &phy_init); + if (phynode == NULL) { + device_printf(dev, "failed to create USB NOP PHY\n"); + return (ENXIO); + } + if (phynode_register(phynode) == NULL) { + device_printf(dev, "failed to create USB NOP PHY\n"); + return (ENXIO); + } + + OF_device_register_xref(OF_xref_from_node(node), dev); + + return (0); +} + +static int +usb_nop_xceiv_detach(device_t dev) +{ + + return (EBUSY); +} + +static device_method_t usb_nop_xceiv_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, usb_nop_xceiv_probe), + DEVMETHOD(device_attach, usb_nop_xceiv_attach), + DEVMETHOD(device_detach, usb_nop_xceiv_detach), + + DEVMETHOD_END +}; + +static devclass_t usb_nop_xceiv_devclass; + +static driver_t usb_nop_xceiv_driver = { + "usb_nop_xceiv", + usb_nop_xceiv_methods, + sizeof(struct usb_nop_xceiv_softc), +}; + +EARLY_DRIVER_MODULE(usb_nop_xceiv, simplebus, usb_nop_xceiv_driver, + usb_nop_xceiv_devclass, 0, 0, BUS_PASS_SUPPORTDEV + BUS_PASS_ORDER_MIDDLE); From owner-svn-src-stable@freebsd.org Mon Aug 5 18:05:24 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AE826A969B; Mon, 5 Aug 2019 18:05:24 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462QfX4Bnrz41Fn; Mon, 5 Aug 2019 18:05:24 +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 71A5B1F8CE; Mon, 5 Aug 2019 18:05:24 +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 x75I5Ocn010437; Mon, 5 Aug 2019 18:05:24 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75I5MMH010428; Mon, 5 Aug 2019 18:05:22 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051805.x75I5MMH010428@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 18:05:22 +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: r350602 - in stable/12/sys: arm/allwinner arm/conf modules/allwinner modules/allwinner/aw_rsb modules/allwinner/aw_rtc modules/allwinner/aw_sid modules/allwinner/aw_thermal modules/allw... X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/allwinner arm/conf modules/allwinner modules/allwinner/aw_rsb modules/allwinner/aw_rtc modules/allwinner/aw_sid modules/allwinner/aw_thermal modules/allwinner/axp81x modules/allw... X-SVN-Commit-Revision: 350602 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 18:05:24 -0000 Author: manu Date: Mon Aug 5 18:05:22 2019 New Revision: 350602 URL: https://svnweb.freebsd.org/changeset/base/350602 Log: MFC r346305, r346691-r346694, r346696-r346697 r346305: arm: allwinner: Makes more device optional r346691: arm: allwinner: Add pnpinfo for aw_sid and add module Makefile r346692: arm: allwinner: Add pnp info to aw_thermal and compile it as module too r346693: arm: allwinner: Add pnp info to axp81x and compile it as module too r346694: arm: allwinner: Add pnp info to aw_rtc and compile it as module too r346696: arm: allwinner: Add pnp info to if_awg and compile it as module too While here make it depend on aw_sid as it's needed for mac generation. r346697: arm: allwinner: Add pnp info to aw_rsb and compile it as module too Added: stable/12/sys/modules/allwinner/aw_rsb/ - copied from r346697, head/sys/modules/allwinner/aw_rsb/ stable/12/sys/modules/allwinner/aw_rtc/ - copied from r346694, head/sys/modules/allwinner/aw_rtc/ stable/12/sys/modules/allwinner/aw_sid/ - copied from r346694, head/sys/modules/allwinner/aw_sid/ stable/12/sys/modules/allwinner/aw_thermal/ - copied from r346694, head/sys/modules/allwinner/aw_thermal/ stable/12/sys/modules/allwinner/axp81x/ - copied from r346694, head/sys/modules/allwinner/axp81x/ stable/12/sys/modules/allwinner/if_awg/ - copied from r346697, head/sys/modules/allwinner/if_awg/ Modified: stable/12/sys/arm/allwinner/aw_rsb.c stable/12/sys/arm/allwinner/aw_rtc.c stable/12/sys/arm/allwinner/aw_sid.c stable/12/sys/arm/allwinner/aw_thermal.c stable/12/sys/arm/allwinner/axp81x.c stable/12/sys/arm/allwinner/files.allwinner stable/12/sys/arm/allwinner/if_awg.c stable/12/sys/arm/conf/GENERIC stable/12/sys/modules/allwinner/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/allwinner/aw_rsb.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_rsb.c Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/arm/allwinner/aw_rsb.c Mon Aug 5 18:05:22 2019 (r350602) @@ -496,3 +496,5 @@ EARLY_DRIVER_MODULE(iicbus, rsb, iicbus_driver, iicbus EARLY_DRIVER_MODULE(rsb, simplebus, rsb_driver, rsb_devclass, 0, 0, BUS_PASS_RESOURCE + BUS_PASS_ORDER_MIDDLE); MODULE_VERSION(rsb, 1); +MODULE_DEPEND(rsb, iicbus, 1, 1, 1); +SIMPLEBUS_PNP_INFO(compat_data); Modified: stable/12/sys/arm/allwinner/aw_rtc.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_rtc.c Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/arm/allwinner/aw_rtc.c Mon Aug 5 18:05:22 2019 (r350602) @@ -185,6 +185,8 @@ static devclass_t aw_rtc_devclass; EARLY_DRIVER_MODULE(aw_rtc, simplebus, aw_rtc_driver, aw_rtc_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); +MODULE_VERSION(aw_rtc, 1); +SIMPLEBUS_PNP_INFO(compat_data); static int aw_rtc_probe(device_t dev) Modified: stable/12/sys/arm/allwinner/aw_sid.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_sid.c Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/arm/allwinner/aw_sid.c Mon Aug 5 18:05:22 2019 (r350602) @@ -414,3 +414,4 @@ static devclass_t aw_sid_devclass; EARLY_DRIVER_MODULE(aw_sid, simplebus, aw_sid_driver, aw_sid_devclass, 0, 0, BUS_PASS_RESOURCE + BUS_PASS_ORDER_FIRST); MODULE_VERSION(aw_sid, 1); +SIMPLEBUS_PNP_INFO(compat_data); Modified: stable/12/sys/arm/allwinner/aw_thermal.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_thermal.c Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/arm/allwinner/aw_thermal.c Mon Aug 5 18:05:22 2019 (r350602) @@ -728,3 +728,5 @@ static devclass_t aw_thermal_devclass; DRIVER_MODULE(aw_thermal, simplebus, aw_thermal_driver, aw_thermal_devclass, 0, 0); MODULE_VERSION(aw_thermal, 1); +MODULE_DEPEND(aw_thermal, aw_sid, 1, 1, 1); +SIMPLEBUS_PNP_INFO(compat_data); Modified: stable/12/sys/arm/allwinner/axp81x.c ============================================================================== --- stable/12/sys/arm/allwinner/axp81x.c Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/arm/allwinner/axp81x.c Mon Aug 5 18:05:22 2019 (r350602) @@ -1172,3 +1172,4 @@ EARLY_DRIVER_MODULE(ofw_gpiobus, axp8xx_pmu, ofw_gpiob DRIVER_MODULE(gpioc, axp8xx_pmu, gpioc_driver, gpioc_devclass, 0, 0); MODULE_VERSION(axp8xx, 1); MODULE_DEPEND(axp8xx, iicbus, 1, 1, 1); +SIMPLEBUS_PNP_INFO(compat_data); Modified: stable/12/sys/arm/allwinner/files.allwinner ============================================================================== --- stable/12/sys/arm/allwinner/files.allwinner Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/arm/allwinner/files.allwinner Mon Aug 5 18:05:22 2019 (r350602) @@ -3,10 +3,10 @@ kern/kern_clocksource.c standard arm/allwinner/a10_ahci.c optional ahci arm/allwinner/a10_codec.c optional sound -arm/allwinner/a10_dmac.c standard -arm/allwinner/a31_dmac.c standard +arm/allwinner/a10_dmac.c optional a10_dmac +arm/allwinner/a31_dmac.c optional a31_dmac arm/allwinner/a10_ehci.c optional ehci -arm/allwinner/a10_sramc.c standard +arm/allwinner/a10_sramc.c optional SOC_ALLWINNER_A10 arm/allwinner/aw_gpio.c optional gpio arm/allwinner/aw_if_dwc.c optional dwc arm/allwinner/aw_machdep.c standard @@ -14,21 +14,21 @@ arm/allwinner/aw_mmc.c optional mmc | mmccam arm/allwinner/aw_mp.c optional smp arm/allwinner/aw_nmi.c optional intrng arm/allwinner/aw_rsb.c optional rsb | p2wi -arm/allwinner/aw_rtc.c standard +arm/allwinner/aw_rtc.c optional aw_rtc arm/allwinner/aw_syscon.c optional ext_resources syscon -arm/allwinner/aw_ts.c standard +arm/allwinner/aw_ts.c optional aw_thermal arm/allwinner/aw_usbphy.c optional ehci | ohci -arm/allwinner/aw_wdog.c standard +arm/allwinner/aw_wdog.c optional aw_wdog arm/allwinner/axp209.c optional axp209 arm/allwinner/axp81x.c optional axp81x arm/allwinner/if_awg.c optional awg ext_resources syscon arm/allwinner/if_emac.c optional emac -arm/allwinner/sunxi_dma_if.m standard +arm/allwinner/sunxi_dma_if.m optional a10_dmac | a31_dmac dev/iicbus/twsi/a10_twsi.c optional twsi dev/usb/controller/generic_ohci.c optional ohci dev/usb/controller/generic_usb_if.m optional ohci -arm/allwinner/aw_sid.c standard -arm/allwinner/aw_thermal.c standard +arm/allwinner/aw_sid.c optional aw_sid +arm/allwinner/aw_thermal.c optional aw_thermal dev/iicbus/sy8106a.c optional sy8106a arm/allwinner/aw_cir.c optional aw_cir evdev Modified: stable/12/sys/arm/allwinner/if_awg.c ============================================================================== --- stable/12/sys/arm/allwinner/if_awg.c Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/arm/allwinner/if_awg.c Mon Aug 5 18:05:22 2019 (r350602) @@ -1967,6 +1967,7 @@ static devclass_t awg_devclass; DRIVER_MODULE(awg, simplebus, awg_driver, awg_devclass, 0, 0); DRIVER_MODULE(miibus, awg, miibus_driver, miibus_devclass, 0, 0); - MODULE_DEPEND(awg, ether, 1, 1, 1); MODULE_DEPEND(awg, miibus, 1, 1, 1); +MODULE_DEPEND(awg, aw_sid, 1, 1, 1); +SIMPLEBUS_PNP_INFO(compat_data); Modified: stable/12/sys/arm/conf/GENERIC ============================================================================== --- stable/12/sys/arm/conf/GENERIC Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/arm/conf/GENERIC Mon Aug 5 18:05:22 2019 (r350602) @@ -183,6 +183,7 @@ device pwm # watchdog. device ti_wdt device imxwdt # Watchdog. WARNING: can't be disabled!!! +device aw_wdog # Allwinner Watchdog device scbus # SCSI bus (required for ATA/SCSI) device da # Direct Access (disks) @@ -255,6 +256,8 @@ device ti_mbox # DMA controller device fslsdma device ti_sdma +device a10_dmac +device a31_dmac # Extensible Firmware Interface options EFI @@ -264,8 +267,15 @@ device cesa device crypto device cryptodev -# imx6 on-chip RTC -device imx6_snvs # On-chip RTC +# RTC +device imx6_snvs # IMX6 On-chip RTC +device aw_rtc # Allwinner On-chip RTC + +# EFUSE +device aw_sid # Allwinner Secure ID EFUSE + +# Thermal sensors +device aw_thermal # Allwinner Thermal Sensor Controller # Flattened Device Tree options FDT # Configure using FDT/DTB data Modified: stable/12/sys/modules/allwinner/Makefile ============================================================================== --- stable/12/sys/modules/allwinner/Makefile Mon Aug 5 17:54:08 2019 (r350601) +++ stable/12/sys/modules/allwinner/Makefile Mon Aug 5 18:05:22 2019 (r350602) @@ -3,6 +3,12 @@ SUBDIR = \ aw_pwm \ + aw_rtc \ + aw_rsb \ + aw_sid \ aw_spi \ + aw_thermal \ + axp81x \ + if_awg .include From owner-svn-src-stable@freebsd.org Mon Aug 5 18:13:18 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 91A28A9C4B; Mon, 5 Aug 2019 18:13:18 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462Qqf3DC1z41v4; Mon, 5 Aug 2019 18:13:18 +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 383331FA95; Mon, 5 Aug 2019 18:13:18 +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 x75IDIlE016035; Mon, 5 Aug 2019 18:13:18 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75IDD66016013; Mon, 5 Aug 2019 18:13:13 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051813.x75IDD66016013@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 18:13: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: r350603 - in stable/12/sys: arm/allwinner arm/altera/socfpga arm/amlogic/aml8726 arm/annapurna/alpine arm/broadcom/bcm2835 arm/freescale/imx arm/freescale/vybrid arm/mv arm/nvidia/tegra... X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/allwinner arm/altera/socfpga arm/amlogic/aml8726 arm/annapurna/alpine arm/broadcom/bcm2835 arm/freescale/imx arm/freescale/vybrid arm/mv arm/nvidia/tegra124 arm/qemu arm/ralink a... X-SVN-Commit-Revision: 350603 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 18:13:18 -0000 Author: manu Date: Mon Aug 5 18:13:13 2019 New Revision: 350603 URL: https://svnweb.freebsd.org/changeset/base/350603 Log: MFC r346295, r346297 r346295: arm: Add kern_clocksource.c directly in files.arm This files is needed and included in all our config so move it to a common location. r346297: arm: Order files.arm to have cloudabi and annapurna sections Modified: stable/12/sys/arm/allwinner/files.allwinner stable/12/sys/arm/altera/socfpga/files.socfpga stable/12/sys/arm/amlogic/aml8726/files.aml8726 stable/12/sys/arm/annapurna/alpine/files.alpine stable/12/sys/arm/broadcom/bcm2835/files.bcm283x stable/12/sys/arm/freescale/imx/files.imx5 stable/12/sys/arm/freescale/imx/files.imx6 stable/12/sys/arm/freescale/vybrid/files.vybrid stable/12/sys/arm/mv/files.arm7 stable/12/sys/arm/mv/files.mv stable/12/sys/arm/nvidia/tegra124/files.tegra124 stable/12/sys/arm/qemu/files.qemu stable/12/sys/arm/ralink/files.ralink stable/12/sys/arm/rockchip/files.rk30xx stable/12/sys/arm/samsung/exynos/files.exynos5 stable/12/sys/arm/ti/files.ti stable/12/sys/arm/versatile/files.versatile stable/12/sys/arm/xilinx/files.zynq7 stable/12/sys/conf/files.arm Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/allwinner/files.allwinner ============================================================================== --- stable/12/sys/arm/allwinner/files.allwinner Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/allwinner/files.allwinner Mon Aug 5 18:13:13 2019 (r350603) @@ -1,5 +1,4 @@ # $FreeBSD$ -kern/kern_clocksource.c standard arm/allwinner/a10_ahci.c optional ahci arm/allwinner/a10_codec.c optional sound Modified: stable/12/sys/arm/altera/socfpga/files.socfpga ============================================================================== --- stable/12/sys/arm/altera/socfpga/files.socfpga Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/altera/socfpga/files.socfpga Mon Aug 5 18:13:13 2019 (r350603) @@ -1,7 +1,5 @@ # $FreeBSD$ -kern/kern_clocksource.c standard - arm/altera/socfpga/socfpga_common.c standard arm/altera/socfpga/socfpga_machdep.c standard arm/altera/socfpga/socfpga_manager.c standard Modified: stable/12/sys/arm/amlogic/aml8726/files.aml8726 ============================================================================== --- stable/12/sys/arm/amlogic/aml8726/files.aml8726 Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/amlogic/aml8726/files.aml8726 Mon Aug 5 18:13:13 2019 (r350603) @@ -1,7 +1,5 @@ #$FreeBSD$ -kern/kern_clocksource.c standard - arm/amlogic/aml8726/aml8726_l2cache.c standard arm/amlogic/aml8726/aml8726_machdep.c standard Modified: stable/12/sys/arm/annapurna/alpine/files.alpine ============================================================================== --- stable/12/sys/arm/annapurna/alpine/files.alpine Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/annapurna/alpine/files.alpine Mon Aug 5 18:13:13 2019 (r350603) @@ -1,7 +1,5 @@ # $FreeBSD$ -kern/kern_clocksource.c standard - arm/versatile/sp804.c standard dev/uart/uart_dev_ns8250.c optional uart Modified: stable/12/sys/arm/broadcom/bcm2835/files.bcm283x ============================================================================== --- stable/12/sys/arm/broadcom/bcm2835/files.bcm283x Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/broadcom/bcm2835/files.bcm283x Mon Aug 5 18:13:13 2019 (r350603) @@ -18,8 +18,6 @@ arm/broadcom/bcm2835/bcm2835_vcio.c standard arm/broadcom/bcm2835/bcm2835_wdog.c standard arm/broadcom/bcm2835/bcm283x_dwc_fdt.c optional dwcotg fdt -kern/kern_clocksource.c standard - dev/mbox/mbox_if.m standard arm/broadcom/bcm2835/bcm2835_audio.c optional sound vchiq \ Modified: stable/12/sys/arm/freescale/imx/files.imx5 ============================================================================== --- stable/12/sys/arm/freescale/imx/files.imx5 Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/freescale/imx/files.imx5 Mon Aug 5 18:13:13 2019 (r350603) @@ -1,5 +1,4 @@ # $FreeBSD$ -kern/kern_clocksource.c standard # Init arm/freescale/imx/imx_common.c standard Modified: stable/12/sys/arm/freescale/imx/files.imx6 ============================================================================== --- stable/12/sys/arm/freescale/imx/files.imx6 Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/freescale/imx/files.imx6 Mon Aug 5 18:13:13 2019 (r350603) @@ -1,11 +1,6 @@ # $FreeBSD$ # -# Standard ARM support. -# -kern/kern_clocksource.c standard - -# # Standard imx6 devices and support. # arm/freescale/fsl_ocotp.c standard Modified: stable/12/sys/arm/freescale/vybrid/files.vybrid ============================================================================== --- stable/12/sys/arm/freescale/vybrid/files.vybrid Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/freescale/vybrid/files.vybrid Mon Aug 5 18:13:13 2019 (r350603) @@ -1,7 +1,5 @@ # $FreeBSD$ -kern/kern_clocksource.c standard - arm/freescale/vybrid/vf_machdep.c standard arm/freescale/vybrid/vf_ccm.c standard arm/freescale/vybrid/vf_anadig.c standard Modified: stable/12/sys/arm/mv/files.arm7 ============================================================================== --- stable/12/sys/arm/mv/files.arm7 Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/mv/files.arm7 Mon Aug 5 18:13:13 2019 (r350603) @@ -35,5 +35,3 @@ 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/ahci/ahci_mv_fdt.c optional ahci - -kern/kern_clocksource.c standard Modified: stable/12/sys/arm/mv/files.mv ============================================================================== --- stable/12/sys/arm/mv/files.mv Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/mv/files.mv Mon Aug 5 18:13:13 2019 (r350603) @@ -33,5 +33,3 @@ 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/ahci/ahci_mv_fdt.c optional ahci - -kern/kern_clocksource.c standard Modified: stable/12/sys/arm/nvidia/tegra124/files.tegra124 ============================================================================== --- stable/12/sys/arm/nvidia/tegra124/files.tegra124 Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/nvidia/tegra124/files.tegra124 Mon Aug 5 18:13:13 2019 (r350603) @@ -1,11 +1,6 @@ # $FreeBSD$ # -# Standard ARM support. -# -kern/kern_clocksource.c standard - -# # Standard tegra124 devices and support. # arm/nvidia/tegra124/tegra124_machdep.c standard Modified: stable/12/sys/arm/qemu/files.qemu ============================================================================== --- stable/12/sys/arm/qemu/files.qemu Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/qemu/files.qemu Mon Aug 5 18:13:13 2019 (r350603) @@ -1,11 +1,6 @@ # $FreeBSD$ # -# Standard ARM support. -# -kern/kern_clocksource.c standard - -# # Standard qemu virt devices and support. # arm/qemu/virt_machdep.c standard Modified: stable/12/sys/arm/ralink/files.ralink ============================================================================== --- stable/12/sys/arm/ralink/files.ralink Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/ralink/files.ralink Mon Aug 5 18:13:13 2019 (r350603) @@ -5,5 +5,3 @@ arm/ralink/rt1310_gpio.c optional rt1310gpio arm/ralink/rt1310_timer.c standard arm/ralink/if_fv.c optional fv -kern/kern_clocksource.c standard - Modified: stable/12/sys/arm/rockchip/files.rk30xx ============================================================================== --- stable/12/sys/arm/rockchip/files.rk30xx Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/rockchip/files.rk30xx Mon Aug 5 18:13:13 2019 (r350603) @@ -1,5 +1,4 @@ # $FreeBSD$ -kern/kern_clocksource.c standard arm/rockchip/rk30xx_machdep.c standard arm/rockchip/rk30xx_pmu.c standard Modified: stable/12/sys/arm/samsung/exynos/files.exynos5 ============================================================================== --- stable/12/sys/arm/samsung/exynos/files.exynos5 Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/samsung/exynos/files.exynos5 Mon Aug 5 18:13:13 2019 (r350603) @@ -1,7 +1,5 @@ # $FreeBSD$ -kern/kern_clocksource.c standard - arm/samsung/exynos/exynos5_mct.c standard arm/samsung/exynos/exynos5_mp.c optional smp arm/samsung/exynos/exynos5_machdep.c standard Modified: stable/12/sys/arm/ti/files.ti ============================================================================== --- stable/12/sys/arm/ti/files.ti Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/ti/files.ti Mon Aug 5 18:13:13 2019 (r350603) @@ -1,7 +1,5 @@ #$FreeBSD$ -kern/kern_clocksource.c standard - arm/ti/ti_cpuid.c standard arm/ti/ti_hwmods.c standard arm/ti/ti_machdep.c standard Modified: stable/12/sys/arm/versatile/files.versatile ============================================================================== --- stable/12/sys/arm/versatile/files.versatile Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/versatile/files.versatile Mon Aug 5 18:13:13 2019 (r350603) @@ -8,5 +8,3 @@ arm/versatile/versatile_common.c standard arm/versatile/versatile_pci.c optional pci arm/versatile/versatile_scm.c standard arm/versatile/versatile_sic.c standard - -kern/kern_clocksource.c standard Modified: stable/12/sys/arm/xilinx/files.zynq7 ============================================================================== --- stable/12/sys/arm/xilinx/files.zynq7 Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/arm/xilinx/files.zynq7 Mon Aug 5 18:13:13 2019 (r350603) @@ -3,8 +3,6 @@ # # $FreeBSD$ -kern/kern_clocksource.c standard - arm/xilinx/zy7_machdep.c standard arm/xilinx/zy7_l2cache.c standard arm/xilinx/zy7_slcr.c standard Modified: stable/12/sys/conf/files.arm ============================================================================== --- stable/12/sys/conf/files.arm Mon Aug 5 18:05:22 2019 (r350602) +++ stable/12/sys/conf/files.arm Mon Aug 5 18:13:13 2019 (r350603) @@ -1,23 +1,7 @@ # $FreeBSD$ -cloudabi32_vdso.o optional compat_cloudabi32 \ - dependency "$S/contrib/cloudabi/cloudabi_vdso_armv6.S" \ - compile-with "${CC} -x assembler-with-cpp -shared -nostdinc -nostdlib -Wl,-T$S/compat/cloudabi/cloudabi_vdso.lds $S/contrib/cloudabi/cloudabi_vdso_armv6.S -o ${.TARGET}" \ - no-obj no-implicit-rule \ - clean "cloudabi32_vdso.o" -# -cloudabi32_vdso_blob.o optional compat_cloudabi32 \ - dependency "cloudabi32_vdso.o" \ - compile-with "${OBJCOPY} --input-target binary --output-target elf32-littlearm --binary-architecture arm cloudabi32_vdso.o ${.TARGET}" \ - no-implicit-rule \ - clean "cloudabi32_vdso_blob.o" -# -arm/annapurna/alpine/alpine_ccu.c optional al_ccu fdt -arm/annapurna/alpine/alpine_nb_service.c optional al_nb_service fdt -arm/annapurna/alpine/alpine_pci.c optional al_pci fdt -arm/annapurna/alpine/alpine_pci_msix.c optional al_pci fdt -arm/annapurna/alpine/alpine_serdes.c optional al_serdes fdt \ - no-depend \ - compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${PROF} ${.IMPSRC}" + +kern/kern_clocksource.c standard + arm/arm/autoconf.c standard arm/arm/bcopy_page.S standard arm/arm/bcopyinout.S standard @@ -169,3 +153,26 @@ libkern/qdivrem.c standard libkern/ucmpdi2.c standard libkern/udivdi3.c standard libkern/umoddi3.c standard + +# CloudABI support +cloudabi32_vdso.o optional compat_cloudabi32 \ + dependency "$S/contrib/cloudabi/cloudabi_vdso_armv6.S" \ + compile-with "${CC} -x assembler-with-cpp -shared -nostdinc -nostdlib -Wl,-T$S/compat/cloudabi/cloudabi_vdso.lds $S/contrib/cloudabi/cloudabi_vdso_armv6.S -o ${.TARGET}" \ + no-obj no-implicit-rule \ + clean "cloudabi32_vdso.o" +# +cloudabi32_vdso_blob.o optional compat_cloudabi32 \ + dependency "cloudabi32_vdso.o" \ + compile-with "${OBJCOPY} --input-target binary --output-target elf32-littlearm --binary-architecture arm cloudabi32_vdso.o ${.TARGET}" \ + no-implicit-rule \ + clean "cloudabi32_vdso_blob.o" +# + +# Annapurna support +arm/annapurna/alpine/alpine_ccu.c optional al_ccu fdt +arm/annapurna/alpine/alpine_nb_service.c optional al_nb_service fdt +arm/annapurna/alpine/alpine_pci.c optional al_pci fdt +arm/annapurna/alpine/alpine_pci_msix.c optional al_pci fdt +arm/annapurna/alpine/alpine_serdes.c optional al_serdes fdt \ + no-depend \ + compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${PROF} ${.IMPSRC}" From owner-svn-src-stable@freebsd.org Mon Aug 5 18:17:04 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CB1E5A9D5F; Mon, 5 Aug 2019 18:17:04 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462Qw050zzz423p; Mon, 5 Aug 2019 18:17:04 +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 8D9221FA9E; Mon, 5 Aug 2019 18:17:04 +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 x75IH4us016273; Mon, 5 Aug 2019 18:17:04 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75IH44v016272; Mon, 5 Aug 2019 18:17:04 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051817.x75IH44v016272@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 18:17:04 +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: r350604 - stable/12/usr.sbin/config X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: stable/12/usr.sbin/config X-SVN-Commit-Revision: 350604 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 18:17:04 -0000 Author: manu Date: Mon Aug 5 18:17:03 2019 New Revision: 350604 URL: https://svnweb.freebsd.org/changeset/base/350604 Log: MFC r346298: config: Only warn if duplicate option/device comes from the same file This is useful for arm (possibly other arches too) where we want to have a GENERIC kernel that only include files for the different SoC. Since multiple SoCs/Board needs the same device we would need to do either : Include the device in a generic file Include the device in each file that really needs it Option 1 works but if someone wants to create a specific kernel config (which isn't uncommon for embedded system), he will need to add a lots of nodevice to it. Option 2 also works but produce a lots of warnings. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D19424 Modified: stable/12/usr.sbin/config/config.h stable/12/usr.sbin/config/config.y Directory Properties: stable/12/ (props changed) Modified: stable/12/usr.sbin/config/config.h ============================================================================== --- stable/12/usr.sbin/config/config.h Mon Aug 5 18:13:13 2019 (r350603) +++ stable/12/usr.sbin/config/config.h Mon Aug 5 18:17:03 2019 (r350604) @@ -86,6 +86,7 @@ struct files_name { struct device { int d_done; /* processed */ char *d_name; /* name of device (e.g. rk11) */ + char *yyfile; /* name of the file that first include the device */ #define UNKNOWN -2 /* -2 means not set yet */ STAILQ_ENTRY(device) d_next; /* Next one in list */ }; @@ -125,6 +126,7 @@ struct opt { char *op_name; char *op_value; int op_ownfile; /* true = own file, false = makefile */ + char *yyfile; /* name of the file that first include the option */ SLIST_ENTRY(opt) op_next; SLIST_ENTRY(opt) op_append; }; Modified: stable/12/usr.sbin/config/config.y ============================================================================== --- stable/12/usr.sbin/config/config.y Mon Aug 5 18:13:13 2019 (r350603) +++ stable/12/usr.sbin/config/config.y Mon Aug 5 18:17:03 2019 (r350604) @@ -382,11 +382,13 @@ finddev(struct device_head *dlist, char *name) static void newdev(char *name) { - struct device *np; + struct device *np, *dp; - if (finddev(&dtab, name)) { - fprintf(stderr, - "WARNING: duplicate device `%s' encountered.\n", name); + if ((dp = finddev(&dtab, name)) != NULL) { + if (strcmp(dp->yyfile, yyfile) == 0) + fprintf(stderr, + "WARNING: duplicate device `%s' encountered in %s\n", + name, yyfile); return; } @@ -394,6 +396,7 @@ newdev(char *name) if (np == NULL) err(EXIT_FAILURE, "calloc"); np->d_name = name; + np->yyfile = strdup(yyfile); STAILQ_INSERT_TAIL(&dtab, np, d_next); } @@ -408,6 +411,7 @@ rmdev_schedule(struct device_head *dh, char *name) dp = finddev(dh, name); if (dp != NULL) { STAILQ_REMOVE(dh, dp, device, d_next); + free(dp->yyfile); free(dp->d_name); free(dp); } @@ -446,8 +450,9 @@ newopt(struct opt_head *list, char *name, char *value, op2 = findopt(list, name); if (op2 != NULL && !append && !dupe) { - fprintf(stderr, - "WARNING: duplicate option `%s' encountered.\n", name); + if (strcmp(op2->yyfile, yyfile) == 0) + fprintf(stderr, + "WARNING: duplicate option `%s' encountered.\n", name); return; } @@ -457,6 +462,7 @@ newopt(struct opt_head *list, char *name, char *value, op->op_name = name; op->op_ownfile = 0; op->op_value = value; + op->yyfile = strdup(yyfile); if (op2 != NULL) { if (append) { while (SLIST_NEXT(op2, op_append) != NULL) @@ -481,6 +487,7 @@ rmopt_schedule(struct opt_head *list, char *name) while ((op = findopt(list, name)) != NULL) { SLIST_REMOVE(list, op, opt, op_next); + free(op->yyfile); free(op->op_name); free(op); } From owner-svn-src-stable@freebsd.org Mon Aug 5 18:27:28 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 84CB9AA065; Mon, 5 Aug 2019 18:27:28 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462R803ltzz42XV; Mon, 5 Aug 2019 18:27:28 +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 44E601FC69; Mon, 5 Aug 2019 18:27:28 +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 x75IRSj5022401; Mon, 5 Aug 2019 18:27:28 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75IRPZO022389; Mon, 5 Aug 2019 18:27:25 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051827.x75IRPZO022389@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 18:27:25 +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: r350605 - in stable/12/sys: arm/allwinner arm/allwinner/a10 arm/allwinner/clkng arm64/conf conf dts/arm64/overlays modules/dtb/allwinner X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/allwinner arm/allwinner/a10 arm/allwinner/clkng arm64/conf conf dts/arm64/overlays modules/dtb/allwinner X-SVN-Commit-Revision: 350605 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 18:27:28 -0000 Author: manu Date: Mon Aug 5 18:27:25 2019 New Revision: 350605 URL: https://svnweb.freebsd.org/changeset/base/350605 Log: MFC r346334, r346787-r346789, r347017 r346334: arm: allwinner: Fix audio for Allwinner H3/H5 Due to three conditions the codec driver for Allwinner A10/A20 and H3/H5 did not work properly here: Wrong bit position for the analog audio reset Hardware Reset of codec was not de-asserted correctly Linux DTS file did not contain the address of the analog register the way as the driver was expecting it. This patch proposes fixes for those three parts. Submitted by: freebsdnewbie@freenet.de (Manuel Stühn) Differential Revision: https://reviews.freebsd.org/D19910 r346787: arm64: allwinner: Add compatible strings for clock devices used on both Allwinner H3 and H5 Allwinner H3 and H5 share many internal components, that's why they can use the same drivers. This patch adds the compatible strings to enable clock drivers probing on Allwinner NanoPI NEO2 device. Tested on: NanoPi NEO2 (by submitter), OrangePi PC2 (by manu) Submitted by: Manuel Stühn (freebsdnewbie@freenet.de) Differential Revision: https://reviews.freebsd.org/D20069 r346788: arm64: allwinner: ccu_de2: Remove H5 compatible We don't have the display engine driver commited in FreeBSD yet so it is useless to expose the clocks yet (and also it have not been tested on H5). Reported by: Manuel Stühn (freebsdnewbie@freenet.de) PR: 237571 r346789: arm: allwinner: a10: Correct pin functions PB20 and PB21 alternate function 1 is i2c2 not i2c1 Reported by: Horiki Mori (yamori813@yahoo.co.jp) PR: 237401 r347017: arm64: Add support for NanoPI NEO2 Add overlay files and activate devicetree file for NanoPi NEO2 featuring Allwinner H5 ARM64 core. To enable sound, dma and codec drivers are enabled for build. Submitted by: Manuel Stühn (freebsdnewbie@freenet.de) Differential Revision: https://reviews.freebsd.org/D20129 Added: stable/12/sys/dts/arm64/overlays/sun50i-h5-nanopi-neo2-opp.dtso - copied unchanged from r347017, head/sys/dts/arm64/overlays/sun50i-h5-nanopi-neo2-opp.dtso stable/12/sys/dts/arm64/overlays/sun50i-h5-opp.dtso - copied unchanged from r347017, head/sys/dts/arm64/overlays/sun50i-h5-opp.dtso stable/12/sys/dts/arm64/overlays/sun50i-h5-sid.dtso - copied unchanged from r347017, head/sys/dts/arm64/overlays/sun50i-h5-sid.dtso stable/12/sys/dts/arm64/overlays/sun50i-h5-ths.dtso - copied unchanged from r347017, head/sys/dts/arm64/overlays/sun50i-h5-ths.dtso Modified: stable/12/sys/arm/allwinner/a10/a10_padconf.c stable/12/sys/arm/allwinner/a10_codec.c stable/12/sys/arm/allwinner/aw_rtc.c stable/12/sys/arm/allwinner/aw_syscon.c stable/12/sys/arm/allwinner/clkng/ccu_de2.c stable/12/sys/arm64/conf/GENERIC stable/12/sys/conf/files.arm64 stable/12/sys/modules/dtb/allwinner/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/allwinner/a10/a10_padconf.c ============================================================================== --- stable/12/sys/arm/allwinner/a10/a10_padconf.c Mon Aug 5 18:17:03 2019 (r350604) +++ stable/12/sys/arm/allwinner/a10/a10_padconf.c Mon Aug 5 18:27:25 2019 (r350605) @@ -77,8 +77,8 @@ const static struct allwinner_pins a10_pins[] = { {"PB17", 1, 17, {"gpio_in", "gpio_out", "spi2", "jtag", NULL, NULL, NULL, NULL}}, {"PB18", 1, 18, {"gpio_in", "gpio_out", "i2c1", NULL, NULL, NULL, NULL, NULL}}, {"PB19", 1, 19, {"gpio_in", "gpio_out", "i2c1", NULL, NULL, NULL, NULL, NULL}}, - {"PB20", 1, 20, {"gpio_in", "gpio_out", "i2c1", NULL, NULL, NULL, NULL, NULL}}, - {"PB21", 1, 21, {"gpio_in", "gpio_out", "i2c1", NULL, NULL, NULL, NULL, NULL}}, + {"PB20", 1, 20, {"gpio_in", "gpio_out", "i2c2", NULL, NULL, NULL, NULL, NULL}}, + {"PB21", 1, 21, {"gpio_in", "gpio_out", "i2c2", NULL, NULL, NULL, NULL, NULL}}, {"PB22", 1, 22, {"gpio_in", "gpio_out", "uart0", "ir1", NULL, NULL, NULL, NULL}}, {"PB23", 1, 23, {"gpio_in", "gpio_out", "uart0", "ir1", NULL, NULL, NULL, NULL}}, Modified: stable/12/sys/arm/allwinner/a10_codec.c ============================================================================== --- stable/12/sys/arm/allwinner/a10_codec.c Mon Aug 5 18:17:03 2019 (r350604) +++ stable/12/sys/arm/allwinner/a10_codec.c Mon Aug 5 18:27:25 2019 (r350605) @@ -164,7 +164,7 @@ struct a10codec_chinfo { struct a10codec_info { device_t dev; - struct resource *res[3]; + struct resource *res[2]; struct mtx *lock; bus_dma_tag_t dmat; unsigned dmasize; @@ -178,11 +178,12 @@ struct a10codec_info { static struct resource_spec a10codec_spec[] = { { SYS_RES_MEMORY, 0, RF_ACTIVE }, - { SYS_RES_MEMORY, 1, RF_ACTIVE | RF_OPTIONAL }, - { SYS_RES_IRQ, 0, RF_ACTIVE }, { -1, 0 } }; +#define CODEC_ANALOG_READ(sc, reg) bus_read_4((sc)->res[1], (reg)) +#define CODEC_ANALOG_WRITE(sc, reg, val) bus_write_4((sc)->res[1], (reg), (val)) + #define CODEC_READ(sc, reg) bus_read_4((sc)->res[0], (reg)) #define CODEC_WRITE(sc, reg, val) bus_write_4((sc)->res[0], (reg), (val)) @@ -372,7 +373,7 @@ MIXER_DECLARE(a10_mixer); */ #define H3_PR_CFG 0x00 -#define H3_AC_PR_RST (1 << 18) +#define H3_AC_PR_RST (1 << 28) #define H3_AC_PR_RW (1 << 24) #define H3_AC_PR_ADDR_SHIFT 16 #define H3_AC_PR_ADDR_MASK (0x1f << H3_AC_PR_ADDR_SHIFT) @@ -424,23 +425,23 @@ h3_pr_read(struct a10codec_info *sc, u_int addr) uint32_t val; /* Read current value */ - val = bus_read_4(sc->res[1], H3_PR_CFG); + val = CODEC_ANALOG_READ(sc, H3_PR_CFG); /* De-assert reset */ val |= H3_AC_PR_RST; - bus_write_4(sc->res[1], H3_PR_CFG, val); + CODEC_ANALOG_WRITE(sc, H3_PR_CFG, val); /* Read mode */ val &= ~H3_AC_PR_RW; - bus_write_4(sc->res[1], H3_PR_CFG, val); + CODEC_ANALOG_WRITE(sc, H3_PR_CFG, val); /* Set address */ val &= ~H3_AC_PR_ADDR_MASK; val |= (addr << H3_AC_PR_ADDR_SHIFT); - bus_write_4(sc->res[1], H3_PR_CFG, val); + CODEC_ANALOG_WRITE(sc, H3_PR_CFG, val); /* Read data */ - return (bus_read_4(sc->res[1], H3_PR_CFG) & H3_ACDA_PR_RDAT_MASK); + return (CODEC_ANALOG_READ(sc , H3_PR_CFG) & H3_ACDA_PR_RDAT_MASK); } static void @@ -449,25 +450,25 @@ h3_pr_write(struct a10codec_info *sc, u_int addr, u_in uint32_t val; /* Read current value */ - val = bus_read_4(sc->res[1], H3_PR_CFG); + val = CODEC_ANALOG_READ(sc, H3_PR_CFG); /* De-assert reset */ val |= H3_AC_PR_RST; - bus_write_4(sc->res[1], H3_PR_CFG, val); + CODEC_ANALOG_WRITE(sc, H3_PR_CFG, val); /* Set address */ val &= ~H3_AC_PR_ADDR_MASK; val |= (addr << H3_AC_PR_ADDR_SHIFT); - bus_write_4(sc->res[1], H3_PR_CFG, val); + CODEC_ANALOG_WRITE(sc, H3_PR_CFG, val); /* Write data */ val &= ~H3_ACDA_PR_WDAT_MASK; val |= (data << H3_ACDA_PR_WDAT_SHIFT); - bus_write_4(sc->res[1], H3_PR_CFG, val); + CODEC_ANALOG_WRITE(sc, H3_PR_CFG, val); /* Write mode */ val |= H3_AC_PR_RW; - bus_write_4(sc->res[1], H3_PR_CFG, val); + CODEC_ANALOG_WRITE(sc, H3_PR_CFG, val); } static void @@ -483,8 +484,28 @@ h3_pr_set_clear(struct a10codec_info *sc, u_int addr, static int h3_mixer_init(struct snd_mixer *m) { + int rid=1; + pcell_t reg[2]; + phandle_t analogref; struct a10codec_info *sc = mix_getdevinfo(m); + if (OF_getencprop(ofw_bus_get_node(sc->dev), "allwinner,codec-analog-controls", + &analogref, sizeof(analogref)) <= 0) { + return (ENXIO); + } + + if (OF_getencprop(OF_node_from_xref(analogref), "reg", + reg, sizeof(reg)) <= 0) { + return (ENXIO); + } + + sc->res[1] = bus_alloc_resource(sc->dev, SYS_RES_MEMORY, &rid, reg[0], + reg[0]+reg[1], reg[1], RF_ACTIVE ); + + if (sc->res[1] == NULL) { + return (ENXIO); + } + mix_setdevs(m, SOUND_MASK_PCM | SOUND_MASK_VOLUME | SOUND_MASK_RECLEV | SOUND_MASK_MIC | SOUND_MASK_LINE | SOUND_MASK_LINE1); mix_setrecdevs(m, SOUND_MASK_MIC | SOUND_MASK_LINE | SOUND_MASK_LINE1 | @@ -940,6 +961,7 @@ a10codec_chan_trigger(kobj_t obj, void *data, int go) switch (go) { case PCMTRIG_START: ch->run = 1; + a10codec_stop(ch); a10codec_start(ch); break; case PCMTRIG_STOP: @@ -1124,8 +1146,7 @@ a10codec_attach(device_t dev) } /* De-assert hwreset */ - if (hwreset_get_by_ofw_name(dev, 0, "apb", &rst) == 0 || - hwreset_get_by_ofw_name(dev, 0, "ahb", &rst) == 0) { + if (hwreset_get_by_ofw_idx(dev, 0, 0, &rst) == 0) { error = hwreset_deassert(rst); if (error != 0) { device_printf(dev, "cannot de-assert reset\n"); @@ -1137,15 +1158,6 @@ a10codec_attach(device_t dev) val = CODEC_READ(sc, AC_DAC_DPC(sc)); val |= DAC_DPC_EN_DA; CODEC_WRITE(sc, AC_DAC_DPC(sc), val); - -#ifdef notdef - error = snd_setup_intr(dev, sc->irq, INTR_MPSAFE, a10codec_intr, sc, - &sc->ih); - if (error != 0) { - device_printf(dev, "could not setup interrupt handler\n"); - goto fail; - } -#endif if (mixer_init(dev, sc->cfg->mixer_class, sc)) { device_printf(dev, "mixer_init failed\n"); Modified: stable/12/sys/arm/allwinner/aw_rtc.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_rtc.c Mon Aug 5 18:17:03 2019 (r350604) +++ stable/12/sys/arm/allwinner/aw_rtc.c Mon Aug 5 18:27:25 2019 (r350605) @@ -137,6 +137,7 @@ static struct ofw_compat_data compat_data[] = { { "allwinner,sun7i-a20-rtc", (uintptr_t) &a20_conf }, { "allwinner,sun6i-a31-rtc", (uintptr_t) &a31_conf }, { "allwinner,sun8i-h3-rtc", (uintptr_t) &h3_conf }, + { "allwinner,sun50i-h5-rtc", (uintptr_t) &h3_conf }, { NULL, 0 } }; Modified: stable/12/sys/arm/allwinner/aw_syscon.c ============================================================================== --- stable/12/sys/arm/allwinner/aw_syscon.c Mon Aug 5 18:17:03 2019 (r350604) +++ stable/12/sys/arm/allwinner/aw_syscon.c Mon Aug 5 18:27:25 2019 (r350605) @@ -53,6 +53,7 @@ static struct ofw_compat_data compat_data[] = { {"allwinner,sun8i-a83t-system-controller", 1}, {"allwinner,sun8i-h3-system-controller", 1}, {"allwinner,sun8i-h3-system-control", 1}, + {"allwinner,sun50i-h5-system-control", 1}, {NULL, 0} }; Modified: stable/12/sys/arm/allwinner/clkng/ccu_de2.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_de2.c Mon Aug 5 18:17:03 2019 (r350604) +++ stable/12/sys/arm/allwinner/clkng/ccu_de2.c Mon Aug 5 18:27:25 2019 (r350605) @@ -115,7 +115,6 @@ static struct aw_ccung_clk de2_ccu_clks[] = { static struct ofw_compat_data compat_data[] = { {"allwinner,sun50i-a64-de2-clk", 1}, - {"allwinner,sun50i-h5-de2-clk", 1}, {NULL, 0} }; Modified: stable/12/sys/arm64/conf/GENERIC ============================================================================== --- stable/12/sys/arm64/conf/GENERIC Mon Aug 5 18:17:03 2019 (r350604) +++ stable/12/sys/arm64/conf/GENERIC Mon Aug 5 18:27:25 2019 (r350605) @@ -191,11 +191,19 @@ device muge device smcphy device smsc +# Sound support +device sound +device a10_codec + +# DMA controller +device a31_dmac + # GPIO / PINCTRL device aw_gpio # Allwinner GPIO controller device gpio device gpioled device fdt_pinctrl +device gpioregulator device mv_gpio # Marvell GPIO controller device mvebu_pinctrl # Marvell Pinmux Controller Modified: stable/12/sys/conf/files.arm64 ============================================================================== --- stable/12/sys/conf/files.arm64 Mon Aug 5 18:17:03 2019 (r350604) +++ stable/12/sys/conf/files.arm64 Mon Aug 5 18:27:25 2019 (r350605) @@ -27,6 +27,10 @@ cloudabi64_vdso_blob.o optional compat_cloudabi64 \ # Allwinner common files arm/allwinner/a10_ehci.c optional ehci aw_ehci fdt arm/allwinner/a10_timer.c optional a10_timer fdt +arm/allwinner/a10_codec.c optional sound a10_codec +arm/allwinner/a31_dmac.c optional a31_dmac +arm/allwinner/sunxi_dma_if.m optional a31_dmac +arm/allwinner/aw_cir.c optional evdev aw_cir fdt arm/allwinner/aw_gpio.c optional gpio aw_gpio fdt arm/allwinner/aw_mmc.c optional mmc aw_mmc fdt | mmccam aw_mmc fdt arm/allwinner/aw_nmi.c optional aw_nmi fdt \ Copied: stable/12/sys/dts/arm64/overlays/sun50i-h5-nanopi-neo2-opp.dtso (from r347017, head/sys/dts/arm64/overlays/sun50i-h5-nanopi-neo2-opp.dtso) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dts/arm64/overlays/sun50i-h5-nanopi-neo2-opp.dtso Mon Aug 5 18:27:25 2019 (r350605, copy of r347017, head/sys/dts/arm64/overlays/sun50i-h5-nanopi-neo2-opp.dtso) @@ -0,0 +1,32 @@ +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "allwinner,sun50i-h5"; +}; + +&{/} { + vdd_cpux: gpio-regulator { + compatible = "regulator-gpio"; + pinctrl-names = "default"; + regulator-name = "vdd-cpux"; + regulator-type = "voltage"; + regulator-boot-on; + regulator-always-on; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1300000>; + regulator-ramp-delay = <50>; /* 4ms */ + gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ + gpios-states = <0x1>; + states = <1100000 0x0 + 1300000 0x1>; + }; + +}; + +&{/cpus/cpu@0} { + cpu-supply = <&vdd_cpux>; +}; + Copied: stable/12/sys/dts/arm64/overlays/sun50i-h5-opp.dtso (from r347017, head/sys/dts/arm64/overlays/sun50i-h5-opp.dtso) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dts/arm64/overlays/sun50i-h5-opp.dtso Mon Aug 5 18:27:25 2019 (r350605, copy of r347017, head/sys/dts/arm64/overlays/sun50i-h5-opp.dtso) @@ -0,0 +1,99 @@ +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "allwinner,sun50i-h5"; +}; + +&{/} { + cpu_opp_table: opp_table { + compatible = "operating-points-v2"; + opp-shared; + + opp@408000000 { + opp-hz = /bits/ 64 <408000000>; + opp-microvolt = <1000000 1000000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + + opp@648000000 { + opp-hz = /bits/ 64 <648000000>; + opp-microvolt = <1040000 1040000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + + opp@816000000 { + opp-hz = /bits/ 64 <816000000>; + opp-microvolt = <1080000 1080000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + + opp@912000000 { + opp-hz = /bits/ 64 <912000000>; + opp-microvolt = <1120000 1120000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + + opp@960000000 { + opp-hz = /bits/ 64 <960000000>; + opp-microvolt = <1160000 1160000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + + opp@1008000000 { + opp-hz = /bits/ 64 <1008000000>; + opp-microvolt = <1200000 1200000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + + opp@1056000000 { + opp-hz = /bits/ 64 <1056000000>; + opp-microvolt = <1240000 1240000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + + opp@1104000000 { + opp-hz = /bits/ 64 <1104000000>; + opp-microvolt = <1260000 1260000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + + opp@1152000000 { + opp-hz = /bits/ 64 <1152000000>; + opp-microvolt = <1300000 1300000 1300000>; + clock-latency-ns = <244144>; /* 8 32k periods */ + }; + }; + + reg_cpu_fallback: reg_cpu_fallback { + compatible = "regulator-fixed"; + regulator-name = "vdd-cpux-dummy"; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1100000>; + }; + +}; + +&{/cpus/cpu@0} { + clocks = <&ccu CLK_CPUX>; + clock-names = "cpu"; + clock-latency = <244144>; /* 8 32k periods */ + operating-points-v2 = <&cpu_opp_table>; + cpu-supply = <®_cpu_fallback>; + #cooling-cells = <2>; +}; + +&{/cpus/cpu@1} { + operating-points-v2 = <&cpu_opp_table>; +}; + +&{/cpus/cpu@2} { + operating-points-v2 = <&cpu_opp_table>; +}; + +&{/cpus/cpu@3} { + operating-points-v2 = <&cpu_opp_table>; +}; + Copied: stable/12/sys/dts/arm64/overlays/sun50i-h5-sid.dtso (from r347017, head/sys/dts/arm64/overlays/sun50i-h5-sid.dtso) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dts/arm64/overlays/sun50i-h5-sid.dtso Mon Aug 5 18:27:25 2019 (r350605, copy of r347017, head/sys/dts/arm64/overlays/sun50i-h5-sid.dtso) @@ -0,0 +1,17 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "allwinner,sun50i-h5"; +}; + +&{/soc} { + sid: eeprom@1c14000 { + compatible = "allwinner,sun50i-h5-sid"; + reg = <0x1c14000 0x400>; + + ths_calib: calib@234 { + reg = <0x234 0x4>; + }; + }; +}; Copied: stable/12/sys/dts/arm64/overlays/sun50i-h5-ths.dtso (from r347017, head/sys/dts/arm64/overlays/sun50i-h5-ths.dtso) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/dts/arm64/overlays/sun50i-h5-ths.dtso Mon Aug 5 18:27:25 2019 (r350605, copy of r347017, head/sys/dts/arm64/overlays/sun50i-h5-ths.dtso) @@ -0,0 +1,26 @@ +/dts-v1/; +/plugin/; + +#include +#include +#include + +/ { + compatible = "allwinner,sun50i-h5"; +}; + +&{/soc} { + ths: thermal_sensor@1c25000 { + compatible = "allwinner,sun50i-h5-ths"; + reg = <0x01c25000 0x100>; + interrupts = ; + clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>; + clock-names = "apb", "ths"; + resets = <&ccu RST_BUS_THS>; + reset-names = "apb"; + #thermal-sensor-cells = <1>; + + nvmem-cells = <&ths_calib>; + nvmem-cell-names = "ths-calib"; + }; +}; Modified: stable/12/sys/modules/dtb/allwinner/Makefile ============================================================================== --- stable/12/sys/modules/dtb/allwinner/Makefile Mon Aug 5 18:17:03 2019 (r350604) +++ stable/12/sys/modules/dtb/allwinner/Makefile Mon Aug 5 18:27:25 2019 (r350605) @@ -44,14 +44,19 @@ DTS= \ allwinner/sun50i-a64-pine64-plus.dts \ allwinner/sun50i-a64-pine64.dts \ allwinner/sun50i-a64-sopine-baseboard.dts \ - allwinner/sun50i-h5-orangepi-pc2.dts + allwinner/sun50i-h5-orangepi-pc2.dts \ + allwinner/sun50i-h5-nanopi-neo2.dts DTSO= sun50i-a64-opp.dtso \ sun50i-a64-pwm.dtso \ sun50i-a64-rpwm.dtso \ sun50i-a64-sid.dtso \ sun50i-a64-ths.dtso \ - sun50i-a64-timer.dtso + sun50i-a64-timer.dtso \ + sun50i-h5-opp.dtso \ + sun50i-h5-sid.dtso \ + sun50i-h5-ths.dtso \ + sun50i-h5-nanopi-neo2-opp.dtso .endif From owner-svn-src-stable@freebsd.org Mon Aug 5 18:59:53 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BE504AA8DE; Mon, 5 Aug 2019 18:59:53 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462RsP4YJ9z444y; Mon, 5 Aug 2019 18:59:53 +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 7DD74201E3; Mon, 5 Aug 2019 18:59:53 +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 x75Ixrob040070; Mon, 5 Aug 2019 18:59:53 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75Ixrbh040069; Mon, 5 Aug 2019 18:59:53 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908051859.x75Ixrbh040069@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 5 Aug 2019 18:59: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: r350606 - stable/12/sys/modules/dtb/allwinner X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: stable/12/sys/modules/dtb/allwinner X-SVN-Commit-Revision: 350606 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 18:59:53 -0000 Author: manu Date: Mon Aug 5 18:59:53 2019 New Revision: 350606 URL: https://svnweb.freebsd.org/changeset/base/350606 Log: MFC r347362: dtb: allwinner: Add the pinebook dtb to the build Modified: stable/12/sys/modules/dtb/allwinner/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/modules/dtb/allwinner/Makefile ============================================================================== --- stable/12/sys/modules/dtb/allwinner/Makefile Mon Aug 5 18:27:25 2019 (r350605) +++ stable/12/sys/modules/dtb/allwinner/Makefile Mon Aug 5 18:59:53 2019 (r350606) @@ -43,6 +43,7 @@ DTS= \ allwinner/sun50i-a64-pine64-lts.dts \ allwinner/sun50i-a64-pine64-plus.dts \ allwinner/sun50i-a64-pine64.dts \ + allwinner/sun50i-a64-pinebook.dts \ allwinner/sun50i-a64-sopine-baseboard.dts \ allwinner/sun50i-h5-orangepi-pc2.dts \ allwinner/sun50i-h5-nanopi-neo2.dts From owner-svn-src-stable@freebsd.org Mon Aug 5 20:19:38 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C07ADAC4A2; Mon, 5 Aug 2019 20:19:38 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462TdQ4k1Lz49V9; Mon, 5 Aug 2019 20:19:38 +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 83B4121039; Mon, 5 Aug 2019 20:19:38 +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 x75KJc0G088903; Mon, 5 Aug 2019 20:19:38 GMT (envelope-from jilles@FreeBSD.org) Received: (from jilles@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75KJcUQ088902; Mon, 5 Aug 2019 20:19:38 GMT (envelope-from jilles@FreeBSD.org) Message-Id: <201908052019.x75KJcUQ088902@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jilles set sender to jilles@FreeBSD.org using -f From: Jilles Tjoelker Date: Mon, 5 Aug 2019 20:19: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: r350613 - stable/12/usr.bin/printf X-SVN-Group: stable-12 X-SVN-Commit-Author: jilles X-SVN-Commit-Paths: stable/12/usr.bin/printf X-SVN-Commit-Revision: 350613 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 20:19:38 -0000 Author: jilles Date: Mon Aug 5 20:19:38 2019 New Revision: 350613 URL: https://svnweb.freebsd.org/changeset/base/350613 Log: MFC r350425: printf(1): Note that \c only works in %b strings PR: 238313 Modified: stable/12/usr.bin/printf/printf.1 Directory Properties: stable/12/ (props changed) Modified: stable/12/usr.bin/printf/printf.1 ============================================================================== --- stable/12/usr.bin/printf/printf.1 Mon Aug 5 20:15:46 2019 (r350612) +++ stable/12/usr.bin/printf/printf.1 Mon Aug 5 20:19:38 2019 (r350613) @@ -31,7 +31,7 @@ .\" @(#)printf.1 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd April 21, 2014 +.Dd July 29, 2019 .Dt PRINTF 1 .Os .Sh NAME @@ -87,8 +87,6 @@ are as follows: Write a character. .It Cm \eb Write a character. -.It Cm \ec -Ignore remaining characters in this string. .It Cm \ef Write a character. .It Cm \en @@ -289,7 +287,12 @@ The permitted escape sequences are slightly different octal escapes are .Cm \e0 Ns Ar num instead of -.Cm \e Ns Ar num . +.Cm \e Ns Ar num +and that an additional escape sequence +.Cm \ec +stops further output from this +.Nm +invocation. .It Cm n$ Allows reordering of the output according to .Ar argument . From owner-svn-src-stable@freebsd.org Mon Aug 5 20:21:36 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 30249AC534; Mon, 5 Aug 2019 20:21:36 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462Tgh05P3z49pf; Mon, 5 Aug 2019 20:21:36 +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 D8CA92109F; Mon, 5 Aug 2019 20:21:35 +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 x75KLZpT089163; Mon, 5 Aug 2019 20:21:35 GMT (envelope-from jilles@FreeBSD.org) Received: (from jilles@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75KLZdD089162; Mon, 5 Aug 2019 20:21:35 GMT (envelope-from jilles@FreeBSD.org) Message-Id: <201908052021.x75KLZdD089162@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jilles set sender to jilles@FreeBSD.org using -f From: Jilles Tjoelker Date: Mon, 5 Aug 2019 20:21: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: r350615 - stable/11/usr.bin/printf X-SVN-Group: stable-11 X-SVN-Commit-Author: jilles X-SVN-Commit-Paths: stable/11/usr.bin/printf X-SVN-Commit-Revision: 350615 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 20:21:36 -0000 Author: jilles Date: Mon Aug 5 20:21:35 2019 New Revision: 350615 URL: https://svnweb.freebsd.org/changeset/base/350615 Log: MFC r350425: printf(1): Note that \c only works in %b strings PR: 238313 Modified: stable/11/usr.bin/printf/printf.1 Directory Properties: stable/11/ (props changed) Modified: stable/11/usr.bin/printf/printf.1 ============================================================================== --- stable/11/usr.bin/printf/printf.1 Mon Aug 5 20:20:14 2019 (r350614) +++ stable/11/usr.bin/printf/printf.1 Mon Aug 5 20:21:35 2019 (r350615) @@ -31,7 +31,7 @@ .\" @(#)printf.1 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd April 21, 2014 +.Dd July 29, 2019 .Dt PRINTF 1 .Os .Sh NAME @@ -87,8 +87,6 @@ are as follows: Write a character. .It Cm \eb Write a character. -.It Cm \ec -Ignore remaining characters in this string. .It Cm \ef Write a character. .It Cm \en @@ -289,7 +287,12 @@ The permitted escape sequences are slightly different octal escapes are .Cm \e0 Ns Ar num instead of -.Cm \e Ns Ar num . +.Cm \e Ns Ar num +and that an additional escape sequence +.Cm \ec +stops further output from this +.Nm +invocation. .It Cm n$ Allows reordering of the output according to .Ar argument . From owner-svn-src-stable@freebsd.org Mon Aug 5 22:04:16 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E68D4AEEB3; Mon, 5 Aug 2019 22:04:16 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462Wy85qdrz4J4k; Mon, 5 Aug 2019 22:04:16 +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 A9E5922405; Mon, 5 Aug 2019 22:04:16 +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 x75M4Gig054891; Mon, 5 Aug 2019 22:04:16 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75M4GP7054890; Mon, 5 Aug 2019 22:04:16 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201908052204.x75M4GP7054890@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 5 Aug 2019 22:04:16 +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: r350619 - in stable: 11/usr.sbin/bhyve 12/usr.sbin/bhyve X-SVN-Group: stable-12 X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in stable: 11/usr.sbin/bhyve 12/usr.sbin/bhyve X-SVN-Commit-Revision: 350619 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 22:04:17 -0000 Author: jhb Date: Mon Aug 5 22:04:16 2019 New Revision: 350619 URL: https://svnweb.freebsd.org/changeset/base/350619 Log: MFC 350618: Validate guest-supplied length of headers for TSO transmit requests. When transmitting a large TCP packet, the final transmit descriptor includes the length of the protocol headers to be duplicated on each segment. The device model was trusting the guest-supplied value without validating it. A value of zero would result in the guest being able to indirect a garbage pointer on the stack to overwrite arbitrary memory in the bhyve process. A value that was non-zero but too small for the requested parameters resulted in the device model reading and writing values beyond the end of the on-stack buffer used to hold the template header. To fix, validate the supplied length and drop requests to transmit packets that would overflow the header buffer. While here, initialize the header pointer to NULL as a preventive measure so that any access to an unallocated template header crashes they hypervisor deterministically. While here, only read the TCP sequence number if the packet being split is a TCP packet. The e1000 logic supports a segmentation of UDP frames, and while UDP segmentation requires this part of the header to be valid (so there is no buffer overflow), only reading the field when needed is cleaner. admbugs: 918 Reported by: Reno Robert Approved by: so Security: CVE-2019-5609 Modified: stable/12/usr.sbin/bhyve/pci_e82545.c Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/usr.sbin/bhyve/pci_e82545.c Directory Properties: stable/11/ (props changed) Modified: stable/12/usr.sbin/bhyve/pci_e82545.c ============================================================================== --- stable/12/usr.sbin/bhyve/pci_e82545.c Mon Aug 5 21:39:55 2019 (r350618) +++ stable/12/usr.sbin/bhyve/pci_e82545.c Mon Aug 5 22:04:16 2019 (r350619) @@ -1080,8 +1080,9 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head struct ck_info ckinfo[2]; struct iovec *iov; union e1000_tx_udesc *dsc; - int desc, dtype, len, ntype, iovcnt, tlen, hdrlen, vlen, tcp, tso; + int desc, dtype, len, ntype, iovcnt, tlen, tcp, tso; int mss, paylen, seg, tiovcnt, left, now, nleft, nnow, pv, pvoff; + unsigned hdrlen, vlen; uint32_t tcpsum, tcpseq; uint16_t ipcs, tcpcs, ipid, ohead; @@ -1225,6 +1226,68 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head } else { /* In case of TSO header length provided by software. */ hdrlen = sc->esc_txctx.tcp_seg_setup.fields.hdr_len; + + /* + * Cap the header length at 240 based on 7.2.4.5 of + * the Intel 82576EB (Rev 2.63) datasheet. + */ + if (hdrlen > 240) { + WPRINTF("TSO hdrlen too large: %d\r\n", hdrlen); + goto done; + } + + /* + * If VLAN insertion is requested, ensure the header + * at least holds the amount of data copied during + * VLAN insertion below. + * + * XXX: Realistic packets will include a full Ethernet + * header before the IP header at ckinfo[0].ck_start, + * but this check is sufficient to prevent + * out-of-bounds access below. + */ + if (vlen != 0 && hdrlen < ETHER_ADDR_LEN*2) { + WPRINTF("TSO hdrlen too small for vlan insertion " + "(%d vs %d) -- dropped\r\n", hdrlen, + ETHER_ADDR_LEN*2); + goto done; + } + + /* + * Ensure that the header length covers the used fields + * in the IP and TCP headers as well as the IP and TCP + * checksums. The following fields are accessed below: + * + * Header | Field | Offset | Length + * -------+-------+--------+------- + * IPv4 | len | 2 | 2 + * IPv4 | ID | 4 | 2 + * IPv6 | len | 4 | 2 + * TCP | seq # | 4 | 4 + * TCP | flags | 13 | 1 + * UDP | len | 4 | 4 + */ + if (hdrlen < ckinfo[0].ck_start + 6 || + hdrlen < ckinfo[0].ck_off + 2) { + WPRINTF("TSO hdrlen too small for IP fields (%d) " + "-- dropped\r\n", hdrlen); + goto done; + } + if (sc->esc_txctx.cmd_and_length & E1000_TXD_CMD_TCP) { + if (hdrlen < ckinfo[1].ck_start + 14 || + (ckinfo[1].ck_valid && + hdrlen < ckinfo[1].ck_off + 2)) { + WPRINTF("TSO hdrlen too small for TCP fields " + "(%d) -- dropped\r\n", hdrlen); + goto done; + } + } else { + if (hdrlen < ckinfo[1].ck_start + 8) { + WPRINTF("TSO hdrlen too small for UDP fields " + "(%d) -- dropped\r\n", hdrlen); + goto done; + } + } } /* Allocate, fill and prepend writable header vector. */ @@ -1246,7 +1309,8 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head iovcnt++; iov->iov_base = hdr; iov->iov_len = hdrlen; - } + } else + hdr = NULL; /* Insert VLAN tag. */ if (vlen != 0) { @@ -1288,7 +1352,9 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head DPRINTF("tx %s segmentation offload %d+%d/%d bytes %d iovs\r\n", tcp ? "TCP" : "UDP", hdrlen, paylen, mss, iovcnt); ipid = ntohs(*(uint16_t *)&hdr[ckinfo[0].ck_start + 4]); - tcpseq = ntohl(*(uint32_t *)&hdr[ckinfo[1].ck_start + 4]); + tcpseq = 0; + if (tcp) + tcpseq = ntohl(*(uint32_t *)&hdr[ckinfo[1].ck_start + 4]); ipcs = *(uint16_t *)&hdr[ckinfo[0].ck_off]; tcpcs = 0; if (ckinfo[1].ck_valid) /* Save partial pseudo-header checksum. */ From owner-svn-src-stable@freebsd.org Mon Aug 5 22:04:17 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4511BAEEBB; Mon, 5 Aug 2019 22:04:17 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462Wy919tMz4J4l; Mon, 5 Aug 2019 22:04:17 +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 0AF0E22406; Mon, 5 Aug 2019 22:04:17 +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 x75M4GYb054897; Mon, 5 Aug 2019 22:04:16 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x75M4Gap054896; Mon, 5 Aug 2019 22:04:16 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201908052204.x75M4Gap054896@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 5 Aug 2019 22:04:16 +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: r350619 - in stable: 11/usr.sbin/bhyve 12/usr.sbin/bhyve X-SVN-Group: stable-11 X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in stable: 11/usr.sbin/bhyve 12/usr.sbin/bhyve X-SVN-Commit-Revision: 350619 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2019 22:04:17 -0000 Author: jhb Date: Mon Aug 5 22:04:16 2019 New Revision: 350619 URL: https://svnweb.freebsd.org/changeset/base/350619 Log: MFC 350618: Validate guest-supplied length of headers for TSO transmit requests. When transmitting a large TCP packet, the final transmit descriptor includes the length of the protocol headers to be duplicated on each segment. The device model was trusting the guest-supplied value without validating it. A value of zero would result in the guest being able to indirect a garbage pointer on the stack to overwrite arbitrary memory in the bhyve process. A value that was non-zero but too small for the requested parameters resulted in the device model reading and writing values beyond the end of the on-stack buffer used to hold the template header. To fix, validate the supplied length and drop requests to transmit packets that would overflow the header buffer. While here, initialize the header pointer to NULL as a preventive measure so that any access to an unallocated template header crashes they hypervisor deterministically. While here, only read the TCP sequence number if the packet being split is a TCP packet. The e1000 logic supports a segmentation of UDP frames, and while UDP segmentation requires this part of the header to be valid (so there is no buffer overflow), only reading the field when needed is cleaner. admbugs: 918 Reported by: Reno Robert Approved by: so Security: CVE-2019-5609 Modified: stable/11/usr.sbin/bhyve/pci_e82545.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/12/usr.sbin/bhyve/pci_e82545.c Directory Properties: stable/12/ (props changed) Modified: stable/11/usr.sbin/bhyve/pci_e82545.c ============================================================================== --- stable/11/usr.sbin/bhyve/pci_e82545.c Mon Aug 5 21:39:55 2019 (r350618) +++ stable/11/usr.sbin/bhyve/pci_e82545.c Mon Aug 5 22:04:16 2019 (r350619) @@ -1079,8 +1079,9 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head struct ck_info ckinfo[2]; struct iovec *iov; union e1000_tx_udesc *dsc; - int desc, dtype, len, ntype, iovcnt, tlen, hdrlen, vlen, tcp, tso; + int desc, dtype, len, ntype, iovcnt, tlen, tcp, tso; int mss, paylen, seg, tiovcnt, left, now, nleft, nnow, pv, pvoff; + unsigned hdrlen, vlen; uint32_t tcpsum, tcpseq; uint16_t ipcs, tcpcs, ipid, ohead; @@ -1224,6 +1225,68 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head } else { /* In case of TSO header length provided by software. */ hdrlen = sc->esc_txctx.tcp_seg_setup.fields.hdr_len; + + /* + * Cap the header length at 240 based on 7.2.4.5 of + * the Intel 82576EB (Rev 2.63) datasheet. + */ + if (hdrlen > 240) { + WPRINTF("TSO hdrlen too large: %d\r\n", hdrlen); + goto done; + } + + /* + * If VLAN insertion is requested, ensure the header + * at least holds the amount of data copied during + * VLAN insertion below. + * + * XXX: Realistic packets will include a full Ethernet + * header before the IP header at ckinfo[0].ck_start, + * but this check is sufficient to prevent + * out-of-bounds access below. + */ + if (vlen != 0 && hdrlen < ETHER_ADDR_LEN*2) { + WPRINTF("TSO hdrlen too small for vlan insertion " + "(%d vs %d) -- dropped\r\n", hdrlen, + ETHER_ADDR_LEN*2); + goto done; + } + + /* + * Ensure that the header length covers the used fields + * in the IP and TCP headers as well as the IP and TCP + * checksums. The following fields are accessed below: + * + * Header | Field | Offset | Length + * -------+-------+--------+------- + * IPv4 | len | 2 | 2 + * IPv4 | ID | 4 | 2 + * IPv6 | len | 4 | 2 + * TCP | seq # | 4 | 4 + * TCP | flags | 13 | 1 + * UDP | len | 4 | 4 + */ + if (hdrlen < ckinfo[0].ck_start + 6 || + hdrlen < ckinfo[0].ck_off + 2) { + WPRINTF("TSO hdrlen too small for IP fields (%d) " + "-- dropped\r\n", hdrlen); + goto done; + } + if (sc->esc_txctx.cmd_and_length & E1000_TXD_CMD_TCP) { + if (hdrlen < ckinfo[1].ck_start + 14 || + (ckinfo[1].ck_valid && + hdrlen < ckinfo[1].ck_off + 2)) { + WPRINTF("TSO hdrlen too small for TCP fields " + "(%d) -- dropped\r\n", hdrlen); + goto done; + } + } else { + if (hdrlen < ckinfo[1].ck_start + 8) { + WPRINTF("TSO hdrlen too small for UDP fields " + "(%d) -- dropped\r\n", hdrlen); + goto done; + } + } } /* Allocate, fill and prepend writable header vector. */ @@ -1245,7 +1308,8 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head iovcnt++; iov->iov_base = hdr; iov->iov_len = hdrlen; - } + } else + hdr = NULL; /* Insert VLAN tag. */ if (vlen != 0) { @@ -1287,7 +1351,9 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head DPRINTF("tx %s segmentation offload %d+%d/%d bytes %d iovs\r\n", tcp ? "TCP" : "UDP", hdrlen, paylen, mss, iovcnt); ipid = ntohs(*(uint16_t *)&hdr[ckinfo[0].ck_start + 4]); - tcpseq = ntohl(*(uint32_t *)&hdr[ckinfo[1].ck_start + 4]); + tcpseq = 0; + if (tcp) + tcpseq = ntohl(*(uint32_t *)&hdr[ckinfo[1].ck_start + 4]); ipcs = *(uint16_t *)&hdr[ckinfo[0].ck_off]; tcpcs = 0; if (ckinfo[1].ck_valid) /* Save partial pseudo-header checksum. */ From owner-svn-src-stable@freebsd.org Tue Aug 6 14:37:58 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 45783C3231; Tue, 6 Aug 2019 14:37: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462y0k131Sz4559; Tue, 6 Aug 2019 14:37: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 058352D614; Tue, 6 Aug 2019 14:37: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 x76EbvR1045572; Tue, 6 Aug 2019 14:37:57 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76EbvH7045571; Tue, 6 Aug 2019 14:37:57 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201908061437.x76EbvH7045571@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 6 Aug 2019 14:37: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: r350631 - stable/12/lib/libc/gen X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/lib/libc/gen X-SVN-Commit-Revision: 350631 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 14:37:58 -0000 Author: markj Date: Tue Aug 6 14:37:57 2019 New Revision: 350631 URL: https://svnweb.freebsd.org/changeset/base/350631 Log: MFC r350513: Fix formatting. Modified: stable/12/lib/libc/gen/daemon.3 Directory Properties: stable/12/ (props changed) Modified: stable/12/lib/libc/gen/daemon.3 ============================================================================== --- stable/12/lib/libc/gen/daemon.3 Tue Aug 6 13:09:20 2019 (r350630) +++ stable/12/lib/libc/gen/daemon.3 Tue Aug 6 14:37:57 2019 (r350631) @@ -93,7 +93,7 @@ function may fail and set .Va errno for any of the errors specified for the library functions .Xr fork 2 -.Xr open 2, +.Xr open 2 , and .Xr setsid 2 . .Sh SEE ALSO From owner-svn-src-stable@freebsd.org Tue Aug 6 14:39:03 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9CA78C325E; Tue, 6 Aug 2019 14:39:03 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462y1z3dnTz45L0; Tue, 6 Aug 2019 14:39:03 +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 5E7362D618; Tue, 6 Aug 2019 14:39:03 +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 x76Ed3an045775; Tue, 6 Aug 2019 14:39:03 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76Ed3ui045774; Tue, 6 Aug 2019 14:39:03 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201908061439.x76Ed3ui045774@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 6 Aug 2019 14:39: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: r350634 - stable/12/usr.bin/bzip2recover X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/usr.bin/bzip2recover X-SVN-Commit-Revision: 350634 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 14:39:03 -0000 Author: markj Date: Tue Aug 6 14:39:02 2019 New Revision: 350634 URL: https://svnweb.freebsd.org/changeset/base/350634 Log: MFC r350544: Add bzip2recover.1. Modified: stable/12/usr.bin/bzip2recover/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/usr.bin/bzip2recover/Makefile ============================================================================== --- stable/12/usr.bin/bzip2recover/Makefile Tue Aug 6 14:38:44 2019 (r350633) +++ stable/12/usr.bin/bzip2recover/Makefile Tue Aug 6 14:39:02 2019 (r350634) @@ -6,6 +6,8 @@ BZ2DIR= ${SRCTOP}/contrib/bzip2 PROG= bzip2recover MAN= +MLINKS+=bzip2.1 bzip2recover.1 + NO_WMISSING_VARIABLE_DECLARATIONS= .include From owner-svn-src-stable@freebsd.org Tue Aug 6 14:38:17 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 23F7DC323A; Tue, 6 Aug 2019 14:38:17 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462y1504xhz459M; Tue, 6 Aug 2019 14:38:17 +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 D94702D615; Tue, 6 Aug 2019 14:38:16 +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 x76EcGQe045637; Tue, 6 Aug 2019 14:38:16 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76EcGeK045636; Tue, 6 Aug 2019 14:38:16 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201908061438.x76EcGeK045636@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 6 Aug 2019 14:38:16 +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: r350632 - stable/12/lib/libc/gen X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/lib/libc/gen X-SVN-Commit-Revision: 350632 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 14:38:17 -0000 Author: markj Date: Tue Aug 6 14:38:16 2019 New Revision: 350632 URL: https://svnweb.freebsd.org/changeset/base/350632 Log: MFC r350514: Add an MLINK for daemonfd(3). Modified: stable/12/lib/libc/gen/Makefile.inc Directory Properties: stable/12/ (props changed) Modified: stable/12/lib/libc/gen/Makefile.inc ============================================================================== --- stable/12/lib/libc/gen/Makefile.inc Tue Aug 6 14:37:57 2019 (r350631) +++ stable/12/lib/libc/gen/Makefile.inc Tue Aug 6 14:38:16 2019 (r350632) @@ -324,6 +324,7 @@ MLINKS+=arc4random.3 arc4random_buf.3 \ arc4random.3 arc4random_uniform.3 MLINKS+=auxv.3 elf_aux_info.3 MLINKS+=ctermid.3 ctermid_r.3 +MLINKS+=daemon.3 daemonfd.3 MLINKS+=devname.3 devname_r.3 MLINKS+=devname.3 fdevname.3 MLINKS+=devname.3 fdevname_r.3 From owner-svn-src-stable@freebsd.org Tue Aug 6 14:38:45 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 941BFC3247; Tue, 6 Aug 2019 14:38:45 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462y1d3Shvz45FX; Tue, 6 Aug 2019 14:38:45 +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 542C22D617; Tue, 6 Aug 2019 14:38:45 +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 x76Ecjl4045707; Tue, 6 Aug 2019 14:38:45 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76EcjcB045705; Tue, 6 Aug 2019 14:38:45 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201908061438.x76EcjcB045705@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 6 Aug 2019 14:38: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: r350633 - stable/12/contrib/elftoolchain/elfcopy X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/contrib/elftoolchain/elfcopy X-SVN-Commit-Revision: 350633 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 14:38:45 -0000 Author: markj Date: Tue Aug 6 14:38:44 2019 New Revision: 350633 URL: https://svnweb.freebsd.org/changeset/base/350633 Log: MFC r350432: Merge r3778 and r3779 from ELFToolchain. Modified: stable/12/contrib/elftoolchain/elfcopy/main.c stable/12/contrib/elftoolchain/elfcopy/strip.1 Directory Properties: stable/12/ (props changed) Modified: stable/12/contrib/elftoolchain/elfcopy/main.c ============================================================================== --- stable/12/contrib/elftoolchain/elfcopy/main.c Tue Aug 6 14:38:16 2019 (r350632) +++ stable/12/contrib/elftoolchain/elfcopy/main.c Tue Aug 6 14:38:44 2019 (r350633) @@ -1187,6 +1187,12 @@ strip_main(struct elfcopy *ecp, int argc, char **argv) ecp->strip = STRIP_ALL; if (optind == argc) strip_usage(); + /* + * Only accept a single input file if an output file had been + * specified. + */ + if (outfile != NULL && argc != (optind + 1)) + strip_usage(); for (i = optind; i < argc; i++) create_file(ecp, argv[i], outfile); Modified: stable/12/contrib/elftoolchain/elfcopy/strip.1 ============================================================================== --- stable/12/contrib/elftoolchain/elfcopy/strip.1 Tue Aug 6 14:38:16 2019 (r350632) +++ stable/12/contrib/elftoolchain/elfcopy/strip.1 Tue Aug 6 14:38:44 2019 (r350633) @@ -23,7 +23,7 @@ .\" .\" $Id: strip.1 3642 2018-10-14 14:24:28Z jkoshy $ .\" -.Dd September 17, 2011 +.Dd July 27, 2019 .Dt STRIP 1 .Os .Sh NAME @@ -51,8 +51,16 @@ .Sh DESCRIPTION The .Nm -utility is used to discard information from ELF objects. +utility is used to discard information from the ELF objects +specified by the arguments +.Ar . .Pp +If an explicit output file name is not specified using the +.Fl o +option, the +.Nm +utility will modify its input arguments in-place. +.Pp The .Nm utility supports the following options: @@ -65,8 +73,9 @@ Print a help message and exit. Remove all content except that which would be used for debugging. .It Fl o Ar outputfile | Fl -output-file= Ns Ar outputfile Write the stripped object to file -.Ar outputfile . -The default behaviour is to modify objects in place. +.Ar outputfile +instead of modifying the input in-place. +Only a single input object should be specified if this option is used. .It Fl p | Fl -preserve-dates Preserve the object's access and modification times. .It Fl s | Fl -strip-all From owner-svn-src-stable@freebsd.org Tue Aug 6 17:13:42 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0D9BCC6036; Tue, 6 Aug 2019 17:13:42 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4631SP6bctz4FB8; Tue, 6 Aug 2019 17:13:41 +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 C42552F2F1; Tue, 6 Aug 2019 17:13:41 +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 x76HDfZJ043964; Tue, 6 Aug 2019 17:13:41 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76HDfl3043963; Tue, 6 Aug 2019 17:13:41 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201908061713.x76HDfl3043963@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 6 Aug 2019 17:13:41 +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: r350648 - stable/12/sys/netinet6 X-SVN-Group: stable-12 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/12/sys/netinet6 X-SVN-Commit-Revision: 350648 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 17:13:42 -0000 Author: emaste Date: Tue Aug 6 17:13:41 2019 New Revision: 350648 URL: https://svnweb.freebsd.org/changeset/base/350648 Log: MFC r350645: Correct ICMPv6/MLDv2 out-of-bounds memory access Previously the ICMPv6 input path incorrectly handled cases where an MLDv2 listener query packet was internally fragmented across multiple mbufs. admbugs: 921 Submitted by: jtl Reported by: CJD of Apple Approved by: so Security: CVE-2019-5608 Modified: stable/12/sys/netinet6/mld6.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/netinet6/mld6.c ============================================================================== --- stable/12/sys/netinet6/mld6.c Tue Aug 6 17:13:17 2019 (r350647) +++ stable/12/sys/netinet6/mld6.c Tue Aug 6 17:13:41 2019 (r350648) @@ -139,14 +139,15 @@ static int mld_v2_enqueue_group_record(struct mbufq *, struct in6_multi *, const int, const int, const int, const int); static int mld_v2_input_query(struct ifnet *, const struct ip6_hdr *, - struct mbuf *, const int, const int); + struct mbuf *, struct mldv2_query *, const int, const int); static int mld_v2_merge_state_changes(struct in6_multi *, struct mbufq *); static void mld_v2_process_group_timers(struct in6_multi_head *, struct mbufq *, struct mbufq *, struct in6_multi *, const int); static int mld_v2_process_group_query(struct in6_multi *, - struct mld_ifsoftc *mli, int, struct mbuf *, const int); + struct mld_ifsoftc *mli, int, struct mbuf *, + struct mldv2_query *, const int); static int sysctl_mld_gsr(SYSCTL_HANDLER_ARGS); static int sysctl_mld_ifinfo(SYSCTL_HANDLER_ARGS); @@ -803,16 +804,16 @@ mld_v1_update_group(struct in6_multi *inm, const int t * Process a received MLDv2 general, group-specific or * group-and-source-specific query. * - * Assumes that the query header has been pulled up to sizeof(mldv2_query). + * Assumes that mld points to a struct mldv2_query which is stored in + * contiguous memory. * * Return 0 if successful, otherwise an appropriate error code is returned. */ static int mld_v2_input_query(struct ifnet *ifp, const struct ip6_hdr *ip6, - struct mbuf *m, const int off, const int icmp6len) + struct mbuf *m, struct mldv2_query *mld, const int off, const int icmp6len) { struct mld_ifsoftc *mli; - struct mldv2_query *mld; struct in6_multi *inm; uint32_t maxdelay, nsrc, qqi; int is_general_query; @@ -844,8 +845,6 @@ mld_v2_input_query(struct ifnet *ifp, const struct ip6 CTR2(KTR_MLD, "input v2 query on ifp %p(%s)", ifp, if_name(ifp)); - mld = (struct mldv2_query *)(mtod(m, uint8_t *) + off); - maxdelay = ntohs(mld->mld_maxdelay); /* in 1/10ths of a second */ if (maxdelay >= 32768) { maxdelay = (MLD_MRC_MANT(maxdelay) | 0x1000) << @@ -970,7 +969,7 @@ mld_v2_input_query(struct ifnet *ifp, const struct ip6 * group-specific or group-and-source query. */ if (mli->mli_v2_timer == 0 || mli->mli_v2_timer >= timer) - mld_v2_process_group_query(inm, mli, timer, m, off); + mld_v2_process_group_query(inm, mli, timer, m, mld, off); /* XXX Clear embedded scope ID as userland won't expect it. */ in6_clearscope(&mld->mld_addr); @@ -991,9 +990,8 @@ out_locked: */ static int mld_v2_process_group_query(struct in6_multi *inm, struct mld_ifsoftc *mli, - int timer, struct mbuf *m0, const int off) + int timer, struct mbuf *m0, struct mldv2_query *mld, const int off) { - struct mldv2_query *mld; int retval; uint16_t nsrc; @@ -1001,7 +999,6 @@ mld_v2_process_group_query(struct in6_multi *inm, stru MLD_LOCK_ASSERT(); retval = 0; - mld = (struct mldv2_query *)(mtod(m0, uint8_t *) + off); switch (inm->in6m_state) { case MLD_NOT_MEMBER: @@ -1021,6 +1018,15 @@ mld_v2_process_group_query(struct in6_multi *inm, stru nsrc = ntohs(mld->mld_numsrc); + /* Length should be checked by calling function. */ + KASSERT((m0->m_flags & M_PKTHDR) == 0 || + m0->m_pkthdr.len >= off + sizeof(struct mldv2_query) + + nsrc * sizeof(struct in6_addr), + ("mldv2 packet is too short: (%d bytes < %zd bytes, m=%p)", + m0->m_pkthdr.len, off + sizeof(struct mldv2_query) + + nsrc * sizeof(struct in6_addr), m0)); + + /* * Deal with group-specific queries upfront. * If any group query is already pending, purge any recorded @@ -1062,28 +1068,20 @@ mld_v2_process_group_query(struct in6_multi *inm, stru * report for those sources. */ if (inm->in6m_nsrc > 0) { - struct mbuf *m; - uint8_t *sp; + struct in6_addr srcaddr; int i, nrecorded; int soff; - m = m0; soff = off + sizeof(struct mldv2_query); nrecorded = 0; for (i = 0; i < nsrc; i++) { - sp = mtod(m, uint8_t *) + soff; - retval = in6m_record_source(inm, - (const struct in6_addr *)sp); + m_copydata(m0, soff, sizeof(struct in6_addr), + (caddr_t)&srcaddr); + retval = in6m_record_source(inm, &srcaddr); if (retval < 0) break; nrecorded += retval; soff += sizeof(struct in6_addr); - if (soff >= m->m_len) { - soff = soff - m->m_len; - m = m->m_next; - if (m == NULL) - break; - } } if (nrecorded > 0) { CTR1(KTR_MLD, @@ -1292,8 +1290,8 @@ mld_input(struct mbuf *m, int off, int icmp6len) if (mld_v1_input_query(ifp, ip6, mld) != 0) return (0); } else if (icmp6len >= sizeof(struct mldv2_query)) { - if (mld_v2_input_query(ifp, ip6, m, off, - icmp6len) != 0) + if (mld_v2_input_query(ifp, ip6, m, + (struct mldv2_query *)mld, off, icmp6len) != 0) return (0); } break; From owner-svn-src-stable@freebsd.org Tue Aug 6 16:11:16 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EBB08C4C5F; Tue, 6 Aug 2019 16:11:16 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46304N60Vdz49ZH; Tue, 6 Aug 2019 16:11:16 +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 C92842E69C; Tue, 6 Aug 2019 16:11:16 +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 x76GBGBc005014; Tue, 6 Aug 2019 16:11:16 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76GBG7u005013; Tue, 6 Aug 2019 16:11:16 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201908061611.x76GBG7u005013@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 6 Aug 2019 16:11:16 +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: r350637 - stable/12/contrib/bsnmp/lib X-SVN-Group: stable-12 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/12/contrib/bsnmp/lib X-SVN-Commit-Revision: 350637 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 16:11:17 -0000 Author: emaste Date: Tue Aug 6 16:11:16 2019 New Revision: 350637 URL: https://svnweb.freebsd.org/changeset/base/350637 Log: MFC r350635: bsnmp: add asn1 message length validation admbugs: 780 Submitted by: Guido Vranken, bz Reported by: Guido Vranken Approved by: so Security: CVE-2019-5610 Modified: stable/12/contrib/bsnmp/lib/asn1.c Directory Properties: stable/12/ (props changed) Modified: stable/12/contrib/bsnmp/lib/asn1.c ============================================================================== --- stable/12/contrib/bsnmp/lib/asn1.c Tue Aug 6 16:11:00 2019 (r350636) +++ stable/12/contrib/bsnmp/lib/asn1.c Tue Aug 6 16:11:16 2019 (r350637) @@ -100,6 +100,11 @@ asn_get_header(struct asn_buf *b, u_char *type, asn_le *len = *b->asn_cptr++; b->asn_len--; } + if (*len > b->asn_len) { + asn_error(b, "len %u exceeding asn_len %u", *len, b->asn_len); + return (ASN_ERR_EOBUF); + } + return (ASN_ERR_OK); } From owner-svn-src-stable@freebsd.org Tue Aug 6 16:12:43 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D2327C4CAB; Tue, 6 Aug 2019 16:12:43 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4630635Dn8z49xC; Tue, 6 Aug 2019 16:12:43 +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 954312E81D; Tue, 6 Aug 2019 16:12:43 +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 x76GChBE007363; Tue, 6 Aug 2019 16:12:43 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76GChOd007362; Tue, 6 Aug 2019 16:12:43 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201908061612.x76GChOd007362@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 6 Aug 2019 16:12:43 +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: r350638 - stable/11/contrib/bsnmp/lib X-SVN-Group: stable-11 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/11/contrib/bsnmp/lib X-SVN-Commit-Revision: 350638 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 16:12:43 -0000 Author: emaste Date: Tue Aug 6 16:12:43 2019 New Revision: 350638 URL: https://svnweb.freebsd.org/changeset/base/350638 Log: MFC r350635: bsnmp: add asn1 message length validation admbugs: 780 Submitted by: Guido Vranken, bz Reported by: Guido Vranken Approved by: so Security: CVE-2019-5610 Modified: stable/11/contrib/bsnmp/lib/asn1.c Directory Properties: stable/11/ (props changed) Modified: stable/11/contrib/bsnmp/lib/asn1.c ============================================================================== --- stable/11/contrib/bsnmp/lib/asn1.c Tue Aug 6 16:11:16 2019 (r350637) +++ stable/11/contrib/bsnmp/lib/asn1.c Tue Aug 6 16:12:43 2019 (r350638) @@ -100,6 +100,11 @@ asn_get_header(struct asn_buf *b, u_char *type, asn_le *len = *b->asn_cptr++; b->asn_len--; } + if (*len > b->asn_len) { + asn_error(b, "len %u exceeding asn_len %u", *len, b->asn_len); + return (ASN_ERR_EOBUF); + } + return (ASN_ERR_OK); } From owner-svn-src-stable@freebsd.org Tue Aug 6 12:12:31 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 50C3BC0CAE; Tue, 6 Aug 2019 12:12: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462tmv1VVJz3yb9; Tue, 6 Aug 2019 12:12: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 154EE2BCA4; Tue, 6 Aug 2019 12:12: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 x76CCUdM062061; Tue, 6 Aug 2019 12:12:30 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76CCTFX062056; Tue, 6 Aug 2019 12:12:29 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908061212.x76CCTFX062056@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Tue, 6 Aug 2019 12:12:29 +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: r350628 - in stable/12/sys: arm/allwinner/clkng dev/iicbus/twsi X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/allwinner/clkng dev/iicbus/twsi X-SVN-Commit-Revision: 350628 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 12:12:31 -0000 Author: manu Date: Tue Aug 6 12:12:29 2019 New Revision: 350628 URL: https://svnweb.freebsd.org/changeset/base/350628 Log: MFC r347489-r347491, r347512 r347489: allwinner: clk: prediv_mux: Init the current parent Do not init the first parent but read the clock register to find it's current parent and init this one. r347490: allwinner: clk: sun8i_r: Correct resets The i2c reset wasn't defined and some bits where wrong, correct them. r347491: twsi: Calculate the clock param based on the bus frequency Instead of precalculating the different speed, respect the bus frequency and calculate the clock register parameter based on it. If the platform didn't register the core clk, fallback on the precomputed values (This is likely do be the case on Marvell boards). r347512: arm: allwinner: aw_clk_nm: Don't reparent the clock if we didn't ask When looking for the best frequency don't change the clock parent if the clock wasn't configured to do that. Modified: stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c stable/12/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c stable/12/sys/arm/allwinner/clkng/ccu_sun8i_r.c stable/12/sys/dev/iicbus/twsi/a10_twsi.c stable/12/sys/dev/iicbus/twsi/twsi.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c Tue Aug 6 11:26:30 2019 (r350627) +++ stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c Tue Aug 6 12:12:29 2019 (r350628) @@ -236,7 +236,7 @@ aw_clk_nm_set_freq(struct clknode *clk, uint64_t fpare return (ERANGE); } - if (p_idx != best_parent) + if ((sc->flags & AW_CLK_REPARENT) != 0 && p_idx != best_parent) clknode_set_parent_by_idx(clk, best_parent); DEVICE_LOCK(clk); Modified: stable/12/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c Tue Aug 6 11:26:30 2019 (r350627) +++ stable/12/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c Tue Aug 6 12:12:29 2019 (r350628) @@ -75,7 +75,19 @@ struct aw_clk_prediv_mux_sc { static int aw_clk_prediv_mux_init(struct clknode *clk, device_t dev) { - clknode_init_parent_idx(clk, 0); + struct aw_clk_prediv_mux_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(clk); + READ4(clk, sc->offset, &val); + DEVICE_UNLOCK(clk); + + /* Init the current parent */ + val = (val & sc->mux_mask) >> sc->mux_shift; + clknode_init_parent_idx(clk, val); + return (0); } Modified: stable/12/sys/arm/allwinner/clkng/ccu_sun8i_r.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_sun8i_r.c Tue Aug 6 11:26:30 2019 (r350627) +++ stable/12/sys/arm/allwinner/clkng/ccu_sun8i_r.c Tue Aug 6 12:12:29 2019 (r350628) @@ -63,8 +63,9 @@ __FBSDID("$FreeBSD$"); static struct aw_ccung_reset ccu_sun8i_r_resets[] = { CCU_RESET(RST_APB0_IR, 0xb0, 1) CCU_RESET(RST_APB0_TIMER, 0xb0, 2) - CCU_RESET(RST_APB0_RSB, 0xb0, 4) - CCU_RESET(RST_APB0_UART, 0xb0, 6) + CCU_RESET(RST_APB0_RSB, 0xb0, 3) + CCU_RESET(RST_APB0_UART, 0xb0, 4) + CCU_RESET(RST_APB0_I2C, 0xb0, 6) }; static struct aw_ccung_gate ccu_sun8i_r_gates[] = { Modified: stable/12/sys/dev/iicbus/twsi/a10_twsi.c ============================================================================== --- stable/12/sys/dev/iicbus/twsi/a10_twsi.c Tue Aug 6 11:26:30 2019 (r350627) +++ stable/12/sys/dev/iicbus/twsi/a10_twsi.c Tue Aug 6 12:12:29 2019 (r350628) @@ -87,9 +87,7 @@ static int a10_twsi_attach(device_t dev) { struct twsi_softc *sc; - clk_t clk; hwreset_t rst; - uint64_t freq; int error; sc = device_get_softc(dev); @@ -104,12 +102,12 @@ a10_twsi_attach(device_t dev) } /* Activate clock */ - error = clk_get_by_ofw_index(dev, 0, 0, &clk); + error = clk_get_by_ofw_index(dev, 0, 0, &sc->clk_core); if (error != 0) { device_printf(dev, "could not find clock\n"); return (error); } - error = clk_enable(clk); + error = clk_enable(sc->clk_core); if (error != 0) { device_printf(dev, "could not enable clock\n"); return (error); @@ -122,31 +120,6 @@ a10_twsi_attach(device_t dev) sc->reg_status = TWI_STAT; sc->reg_baud_rate = TWI_CCR; sc->reg_soft_reset = TWI_SRST; - - /* Setup baud rate params */ - clk_get_freq(clk, &freq); - switch (freq) { - /* - * Formula is - * F0 = FINT / 2 ^ CLK_N - * F1 = F0 / (CLK_M + 1) - * - * Doc says that the output freq is F1/10 but my logic analyzer says otherwise - */ - case 48000000: - sc->baud_rate[IIC_SLOW].param = TWSI_BAUD_RATE_PARAM(11, 1); - sc->baud_rate[IIC_FAST].param = TWSI_BAUD_RATE_PARAM(11, 1); - sc->baud_rate[IIC_FASTEST].param = TWSI_BAUD_RATE_PARAM(2, 1); - break; - case 24000000: - sc->baud_rate[IIC_SLOW].param = TWSI_BAUD_RATE_PARAM(5, 2); - sc->baud_rate[IIC_FAST].param = TWSI_BAUD_RATE_PARAM(5, 2); - sc->baud_rate[IIC_FASTEST].param = TWSI_BAUD_RATE_PARAM(2, 2); - break; - default: - device_printf(dev, "Non supported frequency\n"); - return (ENXIO); - } sc->need_ack = true; return (twsi_attach(dev)); Modified: stable/12/sys/dev/iicbus/twsi/twsi.c ============================================================================== --- stable/12/sys/dev/iicbus/twsi/twsi.c Tue Aug 6 11:26:30 2019 (r350627) +++ stable/12/sys/dev/iicbus/twsi/twsi.c Tue Aug 6 12:12:29 2019 (r350628) @@ -243,6 +243,43 @@ twsi_locked_start(device_t dev, struct twsi_softc *sc, return (IIC_NOERR); } +#ifdef EXT_RESOURCES +#define TWSI_BAUD_RATE_RAW(C,M,N) ((C)/((10*(M+1))<<(N))) +#define ABSSUB(a,b) (((a) > (b)) ? (a) - (b) : (b) - (a)) + +static int +twsi_calc_baud_rate(struct twsi_softc *sc, const u_int target, + int *param) +{ + uint64_t clk; + uint32_t cur, diff, diff0; + int m, n, m0, n0; + + /* Calculate baud rate. */ + diff0 = 0xffffffff; + + if (clk_get_freq(sc->clk_core, &clk) < 0) + return (-1); + + debugf(sc->dev, "Bus clock is at %lu\n", clk); + + for (n = 0; n < 8; n++) { + for (m = 0; m < 16; m++) { + cur = TWSI_BAUD_RATE_RAW(clk,m,n); + diff = ABSSUB(target, cur); + if (diff < diff0) { + m0 = m; + n0 = n; + diff0 = diff; + } + } + } + *param = TWSI_BAUD_RATE_PARAM(m0, n0); + + return (0); +} +#endif /* EXT_RESOURCES */ + /* * Only slave mode supported, disregard [old]addr */ @@ -251,24 +288,36 @@ twsi_reset(device_t dev, u_char speed, u_char addr, u_ { struct twsi_softc *sc; uint32_t param; - /* uint32_t val; */ +#ifdef EXT_RESOURCES + u_int busfreq; +#endif sc = device_get_softc(dev); - switch (speed) { - case IIC_SLOW: - case IIC_FAST: - param = sc->baud_rate[speed].param; - debugf(dev, "Using IIC_FAST mode with speed param=%x\n", param); - break; - case IIC_FASTEST: - case IIC_UNKNOWN: - default: - param = sc->baud_rate[IIC_FAST].param; - debugf(dev, "Using IIC_FASTEST/UNKNOWN mode with speed param=%x\n", param); - break; +#ifdef EXT_RESOURCES + busfreq = IICBUS_GET_FREQUENCY(sc->iicbus, speed); + + if (twsi_calc_baud_rate(sc, busfreq, ¶m) == -1) { +#endif + switch (speed) { + case IIC_SLOW: + case IIC_FAST: + param = sc->baud_rate[speed].param; + debugf(dev, "Using IIC_FAST mode with speed param=%x\n", param); + break; + case IIC_FASTEST: + case IIC_UNKNOWN: + default: + param = sc->baud_rate[IIC_FAST].param; + debugf(dev, "Using IIC_FASTEST/UNKNOWN mode with speed param=%x\n", param); + break; + } +#ifdef EXT_RESOURCES } +#endif + debugf(dev, "Using clock param=%x\n", param); + mtx_lock(&sc->mutex); TWSI_WRITE(sc, sc->reg_soft_reset, 0x0); TWSI_WRITE(sc, sc->reg_baud_rate, param); @@ -521,6 +570,7 @@ twsi_intr(void *arg) break; case TWSI_STATUS_ADDR_R_ACK: + debugf(sc->dev, "Ack received after transmitting the address\n"); sc->recv_bytes = 0; TWSI_WRITE(sc, sc->reg_control, sc->control_val); From owner-svn-src-stable@freebsd.org Tue Aug 6 12:19:12 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 79D33C0F32; Tue, 6 Aug 2019 12:19:12 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 462twc3Mptz3ynn; Tue, 6 Aug 2019 12:19:12 +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 6A09A2BCB2; Tue, 6 Aug 2019 12:19:12 +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 x76CJCXg062475; Tue, 6 Aug 2019 12:19:12 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76CJ9Mu062460; Tue, 6 Aug 2019 12:19:09 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908061219.x76CJ9Mu062460@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Tue, 6 Aug 2019 12:19:09 +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: r350629 - in stable/12/sys: arm/allwinner arm/allwinner/clkng conf X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/allwinner arm/allwinner/clkng conf X-SVN-Commit-Revision: 350629 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 12:19:12 -0000 Author: manu Date: Tue Aug 6 12:19:09 2019 New Revision: 350629 URL: https://svnweb.freebsd.org/changeset/base/350629 Log: MFC r348179-r348182 r348179: allwinner: aw_ccu: Add some debug printfs (disabled by default) Also print information about setting frequency at boot under bootverbose r348180: arm: allwinner: clk: Add new clock aw_clk_frac Add a clock driver for clock that can either be used in integer mode with one N factor and one M divider or in fractional mode where the output frequency is chosen between two predifined output. r348181: arm: allwinner: clk: Use the new frac clock Some clocks used the NM type but this clock is for the ones with the formula "clk = clkin / n / m" and not "clk = clkin * n / m" Use the new frac clock for them. r348182: arm: allwinner: Remove frac mode from NM clk We have a correct clock type aw_clk_frac now for this. Added: stable/12/sys/arm/allwinner/clkng/aw_clk_frac.c - copied unchanged from r348182, head/sys/arm/allwinner/clkng/aw_clk_frac.c stable/12/sys/arm/allwinner/clkng/aw_clk_frac.h - copied unchanged from r348182, head/sys/arm/allwinner/clkng/aw_clk_frac.h Modified: stable/12/sys/arm/allwinner/clkng/aw_ccung.c stable/12/sys/arm/allwinner/clkng/aw_ccung.h stable/12/sys/arm/allwinner/clkng/aw_clk.h stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c stable/12/sys/arm/allwinner/clkng/aw_clk_nm.h stable/12/sys/arm/allwinner/clkng/ccu_a10.c stable/12/sys/arm/allwinner/clkng/ccu_a31.c stable/12/sys/arm/allwinner/clkng/ccu_a64.c stable/12/sys/arm/allwinner/clkng/ccu_h3.c stable/12/sys/arm/allwinner/files.allwinner stable/12/sys/conf/files.arm64 Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/allwinner/clkng/aw_ccung.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/aw_ccung.c Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/aw_ccung.c Tue Aug 6 12:19:09 2019 (r350629) @@ -62,6 +62,12 @@ __FBSDID("$FreeBSD$"); #include "clkdev_if.h" #include "hwreset_if.h" +#if 0 +#define dprintf(format, arg...) device_printf(dev, "%s: " format, __func__, arg) +#else +#define dprintf(format, arg...) +#endif + static struct resource_spec aw_ccung_spec[] = { { SYS_RES_MEMORY, 0, RF_ACTIVE }, { -1, 0 } @@ -76,6 +82,7 @@ aw_ccung_write_4(device_t dev, bus_addr_t addr, uint32 struct aw_ccung_softc *sc; sc = device_get_softc(dev); + dprintf("offset=%lx write %x\n", addr, val); CCU_WRITE4(sc, addr, val); return (0); } @@ -88,6 +95,7 @@ aw_ccung_read_4(device_t dev, bus_addr_t addr, uint32_ sc = device_get_softc(dev); *val = CCU_READ4(sc, addr); + dprintf("offset=%lx Read %x\n", addr, *val); return (0); } @@ -99,6 +107,7 @@ aw_ccung_modify_4(device_t dev, bus_addr_t addr, uint3 sc = device_get_softc(dev); + dprintf("offset=%lx clr: %x set: %x\n", addr, clr, set); reg = CCU_READ4(sc, addr); reg &= ~clr; reg |= set; @@ -115,6 +124,7 @@ aw_ccung_reset_assert(device_t dev, intptr_t id, bool sc = device_get_softc(dev); + dprintf("%sassert reset id %ld\n", reset ? "" : "De", id); if (id >= sc->nresets || sc->resets[id].offset == 0) return (0); @@ -222,6 +232,11 @@ aw_ccung_init_clocks(struct aw_ccung_softc *sc) } } if (sc->clk_init[i].default_freq != 0) { + if (bootverbose) + device_printf(sc->dev, + "Setting freq %ju for %s\n", + sc->clk_init[i].default_freq, + sc->clk_init[i].name); error = clknode_set_freq(clknode, sc->clk_init[i].default_freq, 0 , 0); if (error != 0) { @@ -287,6 +302,9 @@ aw_ccung_attach(device_t dev) case AW_CLK_PREDIV_MUX: aw_clk_prediv_mux_register(sc->clkdom, sc->clks[i].clk.prediv_mux); + break; + case AW_CLK_FRAC: + aw_clk_frac_register(sc->clkdom, sc->clks[i].clk.frac); break; } } Modified: stable/12/sys/arm/allwinner/clkng/aw_ccung.h ============================================================================== --- stable/12/sys/arm/allwinner/clkng/aw_ccung.h Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/aw_ccung.h Tue Aug 6 12:19:09 2019 (r350629) @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -46,6 +47,7 @@ enum aw_ccung_clk_type { AW_CLK_NKMP, AW_CLK_NM, AW_CLK_PREDIV_MUX, + AW_CLK_FRAC, }; struct aw_ccung_clk { @@ -57,6 +59,7 @@ struct aw_ccung_clk { struct aw_clk_nkmp_def *nkmp; struct aw_clk_nm_def *nm; struct aw_clk_prediv_mux_def *prediv_mux; + struct aw_clk_frac_def *frac; } clk; }; Modified: stable/12/sys/arm/allwinner/clkng/aw_clk.h ============================================================================== --- stable/12/sys/arm/allwinner/clkng/aw_clk.h Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/aw_clk.h Tue Aug 6 12:19:09 2019 (r350629) @@ -64,7 +64,6 @@ struct aw_clk_init { #define AW_CLK_HAS_MUX 0x0004 #define AW_CLK_REPARENT 0x0008 #define AW_CLK_SCALE_CHANGE 0x0010 -#define AW_CLK_HAS_FRAC 0x0020 #define AW_CLK_HAS_UPDATE 0x0040 #define AW_CLK_HAS_PREDIV 0x0080 @@ -309,14 +308,13 @@ aw_clk_factor_get_value(struct aw_clk_factor *factor, .flags = _flags | AW_CLK_HAS_UPDATE, \ } -#define NM_CLK(_clkname, _id, _name, _pnames, \ +#define FRAC_CLK(_clkname, _id, _name, _pnames, \ _offset, \ _nshift, _nwidth, _nvalue, _nflags, \ _mshift, _mwidth, _mvalue, _mflags, \ - _mux_shift, _mux_width, \ - _gate_shift, \ - _flags) \ - static struct aw_clk_nm_def _clkname = { \ + _gate_shift, _lock_shift,_lock_retries, \ + _flags, _freq0, _freq1, _mode_sel, _freq_sel) \ + static struct aw_clk_frac_def _clkname = { \ .clkdef = { \ .id = _id, \ .name = _name, \ @@ -328,23 +326,28 @@ aw_clk_factor_get_value(struct aw_clk_factor *factor, .n.width = _nwidth, \ .n.value = _nvalue, \ .n.flags = _nflags, \ - .mux_shift = _mux_shift, \ .m.shift = _mshift, \ .m.width = _mwidth, \ .m.value = _mvalue, \ .m.flags = _mflags, \ - .mux_width = _mux_width, \ .gate_shift = _gate_shift, \ + .lock_shift = _lock_shift, \ + .lock_retries = _lock_retries, \ .flags = _flags, \ + .frac.freq0 = _freq0, \ + .frac.freq1 = _freq1, \ + .frac.mode_sel = _mode_sel, \ + .frac.freq_sel = _freq_sel, \ } -#define NM_CLK_WITH_FRAC(_clkname, _id, _name, _pnames, \ +#define NM_CLK(_clkname, _id, _name, _pnames, \ _offset, \ _nshift, _nwidth, _nvalue, _nflags, \ _mshift, _mwidth, _mvalue, _mflags, \ - _gate_shift, _lock_shift,_lock_retries, \ - _flags, _freq0, _freq1, _mode_sel, _freq_sel) \ - static struct aw_clk_nm_def _clkname = { \ + _mux_shift, _mux_width, \ + _gate_shift, \ + _flags) \ + static struct aw_clk_nm_def _clkname = { \ .clkdef = { \ .id = _id, \ .name = _name, \ @@ -356,18 +359,14 @@ aw_clk_factor_get_value(struct aw_clk_factor *factor, .n.width = _nwidth, \ .n.value = _nvalue, \ .n.flags = _nflags, \ + .mux_shift = _mux_shift, \ .m.shift = _mshift, \ .m.width = _mwidth, \ .m.value = _mvalue, \ .m.flags = _mflags, \ + .mux_width = _mux_width, \ .gate_shift = _gate_shift, \ - .lock_shift = _lock_shift, \ - .lock_retries = _lock_retries, \ - .flags = _flags | AW_CLK_HAS_FRAC, \ - .frac.freq0 = _freq0, \ - .frac.freq1 = _freq1, \ - .frac.mode_sel = _mode_sel, \ - .frac.freq_sel = _freq_sel, \ + .flags = _flags, \ } #define PREDIV_CLK(_clkname, _id, _name, _pnames, \ Copied: stable/12/sys/arm/allwinner/clkng/aw_clk_frac.c (from r348182, head/sys/arm/allwinner/clkng/aw_clk_frac.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm/allwinner/clkng/aw_clk_frac.c Tue Aug 6 12:19:09 2019 (r350629, copy of r348182, head/sys/arm/allwinner/clkng/aw_clk_frac.c) @@ -0,0 +1,338 @@ +/*- + * Copyright (c) 2019 Emmanuel Vadot + * + * 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. + * + * $FreeBSD$ + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include + +#include +#include + +#include "clkdev_if.h" + +/* + * clknode for clocks matching the formula : + * + * clk = (24Mhz * n) / m in integer mode + * clk = frac_out1 or frac_out2 in fractional mode + * + */ + +struct aw_clk_frac_sc { + uint32_t offset; + + struct aw_clk_factor m; + struct aw_clk_factor n; + struct aw_clk_frac frac; + + uint32_t mux_shift; + uint32_t mux_mask; + uint32_t gate_shift; + uint32_t lock_shift; + uint32_t lock_retries; + + uint32_t flags; +}; + +#define WRITE4(_clk, off, val) \ + CLKDEV_WRITE_4(clknode_get_device(_clk), off, val) +#define READ4(_clk, off, val) \ + CLKDEV_READ_4(clknode_get_device(_clk), off, val) +#define DEVICE_LOCK(_clk) \ + CLKDEV_DEVICE_LOCK(clknode_get_device(_clk)) +#define DEVICE_UNLOCK(_clk) \ + CLKDEV_DEVICE_UNLOCK(clknode_get_device(_clk)) + +static int +aw_clk_frac_init(struct clknode *clk, device_t dev) +{ + struct aw_clk_frac_sc *sc; + uint32_t val, idx; + + sc = clknode_get_softc(clk); + + idx = 0; + if ((sc->flags & AW_CLK_HAS_MUX) != 0) { + DEVICE_LOCK(clk); + READ4(clk, sc->offset, &val); + DEVICE_UNLOCK(clk); + + idx = (val & sc->mux_mask) >> sc->mux_shift; + } + + clknode_init_parent_idx(clk, idx); + return (0); +} + +static int +aw_clk_frac_set_gate(struct clknode *clk, bool enable) +{ + struct aw_clk_frac_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if ((sc->flags & AW_CLK_HAS_GATE) == 0) + return (0); + + DEVICE_LOCK(clk); + READ4(clk, sc->offset, &val); + if (enable) + val |= (1 << sc->gate_shift); + else + val &= ~(1 << sc->gate_shift); + WRITE4(clk, sc->offset, val); + DEVICE_UNLOCK(clk); + + return (0); +} + +static int +aw_clk_frac_set_mux(struct clknode *clk, int index) +{ + struct aw_clk_frac_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if ((sc->flags & AW_CLK_HAS_MUX) == 0) + return (0); + + DEVICE_LOCK(clk); + READ4(clk, sc->offset, &val); + val &= ~sc->mux_mask; + val |= index << sc->mux_shift; + WRITE4(clk, sc->offset, val); + DEVICE_UNLOCK(clk); + + return (0); +} + +static uint64_t +aw_clk_frac_find_best(struct aw_clk_frac_sc *sc, uint64_t fparent, uint64_t *fout, + uint32_t *factor_n, uint32_t *factor_m) +{ + uint64_t cur, best; + uint32_t m, n, max_m, max_n, min_m, min_n; + + *factor_n = *factor_m = 0; + best = cur = 0; + + max_m = aw_clk_factor_get_max(&sc->m); + max_n = aw_clk_factor_get_max(&sc->n); + min_m = aw_clk_factor_get_min(&sc->m); + min_n = aw_clk_factor_get_min(&sc->n); + + for (n = min_n; n <= max_n; n++) { + for (m = min_m; m <= max_m; m++) { + cur = fparent * n / m; + if ((*fout - cur) < (*fout - best)) { + best = cur; + *factor_n = n; + *factor_m = m; + } + if (best == *fout) + return (best); + } + } + + return (best); +} + +static int +aw_clk_frac_set_freq(struct clknode *clk, uint64_t fparent, uint64_t *fout, + int flags, int *stop) +{ + struct aw_clk_frac_sc *sc; + uint64_t cur, best, best_frac; + uint32_t val, m, n, best_m, best_n; + int retry; + + sc = clknode_get_softc(clk); + + best = best_frac = cur = 0; + + if (*fout == sc->frac.freq0) + best = best_frac = sc->frac.freq0; + else if (*fout == sc->frac.freq1) + best = best_frac = sc->frac.freq1; + else + best = aw_clk_frac_find_best(sc, fparent, fout, + &best_n, &best_m); + + if ((flags & CLK_SET_DRYRUN) != 0) { + *fout = best; + *stop = 1; + return (0); + } + + if ((best < *fout) && + ((flags & CLK_SET_ROUND_DOWN) == 0)) { + *stop = 1; + return (ERANGE); + } + if ((best > *fout) && + ((flags & CLK_SET_ROUND_UP) == 0)) { + *stop = 1; + return (ERANGE); + } + + DEVICE_LOCK(clk); + READ4(clk, sc->offset, &val); + /* Disable clock during freq changes */ + val &= ~(1 << sc->gate_shift); + WRITE4(clk, sc->offset, val); + + if (best_frac != 0) { + val &= ~sc->frac.mode_sel; + /* M should be 0 per the manual */ + val &= ~sc->m.mask; + if (best_frac == sc->frac.freq0) + val &= ~sc->frac.freq_sel; + else + val |= sc->frac.freq_sel; + } else { + val |= sc->frac.mode_sel; /* Select integer mode */ + n = aw_clk_factor_get_value(&sc->n, best_n); + m = aw_clk_factor_get_value(&sc->m, best_m); + val &= ~sc->n.mask; + val &= ~sc->m.mask; + val |= n << sc->n.shift; + val |= m << sc->m.shift; + } + + /* Write the clock changes */ + WRITE4(clk, sc->offset, val); + + /* Enable clock now that we've change it */ + val |= 1 << sc->gate_shift; + WRITE4(clk, sc->offset, val); + DEVICE_UNLOCK(clk); + + for (retry = 0; retry < sc->lock_retries; retry++) { + READ4(clk, sc->offset, &val); + if ((val & (1 << sc->lock_shift)) != 0) + break; + DELAY(1000); + } + + *fout = best; + *stop = 1; + + return (0); +} + +static int +aw_clk_frac_recalc(struct clknode *clk, uint64_t *freq) +{ + struct aw_clk_frac_sc *sc; + uint32_t val, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(clk); + READ4(clk, sc->offset, &val); + DEVICE_UNLOCK(clk); + + if ((val & sc->frac.mode_sel) == 0) { + if (val & sc->frac.freq_sel) + *freq = sc->frac.freq1; + else + *freq = sc->frac.freq0; + } else { + m = aw_clk_get_factor(val, &sc->m); + n = aw_clk_get_factor(val, &sc->n); + + *freq = *freq * n / m; + } + + return (0); +} + +static clknode_method_t aw_frac_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_clk_frac_init), + CLKNODEMETHOD(clknode_set_gate, aw_clk_frac_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_clk_frac_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_clk_frac_recalc), + CLKNODEMETHOD(clknode_set_freq, aw_clk_frac_set_freq), + CLKNODEMETHOD_END +}; + +DEFINE_CLASS_1(aw_frac_clknode, aw_frac_clknode_class, aw_frac_clknode_methods, + sizeof(struct aw_clk_frac_sc), clknode_class); + +int +aw_clk_frac_register(struct clkdom *clkdom, struct aw_clk_frac_def *clkdef) +{ + struct clknode *clk; + struct aw_clk_frac_sc *sc; + + clk = clknode_create(clkdom, &aw_frac_clknode_class, &clkdef->clkdef); + if (clk == NULL) + return (1); + + sc = clknode_get_softc(clk); + + sc->offset = clkdef->offset; + + sc->m.shift = clkdef->m.shift; + sc->m.width = clkdef->m.width; + sc->m.mask = ((1 << sc->m.width) - 1) << sc->m.shift; + sc->m.value = clkdef->m.value; + sc->m.flags = clkdef->m.flags; + + sc->n.shift = clkdef->n.shift; + sc->n.width = clkdef->n.width; + sc->n.mask = ((1 << sc->n.width) - 1) << sc->n.shift; + sc->n.value = clkdef->n.value; + sc->n.flags = clkdef->n.flags; + + sc->frac.freq0 = clkdef->frac.freq0; + sc->frac.freq1 = clkdef->frac.freq1; + sc->frac.mode_sel = 1 << clkdef->frac.mode_sel; + sc->frac.freq_sel = 1 << clkdef->frac.freq_sel; + + sc->mux_shift = clkdef->mux_shift; + sc->mux_mask = ((1 << clkdef->mux_width) - 1) << sc->mux_shift; + + sc->gate_shift = clkdef->gate_shift; + + sc->lock_shift = clkdef->lock_shift; + sc->lock_retries = clkdef->lock_retries; + + sc->flags = clkdef->flags; + + clknode_register(clkdom, clk); + + return (0); +} Copied: stable/12/sys/arm/allwinner/clkng/aw_clk_frac.h (from r348182, head/sys/arm/allwinner/clkng/aw_clk_frac.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm/allwinner/clkng/aw_clk_frac.h Tue Aug 6 12:19:09 2019 (r350629, copy of r348182, head/sys/arm/allwinner/clkng/aw_clk_frac.h) @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2019 Emmanuel Vadot + * + * 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. + * + * $FreeBSD$ + */ + +#ifndef __AW_CLK_FRAC_H__ +#define __AW_CLK_FRAC_H__ + +#include + +struct aw_clk_frac_def { + struct clknode_init_def clkdef; + uint32_t offset; + + struct aw_clk_factor m; + struct aw_clk_factor n; + struct aw_clk_frac frac; + + uint32_t mux_shift; + uint32_t mux_width; + uint32_t gate_shift; + uint32_t lock_shift; + uint32_t lock_retries; + + uint32_t flags; +}; + +int aw_clk_frac_register(struct clkdom *clkdom, struct aw_clk_frac_def *clkdef); + +#endif /* __AW_CLK_FRAC_H__ */ Modified: stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/aw_clk_nm.c Tue Aug 6 12:19:09 2019 (r350629) @@ -53,7 +53,6 @@ struct aw_clk_nm_sc { struct aw_clk_factor m; struct aw_clk_factor n; struct aw_clk_factor prediv; - struct aw_clk_frac frac; uint32_t mux_shift; uint32_t mux_mask; @@ -182,13 +181,13 @@ aw_clk_nm_set_freq(struct clknode *clk, uint64_t fpare struct aw_clk_nm_sc *sc; struct clknode *p_clk; const char **p_names; - uint64_t cur, best, best_frac; + uint64_t cur, best; uint32_t val, m, n, best_m, best_n; int p_idx, best_parent, retry; sc = clknode_get_softc(clk); - best = best_frac = cur = 0; + best = cur = 0; best_parent = 0; if ((sc->flags & AW_CLK_REPARENT) != 0) { @@ -210,13 +209,8 @@ aw_clk_nm_set_freq(struct clknode *clk, uint64_t fpare p_clk = clknode_get_parent(clk); clknode_get_freq(p_clk, &fparent); } else { - if (sc->flags & AW_CLK_HAS_FRAC && - (*fout == sc->frac.freq0 || *fout == sc->frac.freq1)) - best = best_frac = *fout; - - if (best == 0) - best = aw_clk_nm_find_best(sc, fparent, fout, - &best_n, &best_m); + best = aw_clk_nm_find_best(sc, fparent, fout, + &best_n, &best_m); } if ((flags & CLK_SET_DRYRUN) != 0) { @@ -242,20 +236,12 @@ aw_clk_nm_set_freq(struct clknode *clk, uint64_t fpare DEVICE_LOCK(clk); READ4(clk, sc->offset, &val); - if (best_frac != 0) { - val &= ~sc->frac.mode_sel; - if (best_frac == sc->frac.freq0) - val &= ~sc->frac.freq_sel; - else - val |= sc->frac.freq_sel; - } else { - n = aw_clk_factor_get_value(&sc->n, best_n); - m = aw_clk_factor_get_value(&sc->m, best_m); - val &= ~sc->n.mask; - val &= ~sc->m.mask; - val |= n << sc->n.shift; - val |= m << sc->m.shift; - } + n = aw_clk_factor_get_value(&sc->n, best_n); + m = aw_clk_factor_get_value(&sc->m, best_m); + val &= ~sc->n.mask; + val &= ~sc->m.mask; + val |= n << sc->n.shift; + val |= m << sc->m.shift; WRITE4(clk, sc->offset, val); DEVICE_UNLOCK(clk); @@ -287,25 +273,14 @@ aw_clk_nm_recalc(struct clknode *clk, uint64_t *freq) READ4(clk, sc->offset, &val); DEVICE_UNLOCK(clk); - if (sc->flags & AW_CLK_HAS_FRAC && ((val & sc->frac.mode_sel) == 0)) { - if (val & sc->frac.freq_sel) - *freq = sc->frac.freq1; - else - *freq = sc->frac.freq0; - } else { - m = aw_clk_get_factor(val, &sc->m); - n = aw_clk_get_factor(val, &sc->n); - if (sc->flags & AW_CLK_HAS_PREDIV) - prediv = aw_clk_get_factor(val, &sc->prediv); - else - prediv = 1; + m = aw_clk_get_factor(val, &sc->m); + n = aw_clk_get_factor(val, &sc->n); + if (sc->flags & AW_CLK_HAS_PREDIV) + prediv = aw_clk_get_factor(val, &sc->prediv); + else + prediv = 1; - /* For FRAC NM the formula is freq_parent * n / m */ - if (sc->flags & AW_CLK_HAS_FRAC) - *freq = *freq * n / m; - else - *freq = *freq / prediv / n / m; - } + *freq = *freq / prediv / n / m; return (0); } @@ -360,11 +335,6 @@ aw_clk_nm_register(struct clkdom *clkdom, struct aw_cl else sc->prediv.cond_mask = clkdef->prediv.cond_mask; sc->prediv.cond_value = clkdef->prediv.cond_value; - - sc->frac.freq0 = clkdef->frac.freq0; - sc->frac.freq1 = clkdef->frac.freq1; - sc->frac.mode_sel = 1 << clkdef->frac.mode_sel; - sc->frac.freq_sel = 1 << clkdef->frac.freq_sel; sc->mux_shift = clkdef->mux_shift; sc->mux_mask = ((1 << clkdef->mux_width) - 1) << sc->mux_shift; Modified: stable/12/sys/arm/allwinner/clkng/aw_clk_nm.h ============================================================================== --- stable/12/sys/arm/allwinner/clkng/aw_clk_nm.h Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/aw_clk_nm.h Tue Aug 6 12:19:09 2019 (r350629) @@ -38,7 +38,6 @@ struct aw_clk_nm_def { struct aw_clk_factor m; struct aw_clk_factor n; struct aw_clk_factor prediv; - struct aw_clk_frac frac; uint32_t mux_shift; uint32_t mux_width; Modified: stable/12/sys/arm/allwinner/clkng/ccu_a10.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_a10.c Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/ccu_a10.c Tue Aug 6 12:19:09 2019 (r350629) @@ -212,7 +212,7 @@ NKMP_CLK(pll_core_clk, 0, 0, /* lock */ AW_CLK_HAS_GATE); /* flags */ -NM_CLK_WITH_FRAC(pll_video0_clk, +FRAC_CLK(pll_video0_clk, CLK_PLL_VIDEO0, /* id */ "pll_video0", pll_parents, /* name, parents */ 0x10, /* offset */ @@ -231,7 +231,7 @@ FIXED_CLK(pll_video0_2x_clk, 1, /* div */ 0); /* flags */ -NM_CLK_WITH_FRAC(pll_video1_clk, +FRAC_CLK(pll_video1_clk, CLK_PLL_VIDEO1, /* id */ "pll_video1", pll_parents, /* name, parents */ 0x30, /* offset */ @@ -537,8 +537,8 @@ static struct aw_ccung_clk a10_ccu_clks[] = { { .type = AW_CLK_NM, .clk.nm = &ahb_clk}, { .type = AW_CLK_NM, .clk.nm = &apb0_clk}, { .type = AW_CLK_NM, .clk.nm = &apb1_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_video0_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_video1_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_video0_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_video1_clk}, { .type = AW_CLK_NM, .clk.nm = &nand_clk}, { .type = AW_CLK_NM, .clk.nm = &ms_clk}, { .type = AW_CLK_NM, .clk.nm = &mmc0_clk}, Modified: stable/12/sys/arm/allwinner/clkng/ccu_a31.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_a31.c Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/ccu_a31.c Tue Aug 6 12:19:09 2019 (r350629) @@ -293,7 +293,7 @@ FIXED_CLK(pll_audio_8x_clk, 1, /* div */ 0); /* flags */ -NM_CLK_WITH_FRAC(pll_video0_clk, +FRAC_CLK(pll_video0_clk, CLK_PLL_VIDEO0, /* id */ "pll_video0", pll_parents, /* name, parents */ 0x10, /* offset */ @@ -314,7 +314,7 @@ FIXED_CLK(pll_video0_2x_clk, 1, /* div */ 0); /* flags */ -NM_CLK_WITH_FRAC(pll_ve_clk, +FRAC_CLK(pll_ve_clk, CLK_PLL_VE, /* id */ "pll_ve", pll_parents, /* name, parents */ 0x18, /* offset */ @@ -360,7 +360,7 @@ FIXED_CLK(pll_periph_2x_clk, 1, /* div */ 0); /* flags */ -NM_CLK_WITH_FRAC(pll_video1_clk, +FRAC_CLK(pll_video1_clk, CLK_PLL_VIDEO1, /* id */ "pll_video1", pll_parents, /* name, parents */ 0x30, /* offset */ @@ -381,7 +381,7 @@ FIXED_CLK(pll_video1_2x_clk, 1, /* div */ 0); /* flags */ -NM_CLK_WITH_FRAC(pll_gpu_clk, +FRAC_CLK(pll_gpu_clk, CLK_PLL_GPU, /* id */ "pll_gpu", pll_parents, /* name, parents */ 0x38, /* offset */ @@ -405,7 +405,7 @@ NKMP_CLK(pll_mipi_clk, 28, 1000, /* lock */ AW_CLK_HAS_GATE | AW_CLK_HAS_LOCK); /* flags */ -NM_CLK_WITH_FRAC(pll9_clk, +FRAC_CLK(pll9_clk, CLK_PLL9, /* id */ "pll9", pll_parents, /* name, parents */ 0x44, /* offset */ @@ -416,7 +416,7 @@ NM_CLK_WITH_FRAC(pll9_clk, 270000000, 297000000, /* freq0, freq1 */ 24, 25); /* mode sel, freq sel */ -NM_CLK_WITH_FRAC(pll10_clk, +FRAC_CLK(pll10_clk, CLK_PLL10, /* id */ "pll10", pll_parents, /* name, parents */ 0x48, /* offset */ @@ -869,12 +869,12 @@ static struct aw_ccung_clk a31_ccu_clks[] = { { .type = AW_CLK_NKMP, .clk.nkmp = &pll_periph_clk}, { .type = AW_CLK_NKMP, .clk.nkmp = &pll_ddr_clk}, { .type = AW_CLK_NKMP, .clk.nkmp = &pll_mipi_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_video0_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_ve_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_video1_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_gpu_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll9_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll10_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_video0_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_ve_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_video1_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_gpu_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll9_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll10_clk}, { .type = AW_CLK_NM, .clk.nm = &apb2_clk}, { .type = AW_CLK_NM, .clk.nm = &nand0_clk}, { .type = AW_CLK_NM, .clk.nm = &nand1_clk}, Modified: stable/12/sys/arm/allwinner/clkng/ccu_a64.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_a64.c Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/ccu_a64.c Tue Aug 6 12:19:09 2019 (r350629) @@ -279,7 +279,7 @@ FIXED_CLK(pll_audio_8x_clk, 0); /* flags */ static const char *pll_video0_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_video0_clk, +FRAC_CLK(pll_video0_clk, CLK_PLL_VIDEO0, /* id */ "pll_video0", pll_video0_parents, /* name, parents */ 0x10, /* offset */ @@ -300,7 +300,7 @@ FIXED_CLK(pll_video0_2x_clk, 0); /* flags */ static const char *pll_ve_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_ve_clk, +FRAC_CLK(pll_ve_clk, CLK_PLL_VE, /* id */ "pll_ve", pll_ve_parents, /* name, parents */ 0x18, /* offset */ @@ -370,7 +370,7 @@ FIXED_CLK(pll_periph1_clk, 0); /* flags */ static const char *pll_video1_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_video1_clk, +FRAC_CLK(pll_video1_clk, CLK_PLL_VIDEO1, /* id */ "pll_video1", pll_video1_parents, /* name, parents */ 0x30, /* offset */ @@ -382,7 +382,7 @@ NM_CLK_WITH_FRAC(pll_video1_clk, 24, 25); /* mode sel, freq sel */ static const char *pll_gpu_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_gpu_clk, +FRAC_CLK(pll_gpu_clk, CLK_PLL_GPU, /* id */ "pll_gpu", pll_gpu_parents, /* name, parents */ 0x38, /* offset */ @@ -396,7 +396,7 @@ NM_CLK_WITH_FRAC(pll_gpu_clk, /* PLL MIPI is missing */ static const char *pll_hsic_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_hsic_clk, +FRAC_CLK(pll_hsic_clk, CLK_PLL_HSIC, /* id */ "pll_hsic", pll_hsic_parents, /* name, parents */ 0x44, /* offset */ @@ -408,7 +408,7 @@ NM_CLK_WITH_FRAC(pll_hsic_clk, 24, 25); /* mode sel, freq sel */ static const char *pll_de_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_de_clk, +FRAC_CLK(pll_de_clk, CLK_PLL_DE, /* id */ "pll_de", pll_de_parents, /* name, parents */ 0x48, /* offset */ @@ -723,16 +723,18 @@ NM_CLK(gpu_clk, static struct aw_ccung_clk a64_ccu_clks[] = { { .type = AW_CLK_NKMP, .clk.nkmp = &pll_cpux_clk}, { .type = AW_CLK_NKMP, .clk.nkmp = &pll_audio_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_video0_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_ve_clk}, + { .type = AW_CLK_NKMP, .clk.nkmp = &pll_ddr0_clk}, { .type = AW_CLK_NKMP, .clk.nkmp = &pll_periph0_2x_clk}, { .type = AW_CLK_NKMP, .clk.nkmp = &pll_periph1_2x_clk}, - { .type = AW_CLK_NKMP, .clk.nkmp = &pll_ddr0_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_video1_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_gpu_clk}, + /* PLL_MIPI */ + { .type = AW_CLK_FRAC, .clk.frac = &pll_hsic_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_de_clk}, { .type = AW_CLK_NKMP, .clk.nkmp = &pll_ddr1_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_video0_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_video1_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_ve_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_gpu_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_de_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_hsic_clk}, + { .type = AW_CLK_NM, .clk.nm = &apb2_clk}, { .type = AW_CLK_NM, .clk.nm = &nand_clk}, { .type = AW_CLK_NM, .clk.nm = &mmc0_clk}, Modified: stable/12/sys/arm/allwinner/clkng/ccu_h3.c ============================================================================== --- stable/12/sys/arm/allwinner/clkng/ccu_h3.c Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/clkng/ccu_h3.c Tue Aug 6 12:19:09 2019 (r350629) @@ -297,7 +297,7 @@ FIXED_CLK(pll_audio_8x_clk, 0); /* flags */ static const char *pll_video_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_video_clk, +FRAC_CLK(pll_video_clk, CLK_PLL_VIDEO, /* id */ "pll_video", pll_video_parents, /* name, parents */ 0x10, /* offset */ @@ -309,7 +309,7 @@ NM_CLK_WITH_FRAC(pll_video_clk, 24, 25); /* mode sel, freq sel */ static const char *pll_ve_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_ve_clk, +FRAC_CLK(pll_ve_clk, CLK_PLL_VE, /* id */ "pll_ve", pll_ve_parents, /* name, parents */ 0x18, /* offset */ @@ -357,7 +357,7 @@ FIXED_CLK(pll_periph0_2x_clk, 0); /* flags */ static const char *pll_gpu_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_gpu_clk, +FRAC_CLK(pll_gpu_clk, CLK_PLL_GPU, /* id */ "pll_gpu", pll_gpu_parents, /* name, parents */ 0x38, /* offset */ @@ -382,7 +382,7 @@ NKMP_CLK(pll_periph1_clk, AW_CLK_HAS_GATE | AW_CLK_HAS_LOCK); /* flags */ static const char *pll_de_parents[] = {"osc24M"}; -NM_CLK_WITH_FRAC(pll_de_clk, +FRAC_CLK(pll_de_clk, CLK_PLL_DE, /* id */ "pll_de", pll_de_parents, /* name, parents */ 0x48, /* offset */ @@ -684,10 +684,10 @@ static struct aw_ccung_clk h3_ccu_clks[] = { { .type = AW_CLK_NKMP, .clk.nkmp = &pll_periph0_clk}, { .type = AW_CLK_NKMP, .clk.nkmp = &pll_periph1_clk}, { .type = AW_CLK_NKMP, .clk.nkmp = &pll_ddr_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_video_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_ve_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_gpu_clk}, - { .type = AW_CLK_NM, .clk.nm = &pll_de_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_video_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_ve_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_gpu_clk}, + { .type = AW_CLK_FRAC, .clk.frac = &pll_de_clk}, { .type = AW_CLK_NM, .clk.nm = &apb2_clk}, { .type = AW_CLK_NM, .clk.nm = &nand_clk}, { .type = AW_CLK_NM, .clk.nm = &mmc0_clk}, Modified: stable/12/sys/arm/allwinner/files.allwinner ============================================================================== --- stable/12/sys/arm/allwinner/files.allwinner Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/arm/allwinner/files.allwinner Tue Aug 6 12:19:09 2019 (r350629) @@ -36,6 +36,7 @@ arm/allwinner/aw_ccu.c standard arm/allwinner/aw_gmacclk.c standard arm/allwinner/clkng/aw_ccung.c standard +arm/allwinner/clkng/aw_clk_frac.c standard arm/allwinner/clkng/aw_clk_nkmp.c standard arm/allwinner/clkng/aw_clk_nm.c standard arm/allwinner/clkng/aw_clk_prediv_mux.c standard Modified: stable/12/sys/conf/files.arm64 ============================================================================== --- stable/12/sys/conf/files.arm64 Tue Aug 6 12:12:29 2019 (r350628) +++ stable/12/sys/conf/files.arm64 Tue Aug 6 12:19:09 2019 (r350629) @@ -49,6 +49,7 @@ arm/allwinner/if_awg.c optional awg ext_resources sys # Allwinner clock driver arm/allwinner/clkng/aw_ccung.c optional aw_ccu fdt +arm/allwinner/clkng/aw_clk_frac.c optional aw_ccu fdt arm/allwinner/clkng/aw_clk_nkmp.c optional aw_ccu fdt arm/allwinner/clkng/aw_clk_nm.c optional aw_ccu fdt arm/allwinner/clkng/aw_clk_prediv_mux.c optional aw_ccu fdt From owner-svn-src-stable@freebsd.org Tue Aug 6 12:31:40 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1C6CEC1586; Tue, 6 Aug 2019 12:31:40 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 462vBy4Pvjz40Wv; Tue, 6 Aug 2019 12:31:38 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.86 (FreeBSD)) (envelope-from ) id 1huych-000NlR-6o; Tue, 06 Aug 2019 15:31:27 +0300 Date: Tue, 6 Aug 2019 15:31:27 +0300 From: Slawa Olhovchenkov To: Baptiste Daroussin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: Re: svn commit: r350402 - stable/11/cddl/contrib/opensolaris/lib/libzfs/common Message-ID: <20190806123127.GM47119@zxy.spb.ru> References: <201907290823.x6T8NFAu064976@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201907290823.x6T8NFAu064976@repo.freebsd.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-Rspamd-Queue-Id: 462vBy4Pvjz40Wv X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of slw@zxy.spb.ru has no SPF policy when checking 195.70.199.98) smtp.mailfrom=slw@zxy.spb.ru X-Spamd-Result: default: False [0.93 / 15.00]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; DMARC_NA(0.00)[zxy.spb.ru]; AUTH_NA(1.00)[]; RCPT_COUNT_FIVE(0.00)[5]; NEURAL_SPAM_MEDIUM(0.33)[0.334,0]; IP_SCORE(0.00)[country: RU(0.01)]; NEURAL_HAM_SHORT(-0.46)[-0.461,0]; NEURAL_SPAM_LONG(0.16)[0.161,0]; R_SPF_NA(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:5495, ipnet:195.70.192.0/19, country:RU]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 12:31:40 -0000 On Mon, Jul 29, 2019 at 08:23:15AM +0000, Baptiste Daroussin wrote: still broken: # ls -l /poudriere/ports/default ls: /poudriere/ports/default: No such file or directory # zfs list NAME USED AVAIL REFER MOUNTPOINT DB 256G 643G 96K /DB DB/var 255G 643G 96K /DB/var DB/var/db 255G 643G 96K /DB/var/db DB/var/db/mysql 255G 643G 255G /var/db/mysql DB/var/db/mysql/MyISAM 96K 643G 96K /var/db/mysql/MyISAM DB/var/db/mysql/innodb-logs 128M 643G 128M /var/db/mysql/innodb-logs zroot 2.94T 551G 112K /ZROOT zroot/ROOT 352M 551G 352M / zroot/home 144K 551G 144K legacy zroot/poudriere 5.41G 551G 128K /poudriere zroot/poudriere/data 608M 551G 608M /poudriere/data zroot/poudriere/jails 2.71G 551G 128K /poudriere/jails zroot/poudriere/jails/10amd64 2.71G 551G 2.71G /poudriere/jails/10amd64 zroot/poudriere/ports 2.10G 551G 96K /poudriere/ports zroot/poudriere/ports/default 2.10G 551G 2.10G /poudriere/ports/default zroot/tmp 6.94G 551G 6.94G /tmp zroot/usr 630G 551G 57.0G /usr zroot/usr/local 543G 551G 543G /usr/local zroot/usr/obj 19.2G 551G 19.2G /usr/obj zroot/usr/ports 4.80G 551G 1.07G /usr/ports zroot/usr/ports/distfiles 3.72G 551G 3.72G /usr/ports/distfiles zroot/usr/ports/packages 7.04M 551G 7.04M /usr/ports/packages zroot/usr/src 5.51G 551G 5.51G /usr/src zroot/var 345G 551G 1.10G /var zroot/var/crash 148K 551G 148K /var/crash zroot/var/db 58.4G 551G 3.92G /var/db zroot/var/db/mysql 54.4G 551G 54.2G /var/db/mysql zroot/var/db/mysql/MyISAM 144K 551G 144K /var/db/mysql/MyISAM zroot/var/db/mysql/innodb-logs 128M 551G 128M /var/db/mysql/innodb-logs zroot/var/db/pkg 69.6M 551G 69.6M /var/db/pkg zroot/var/empty 144K 551G 144K /var/empty zroot/var/log 248G 551G 248G /var/log zroot/var/mail 148K 551G 148K /var/mail zroot/var/run 444K 551G 444K /var/run zroot/var/spool 37.3G 551G 37.3G /var/spool zroot/var/tmp 548K 551G 548K /var/tmp zroot/www 1.98T 551G 160K /www zroot/www/dev0 1.59G 551G 1.59G /www/dev0 zroot/www/dev1 1.48G 551G 1.48G /www/dev1 zroot/www/dev2 1.48G 551G 1.48G /www/dev2 zroot/www/dev3 1.59G 551G 1.59G /www/dev3 zroot/www/dev4 1.49G 551G 1.49G /www/dev4 zroot/www/dev5 1.47G 551G 1.47G /www/dev5 zroot/www/komandirovka 186G 551G 30.9G /www/komandirovka zroot/www/komandirovka_old 1.79T 551G 1.79T /www/komandirovka_old > Author: bapt > Date: Mon Jul 29 08:23:15 2019 > New Revision: 350402 > URL: https://svnweb.freebsd.org/changeset/base/350402 > > Log: > MFC r350358: > > Fix a bug introduced with parallel mounting of zfs > > Incorporate a fix from zol: > https://github.com/zfsonlinux/zfs/commit/ab5036df1ccbe1b18c1ce6160b5829e8039d94ce > > commit log from upstream: > Fix race in parallel mount's thread dispatching algorithm > > Strategy of parallel mount is as follows. > > 1) Initial thread dispatching is to select sets of mount points that > don't have dependencies on other sets, hence threads can/should run > lock-less and shouldn't race with other threads for other sets. Each > thread dispatched corresponds to top level directory which may or may > not have datasets to be mounted on sub directories. > > 2) Subsequent recursive thread dispatching for each thread from 1) > is to mount datasets for each set of mount points. The mount points > within each set have dependencies (i.e. child directories), so child > directories are processed only after parent directory completes. > > The problem is that the initial thread dispatching in > zfs_foreach_mountpoint() can be multi-threaded when it needs to be > single-threaded, and this puts threads under race condition. This race > appeared as mount/unmount issues on ZoL for ZoL having different > timing regarding mount(2) execution due to fork(2)/exec(2) of mount(8). > `zfs unmount -a` which expects proper mount order can't unmount if the > mounts were reordered by the race condition. > > There are currently two known patterns of input list `handles` in > `zfs_foreach_mountpoint(..,handles,..)` which cause the race condition. > > 1) #8833 case where input is `/a /a /a/b` after sorting. > The problem is that libzfs_path_contains() can't correctly handle an > input list with two same top level directories. > There is a race between two POSIX threads A and B, > * ThreadA for "/a" for test1 and "/a/b" > * ThreadB for "/a" for test0/a > and in case of #8833, ThreadA won the race. Two threads were created > because "/a" wasn't considered as `"/a" contains "/a"`. > > 2) #8450 case where input is `/ /var/data /var/data/test` after sorting. > The problem is that libzfs_path_contains() can't correctly handle an > input list containing "/". > There is a race between two POSIX threads A and B, > * ThreadA for "/" and "/var/data/test" > * ThreadB for "/var/data" > and in case of #8450, ThreadA won the race. Two threads were created > because "/var/data" wasn't considered as `"/" contains "/var/data"`. > In other words, if there is (at least one) "/" in the input list, > the initial thread dispatching must be single-threaded since every > directory is a child of "/", meaning they all directly or indirectly > depend on "/". > > In both cases, the first non_descendant_idx() call fails to correctly > determine "path1-contains-path2", and as a result the initial thread > dispatching creates another thread when it needs to be single-threaded. > Fix a conditional in libzfs_path_contains() to consider above two. > > Reviewed-by: Brian Behlendorf > Reviewed by: Sebastien Roy > Signed-off-by: Tomohiro Kusumi > > PR: 237517, 237397, 239243 > Submitted by: Matthew D. Fuller (by email) > > Modified: > stable/11/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c > Directory Properties: > stable/11/ (props changed) > > Modified: stable/11/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c > ============================================================================== > --- stable/11/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c Mon Jul 29 08:14:35 2019 (r350401) > +++ stable/11/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c Mon Jul 29 08:23:15 2019 (r350402) > @@ -1281,12 +1281,14 @@ mountpoint_cmp(const void *arga, const void *argb) > } > > /* > - * Reutrn true if path2 is a child of path1 > + * Return true if path2 is a child of path1 or path2 equals path1 or > + * path1 is "/" (path2 is always a child of "/"). > */ > static boolean_t > libzfs_path_contains(const char *path1, const char *path2) > { > - return (strstr(path2, path1) == path2 && path2[strlen(path1)] == '/'); > + return (strcmp(path1, path2) == 0 || strcmp(path1, "/") == 0 || > + (strstr(path2, path1) == path2 && path2[strlen(path1)] == '/')); > } > > > _______________________________________________ > svn-src-all@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/svn-src-all > To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" From owner-svn-src-stable@freebsd.org Tue Aug 6 17:15:47 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 222E3C606A; Tue, 6 Aug 2019 17:15:47 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4631Vq04rJz4FMx; Tue, 6 Aug 2019 17:15:47 +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 D87EA2F2F5; Tue, 6 Aug 2019 17:15:46 +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 x76HFkiK044210; Tue, 6 Aug 2019 17:15:46 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76HFkgR044209; Tue, 6 Aug 2019 17:15:46 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201908061715.x76HFkgR044209@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 6 Aug 2019 17:15:46 +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: r350650 - stable/11/sys/netinet6 X-SVN-Group: stable-11 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/11/sys/netinet6 X-SVN-Commit-Revision: 350650 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 17:15:47 -0000 Author: emaste Date: Tue Aug 6 17:15:46 2019 New Revision: 350650 URL: https://svnweb.freebsd.org/changeset/base/350650 Log: MFC r350645: Correct ICMPv6/MLDv2 out-of-bounds memory access Previously the ICMPv6 input path incorrectly handled cases where an MLDv2 listener query packet was internally fragmented across multiple mbufs. admbugs: 921 Submitted by: jtl Reported by: CJD of Apple Approved by: so MFC after: 0 minutes Security: CVE-2019-5608 Modified: stable/11/sys/netinet6/mld6.c Modified: stable/11/sys/netinet6/mld6.c ============================================================================== --- stable/11/sys/netinet6/mld6.c Tue Aug 6 17:14:09 2019 (r350649) +++ stable/11/sys/netinet6/mld6.c Tue Aug 6 17:15:46 2019 (r350650) @@ -137,14 +137,15 @@ static int mld_v2_enqueue_group_record(struct mbufq *, struct in6_multi *, const int, const int, const int, const int); static int mld_v2_input_query(struct ifnet *, const struct ip6_hdr *, - struct mbuf *, const int, const int); + struct mbuf *, struct mldv2_query *, const int, const int); static int mld_v2_merge_state_changes(struct in6_multi *, struct mbufq *); static void mld_v2_process_group_timers(struct mld_ifsoftc *, struct mbufq *, struct mbufq *, struct in6_multi *, const int); static int mld_v2_process_group_query(struct in6_multi *, - struct mld_ifsoftc *mli, int, struct mbuf *, const int); + struct mld_ifsoftc *mli, int, struct mbuf *, + struct mldv2_query *, const int); static int sysctl_mld_gsr(SYSCTL_HANDLER_ARGS); static int sysctl_mld_ifinfo(SYSCTL_HANDLER_ARGS); @@ -794,16 +795,16 @@ mld_v1_update_group(struct in6_multi *inm, const int t * Process a received MLDv2 general, group-specific or * group-and-source-specific query. * - * Assumes that the query header has been pulled up to sizeof(mldv2_query). + * Assumes that mld points to a struct mldv2_query which is stored in + * contiguous memory. * * Return 0 if successful, otherwise an appropriate error code is returned. */ static int mld_v2_input_query(struct ifnet *ifp, const struct ip6_hdr *ip6, - struct mbuf *m, const int off, const int icmp6len) + struct mbuf *m, struct mldv2_query *mld, const int off, const int icmp6len) { struct mld_ifsoftc *mli; - struct mldv2_query *mld; struct in6_multi *inm; uint32_t maxdelay, nsrc, qqi; int is_general_query; @@ -828,8 +829,6 @@ mld_v2_input_query(struct ifnet *ifp, const struct ip6 CTR2(KTR_MLD, "input v2 query on ifp %p(%s)", ifp, if_name(ifp)); - mld = (struct mldv2_query *)(mtod(m, uint8_t *) + off); - maxdelay = ntohs(mld->mld_maxdelay); /* in 1/10ths of a second */ if (maxdelay >= 32768) { maxdelay = (MLD_MRC_MANT(maxdelay) | 0x1000) << @@ -954,7 +953,7 @@ mld_v2_input_query(struct ifnet *ifp, const struct ip6 * group-specific or group-and-source query. */ if (mli->mli_v2_timer == 0 || mli->mli_v2_timer >= timer) - mld_v2_process_group_query(inm, mli, timer, m, off); + mld_v2_process_group_query(inm, mli, timer, m, mld, off); /* XXX Clear embedded scope ID as userland won't expect it. */ in6_clearscope(&mld->mld_addr); @@ -975,9 +974,8 @@ out_locked: */ static int mld_v2_process_group_query(struct in6_multi *inm, struct mld_ifsoftc *mli, - int timer, struct mbuf *m0, const int off) + int timer, struct mbuf *m0, struct mldv2_query *mld, const int off) { - struct mldv2_query *mld; int retval; uint16_t nsrc; @@ -985,7 +983,6 @@ mld_v2_process_group_query(struct in6_multi *inm, stru MLD_LOCK_ASSERT(); retval = 0; - mld = (struct mldv2_query *)(mtod(m0, uint8_t *) + off); switch (inm->in6m_state) { case MLD_NOT_MEMBER: @@ -1005,6 +1002,15 @@ mld_v2_process_group_query(struct in6_multi *inm, stru nsrc = ntohs(mld->mld_numsrc); + /* Length should be checked by calling function. */ + KASSERT((m0->m_flags & M_PKTHDR) == 0 || + m0->m_pkthdr.len >= off + sizeof(struct mldv2_query) + + nsrc * sizeof(struct in6_addr), + ("mldv2 packet is too short: (%d bytes < %zd bytes, m=%p)", + m0->m_pkthdr.len, off + sizeof(struct mldv2_query) + + nsrc * sizeof(struct in6_addr), m0)); + + /* * Deal with group-specific queries upfront. * If any group query is already pending, purge any recorded @@ -1046,28 +1052,20 @@ mld_v2_process_group_query(struct in6_multi *inm, stru * report for those sources. */ if (inm->in6m_nsrc > 0) { - struct mbuf *m; - uint8_t *sp; + struct in6_addr srcaddr; int i, nrecorded; int soff; - m = m0; soff = off + sizeof(struct mldv2_query); nrecorded = 0; for (i = 0; i < nsrc; i++) { - sp = mtod(m, uint8_t *) + soff; - retval = in6m_record_source(inm, - (const struct in6_addr *)sp); + m_copydata(m0, soff, sizeof(struct in6_addr), + (caddr_t)&srcaddr); + retval = in6m_record_source(inm, &srcaddr); if (retval < 0) break; nrecorded += retval; soff += sizeof(struct in6_addr); - if (soff >= m->m_len) { - soff = soff - m->m_len; - m = m->m_next; - if (m == NULL) - break; - } } if (nrecorded > 0) { CTR1(KTR_MLD, @@ -1276,8 +1274,8 @@ mld_input(struct mbuf *m, int off, int icmp6len) if (mld_v1_input_query(ifp, ip6, mld) != 0) return (0); } else if (icmp6len >= sizeof(struct mldv2_query)) { - if (mld_v2_input_query(ifp, ip6, m, off, - icmp6len) != 0) + if (mld_v2_input_query(ifp, ip6, m, + (struct mldv2_query *)mld, off, icmp6len) != 0) return (0); } break; From owner-svn-src-stable@freebsd.org Tue Aug 6 22:36:30 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 208B1B0389; Tue, 6 Aug 2019 22:36:30 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4638ct05B1z3HlL; Tue, 6 Aug 2019 22:36:30 +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 D8D5C2D80; Tue, 6 Aug 2019 22:36:29 +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 x76MaTjj036392; Tue, 6 Aug 2019 22:36:29 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x76MaTUL036391; Tue, 6 Aug 2019 22:36:29 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201908062236.x76MaTUL036391@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 6 Aug 2019 22:36:29 +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: r350660 - stable/11/release/doc/share/xml X-SVN-Group: stable-11 X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: stable/11/release/doc/share/xml X-SVN-Commit-Revision: 350660 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Aug 2019 22:36:30 -0000 Author: gjb Date: Tue Aug 6 22:36:29 2019 New Revision: 350660 URL: https://svnweb.freebsd.org/changeset/base/350660 Log: Document EN-19:14, EN-19:15, SA-19:18-21. Sponsored by: Rubicon Communications, LLC (Netgate) Modified: stable/11/release/doc/share/xml/errata.xml stable/11/release/doc/share/xml/security.xml Modified: stable/11/release/doc/share/xml/errata.xml ============================================================================== --- stable/11/release/doc/share/xml/errata.xml Tue Aug 6 21:50:34 2019 (r350659) +++ stable/11/release/doc/share/xml/errata.xml Tue Aug 6 22:36:29 2019 (r350660) @@ -25,6 +25,13 @@ System crash from Intel CPU vulnerability mitigation + + + FreeBSD-EN-19:15.libunwind + 6 August 2019 + Incorrect exception handling + Modified: stable/11/release/doc/share/xml/security.xml ============================================================================== --- stable/11/release/doc/share/xml/security.xml Tue Aug 6 21:50:34 2019 (r350659) +++ stable/11/release/doc/share/xml/security.xml Tue Aug 6 22:36:29 2019 (r350660) @@ -59,6 +59,36 @@ 24 July 2019 Reference count leak + + + FreeBSD-SA-19:18.bzip2 + 6 August 2019 + Multiple vulnerabilities + + + + FreeBSD-SA-19:19.mldv2 + 6 August 2019 + Out-of-bounds memory access + + + + FreeBSD-SA-19:20.bsnmp + 6 August 2019 + Insufficient message length + validation + + + + FreeBSD-SA-19:21.bhyve + 6 August 2019 + Insufficient validation of guest-supplied + data + From owner-svn-src-stable@freebsd.org Wed Aug 7 01:03:36 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A88D4B8B0B; Wed, 7 Aug 2019 01:03:36 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463Ctc3y1yz40ht; Wed, 7 Aug 2019 01:03:36 +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 692FE4BE0; Wed, 7 Aug 2019 01:03:36 +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 x7713aiK025484; Wed, 7 Aug 2019 01:03:36 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7713aY1025483; Wed, 7 Aug 2019 01:03:36 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201908070103.x7713aY1025483@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 7 Aug 2019 01:03:36 +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: r350667 - in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Commit-Revision: 350667 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 01:03:36 -0000 Author: cy Date: Wed Aug 7 01:03:35 2019 New Revision: 350667 URL: https://svnweb.freebsd.org/changeset/base/350667 Log: MFC r350567: Returning an uninitialized error is a bad thing. Modified: stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c Directory Properties: stable/12/ (props changed) Modified: stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c ============================================================================== --- stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 00:53:27 2019 (r350666) +++ stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 01:03:35 2019 (r350667) @@ -307,7 +307,7 @@ ipf_modunload() printf("%s unloaded\n", ipfilter_version); - return error; + return (0); } From owner-svn-src-stable@freebsd.org Wed Aug 7 01:03:36 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E0898B8B0F; Wed, 7 Aug 2019 01:03:36 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463Ctc5g8bz40hv; Wed, 7 Aug 2019 01:03:36 +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 A420B4BE1; Wed, 7 Aug 2019 01:03:36 +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 x7713adB025490; Wed, 7 Aug 2019 01:03:36 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7713atP025489; Wed, 7 Aug 2019 01:03:36 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201908070103.x7713atP025489@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 7 Aug 2019 01:03:36 +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: r350667 - in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Group: stable-12 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Commit-Revision: 350667 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 01:03:36 -0000 Author: cy Date: Wed Aug 7 01:03:35 2019 New Revision: 350667 URL: https://svnweb.freebsd.org/changeset/base/350667 Log: MFC r350567: Returning an uninitialized error is a bad thing. Modified: stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Directory Properties: stable/11/ (props changed) Modified: stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c ============================================================================== --- stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 00:53:27 2019 (r350666) +++ stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 01:03:35 2019 (r350667) @@ -310,7 +310,7 @@ ipf_modunload() printf("%s unloaded\n", ipfilter_version); - return error; + return (0); } From owner-svn-src-stable@freebsd.org Wed Aug 7 01:08:58 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4CBEDB8FE7; Wed, 7 Aug 2019 01:08:58 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463D0p1J0yz413h; Wed, 7 Aug 2019 01:08:58 +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 09F814BE5; Wed, 7 Aug 2019 01:08:58 +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 x7718vRv025800; Wed, 7 Aug 2019 01:08:57 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7718vpc025799; Wed, 7 Aug 2019 01:08:57 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201908070108.x7718vpc025799@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 7 Aug 2019 01:08:57 +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: r350668 - in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Commit-Revision: 350668 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 01:08:58 -0000 Author: cy Date: Wed Aug 7 01:08:57 2019 New Revision: 350668 URL: https://svnweb.freebsd.org/changeset/base/350668 Log: MFC r350568: Resolve ipfilter kld unload issues related to VNET jails. When the ipfilter kld is loaded, used within VNET jail, and unloaded, then subsequent loading, use, and unloading of another packet filters will cause the subsequently loaded netpfil kld's to panic. The scenario is as follows: cd /usr/tests/sys/netpfil/common kldunload ipl kldunload pfsync kldunload ipfw kyua test pass_block kldload ipl kyua test pass_block kldunload ipl kldload pfsync kyua test pass_block kldunload pfsync -- page fault panic occurs here -- Reported by: "Ahsan Barkati" via kp@ Discussed with: kp@ Tested by: kp@ Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c Directory Properties: stable/12/ (props changed) Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c ============================================================================== --- stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Wed Aug 7 01:03:35 2019 (r350667) +++ stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Wed Aug 7 01:08:57 2019 (r350668) @@ -98,7 +98,10 @@ VNET_DEFINE(ipf_main_softc_t, ipfmain) = { # include # include -static eventhandler_tag ipf_arrivetag, ipf_departtag; +VNET_DEFINE_STATIC(eventhandler_tag, ipf_arrivetag); +VNET_DEFINE_STATIC(eventhandler_tag, ipf_departtag); +#define V_ipf_arrivetag VNET(ipf_arrivetag) +#define V_ipf_departtag VNET(ipf_departtag) #if 0 /* * Disable the "cloner" event handler; we are getting interface @@ -108,7 +111,8 @@ static eventhandler_tag ipf_arrivetag, ipf_departtag; * If it turns out to be needed, well need a dedicated event handler * for it to deal with the ifc and the correct vnet. */ -static eventhandler_tag ipf_clonetag; +VNET_DEFINE_STATIC(eventhandler_tag, ipf_clonetag); +#define V_ipf_clonetag VNET(ipf_clonetag) #endif static void ipf_ifevent(void *arg, struct ifnet *ifp); @@ -1384,14 +1388,14 @@ int ipf_pfil_hook(void) { void ipf_event_reg(void) { - ipf_arrivetag = EVENTHANDLER_REGISTER(ifnet_arrival_event, \ + V_ipf_arrivetag = EVENTHANDLER_REGISTER(ifnet_arrival_event, \ ipf_ifevent, NULL, \ EVENTHANDLER_PRI_ANY); - ipf_departtag = EVENTHANDLER_REGISTER(ifnet_departure_event, \ + V_ipf_departtag = EVENTHANDLER_REGISTER(ifnet_departure_event, \ ipf_ifevent, NULL, \ EVENTHANDLER_PRI_ANY); #if 0 - ipf_clonetag = EVENTHANDLER_REGISTER(if_clone_event, ipf_ifevent, \ + V_ipf_clonetag = EVENTHANDLER_REGISTER(if_clone_event, ipf_ifevent, \ NULL, EVENTHANDLER_PRI_ANY); #endif } @@ -1399,15 +1403,15 @@ ipf_event_reg(void) void ipf_event_dereg(void) { - if (ipf_arrivetag != NULL) { - EVENTHANDLER_DEREGISTER(ifnet_arrival_event, ipf_arrivetag); + if (V_ipf_arrivetag != NULL) { + EVENTHANDLER_DEREGISTER(ifnet_arrival_event, V_ipf_arrivetag); } - if (ipf_departtag != NULL) { - EVENTHANDLER_DEREGISTER(ifnet_departure_event, ipf_departtag); + if (V_ipf_departtag != NULL) { + EVENTHANDLER_DEREGISTER(ifnet_departure_event, V_ipf_departtag); } #if 0 - if (ipf_clonetag != NULL) { - EVENTHANDLER_DEREGISTER(if_clone_event, ipf_clonetag); + if (V_ipf_clonetag != NULL) { + EVENTHANDLER_DEREGISTER(if_clone_event, V_ipf_clonetag); } #endif } Modified: stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c ============================================================================== --- stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 01:03:35 2019 (r350667) +++ stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 01:08:57 2019 (r350668) @@ -280,6 +280,10 @@ vnet_ipf_uninit(void) V_ipfmain.ipf_running = -2; ipf_destroy_all(&V_ipfmain); + if (!IS_DEFAULT_VNET(curvnet)) { + ipf_event_dereg(); + (void)ipf_pfil_unhook(); + } } } VNET_SYSUNINIT(vnet_ipf_uninit, SI_SUB_PROTO_FIREWALL, SI_ORDER_THIRD, From owner-svn-src-stable@freebsd.org Wed Aug 7 01:08:58 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E04BAB8FF4; Wed, 7 Aug 2019 01:08:58 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463D0p5h1xz413k; Wed, 7 Aug 2019 01:08:58 +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 8D2884BE6; Wed, 7 Aug 2019 01:08:58 +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 x7718w8U025808; Wed, 7 Aug 2019 01:08:58 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7718weo025805; Wed, 7 Aug 2019 01:08:58 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201908070108.x7718weo025805@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 7 Aug 2019 01:08: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: r350668 - in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Group: stable-12 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Commit-Revision: 350668 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 01:08:59 -0000 Author: cy Date: Wed Aug 7 01:08:57 2019 New Revision: 350668 URL: https://svnweb.freebsd.org/changeset/base/350668 Log: MFC r350568: Resolve ipfilter kld unload issues related to VNET jails. When the ipfilter kld is loaded, used within VNET jail, and unloaded, then subsequent loading, use, and unloading of another packet filters will cause the subsequently loaded netpfil kld's to panic. The scenario is as follows: cd /usr/tests/sys/netpfil/common kldunload ipl kldunload pfsync kldunload ipfw kyua test pass_block kldload ipl kyua test pass_block kldunload ipl kldload pfsync kyua test pass_block kldunload pfsync -- page fault panic occurs here -- Reported by: "Ahsan Barkati" via kp@ Discussed with: kp@ Tested by: kp@ Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Directory Properties: stable/11/ (props changed) Modified: stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c ============================================================================== --- stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Wed Aug 7 01:03:35 2019 (r350667) +++ stable/12/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Wed Aug 7 01:08:57 2019 (r350668) @@ -98,7 +98,10 @@ VNET_DEFINE(ipf_main_softc_t, ipfmain) = { # include # include -static eventhandler_tag ipf_arrivetag, ipf_departtag; +VNET_DEFINE_STATIC(eventhandler_tag, ipf_arrivetag); +VNET_DEFINE_STATIC(eventhandler_tag, ipf_departtag); +#define V_ipf_arrivetag VNET(ipf_arrivetag) +#define V_ipf_departtag VNET(ipf_departtag) #if 0 /* * Disable the "cloner" event handler; we are getting interface @@ -108,7 +111,8 @@ static eventhandler_tag ipf_arrivetag, ipf_departtag; * If it turns out to be needed, well need a dedicated event handler * for it to deal with the ifc and the correct vnet. */ -static eventhandler_tag ipf_clonetag; +VNET_DEFINE_STATIC(eventhandler_tag, ipf_clonetag); +#define V_ipf_clonetag VNET(ipf_clonetag) #endif static void ipf_ifevent(void *arg, struct ifnet *ifp); @@ -1384,14 +1388,14 @@ int ipf_pfil_hook(void) { void ipf_event_reg(void) { - ipf_arrivetag = EVENTHANDLER_REGISTER(ifnet_arrival_event, \ + V_ipf_arrivetag = EVENTHANDLER_REGISTER(ifnet_arrival_event, \ ipf_ifevent, NULL, \ EVENTHANDLER_PRI_ANY); - ipf_departtag = EVENTHANDLER_REGISTER(ifnet_departure_event, \ + V_ipf_departtag = EVENTHANDLER_REGISTER(ifnet_departure_event, \ ipf_ifevent, NULL, \ EVENTHANDLER_PRI_ANY); #if 0 - ipf_clonetag = EVENTHANDLER_REGISTER(if_clone_event, ipf_ifevent, \ + V_ipf_clonetag = EVENTHANDLER_REGISTER(if_clone_event, ipf_ifevent, \ NULL, EVENTHANDLER_PRI_ANY); #endif } @@ -1399,15 +1403,15 @@ ipf_event_reg(void) void ipf_event_dereg(void) { - if (ipf_arrivetag != NULL) { - EVENTHANDLER_DEREGISTER(ifnet_arrival_event, ipf_arrivetag); + if (V_ipf_arrivetag != NULL) { + EVENTHANDLER_DEREGISTER(ifnet_arrival_event, V_ipf_arrivetag); } - if (ipf_departtag != NULL) { - EVENTHANDLER_DEREGISTER(ifnet_departure_event, ipf_departtag); + if (V_ipf_departtag != NULL) { + EVENTHANDLER_DEREGISTER(ifnet_departure_event, V_ipf_departtag); } #if 0 - if (ipf_clonetag != NULL) { - EVENTHANDLER_DEREGISTER(if_clone_event, ipf_clonetag); + if (V_ipf_clonetag != NULL) { + EVENTHANDLER_DEREGISTER(if_clone_event, V_ipf_clonetag); } #endif } Modified: stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c ============================================================================== --- stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 01:03:35 2019 (r350667) +++ stable/12/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 01:08:57 2019 (r350668) @@ -283,6 +283,10 @@ vnet_ipf_uninit(void) V_ipfmain.ipf_running = -2; ipf_destroy_all(&V_ipfmain); + if (!IS_DEFAULT_VNET(curvnet)) { + ipf_event_dereg(); + (void)ipf_pfil_unhook(); + } } } VNET_SYSUNINIT(vnet_ipf_uninit, SI_SUB_PROTO_FIREWALL, SI_ORDER_THIRD, From owner-svn-src-stable@freebsd.org Wed Aug 7 01:34:41 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EB62AB9CC0; Wed, 7 Aug 2019 01:34:41 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463DZT5zgBz42Zk; Wed, 7 Aug 2019 01:34:41 +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 C40325166; Wed, 7 Aug 2019 01:34:41 +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 x771Yfej043643; Wed, 7 Aug 2019 01:34:41 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x771YflI043640; Wed, 7 Aug 2019 01:34:41 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201908070134.x771YflI043640@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 7 Aug 2019 01:34:41 +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: r350669 - stable/11/sys/contrib/ipfilter/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: stable/11/sys/contrib/ipfilter/netinet X-SVN-Commit-Revision: 350669 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 01:34:42 -0000 Author: cy Date: Wed Aug 7 01:34:41 2019 New Revision: 350669 URL: https://svnweb.freebsd.org/changeset/base/350669 Log: Revert 350668 from stable/11 only. It is not at the level of VNET support. Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Modified: stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c ============================================================================== --- stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Wed Aug 7 01:08:57 2019 (r350668) +++ stable/11/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Wed Aug 7 01:34:41 2019 (r350669) @@ -98,10 +98,7 @@ VNET_DEFINE(ipf_main_softc_t, ipfmain) = { # include # include -VNET_DEFINE_STATIC(eventhandler_tag, ipf_arrivetag); -VNET_DEFINE_STATIC(eventhandler_tag, ipf_departtag); -#define V_ipf_arrivetag VNET(ipf_arrivetag) -#define V_ipf_departtag VNET(ipf_departtag) +static eventhandler_tag ipf_arrivetag, ipf_departtag; #if 0 /* * Disable the "cloner" event handler; we are getting interface @@ -111,8 +108,7 @@ VNET_DEFINE_STATIC(eventhandler_tag, ipf_departtag); * If it turns out to be needed, well need a dedicated event handler * for it to deal with the ifc and the correct vnet. */ -VNET_DEFINE_STATIC(eventhandler_tag, ipf_clonetag); -#define V_ipf_clonetag VNET(ipf_clonetag) +static eventhandler_tag ipf_clonetag; #endif static void ipf_ifevent(void *arg, struct ifnet *ifp); @@ -1388,14 +1384,14 @@ int ipf_pfil_hook(void) { void ipf_event_reg(void) { - V_ipf_arrivetag = EVENTHANDLER_REGISTER(ifnet_arrival_event, \ + ipf_arrivetag = EVENTHANDLER_REGISTER(ifnet_arrival_event, \ ipf_ifevent, NULL, \ EVENTHANDLER_PRI_ANY); - V_ipf_departtag = EVENTHANDLER_REGISTER(ifnet_departure_event, \ + ipf_departtag = EVENTHANDLER_REGISTER(ifnet_departure_event, \ ipf_ifevent, NULL, \ EVENTHANDLER_PRI_ANY); #if 0 - V_ipf_clonetag = EVENTHANDLER_REGISTER(if_clone_event, ipf_ifevent, \ + ipf_clonetag = EVENTHANDLER_REGISTER(if_clone_event, ipf_ifevent, \ NULL, EVENTHANDLER_PRI_ANY); #endif } @@ -1403,15 +1399,15 @@ ipf_event_reg(void) void ipf_event_dereg(void) { - if (V_ipf_arrivetag != NULL) { - EVENTHANDLER_DEREGISTER(ifnet_arrival_event, V_ipf_arrivetag); + if (ipf_arrivetag != NULL) { + EVENTHANDLER_DEREGISTER(ifnet_arrival_event, ipf_arrivetag); } - if (V_ipf_departtag != NULL) { - EVENTHANDLER_DEREGISTER(ifnet_departure_event, V_ipf_departtag); + if (ipf_departtag != NULL) { + EVENTHANDLER_DEREGISTER(ifnet_departure_event, ipf_departtag); } #if 0 - if (V_ipf_clonetag != NULL) { - EVENTHANDLER_DEREGISTER(if_clone_event, V_ipf_clonetag); + if (ipf_clonetag != NULL) { + EVENTHANDLER_DEREGISTER(if_clone_event, ipf_clonetag); } #endif } Modified: stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c ============================================================================== --- stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 01:08:57 2019 (r350668) +++ stable/11/sys/contrib/ipfilter/netinet/mlfk_ipl.c Wed Aug 7 01:34:41 2019 (r350669) @@ -280,10 +280,6 @@ vnet_ipf_uninit(void) V_ipfmain.ipf_running = -2; ipf_destroy_all(&V_ipfmain); - if (!IS_DEFAULT_VNET(curvnet)) { - ipf_event_dereg(); - (void)ipf_pfil_unhook(); - } } } VNET_SYSUNINIT(vnet_ipf_uninit, SI_SUB_PROTO_FIREWALL, SI_ORDER_THIRD, From owner-svn-src-stable@freebsd.org Wed Aug 7 18:16:30 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 84A17B36BB; Wed, 7 Aug 2019 18:16:30 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463fpQ3fJWz46Yp; Wed, 7 Aug 2019 18:16:30 +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 5A469189FE; Wed, 7 Aug 2019 18:16:30 +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 x77IGUb7042537; Wed, 7 Aug 2019 18:16:30 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x77IGTD4042531; Wed, 7 Aug 2019 18:16:29 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908071816.x77IGTD4042531@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Wed, 7 Aug 2019 18:16:29 +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: r350686 - in stable/12/sys: arm64/conf arm64/rockchip arm64/rockchip/clk conf modules/rockchip modules/rockchip/rk805 X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm64/conf arm64/rockchip arm64/rockchip/clk conf modules/rockchip modules/rockchip/rk805 X-SVN-Commit-Revision: 350686 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 18:16:30 -0000 Author: manu Date: Wed Aug 7 18:16:28 2019 New Revision: 350686 URL: https://svnweb.freebsd.org/changeset/base/350686 Log: MFC r341141-r341143, r341255 r341141: rk_clk_composite: Fix set_mux Pointy Hat: manu r341142: Add RK805 PMIC Support RK805 is the companion PMIC for RK3328 SoC. Add a driver for it with most of it's regulators supported. r341143: arm64: Add rk_i2c and rk805 to GENERIC r341255: arm64: rockchip: armclk: Do not change parent freq if CLK_SET_DRYRUN is set Added: stable/12/sys/arm64/rockchip/rk805.c - copied unchanged from r341143, head/sys/arm64/rockchip/rk805.c stable/12/sys/arm64/rockchip/rk805reg.h - copied unchanged from r341143, head/sys/arm64/rockchip/rk805reg.h stable/12/sys/modules/rockchip/rk805/ - copied from r341143, head/sys/modules/rockchip/rk805/ Modified: stable/12/sys/arm64/conf/GENERIC stable/12/sys/arm64/rockchip/clk/rk_clk_armclk.c stable/12/sys/arm64/rockchip/clk/rk_clk_composite.c stable/12/sys/conf/files.arm64 stable/12/sys/modules/rockchip/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm64/conf/GENERIC ============================================================================== --- stable/12/sys/arm64/conf/GENERIC Wed Aug 7 18:14:45 2019 (r350685) +++ stable/12/sys/arm64/conf/GENERIC Wed Aug 7 18:16:28 2019 (r350686) @@ -214,6 +214,7 @@ device iicbus device iic device twsi # Allwinner I2C controller device syr827 # Silergy SYR827 PMIC +device rk_i2c # RockChip I2C controller # Clock and reset controllers device aw_ccu # Allwinner clock controller @@ -232,6 +233,7 @@ device aw_wdog # Allwinner Watchdog # Power management controllers device axp81x # X-Powers AXP81x PMIC +device rk805 # RockChip RK805 PMIC # EFUSE device aw_sid # Allwinner Secure ID EFUSE Modified: stable/12/sys/arm64/rockchip/clk/rk_clk_armclk.c ============================================================================== --- stable/12/sys/arm64/rockchip/clk/rk_clk_armclk.c Wed Aug 7 18:14:45 2019 (r350685) +++ stable/12/sys/arm64/rockchip/clk/rk_clk_armclk.c Wed Aug 7 18:16:28 2019 (r350686) @@ -163,17 +163,17 @@ rk_clk_armclk_set_freq(struct clknode *clk, uint64_t f if (rate == sc->nrates) return (0); - err = clknode_set_freq(p_main, best_p, 0, 1); - if (err != 0) - printf("Cannot set %s to %lu\n", - clknode_get_name(p_main), - best_p); - if ((flags & CLK_SET_DRYRUN) != 0) { *fout = best; *stop = 1; return (0); } + + err = clknode_set_freq(p_main, best_p, 0, 1); + if (err != 0) + printf("Cannot set %s to %lu\n", + clknode_get_name(p_main), + best_p); DEVICE_LOCK(clk); READ4(clk, sc->muxdiv_offset, &val); Modified: stable/12/sys/arm64/rockchip/clk/rk_clk_composite.c ============================================================================== --- stable/12/sys/arm64/rockchip/clk/rk_clk_composite.c Wed Aug 7 18:14:45 2019 (r350685) +++ stable/12/sys/arm64/rockchip/clk/rk_clk_composite.c Wed Aug 7 18:16:28 2019 (r350686) @@ -126,7 +126,7 @@ rk_clk_composite_set_mux(struct clknode *clk, int inde DEVICE_LOCK(clk); READ4(clk, sc->muxdiv_offset, &val); - val &= ~(sc->mux_mask >> sc->mux_shift); + val &= ~sc->mux_mask; val |= index << sc->mux_shift; WRITE4(clk, sc->muxdiv_offset, val); DEVICE_UNLOCK(clk); Copied: stable/12/sys/arm64/rockchip/rk805.c (from r341143, head/sys/arm64/rockchip/rk805.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm64/rockchip/rk805.c Wed Aug 7 18:16:28 2019 (r350686, copy of r341143, head/sys/arm64/rockchip/rk805.c) @@ -0,0 +1,422 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Emmanuel Vadot + * 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. + * + * 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 "regdev_if.h" + +MALLOC_DEFINE(M_RK805_REG, "RK805 regulator", "RK805 power regulator"); + +static struct ofw_compat_data compat_data[] = { + {"rockchip,rk805", 1}, + {NULL, 0} +}; + +struct rk805_regdef { + intptr_t id; + char *name; + uint8_t enable_reg; + uint8_t enable_mask; + uint8_t voltage_reg; + uint8_t voltage_mask; + int voltage_min; + int voltage_max; + int voltage_step; + int voltage_nstep; +}; + +struct rk805_reg_sc { + struct regnode *regnode; + device_t base_dev; + struct rk805_regdef *def; + phandle_t xref; + struct regnode_std_param *param; +}; + +struct rk805_softc { + device_t dev; + struct mtx mtx; + struct resource * res[1]; + void * intrcookie; + struct intr_config_hook intr_hook; + + struct rk805_reg_sc **regs; + int nregs; +}; + +static struct rk805_regdef rk805_regdefs[] = { + { + .id = RK805_DCDC1, + .name = "DCDC_REG1", + .enable_reg = RK805_DCDC_EN, + .enable_mask = 0x11, + .voltage_reg = RK805_DCDC1_ON_VSEL, + .voltage_mask = 0x3F, + .voltage_min = 712500, + .voltage_max = 1450000, + .voltage_step = 12500, + .voltage_nstep = 64, + }, + { + .id = RK805_DCDC2, + .name = "DCDC_REG2", + .enable_reg = RK805_DCDC_EN, + .enable_mask = 0x22, + .voltage_reg = RK805_DCDC2_ON_VSEL, + .voltage_mask = 0x3F, + .voltage_min = 712500, + .voltage_max = 1450000, + .voltage_step = 12500, + .voltage_nstep = 64, + }, + { + .id = RK805_DCDC3, + .name = "DCDC_REG3", + .enable_reg = RK805_DCDC_EN, + .enable_mask = 0x44, + }, + { + .id = RK805_DCDC4, + .name = "DCDC_REG4", + .enable_reg = RK805_DCDC_EN, + .enable_mask = 0x88, + .voltage_reg = RK805_DCDC4_ON_VSEL, + .voltage_mask = 0x3F, + .voltage_min = 800000, + .voltage_max = 3500000, + .voltage_step = 100000, + .voltage_nstep = 28, + }, +}; + +static int +rk805_read(device_t dev, uint8_t reg, uint8_t *data, uint8_t size) +{ + + return (iicdev_readfrom(dev, reg, data, size, IIC_INTRWAIT)); +} + +static int +rk805_write(device_t dev, uint8_t reg, uint8_t data) +{ + struct iic_msg msg; + uint8_t buf[2]; + + buf[0] = reg; + buf[1] = data; + msg.slave = iicbus_get_addr(dev); + msg.flags = IIC_M_WR; + msg.buf = buf; + msg.len = sizeof(buf); + + return (iicbus_transfer_excl(dev, &msg, 1, IIC_INTRWAIT)); +} + +static int +rk805_regnode_init(struct regnode *regnode) +{ + return (0); +} + +static int +rk805_regnode_enable(struct regnode *regnode, bool enable, int *udelay) +{ + struct rk805_reg_sc *sc; + uint8_t val; + + sc = regnode_get_softc(regnode); + + rk805_read(sc->base_dev, sc->def->enable_reg, &val, 1); + if (enable) + val |= sc->def->enable_mask; + else + val &= ~sc->def->enable_mask; + rk805_write(sc->base_dev, sc->def->enable_reg, val); + + *udelay = 0; + + return (0); +} + +static void +rk805_regnode_reg_to_voltage(struct rk805_reg_sc *sc, uint8_t val, int *uv) +{ + if (val < sc->def->voltage_nstep) + *uv = sc->def->voltage_min + val * sc->def->voltage_step; + else + *uv = sc->def->voltage_min + + (sc->def->voltage_nstep * sc->def->voltage_step); +} + +static int +rk805_regnode_voltage_to_reg(struct rk805_reg_sc *sc, int min_uvolt, + int max_uvolt, uint8_t *val) +{ + uint8_t nval; + int nstep, uvolt; + + nval = 0; + uvolt = sc->def->voltage_min; + + for (nstep = 0; nstep < sc->def->voltage_nstep && uvolt < min_uvolt; + nstep++) { + ++nval; + uvolt += sc->def->voltage_step; + } + if (uvolt > max_uvolt) + return (EINVAL); + + *val = nval; + return (0); +} + +static int +rk805_regnode_set_voltage(struct regnode *regnode, int min_uvolt, + int max_uvolt, int *udelay) +{ + struct rk805_reg_sc *sc; + uint8_t val; + + sc = regnode_get_softc(regnode); + + if (!sc->def->voltage_step) + return (ENXIO); + + if (rk805_regnode_voltage_to_reg(sc, min_uvolt, max_uvolt, &val) != 0) + return (ERANGE); + + rk805_write(sc->base_dev, sc->def->voltage_reg, val); + + *udelay = 0; + + return (0); +} + +static int +rk805_regnode_get_voltage(struct regnode *regnode, int *uvolt) +{ + struct rk805_reg_sc *sc; + uint8_t val; + + sc = regnode_get_softc(regnode); + + if (!sc->def->voltage_step) + return (ENXIO); + + rk805_read(sc->base_dev, sc->def->voltage_reg, &val, 1); + rk805_regnode_reg_to_voltage(sc, val & sc->def->voltage_mask, uvolt); + + return (0); +} + +static regnode_method_t rk805_regnode_methods[] = { + /* Regulator interface */ + REGNODEMETHOD(regnode_init, rk805_regnode_init), + REGNODEMETHOD(regnode_enable, rk805_regnode_enable), + REGNODEMETHOD(regnode_set_voltage, rk805_regnode_set_voltage), + REGNODEMETHOD(regnode_get_voltage, rk805_regnode_get_voltage), + REGNODEMETHOD_END +}; +DEFINE_CLASS_1(rk805_regnode, rk805_regnode_class, rk805_regnode_methods, + sizeof(struct rk805_reg_sc), regnode_class); + +static struct rk805_reg_sc * +rk805_reg_attach(device_t dev, phandle_t node, + struct rk805_regdef *def) +{ + struct rk805_reg_sc *reg_sc; + struct regnode_init_def initdef; + struct regnode *regnode; + + memset(&initdef, 0, sizeof(initdef)); + if (regulator_parse_ofw_stdparam(dev, node, &initdef) != 0) { + device_printf(dev, "cannot create regulator\n"); + return (NULL); + } + if (initdef.std_param.min_uvolt == 0) + initdef.std_param.min_uvolt = def->voltage_min; + if (initdef.std_param.max_uvolt == 0) + initdef.std_param.max_uvolt = def->voltage_max; + initdef.id = def->id; + initdef.ofw_node = node; + regnode = regnode_create(dev, &rk805_regnode_class, &initdef); + if (regnode == NULL) { + device_printf(dev, "cannot create regulator\n"); + return (NULL); + } + + reg_sc = regnode_get_softc(regnode); + reg_sc->regnode = regnode; + reg_sc->base_dev = dev; + reg_sc->def = def; + reg_sc->xref = OF_xref_from_node(node); + reg_sc->param = regnode_get_stdparam(regnode); + + regnode_register(regnode); + + return (reg_sc); +} + +static int +rk805_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, "RockChip RK805 PMIC"); + return (BUS_PROBE_DEFAULT); +} + +static void +rk805_start(void *pdev) +{ + struct rk805_softc *sc; + device_t dev; + uint8_t data[2]; + int err; + + dev = pdev; + sc = device_get_softc(dev); + sc->dev = dev; + + if (bootverbose) { + err = rk805_read(dev, 0x17, data, 1); + if (err != 0) { + device_printf(dev, "Cannot read chip name reg\n"); + return; + } + err = rk805_read(dev, 0x18, data + 1, 1); + if (err != 0) { + device_printf(dev, "Cannot read chip version reg\n"); + return; + } + device_printf(dev, "Chip Name: %x\n", + data[0] << 4 | ((data[1] >> 4) & 0xf)); + device_printf(dev, "Chip Version: %x\n", data[1] & 0xf); + } + + config_intrhook_disestablish(&sc->intr_hook); +} + +static int +rk805_attach(device_t dev) +{ + struct rk805_softc *sc; + struct rk805_reg_sc *reg; + struct rk805_regdef *regdefs; + phandle_t rnode, child; + int i; + + sc = device_get_softc(dev); + + sc->intr_hook.ich_func = rk805_start; + sc->intr_hook.ich_arg = dev; + + if (config_intrhook_establish(&sc->intr_hook) != 0) + return (ENOMEM); + + sc->regs = malloc(sizeof(struct rk805_reg_sc *) * sc->nregs, + M_RK805_REG, M_WAITOK | M_ZERO); + + regdefs = rk805_regdefs; + sc->nregs = nitems(rk805_regdefs); + + rnode = ofw_bus_find_child(ofw_bus_get_node(dev), "regulators"); + if (rnode > 0) { + for (i = 0; i < sc->nregs; i++) { + child = ofw_bus_find_child(rnode, + regdefs[i].name); + if (child == 0) + continue; + reg = rk805_reg_attach(dev, child, ®defs[i]); + if (reg == NULL) { + device_printf(dev, + "cannot attach regulator %s\n", + regdefs[i].name); + continue; + } + sc->regs[i] = reg; + if (bootverbose) + device_printf(dev, "Regulator %s attached\n", + regdefs[i].name); + } + } + + return (0); +} + +static int +rk805_detach(device_t dev) +{ + + /* We cannot detach regulators */ + return (EBUSY); +} + +static device_method_t rk805_methods[] = { + DEVMETHOD(device_probe, rk805_probe), + DEVMETHOD(device_attach, rk805_attach), + DEVMETHOD(device_detach, rk805_detach), + + DEVMETHOD_END +}; + +static driver_t rk805_driver = { + "rk805_pmu", + rk805_methods, + sizeof(struct rk805_softc), +}; + +static devclass_t rk805_devclass; + +EARLY_DRIVER_MODULE(rk805, iicbus, rk805_driver, rk805_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LAST); +MODULE_DEPEND(rk805, iicbus, IICBUS_MINVER, IICBUS_PREFVER, IICBUS_MAXVER); +MODULE_VERSION(rk805, 1); Copied: stable/12/sys/arm64/rockchip/rk805reg.h (from r341143, head/sys/arm64/rockchip/rk805reg.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm64/rockchip/rk805reg.h Wed Aug 7 18:16:28 2019 (r350686, copy of r341143, head/sys/arm64/rockchip/rk805reg.h) @@ -0,0 +1,72 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Emmanuel Vadot + * 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. + * + * 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 _RK805REG_H_ +#define _RK805REG_H_ + +#define RK805_CHIP_NAME 0x17 +#define RK805_CHIP_VER 0x18 +#define RK805_OTP_VER 0x19 + +#define RK805_DCDC_EN 0x23 +#define RK805_SLEEP_DCDC_EN 0x25 +#define RK805_SLEEP_LDO_EN 0x26 +#define RK805_LDO_EN 0x27 +#define RK805_SLEEP_LDO_LP_EN 0x2A + +#define RK805_DCDC1_CONFIG 0x2E +#define RK805_DCDC1_ON_VSEL 0x2F +#define RK805_DCDC1_SLEEP_VSEL 0x30 +#define RK805_DCDC2_CONFIG 0x32 +#define RK805_DCDC2_ON_VSEL 0x33 +#define RK805_DCDC2_SLEEP_VSEL 0x34 +#define RK805_DCDC3_CONFIG 0x36 +#define RK805_DCDC4_CONFIG 0x37 +#define RK805_DCDC4_ON_VSEL 0x38 +#define RK805_DCDC4_SLEEP_VSEL 0x39 +#define RK805_LDO1_ON_VSEL 0x3B +#define RK805_LDO1_SLEEP_VSEL 0x3C +#define RK805_LDO2_ON_VSEL 0x3D +#define RK805_LDO2_SLEEP_VSEL 0x3E +#define RK805_LDO3_ON_VSEL 0x3F +#define RK805_LDO3_SLEEP_VSEL 0x40 + +enum rk805_regulator { + RK805_DCDC1, + RK805_DCDC2, + RK805_DCDC3, + RK805_DCDC4, + RK805_LDO1, + RK805_LDO2, + RK805_LDO3, +}; + +#endif /* _RK805REG_H_ */ Modified: stable/12/sys/conf/files.arm64 ============================================================================== --- stable/12/sys/conf/files.arm64 Wed Aug 7 18:14:45 2019 (r350685) +++ stable/12/sys/conf/files.arm64 Wed Aug 7 18:16:28 2019 (r350686) @@ -269,6 +269,7 @@ cddl/dev/dtrace/aarch64/dtrace_subr.c optional dtrac cddl/dev/fbt/aarch64/fbt_isa.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}" arm64/rockchip/rk_i2c.c optional rk_i2c fdt soc_rockchip_rk3328 +arm64/rockchip/rk805.c optional rk805 fdt soc_rockchip_rk3328 arm64/rockchip/rk_grf.c optional fdt soc_rockchip_rk3328 arm64/rockchip/rk_pinctrl.c optional fdt soc_rockchip_rk3328 arm64/rockchip/rk_gpio.c optional fdt soc_rockchip_rk3328 Modified: stable/12/sys/modules/rockchip/Makefile ============================================================================== --- stable/12/sys/modules/rockchip/Makefile Wed Aug 7 18:14:45 2019 (r350685) +++ stable/12/sys/modules/rockchip/Makefile Wed Aug 7 18:16:28 2019 (r350686) @@ -3,5 +3,6 @@ SUBDIR = \ rk_i2c \ + rk805 .include From owner-svn-src-stable@freebsd.org Wed Aug 7 18:26:33 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 29A0BB3900; Wed, 7 Aug 2019 18:26:33 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463g2113zpz46yb; Wed, 7 Aug 2019 18:26:33 +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 071A618BBF; Wed, 7 Aug 2019 18:26:33 +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 x77IQXIu048160; Wed, 7 Aug 2019 18:26:33 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x77IQW1A048156; Wed, 7 Aug 2019 18:26:32 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908071826.x77IQW1A048156@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Wed, 7 Aug 2019 18:26: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: r350687 - in stable/12/sys: arm64/conf arm64/rockchip arm64/rockchip/clk conf dev/mmc/host X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm64/conf arm64/rockchip arm64/rockchip/clk conf dev/mmc/host X-SVN-Commit-Revision: 350687 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 18:26:33 -0000 Author: manu Date: Wed Aug 7 18:26:32 2019 New Revision: 350687 URL: https://svnweb.freebsd.org/changeset/base/350687 Log: MFC r341381-r341383, r341385, r343950, r344527, r344576-r344580, r344585, r344589-r344590, r344623, r344626-r344627 r341381: arm64: rockchip: Add RK3399_CLK_PLL PLLs on the RK3399 are different than the ones on the RK3328. Add a new type and some dedicated recalc and set_freq functions. Rename the RK3328 dedicated rk_clk_pll function with rk3328_ prefix. r341382: arm64/rockchip: add RK3399 support Add CRU (Clock and Reset Unit) driver for RK3399. Add support in rk_pinctrl driver. Submitted by: Greg V (Original version) Differential Revision: https://reviews.freebsd.org/D16732 r341383: arm64: rockchip: rk_i2c: Use correct clock While here add RK3399 support and call clk_set_assigned to set the correct clock set in the DTS. r341385: arm64: rockchip: rk805: Add basic support for RK808 PMIC RK808 PMIC is the companion chip for RK3399 SoC. Add basic regulator support in RK805 since they are similar. r343950: arm64: Fix compile when removing SOC_ROCKCHIP_* options Make every rockchip file depend on the multiple soc_rockchip options While here make rk_i2c and rk_gpio depend on their device options. Reported by: sbruno r344527: arm64: rockchip: clk: Set the write mask when setting the clock mux RockChip clocks have a write mask in the upper 16bits of the mux register which wasn't set in the set_mux function. Also the wrong parent was tested instead of the real current one, when switch parent, test with the current one before. Pointy Hat: manu r344576: arm64: rockchip: clk: rk_clk_composite: Properly use the mask bits RockChip clocks register have a write mask in the upper 16 bits, if a 1 is present the corresponding bit in the lower 16 ones is set. Use this instead of always setting the mask to 0xFFFF0000. This avoids a read of the register. While here add some debug printf useful for debuging clock problems r344577: arm64: rockchip: clk: ARM CLK improvement RockChip clocks register have a write mask in the upper 16 bits, if a 1 is present the corresponding bit in the lower 16 ones is set. Use this instead of always setting the mask to 0xFFFF0000. This avoids a read of the register. While here set the parent after changing its freqeuncy, this reduce the time between changing the parent and changing the divider for the arm clock. r344578: arm64: rockchip: rk3328_pll: Multiple improvement RockChip clocks register have a write mask in the upper 16 bits, if a 1 is present the corresponding bit in the lower 16 ones is set. Use this instead of always setting the mask to 0xFFFF0000. This avoids a read of the register. While here, when switching PLL frequency, first switch it to slow mode. When set to slow mode the PLL clock will be the external oscillator. Changing the PLL parameters while its output is used can cause hang (sometimes). r344579: arm64: rockchip: rk805: Add LDO regulators Add the 3 LDO regulator found in the RK805 Power Management IC. r344580: arm64: rockchip: rk805: Map the regulator No map function was provided before so every regulator lookup resolved the regulator with id 1, as it uses the default mapper, which is wrong. Correctly map the regulators. While here remove some debug printfs and make them disable by default. r344585: arm64: rockchip: rk_pinctrl: Fix two banks in RK3328 The last two banks don't have 3 bits for the pin function but only 2. This fixes eMMC on the Rock64. r344589: arm64: rockchip: rk3399_pll: Switch to slow mode when changing the freq Like r344578 but for RK3399. This solve some hangs when switching between frequency. r344590: arm64: rockchip: rk3399_pll: Fix copy paste RK3399 PLLs don't have mode_reg, use the correct register. r344623: arm64: rockchip: clk_pll: Multiple improvement Remove the mode_val from the clock definition as it's a bit unreadable. Use mode_shift to represent which bit control the mode in the register. Simplify some case where we can avoid a register read before changing it. Set the PLL back to normal mode after the PLL have stabilized. Discussed with: mmel r344626: arm64: rockchip: rk3399_clk: Add sd clock definitions r344627: mmc: dwmmc: Match on "rockchip,rk3288-dw-mshc" compatible This is the common denominator for rockchip compatible from RK3288 to RK3399. The other compatible are generally present in the DTS but the controllers are the same. Added: stable/12/sys/arm64/rockchip/clk/rk3399_cru.c - copied, changed from r341383, head/sys/arm64/rockchip/clk/rk3399_cru.c stable/12/sys/arm64/rockchip/clk/rk3399_pmucru.c - copied unchanged from r341383, head/sys/arm64/rockchip/clk/rk3399_pmucru.c Modified: stable/12/sys/arm64/conf/GENERIC stable/12/sys/arm64/rockchip/clk/rk3328_cru.c stable/12/sys/arm64/rockchip/clk/rk_clk_armclk.c stable/12/sys/arm64/rockchip/clk/rk_clk_armclk.h stable/12/sys/arm64/rockchip/clk/rk_clk_composite.c stable/12/sys/arm64/rockchip/clk/rk_clk_composite.h stable/12/sys/arm64/rockchip/clk/rk_clk_pll.c stable/12/sys/arm64/rockchip/clk/rk_clk_pll.h stable/12/sys/arm64/rockchip/clk/rk_cru.c stable/12/sys/arm64/rockchip/clk/rk_cru.h stable/12/sys/arm64/rockchip/if_dwc_rk.c stable/12/sys/arm64/rockchip/rk805.c stable/12/sys/arm64/rockchip/rk805reg.h stable/12/sys/arm64/rockchip/rk_grf.c stable/12/sys/arm64/rockchip/rk_i2c.c stable/12/sys/arm64/rockchip/rk_pinctrl.c stable/12/sys/conf/files.arm64 stable/12/sys/conf/options.arm64 stable/12/sys/dev/mmc/host/dwmmc_rockchip.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm64/conf/GENERIC ============================================================================== --- stable/12/sys/arm64/conf/GENERIC Wed Aug 7 18:16:28 2019 (r350686) +++ stable/12/sys/arm64/conf/GENERIC Wed Aug 7 18:26:32 2019 (r350687) @@ -95,6 +95,7 @@ options SOC_HISI_HI6220 options SOC_BRCM_BCM2837 options SOC_MARVELL_8K options SOC_ROCKCHIP_RK3328 +options SOC_ROCKCHIP_RK3399 options SOC_XILINX_ZYNQ # Timer drivers @@ -206,6 +207,8 @@ device fdt_pinctrl device gpioregulator device mv_gpio # Marvell GPIO controller device mvebu_pinctrl # Marvell Pinmux Controller +device rk_gpio # RockChip GPIO Controller +device rk_pinctrl # RockChip Pinmux Controller # I2C device aw_rsb # Allwinner Reduced Serial Bus Modified: stable/12/sys/arm64/rockchip/clk/rk3328_cru.c ============================================================================== --- stable/12/sys/arm64/rockchip/clk/rk3328_cru.c Wed Aug 7 18:16:28 2019 (r350686) +++ stable/12/sys/arm64/rockchip/clk/rk3328_cru.c Wed Aug 7 18:26:32 2019 (r350687) @@ -523,7 +523,7 @@ static struct rk_clk_pll_def apll = { .gate_offset = 0x200, .gate_shift = 0, .mode_reg = 0x80, - .mode_val = 0x1, + .mode_shift = 1, .flags = RK_CLK_PLL_HAVE_GATE, .frac_rates = rk3328_pll_frac_rates, }; @@ -539,7 +539,7 @@ static struct rk_clk_pll_def dpll = { .gate_offset = 0x200, .gate_shift = 1, .mode_reg = 0x80, - .mode_val = 0x8, + .mode_shift = 4, .flags = RK_CLK_PLL_HAVE_GATE, }; @@ -552,7 +552,7 @@ static struct rk_clk_pll_def cpll = { }, .base_offset = 0x40, .mode_reg = 0x80, - .mode_val = 0x80, + .mode_shift = 8, .rates = rk3328_pll_rates, }; @@ -567,7 +567,7 @@ static struct rk_clk_pll_def gpll = { .gate_offset = 0x200, .gate_shift = 2, .mode_reg = 0x80, - .mode_val = 0x800, + .mode_shift = 12, .flags = RK_CLK_PLL_HAVE_GATE, .frac_rates = rk3328_pll_frac_rates, }; @@ -583,7 +583,7 @@ static struct rk_clk_pll_def npll = { .gate_offset = 0x200, .gate_shift = 12, .mode_reg = 0x80, - .mode_val = 0x2, + .mode_shift = 1, .flags = RK_CLK_PLL_HAVE_GATE, .rates = rk3328_pll_rates, }; @@ -973,23 +973,23 @@ static struct rk_clk_composite_def i2c3 = { static struct rk_clk rk3328_clks[] = { { - .type = RK_CLK_PLL, + .type = RK3328_CLK_PLL, .clk.pll = &apll }, { - .type = RK_CLK_PLL, + .type = RK3328_CLK_PLL, .clk.pll = &dpll }, { - .type = RK_CLK_PLL, + .type = RK3328_CLK_PLL, .clk.pll = &cpll }, { - .type = RK_CLK_PLL, + .type = RK3328_CLK_PLL, .clk.pll = &gpll }, { - .type = RK_CLK_PLL, + .type = RK3328_CLK_PLL, .clk.pll = &npll }, Copied and modified: stable/12/sys/arm64/rockchip/clk/rk3399_cru.c (from r341383, head/sys/arm64/rockchip/clk/rk3399_cru.c) ============================================================================== --- head/sys/arm64/rockchip/clk/rk3399_cru.c Sat Dec 1 20:29:42 2018 (r341383, copy source) +++ stable/12/sys/arm64/rockchip/clk/rk3399_cru.c Wed Aug 7 18:26:32 2019 (r350687) @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #define PCLK_I2C5 344 #define PCLK_I2C6 345 #define PCLK_I2C7 346 +#define HCLK_SDMMC 462 static struct rk_cru_gate rk3399_gates[] = { /* CRU_CLKGATE_CON0 */ @@ -99,6 +100,9 @@ static struct rk_cru_gate rk3399_gates[] = { CRU_GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_alive", 0x37c, 3) CRU_GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_alive", 0x37c, 4) CRU_GATE(PCLK_GPIO4, "pclk_gpio4", "pclk_alive", 0x37c, 5) + + /* CRU_CLKGATE_CON33 */ + CRU_GATE(HCLK_SDMMC, "hclk_sdmmc", "hclk_sd", 0x384, 8) }; @@ -1385,6 +1389,60 @@ static struct rk_clk_armclk_def armclk_b = { .nrates = nitems(rk3399_armclkb_rates), }; +/* + * sdmmc + */ + +#define HCLK_SD 461 + +static const char *hclk_sd_parents[] = {"cpll", "gpll"}; + +static struct rk_clk_composite_def hclk_sd = { + .clkdef = { + .id = HCLK_SD, + .name = "hclk_sd", + .parent_names = hclk_sd_parents, + .parent_cnt = nitems(hclk_sd_parents), + }, + + .muxdiv_offset = 0x134, + .mux_shift = 15, + .mux_width = 1, + + .div_shift = 8, + .div_width = 5, + + .gate_offset = 0x330, + .gate_shift = 13, + + .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE, +}; + +#define SCLK_SDMMC 76 + +static const char *sclk_sdmmc_parents[] = {"cpll", "gpll", "npll", "ppll"}; + +static struct rk_clk_composite_def sclk_sdmmc = { + .clkdef = { + .id = SCLK_SDMMC, + .name = "sclk_sdmmc", + .parent_names = sclk_sdmmc_parents, + .parent_cnt = nitems(sclk_sdmmc_parents), + }, + + .muxdiv_offset = 0x140, + .mux_shift = 8, + .mux_width = 3, + + .div_shift = 0, + .div_width = 7, + + .gate_offset = 0x318, + .gate_shift = 1, + + .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE, +}; + static struct rk_clk rk3399_clks[] = { { .type = RK3399_CLK_PLL, @@ -1483,6 +1541,15 @@ static struct rk_clk rk3399_clks[] = { { .type = RK_CLK_ARMCLK, .clk.armclk = &armclk_b, + }, + + { + .type = RK_CLK_COMPOSITE, + .clk.composite = &hclk_sd, + }, + { + .type = RK_CLK_COMPOSITE, + .clk.composite = &sclk_sdmmc, }, }; Copied: stable/12/sys/arm64/rockchip/clk/rk3399_pmucru.c (from r341383, head/sys/arm64/rockchip/clk/rk3399_pmucru.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm64/rockchip/clk/rk3399_pmucru.c Wed Aug 7 18:26:32 2019 (r350687, copy of r341383, head/sys/arm64/rockchip/clk/rk3399_pmucru.c) @@ -0,0 +1,866 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Emmanuel Vadot + * Copyright (c) 2018 Greg V + * + * 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. + * + * $FreeBSD$ + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#include + +/* GATES */ + +#define PCLK_PMU 20 +#define PCLK_GPIO0_PMU 23 +#define PCLK_GPIO1_PMU 24 +#define PCLK_I2C0_PMU 27 +#define PCLK_I2C4_PMU 28 +#define PCLK_I2C8_PMU 29 + +static struct rk_cru_gate rk3399_pmu_gates[] = { + /* PMUCRU_CLKGATE_CON1 */ + CRU_GATE(PCLK_PMU, "pclk_pmu", "pclk_pmu_src", 0x104, 0) + CRU_GATE(PCLK_GPIO0_PMU, "pclk_gpio0_pmu", "pclk_pmu_src", 0x104, 3) + CRU_GATE(PCLK_GPIO1_PMU, "pclk_gpio1_pmu", "pclk_pmu_src", 0x104, 4) + CRU_GATE(PCLK_I2C0_PMU, "pclk_i2c0_pmu", "pclk_pmu_src", 0x104, 7) + CRU_GATE(PCLK_I2C4_PMU, "pclk_i2c4_pmu", "pclk_pmu_src", 0x104, 8) + CRU_GATE(PCLK_I2C8_PMU, "pclk_i2c8_pmu", "pclk_pmu_src", 0x104, 9) +}; + + +/* + * PLLs + */ + +#define PLL_PPLL 1 + +static struct rk_clk_pll_rate rk3399_pll_rates[] = { + { + .freq = 2208000000, + .refdiv = 1, + .fbdiv = 92, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 2184000000, + .refdiv = 1, + .fbdiv = 91, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 2160000000, + .refdiv = 1, + .fbdiv = 90, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 2136000000, + .refdiv = 1, + .fbdiv = 89, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 2112000000, + .refdiv = 1, + .fbdiv = 88, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 2088000000, + .refdiv = 1, + .fbdiv = 87, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 2064000000, + .refdiv = 1, + .fbdiv = 86, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 2040000000, + .refdiv = 1, + .fbdiv = 85, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 2016000000, + .refdiv = 1, + .fbdiv = 84, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1992000000, + .refdiv = 1, + .fbdiv = 83, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1968000000, + .refdiv = 1, + .fbdiv = 82, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1944000000, + .refdiv = 1, + .fbdiv = 81, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1920000000, + .refdiv = 1, + .fbdiv = 80, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1896000000, + .refdiv = 1, + .fbdiv = 79, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1872000000, + .refdiv = 1, + .fbdiv = 78, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1848000000, + .refdiv = 1, + .fbdiv = 77, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1824000000, + .refdiv = 1, + .fbdiv = 76, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1800000000, + .refdiv = 1, + .fbdiv = 75, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1776000000, + .refdiv = 1, + .fbdiv = 74, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1752000000, + .refdiv = 1, + .fbdiv = 73, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1728000000, + .refdiv = 1, + .fbdiv = 72, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1704000000, + .refdiv = 1, + .fbdiv = 71, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1680000000, + .refdiv = 1, + .fbdiv = 70, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1656000000, + .refdiv = 1, + .fbdiv = 69, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1632000000, + .refdiv = 1, + .fbdiv = 68, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1608000000, + .refdiv = 1, + .fbdiv = 67, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1600000000, + .refdiv = 3, + .fbdiv = 200, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1584000000, + .refdiv = 1, + .fbdiv = 66, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1560000000, + .refdiv = 1, + .fbdiv = 65, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1536000000, + .refdiv = 1, + .fbdiv = 64, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1512000000, + .refdiv = 1, + .fbdiv = 63, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1488000000, + .refdiv = 1, + .fbdiv = 62, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1464000000, + .refdiv = 1, + .fbdiv = 61, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1440000000, + .refdiv = 1, + .fbdiv = 60, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1416000000, + .refdiv = 1, + .fbdiv = 59, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1392000000, + .refdiv = 1, + .fbdiv = 58, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1368000000, + .refdiv = 1, + .fbdiv = 57, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1344000000, + .refdiv = 1, + .fbdiv = 56, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1320000000, + .refdiv = 1, + .fbdiv = 55, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1296000000, + .refdiv = 1, + .fbdiv = 54, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1272000000, + .refdiv = 1, + .fbdiv = 53, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1248000000, + .refdiv = 1, + .fbdiv = 52, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1200000000, + .refdiv = 1, + .fbdiv = 50, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1188000000, + .refdiv = 2, + .fbdiv = 99, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1104000000, + .refdiv = 1, + .fbdiv = 46, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1100000000, + .refdiv = 12, + .fbdiv = 550, + .postdiv1 = 1, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1008000000, + .refdiv = 1, + .fbdiv = 84, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 1000000000, + .refdiv = 1, + .fbdiv = 125, + .postdiv1 = 3, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 984000000, + .refdiv = 1, + .fbdiv = 82, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 960000000, + .refdiv = 1, + .fbdiv = 80, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 936000000, + .refdiv = 1, + .fbdiv = 78, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 912000000, + .refdiv = 1, + .fbdiv = 76, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 900000000, + .refdiv = 4, + .fbdiv = 300, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 888000000, + .refdiv = 1, + .fbdiv = 74, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 864000000, + .refdiv = 1, + .fbdiv = 72, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 840000000, + .refdiv = 1, + .fbdiv = 70, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 816000000, + .refdiv = 1, + .fbdiv = 68, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 800000000, + .refdiv = 1, + .fbdiv = 100, + .postdiv1 = 3, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 700000000, + .refdiv = 6, + .fbdiv = 350, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 696000000, + .refdiv = 1, + .fbdiv = 58, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 676000000, + .refdiv = 3, + .fbdiv = 169, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 600000000, + .refdiv = 1, + .fbdiv = 75, + .postdiv1 = 3, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 594000000, + .refdiv = 1, + .fbdiv = 99, + .postdiv1 = 4, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 533250000, + .refdiv = 8, + .fbdiv = 711, + .postdiv1 = 4, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 504000000, + .refdiv = 1, + .fbdiv = 63, + .postdiv1 = 3, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 500000000, + .refdiv = 6, + .fbdiv = 250, + .postdiv1 = 2, + .postdiv2 = 1, + .dsmpd = 1, + }, + { + .freq = 408000000, + .refdiv = 1, + .fbdiv = 68, + .postdiv1 = 2, + .postdiv2 = 2, + .dsmpd = 1, + }, + { + .freq = 312000000, + .refdiv = 1, + .fbdiv = 52, + .postdiv1 = 2, + .postdiv2 = 2, + .dsmpd = 1, + }, + { + .freq = 297000000, + .refdiv = 1, + .fbdiv = 99, + .postdiv1 = 4, + .postdiv2 = 2, + .dsmpd = 1, + }, + { + .freq = 216000000, + .refdiv = 1, + .fbdiv = 72, + .postdiv1 = 4, + .postdiv2 = 2, + .dsmpd = 1, + }, + { + .freq = 148500000, + .refdiv = 1, + .fbdiv = 99, + .postdiv1 = 4, + .postdiv2 = 4, + .dsmpd = 1, + }, + { + .freq = 106500000, + .refdiv = 1, + .fbdiv = 71, + .postdiv1 = 4, + .postdiv2 = 4, + .dsmpd = 1, + }, + { + .freq = 96000000, + .refdiv = 1, + .fbdiv = 64, + .postdiv1 = 4, + .postdiv2 = 4, + .dsmpd = 1, + }, + { + .freq = 74250000, + .refdiv = 2, + .fbdiv = 99, + .postdiv1 = 4, + .postdiv2 = 4, + .dsmpd = 1, + }, + { + .freq = 65000000, + .refdiv = 1, + .fbdiv = 65, + .postdiv1 = 6, + .postdiv2 = 4, + .dsmpd = 1, + }, + { + .freq = 54000000, + .refdiv = 1, + .fbdiv = 54, + .postdiv1 = 6, + .postdiv2 = 4, + .dsmpd = 1, + }, + { + .freq = 27000000, + .refdiv = 1, + .fbdiv = 27, + .postdiv1 = 6, + .postdiv2 = 4, + .dsmpd = 1, + }, + {}, +}; + +static const char *pll_parents[] = {"xin24m"}; + +static struct rk_clk_pll_def ppll = { + .clkdef = { + .id = PLL_PPLL, + .name = "ppll", + .parent_names = pll_parents, + .parent_cnt = nitems(pll_parents), + }, + .base_offset = 0x00, + + .rates = rk3399_pll_rates, +}; + +static const char *pmu_parents[] = {"ppll"}; + +#define PCLK_PMU_SRC 19 + +static struct rk_clk_composite_def pclk_pmu_src = { + .clkdef = { + .id = PCLK_PMU_SRC, + .name = "pclk_pmu_src", + .parent_names = pmu_parents, + .parent_cnt = nitems(pmu_parents), + }, + /* PMUCRU_CLKSEL_CON0 */ + .muxdiv_offset = 0x80, + + .div_shift = 0, + .div_width = 5, +}; + + +#define SCLK_I2C0_PMU 9 +#define SCLK_I2C4_PMU 10 +#define SCLK_I2C8_PMU 11 + +static struct rk_clk_composite_def i2c0 = { + .clkdef = { + .id = SCLK_I2C0_PMU, + .name = "clk_i2c0_pmu", + .parent_names = pmu_parents, + .parent_cnt = nitems(pmu_parents), + }, + /* PMUCRU_CLKSEL_CON2 */ + .muxdiv_offset = 0x88, + + .div_shift = 0, + .div_width = 7, + + /* PMUCRU_CLKGATE_CON0 */ + .gate_offset = 0x100, + .gate_shift = 9, + + .flags = RK_CLK_COMPOSITE_HAVE_GATE, +}; + +static struct rk_clk_composite_def i2c8 = { + .clkdef = { + .id = SCLK_I2C8_PMU, + .name = "clk_i2c8_pmu", + .parent_names = pmu_parents, + .parent_cnt = nitems(pmu_parents), + }, + /* PMUCRU_CLKSEL_CON2 */ + .muxdiv_offset = 0x88, + + .div_shift = 8, + .div_width = 7, + + /* PMUCRU_CLKGATE_CON0 */ + .gate_offset = 0x100, + .gate_shift = 11, + + .flags = RK_CLK_COMPOSITE_HAVE_GATE, +}; + +static struct rk_clk_composite_def i2c4 = { + .clkdef = { + .id = SCLK_I2C4_PMU, + .name = "clk_i2c4_pmu", + .parent_names = pmu_parents, + .parent_cnt = nitems(pmu_parents), + }, + /* PMUCRU_CLKSEL_CON3 */ + .muxdiv_offset = 0x8c, + + .div_shift = 0, + .div_width = 7, + + /* PMUCRU_CLKGATE_CON0 */ + .gate_offset = 0x100, + .gate_shift = 10, + + .flags = RK_CLK_COMPOSITE_HAVE_GATE, +}; + +static struct rk_clk rk3399_pmu_clks[] = { + { + .type = RK3399_CLK_PLL, + .clk.pll = &ppll + }, + + { + .type = RK_CLK_COMPOSITE, + .clk.composite = &pclk_pmu_src + }, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Wed Aug 7 18:36:01 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 25751B3E9A; Wed, 7 Aug 2019 18:36:01 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463gDx0G29z47tj; Wed, 7 Aug 2019 18:36:01 +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 DA41F18DBE; Wed, 7 Aug 2019 18:36:00 +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 x77Ia0PG054341; Wed, 7 Aug 2019 18:36:00 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x77IZxP0054333; Wed, 7 Aug 2019 18:35:59 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908071835.x77IZxP0054333@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Wed, 7 Aug 2019 18:35:59 +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: r350689 - in stable/12/sys: arm64/conf arm64/rockchip/clk modules/dtb/rockchip X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm64/conf arm64/rockchip/clk modules/dtb/rockchip X-SVN-Commit-Revision: 350689 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 18:36:01 -0000 Author: manu Date: Wed Aug 7 18:35:59 2019 New Revision: 350689 URL: https://svnweb.freebsd.org/changeset/base/350689 Log: MFC r341404-r341405, r344699, r347024, r347442 r341404 by andreast: Add rule to build the dtb for the rock64 board. Reviewed by: manu@ r341405 by andreast: Build the dtb for the rock64 board. Reviewed by: manu@ r344699: arm64: rockchip: rk3399_pll: Fix the recalc function The plls frequency are now correctly calculated in fractional mode and integer mode. While here add some debug printfs (disabled by default) Tested with powerd on the little cluster on a RockPro64. r347024: dtb: Include RK3399 RockPro64 DTS in kernel build The DTS for this board is already present in sys/gnu/dts/arm64/rockchip/ and just needs to be enabled. Submitted by: alex@wied.io Differential Revision: https://reviews.freebsd.org/D19823 r347442: arm64: rockchip: Don't always put PLL to normal mode We used to put every PLL in normal mode (meaning that the output would be the result of the PLL configuration) instead of slow mode (the output is equal to the external oscillator frequency, 24-26Mhz) but this doesn't work for most of the PLLs as when we put them into normal mode the registers configuring the output frequency haven't been set. Add a normal_mode member in clk_pll_def/clk_pll_sc struct and if it's true we then set the PLL to normal mode. For now only set it to the LPLL and BPLL (Little cluster PLL and Big cluster PLL respectively). Reviewed by: ganbold Differential Revision: https://reviews.freebsd.org/D20174 Added: stable/12/sys/modules/dtb/rockchip/ - copied from r341405, head/sys/modules/dtb/rockchip/ Modified: stable/12/sys/arm64/conf/GENERIC stable/12/sys/arm64/rockchip/clk/rk3399_cru.c stable/12/sys/arm64/rockchip/clk/rk_clk_pll.c stable/12/sys/arm64/rockchip/clk/rk_clk_pll.h stable/12/sys/modules/dtb/rockchip/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm64/conf/GENERIC ============================================================================== --- stable/12/sys/arm64/conf/GENERIC Wed Aug 7 18:32:01 2019 (r350688) +++ stable/12/sys/arm64/conf/GENERIC Wed Aug 7 18:35:59 2019 (r350689) @@ -298,4 +298,4 @@ options FDT device acpi # DTBs -makeoptions MODULES_EXTRA="dtb/allwinner dtb/rpi" +makeoptions MODULES_EXTRA="dtb/allwinner dtb/rockchip dtb/rpi" Modified: stable/12/sys/arm64/rockchip/clk/rk3399_cru.c ============================================================================== --- stable/12/sys/arm64/rockchip/clk/rk3399_cru.c Wed Aug 7 18:32:01 2019 (r350688) +++ stable/12/sys/arm64/rockchip/clk/rk3399_cru.c Wed Aug 7 18:35:59 2019 (r350689) @@ -752,6 +752,7 @@ static struct rk_clk_pll_def lpll = { .gate_shift = 0, .flags = RK_CLK_PLL_HAVE_GATE, .rates = rk3399_pll_rates, + .normal_mode = true, }; static struct rk_clk_pll_def bpll = { @@ -766,6 +767,7 @@ static struct rk_clk_pll_def bpll = { .gate_shift = 1, .flags = RK_CLK_PLL_HAVE_GATE, .rates = rk3399_pll_rates, + .normal_mode = true, }; static struct rk_clk_pll_def dpll = { Modified: stable/12/sys/arm64/rockchip/clk/rk_clk_pll.c ============================================================================== --- stable/12/sys/arm64/rockchip/clk/rk_clk_pll.c Wed Aug 7 18:32:01 2019 (r350688) +++ stable/12/sys/arm64/rockchip/clk/rk_clk_pll.c Wed Aug 7 18:35:59 2019 (r350689) @@ -54,6 +54,8 @@ struct rk_clk_pll_sc { struct rk_clk_pll_rate *rates; struct rk_clk_pll_rate *frac_rates; + + bool normal_mode; }; #define WRITE4(_clk, off, val) \ @@ -344,11 +346,13 @@ rk3399_clk_pll_init(struct clknode *clk, device_t dev) sc = clknode_get_softc(clk); - /* Setting to normal mode */ - reg = RK3399_CLK_PLL_MODE_NORMAL << RK3399_CLK_PLL_MODE_SHIFT; - reg |= RK3399_CLK_PLL_MODE_MASK << RK_CLK_PLL_MASK_SHIFT; - WRITE4(clk, sc->base_offset + RK3399_CLK_PLL_MODE_OFFSET, - reg | RK3399_CLK_PLL_WRITE_MASK); + if (sc->normal_mode) { + /* Setting to normal mode */ + reg = RK3399_CLK_PLL_MODE_NORMAL << RK3399_CLK_PLL_MODE_SHIFT; + reg |= RK3399_CLK_PLL_MODE_MASK << RK_CLK_PLL_MASK_SHIFT; + WRITE4(clk, sc->base_offset + RK3399_CLK_PLL_MODE_OFFSET, + reg | RK3399_CLK_PLL_WRITE_MASK); + } clknode_init_parent_idx(clk, 0); @@ -359,44 +363,57 @@ static int rk3399_clk_pll_recalc(struct clknode *clk, uint64_t *freq) { struct rk_clk_pll_sc *sc; - uint64_t rate; uint32_t dsmpd, refdiv, fbdiv; - uint32_t postdiv1, postdiv2, frac; - uint32_t raw1, raw2, raw3, raw4; + uint32_t postdiv1, postdiv2, fracdiv; + uint32_t con1, con2, con3, con4; + uint64_t foutvco; sc = clknode_get_softc(clk); DEVICE_LOCK(clk); - READ4(clk, sc->base_offset, &raw1); - READ4(clk, sc->base_offset + 4, &raw2); - READ4(clk, sc->base_offset + 8, &raw3); - READ4(clk, sc->base_offset + 0xC, &raw4); + READ4(clk, sc->base_offset, &con1); + READ4(clk, sc->base_offset + 4, &con2); + READ4(clk, sc->base_offset + 8, &con3); + READ4(clk, sc->base_offset + 0xC, &con4); DEVICE_UNLOCK(clk); - fbdiv = (raw1 & RK3399_CLK_PLL_FBDIV_MASK) >> RK3399_CLK_PLL_FBDIV_SHIFT; + dprintf("con0: %x\n", con1); + dprintf("con1: %x\n", con2); + dprintf("con2: %x\n", con3); + dprintf("con3: %x\n", con4); - postdiv1 = (raw2 & RK3399_CLK_PLL_POSTDIV1_MASK) >> RK3399_CLK_PLL_POSTDIV1_SHIFT; - postdiv2 = (raw2 & RK3399_CLK_PLL_POSTDIV2_MASK) >> RK3399_CLK_PLL_POSTDIV2_SHIFT; - refdiv = (raw2 & RK3399_CLK_PLL_REFDIV_MASK) >> RK3399_CLK_PLL_REFDIV_SHIFT; + fbdiv = (con1 & RK3399_CLK_PLL_FBDIV_MASK) >> RK3399_CLK_PLL_FBDIV_SHIFT; - frac = (raw3 & RK3399_CLK_PLL_FRAC_MASK) >> RK3399_CLK_PLL_FRAC_SHIFT; + postdiv1 = (con2 & RK3399_CLK_PLL_POSTDIV1_MASK) >> RK3399_CLK_PLL_POSTDIV1_SHIFT; + postdiv2 = (con2 & RK3399_CLK_PLL_POSTDIV2_MASK) >> RK3399_CLK_PLL_POSTDIV2_SHIFT; + refdiv = (con2 & RK3399_CLK_PLL_REFDIV_MASK) >> RK3399_CLK_PLL_REFDIV_SHIFT; - dsmpd = (raw4 & RK3399_CLK_PLL_DSMPD_MASK) >> RK3399_CLK_PLL_DSMPD_SHIFT; + fracdiv = (con3 & RK3399_CLK_PLL_FRAC_MASK) >> RK3399_CLK_PLL_FRAC_SHIFT; + fracdiv >>= 24; - rate = *freq * fbdiv / refdiv; + dsmpd = (con4 & RK3399_CLK_PLL_DSMPD_MASK) >> RK3399_CLK_PLL_DSMPD_SHIFT; + + dprintf("fbdiv: %d\n", fbdiv); + dprintf("postdiv1: %d\n", postdiv1); + dprintf("postdiv2: %d\n", postdiv2); + dprintf("refdiv: %d\n", refdiv); + dprintf("fracdiv: %d\n", fracdiv); + dprintf("dsmpd: %d\n", dsmpd); + + dprintf("parent freq=%lu\n", *freq); + if (dsmpd == 0) { /* Fractional mode */ - uint64_t frac_rate; - - frac_rate = *freq * frac / refdiv; - rate += frac_rate >> 24; + foutvco = *freq / refdiv * (fbdiv + fracdiv); + } else { + /* Integer mode */ + foutvco = *freq / refdiv * fbdiv; } + dprintf("foutvco: %lu\n", foutvco); - *freq = rate / postdiv1 / postdiv2; + *freq = foutvco / postdiv1 / postdiv2; + dprintf("freq: %lu\n", *freq); - if (*freq % 2) - *freq = *freq + 1; - return (0); } @@ -508,6 +525,7 @@ rk3399_clk_pll_register(struct clkdom *clkdom, struct sc->flags = clkdef->flags; sc->rates = clkdef->rates; sc->frac_rates = clkdef->frac_rates; + sc->normal_mode = clkdef->normal_mode; clknode_register(clkdom, clk); Modified: stable/12/sys/arm64/rockchip/clk/rk_clk_pll.h ============================================================================== --- stable/12/sys/arm64/rockchip/clk/rk_clk_pll.h Wed Aug 7 18:32:01 2019 (r350688) +++ stable/12/sys/arm64/rockchip/clk/rk_clk_pll.h Wed Aug 7 18:35:59 2019 (r350689) @@ -57,6 +57,8 @@ struct rk_clk_pll_def { struct rk_clk_pll_rate *rates; struct rk_clk_pll_rate *frac_rates; + + bool normal_mode; }; #define RK_CLK_PLL_HAVE_GATE 0x1 Modified: stable/12/sys/modules/dtb/rockchip/Makefile ============================================================================== --- head/sys/modules/dtb/rockchip/Makefile Sun Dec 2 19:36:20 2018 (r341405) +++ stable/12/sys/modules/dtb/rockchip/Makefile Wed Aug 7 18:35:59 2019 (r350689) @@ -1,7 +1,7 @@ # $FreeBSD$ -# For now only for rk3328-rock64 dts file. DTS= \ - rockchip/rk3328-rock64.dts + rockchip/rk3328-rock64.dts \ + rockchip/rk3399-rockpro64.dts .include From owner-svn-src-stable@freebsd.org Wed Aug 7 19:18:38 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5689BB4DDA; Wed, 7 Aug 2019 19:18:38 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463hB62L3Hz4BLR; Wed, 7 Aug 2019 19:18:38 +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 2F82919528; Wed, 7 Aug 2019 19:18:38 +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 x77JIcI4078029; Wed, 7 Aug 2019 19:18:38 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x77JIYt5078008; Wed, 7 Aug 2019 19:18:34 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908071918.x77JIYt5078008@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Wed, 7 Aug 2019 19:18:34 +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: r350690 - in stable/12/sys/gnu/dts: arm arm64/actions arm64/al arm64/allwinner arm64/altera arm64/amd arm64/amlogic arm64/apm arm64/arm arm64/bitmain arm64/broadcom arm64/broadcom/north... X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys/gnu/dts: arm arm64/actions arm64/al arm64/allwinner arm64/altera arm64/amd arm64/amlogic arm64/apm arm64/arm arm64/bitmain arm64/broadcom arm64/broadcom/northstar2 arm64/broadcom/stin... X-SVN-Commit-Revision: 350690 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 19:18:38 -0000 Author: manu Date: Wed Aug 7 19:18:32 2019 New Revision: 350690 URL: https://svnweb.freebsd.org/changeset/base/350690 Log: MFC r347366: dts: Import files from Linux 5.1 Added: stable/12/sys/gnu/dts/arm/am335x-guardian.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/am335x-guardian.dts stable/12/sys/gnu/dts/arm/am3874-iceboard.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/am3874-iceboard.dts stable/12/sys/gnu/dts/arm/aspeed-bmc-inspur-on5263m5.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/aspeed-bmc-inspur-on5263m5.dts stable/12/sys/gnu/dts/arm/bcm2837-rpi-3-a-plus.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/bcm2837-rpi-3-a-plus.dts stable/12/sys/gnu/dts/arm/bcm47094-phicomm-k3.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/bcm47094-phicomm-k3.dts stable/12/sys/gnu/dts/arm/imx6-logicpd-baseboard.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6-logicpd-baseboard.dtsi stable/12/sys/gnu/dts/arm/imx6-logicpd-som.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6-logicpd-som.dtsi stable/12/sys/gnu/dts/arm/imx6dl-yapp4-common.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6dl-yapp4-common.dtsi stable/12/sys/gnu/dts/arm/imx6dl-yapp4-draco.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6dl-yapp4-draco.dts stable/12/sys/gnu/dts/arm/imx6dl-yapp4-hydra.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6dl-yapp4-hydra.dts stable/12/sys/gnu/dts/arm/imx6dl-yapp4-ursa.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6dl-yapp4-ursa.dts stable/12/sys/gnu/dts/arm/imx6q-logicpd.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6q-logicpd.dts stable/12/sys/gnu/dts/arm/imx6ul-phytec-pcl063.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6ul-phytec-pcl063.dtsi stable/12/sys/gnu/dts/arm/imx6ul-phytec-peb-eval-01.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6ul-phytec-peb-eval-01.dtsi stable/12/sys/gnu/dts/arm/imx6ul-phytec-phyboard-segin-full.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6ul-phytec-phyboard-segin-full.dts stable/12/sys/gnu/dts/arm/imx6ul-phytec-phyboard-segin.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm/imx6ul-phytec-phyboard-segin.dtsi stable/12/sys/gnu/dts/arm/lpc4357-myd-lpc4357.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/lpc4357-myd-lpc4357.dts stable/12/sys/gnu/dts/arm/milbeaut-m10v-evb.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/milbeaut-m10v-evb.dts stable/12/sys/gnu/dts/arm/milbeaut-m10v.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm/milbeaut-m10v.dtsi stable/12/sys/gnu/dts/arm/r7s9210-rza2mevb.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/r7s9210-rza2mevb.dts stable/12/sys/gnu/dts/arm/r7s9210.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm/r7s9210.dtsi stable/12/sys/gnu/dts/arm/rv1108-elgin-r1.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/rv1108-elgin-r1.dts stable/12/sys/gnu/dts/arm/socfpga_cyclone5_chameleon96.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/socfpga_cyclone5_chameleon96.dts stable/12/sys/gnu/dts/arm/vf610-zii-ssmb-dtu.dts - copied unchanged from r347366, head/sys/gnu/dts/arm/vf610-zii-ssmb-dtu.dts stable/12/sys/gnu/dts/arm64/amlogic/meson-g12a-x96-max.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/amlogic/meson-g12a-x96-max.dts stable/12/sys/gnu/dts/arm64/arm/fvp-base-revc.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/arm/fvp-base-revc.dts stable/12/sys/gnu/dts/arm64/arm/rtsm_ve-motherboard-rs2.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm64/arm/rtsm_ve-motherboard-rs2.dtsi stable/12/sys/gnu/dts/arm64/bitmain/ - copied from r347366, head/sys/gnu/dts/arm64/bitmain/ stable/12/sys/gnu/dts/arm64/broadcom/bcm2837-rpi-3-a-plus.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/broadcom/bcm2837-rpi-3-a-plus.dts stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a-oxalis.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/freescale/fsl-ls1012a-oxalis.dts stable/12/sys/gnu/dts/arm64/freescale/imx8mm-pinfunc.h - copied unchanged from r347366, head/sys/gnu/dts/arm64/freescale/imx8mm-pinfunc.h stable/12/sys/gnu/dts/arm64/freescale/imx8qxp-mek.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/freescale/imx8qxp-mek.dts stable/12/sys/gnu/dts/arm64/freescale/imx8qxp.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm64/freescale/imx8qxp.dtsi stable/12/sys/gnu/dts/arm64/marvell/armada-3720-uDPU.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/marvell/armada-3720-uDPU.dts stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2894-0050-a08.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/nvidia/tegra210-p2894-0050-a08.dts stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2894.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm64/nvidia/tegra210-p2894.dtsi stable/12/sys/gnu/dts/arm64/renesas/cat875.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm64/renesas/cat875.dtsi stable/12/sys/gnu/dts/arm64/renesas/r8a774c0-cat874.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/renesas/r8a774c0-cat874.dts stable/12/sys/gnu/dts/arm64/renesas/r8a774c0-ek874.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/renesas/r8a774c0-ek874.dts stable/12/sys/gnu/dts/arm64/renesas/r8a774c0.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm64/renesas/r8a774c0.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-nanopc-t4.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/rockchip/rk3399-nanopc-t4.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-nanopi-m4.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/rockchip/rk3399-nanopi-m4.dts stable/12/sys/gnu/dts/arm64/rockchip/rk3399-nanopi4.dtsi - copied unchanged from r347366, head/sys/gnu/dts/arm64/rockchip/rk3399-nanopi4.dtsi stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rock-pi-4.dts - copied unchanged from r347366, head/sys/gnu/dts/arm64/rockchip/rk3399-rock-pi-4.dts stable/12/sys/gnu/dts/include/dt-bindings/clk/lochnagar.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/clk/lochnagar.h stable/12/sys/gnu/dts/include/dt-bindings/clock/actions,s500-cmu.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/clock/actions,s500-cmu.h stable/12/sys/gnu/dts/include/dt-bindings/clock/g12a-aoclkc.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/clock/g12a-aoclkc.h stable/12/sys/gnu/dts/include/dt-bindings/clock/g12a-clkc.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/clock/g12a-clkc.h stable/12/sys/gnu/dts/include/dt-bindings/clock/imx8mm-clock.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/clock/imx8mm-clock.h stable/12/sys/gnu/dts/include/dt-bindings/clock/sifive-fu540-prci.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/clock/sifive-fu540-prci.h stable/12/sys/gnu/dts/include/dt-bindings/iio/adc/ingenic,adc.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/iio/adc/ingenic,adc.h stable/12/sys/gnu/dts/include/dt-bindings/interconnect/ - copied from r347366, head/sys/gnu/dts/include/dt-bindings/interconnect/ stable/12/sys/gnu/dts/include/dt-bindings/mfd/st,stpmic1.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/mfd/st,stpmic1.h stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/lochnagar.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/pinctrl/lochnagar.h stable/12/sys/gnu/dts/include/dt-bindings/power/qcom-rpmpd.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/power/qcom-rpmpd.h stable/12/sys/gnu/dts/include/dt-bindings/power/xlnx-zynqmp-power.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/power/xlnx-zynqmp-power.h stable/12/sys/gnu/dts/include/dt-bindings/reset/amlogic,meson-g12a-reset.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/reset/amlogic,meson-g12a-reset.h stable/12/sys/gnu/dts/include/dt-bindings/reset/g12a-aoclkc.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/reset/g12a-aoclkc.h stable/12/sys/gnu/dts/include/dt-bindings/reset/imx8mq-reset.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/reset/imx8mq-reset.h stable/12/sys/gnu/dts/include/dt-bindings/reset/xlnx-zynqmp-resets.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/reset/xlnx-zynqmp-resets.h stable/12/sys/gnu/dts/include/dt-bindings/soc/bcm2835-pm.h - copied unchanged from r347366, head/sys/gnu/dts/include/dt-bindings/soc/bcm2835-pm.h Deleted: stable/12/sys/gnu/dts/arm/skeleton.dtsi stable/12/sys/gnu/dts/arm/skeleton64.dtsi Modified: stable/12/sys/gnu/dts/arm/alphascale-asm9260.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/alpine.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-baltos-ir2110.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-baltos-ir3220.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-baltos-ir5221.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-chiliboard.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-evm.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-evmsk.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-icev2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-igep0033.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-lxm.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-moxa-uc-8100-me-t.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-phycore-som.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/am335x-shc.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/am437x-gp-evm.dts (contents, props changed) stable/12/sys/gnu/dts/arm/am437x-l4.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/am43x-epos-evm.dts (contents, props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/arm-realview-pb1176.dts (contents, props changed) stable/12/sys/gnu/dts/arm/arm-realview-pb11mp.dts (contents, props changed) stable/12/sys/gnu/dts/arm/arm-realview-pbx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/armada-370-rd.dts (contents, props changed) stable/12/sys/gnu/dts/arm/armada-388-clearfog.dts (contents, props changed) stable/12/sys/gnu/dts/arm/armada-388-clearfog.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/armada-38x.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/armada-39x.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/armada-xp-linksys-mamba.dts (contents, props changed) stable/12/sys/gnu/dts/arm/artpec6.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-arm-stardragon4800-rep2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-facebook-tiogapass.dts (contents, props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-palmetto.dts (contents, props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-quanta-q71l.dts (contents, props changed) stable/12/sys/gnu/dts/arm/aspeed-g4.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/aspeed-g5.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91-nattis-2-natte-2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/at91-sama5d27_som1.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91-sama5d27_som1_ek.dts (contents, props changed) stable/12/sys/gnu/dts/arm/at91-wb45n.dts (contents, props changed) stable/12/sys/gnu/dts/arm/at91-wb50n.dts (contents, props changed) stable/12/sys/gnu/dts/arm/at91rm9200.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91sam9260.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91sam9261.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91sam9263.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91sam9g45.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91sam9n12.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91sam9rl.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/at91sam9x5.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/atlas6-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm/atlas6.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/atlas7.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/axm55xx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm-cygnus.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm-nsp.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm11351.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm21664-garnet.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm21664.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm23550-sparrow.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm23550.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm28155-ap.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-a-plus.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-b-plus.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-b-rev2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-zero-w.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-zero.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2836-rpi-2-b.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2837-rpi-3-b-plus.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2837-rpi-3-b.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm2837-rpi-cm3.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm283x.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47081-asus-rt-n18u.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47081-buffalo-wzr-600dhp2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47081-buffalo-wzr-900dhp.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47081-luxul-xap-1410.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47081-luxul-xwr-1200.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47081-tplink-archer-c5-v2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47094-dlink-dir-885l.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47094-linksys-panamera.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47094-luxul-abr-4500.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47094-luxul-xap-1610.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47094-luxul-xbr-4500.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47094-luxul-xwr-3100.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47094-luxul-xwr-3150-v1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47094-netgear-r8500.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47189-luxul-xap-1440.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47189-luxul-xap-810.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm47189-tenda-ac9.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm5301x.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm53340-ubnt-unifi-switch8.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm53573.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm63138.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm7445.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/bcm947189acdbmr.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm953012er.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm953012hr.dts (contents, props changed) stable/12/sys/gnu/dts/arm/bcm953012k.dts (contents, props changed) stable/12/sys/gnu/dts/arm/cx92755.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/da850-lcdk.dts (contents, props changed) stable/12/sys/gnu/dts/arm/dm814x.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/dove.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/dra7-l4.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/ep7209.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/ep7211-edb7211.dts (contents, props changed) stable/12/sys/gnu/dts/arm/exynos3250.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/exynos4412-odroid-common.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/exynos4412-odroidx.dts (contents, props changed) stable/12/sys/gnu/dts/arm/exynos5250-arndale.dts (contents, props changed) stable/12/sys/gnu/dts/arm/exynos5422-odroid-core.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/exynos5422-odroidxu3-audio.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/exynos5422-odroidxu3-common.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/exynos5422-odroidxu3-lite.dts (contents, props changed) stable/12/sys/gnu/dts/arm/exynos5422-odroidxu4.dts (contents, props changed) stable/12/sys/gnu/dts/arm/imx27.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx28-cfa10036.dts (contents, props changed) stable/12/sys/gnu/dts/arm/imx51-digi-connectcore-jsk.dts (contents, props changed) stable/12/sys/gnu/dts/arm/imx51-digi-connectcore-som.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6dl-colibri-eval-v3.dts (contents, props changed) stable/12/sys/gnu/dts/arm/imx6q-tbs2910.dts (contents, props changed) stable/12/sys/gnu/dts/arm/imx6qdl-apalis.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6qdl-colibri.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6qdl-icore-rqs.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6qdl-phytec-pfla02.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6qdl-sabresd.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6sl.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6sx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6ull-colibri.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx6ull-pinfunc-snvs.h (contents, props changed) stable/12/sys/gnu/dts/arm/imx6ull.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx7d.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/imx7ulp.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/integrator.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/integratorcp.dts (contents, props changed) stable/12/sys/gnu/dts/arm/kirkwood-dir665.dts (contents, props changed) stable/12/sys/gnu/dts/arm/kirkwood-linksys-viper.dts (contents, props changed) stable/12/sys/gnu/dts/arm/kirkwood-mv88f6281gtw-ge.dts (contents, props changed) stable/12/sys/gnu/dts/arm/kirkwood-rd88f6281-z0.dts (contents, props changed) stable/12/sys/gnu/dts/arm/kirkwood-rd88f6281.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/kirkwood.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/lpc3250-ea3250.dts (contents, props changed) stable/12/sys/gnu/dts/arm/lpc3250-phy3250.dts (contents, props changed) stable/12/sys/gnu/dts/arm/lpc32xx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/lpc4350-hitex-eval.dts (contents, props changed) stable/12/sys/gnu/dts/arm/lpc4357-ea4357-devkit.dts (contents, props changed) stable/12/sys/gnu/dts/arm/ls1021a-moxa-uc-8410a.dts (contents, props changed) stable/12/sys/gnu/dts/arm/ls1021a-qds.dts (contents, props changed) stable/12/sys/gnu/dts/arm/ls1021a-twr.dts (contents, props changed) stable/12/sys/gnu/dts/arm/ls1021a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/meson.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/meson6-atv1200.dts (contents, props changed) stable/12/sys/gnu/dts/arm/meson6.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/meson8-minix-neo-x8.dts (contents, props changed) stable/12/sys/gnu/dts/arm/meson8.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/meson8b-ec100.dts (contents, props changed) stable/12/sys/gnu/dts/arm/meson8b-mxq.dts (contents, props changed) stable/12/sys/gnu/dts/arm/meson8b-odroidc1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/meson8b.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/meson8m2-mxiii-plus.dts (contents, props changed) stable/12/sys/gnu/dts/arm/meson8m2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mmp2-brownstone.dts (contents, props changed) stable/12/sys/gnu/dts/arm/mmp2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/moxart.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mps2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mt2701-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm/mt2701.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mt6580-evbp1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/mt6580.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mt6589-aquaris5.dts (contents, props changed) stable/12/sys/gnu/dts/arm/mt6589.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mt6592-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm/mt6592.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mt7623.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mt8127-moose.dts (contents, props changed) stable/12/sys/gnu/dts/arm/mt8127.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/mt8135-evbp1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/mt8135.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/nspire.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/omap3-evm-common.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/omap3-evm-processor-common.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/omap3-gta04.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/omap3-gta04a5.dts (contents, props changed) stable/12/sys/gnu/dts/arm/omap4-droid4-xt894.dts (contents, props changed) stable/12/sys/gnu/dts/arm/omap4-panda-common.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/omap4-sdp.dts (contents, props changed) stable/12/sys/gnu/dts/arm/orion5x-lacie-d2-network.dts (contents, props changed) stable/12/sys/gnu/dts/arm/orion5x-lacie-ethernet-disk-mini-v2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/orion5x-lswsgl.dts (contents, props changed) stable/12/sys/gnu/dts/arm/orion5x-maxtor-shared-storage-2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/orion5x-netgear-wnr854t.dts (contents, props changed) stable/12/sys/gnu/dts/arm/orion5x-rd88f5182-nas.dts (contents, props changed) stable/12/sys/gnu/dts/arm/orion5x.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/ox810se.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/ox820.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/picoxcell-pc3x2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/picoxcell-pc3x3.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/prima2-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm/prima2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/pxa168.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/pxa2xx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/pxa910.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-apq8060-dragonboard.dts (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-apq8084.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-ipq8064.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-mdm9615-wp8548.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-mdm9615.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-msm8660.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-msm8960.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-msm8974-lge-nexus5-hammerhead.dts (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-msm8974.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-pm8941.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/qcom-pma8084.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/r8a7743.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/r8a7744.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/r8a77470-iwg23s-sbc.dts (contents, props changed) stable/12/sys/gnu/dts/arm/r8a7778.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/r8a7779.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/r8a7790-stout.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3036-kylin.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3036.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/rk3066a-bqcurie2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3066a-mk808.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3066a-rayeager.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3066a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/rk3188-bqedison2qc.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3188-px3-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3229-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-fennec.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-firefly-reload.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-miqi.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-popmetal.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-rock2-square.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-tinker-s.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-tinker.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288-vyasa.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rk3288.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/rv1108-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm/rv1108.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/s3c2416-smdk2416.dts (contents, props changed) stable/12/sys/gnu/dts/arm/s5pv210-aries.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/s5pv210-fascinate4g.dts (contents, props changed) stable/12/sys/gnu/dts/arm/s5pv210-galaxys.dts (contents, props changed) stable/12/sys/gnu/dts/arm/s5pv210.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sama5d2-pinfunc.h (contents, props changed) stable/12/sys/gnu/dts/arm/sama5d2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sama5d3.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sama5d4.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/socfpga.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/socfpga_arria10.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/spear13xx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/spear3xx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/spear600.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/ste-nomadik-nhk15.dts (contents, props changed) stable/12/sys/gnu/dts/arm/ste-nomadik-stn8815.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/ste-u300.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32429i-eval.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32746g-eval.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32f429-disco.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32f429.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/stm32f469-disco.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32f746-disco.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32f746.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/stm32f769-disco.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32h743-pinctrl.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/stm32h743.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/stm32h743i-disco.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32h743i-eval.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32mp157-pinctrl.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/stm32mp157c-ed1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32mp157c-ev1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/stm32mp157c.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sun4i-a10.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-q8-tablet.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun5i-reference-design-tablet.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-bananapi.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-a33.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-ippo-q8h-v1.2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-ippo-q8h-v5.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-q8-tablet.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a23.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a33.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a83t-allwinner-h8homlet-v2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a83t-bananapi-m3.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-a83t-cubietruck-plus.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-nanopi-m1-plus.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-q8-common.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-r40-bananapi-m2-ultra.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun8i-r40.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sun9i-a80-cubieboard4.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun9i-a80-optimus.dts (contents, props changed) stable/12/sys/gnu/dts/arm/sun9i-a80.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sunxi-bananapi-m2-plus.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/sunxi-h3-h5.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/tegra114-dalmore.dts (contents, props changed) stable/12/sys/gnu/dts/arm/tegra124-jetson-tk1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/tegra124-nyan.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/tegra124-venice2.dts (contents, props changed) stable/12/sys/gnu/dts/arm/tegra20-trimslice.dts (contents, props changed) stable/12/sys/gnu/dts/arm/tegra20.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/tegra30-beaver.dts (contents, props changed) stable/12/sys/gnu/dts/arm/tegra30-cardhu.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/versatile-ab.dts (contents, props changed) stable/12/sys/gnu/dts/arm/vexpress-v2m-rs1.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/vexpress-v2m.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/vexpress-v2p-ca15_a7.dts (contents, props changed) stable/12/sys/gnu/dts/arm/vf610-bk4.dts (contents, props changed) stable/12/sys/gnu/dts/arm/vf610-zii-cfu1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/vf610-zii-ssmb-spu3.dts (contents, props changed) stable/12/sys/gnu/dts/arm/vt8500.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/wm8505.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/wm8650.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/wm8750.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/wm8850.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/zx296702-ad1.dts (contents, props changed) stable/12/sys/gnu/dts/arm/zx296702.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm/zynq-zturn.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/actions/s700-cubieboard7.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/actions/s700.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/actions/s900.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/al/alpine-v2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-bananapi-m64.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-nanopi-a64.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-olinuxino.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-orangepi-win.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pine64.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-teres-i.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-libretech-all-h3-cc.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/altera/socfpga_stratix10.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-axg-s400.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-axg.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-g12a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/apm/apm-shadowcat.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/apm/apm-storm.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8-gicv2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8-gicv3.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/juno-base.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/juno-r1.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/juno-r2.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/juno.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/rtsm_ve-aemv8a.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/rtsm_ve-motherboard.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/arm/vexpress-v2m-rs1.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/broadcom/northstar2/ns2.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/cavium/thunder-88xx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/cavium/thunder2-99xx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos5433.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos7.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1028a-rdb.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1028a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043a-qds.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a-qds.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a-rdb.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1088a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls208xa.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-lx2160a-rdb.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-lx2160a.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/imx8mq-evk.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/freescale/imx8mq.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi3660-hikey960.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi3660.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi3670.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi3798cv200-poplar.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi3798cv200.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi6220-hikey.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi6220.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hip05.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hip06.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hip07.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/lg/lg1312.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/lg/lg1313.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-3720-espressobin.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-372x.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-37xx.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-7040-db.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8040-db.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-ap806-dual.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-ap806-quad.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-ap806.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-ap810-ap0-octa-core.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-cp110.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt2712-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt2712e.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6797-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6797-x20-dev.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6797.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt7622.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt8173.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra132.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra186-p2771-0000.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra186-p3310.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra186.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra194-p2888.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra194-p2972-0000.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra194.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2371-2180.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2597.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210-smaug.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/apq8016-sbc.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/ipq8074.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8916.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8992.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8994.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8996-pins.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8996.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8998-mtp.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8998.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/pm8005.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/pm8916.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/pm8998.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/pmi8994.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/pmi8998.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/pms405.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/qcs404-evb.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/qcs404.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/sdm845-mtp.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/qcom/sdm845.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/realtek/rtd1295.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a774a1.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7796-salvator-xs.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7796.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77965.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77970-v3msk.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77970.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77980.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77990-ebisu.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77990.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77995-draak.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77995.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/salvator-common.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/ulcb-kf.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/renesas/ulcb.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/px30.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3328-roc-cc.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3328-rock64.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3328.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368-evb.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368-geekbox.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368-lion.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368-orion-r68-meta.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368-px5-evb.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368-r88.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-chromebook.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rock960.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rockpro64.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-sapphire-excavator.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld11.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld20-global.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld20.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-pxs3-ref.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-pxs3.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/sprd/sc2731.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/sprd/sc9836.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/sprd/sc9860.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/sprd/sp9860g-1h10.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/synaptics/as370.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/synaptics/berlin4ct.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am65-main.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am65-mcu.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am654-base-board.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am654.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu100-revC.dts (contents, props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp.dtsi (contents, props changed) stable/12/sys/gnu/dts/arm64/zte/zx296718.dtsi (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/ath79-clk.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/axg-aoclkc.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5433.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/gxbb-aoclkc.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx5-clock.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx8mq-clock.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/marvell,mmp2.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/meson8b-clkc.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/mt2712-clk.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/mt8173-clk.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,rpmcc.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,rpmh.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a774a1-cpg-mssr.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a774c0-cpg-mssr.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7778-clock.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stm32mp1-clks.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/gpio.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/input/linux-event-codes.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/at91.h (contents, props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/mt8173-power.h (contents, props changed) Directory Properties: stable/12/ (props changed) stable/12/sys/gnu/dts/arm/aks-cdu.dts (props changed) stable/12/sys/gnu/dts/arm/alphascale-asm9260-devkit.dts (props changed) stable/12/sys/gnu/dts/arm/alpine-db.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-baltos-leds.dtsi (props changed) stable/12/sys/gnu/dts/arm/am335x-baltos.dtsi (props changed) stable/12/sys/gnu/dts/arm/am335x-base0033.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-bone-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/am335x-bone.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-boneblack-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/am335x-boneblack-wireless.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-boneblack.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-boneblue.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-bonegreen-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/am335x-bonegreen-wireless.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-bonegreen.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-chilisom.dtsi (props changed) stable/12/sys/gnu/dts/arm/am335x-cm-t335.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2101.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-nano.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-osd3358-sm-red.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-osd335x-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/am335x-pcm-953.dtsi (props changed) stable/12/sys/gnu/dts/arm/am335x-pdu001.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-pepper.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-phycore-rdk.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-pocketbeagle.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-sancloud-bbe.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-sbc-t335.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-sl50.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-wega-rdk.dts (props changed) stable/12/sys/gnu/dts/arm/am335x-wega.dtsi (props changed) stable/12/sys/gnu/dts/arm/am33xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/am33xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/am3517-craneboard.dts (props changed) stable/12/sys/gnu/dts/arm/am3517-evm-ui.dtsi (props changed) stable/12/sys/gnu/dts/arm/am3517-evm.dts (props changed) stable/12/sys/gnu/dts/arm/am3517-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/am3517.dtsi (props changed) stable/12/sys/gnu/dts/arm/am3517_mt_ventoux.dts (props changed) stable/12/sys/gnu/dts/arm/am35xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/am4372.dtsi (props changed) stable/12/sys/gnu/dts/arm/am437x-cm-t43.dts (props changed) stable/12/sys/gnu/dts/arm/am437x-idk-evm.dts (props changed) stable/12/sys/gnu/dts/arm/am437x-sbc-t43.dts (props changed) stable/12/sys/gnu/dts/arm/am437x-sk-evm.dts (props changed) stable/12/sys/gnu/dts/arm/am43xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/am571x-idk.dts (props changed) stable/12/sys/gnu/dts/arm/am572x-idk-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/am572x-idk.dts (props changed) stable/12/sys/gnu/dts/arm/am574x-idk.dts (props changed) stable/12/sys/gnu/dts/arm/am57xx-beagle-x15-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/am57xx-beagle-x15-revb1.dts (props changed) stable/12/sys/gnu/dts/arm/am57xx-beagle-x15-revc.dts (props changed) stable/12/sys/gnu/dts/arm/am57xx-beagle-x15.dts (props changed) stable/12/sys/gnu/dts/arm/am57xx-cl-som-am57x.dts (props changed) stable/12/sys/gnu/dts/arm/am57xx-commercial-grade.dtsi (props changed) stable/12/sys/gnu/dts/arm/am57xx-idk-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/am57xx-industrial-grade.dtsi (props changed) stable/12/sys/gnu/dts/arm/am57xx-sbc-am57x.dts (props changed) stable/12/sys/gnu/dts/arm/animeo_ip.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-11mp-bbrevd-ctrevb.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-11mp-bbrevd.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-11mp-ctrevb.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-11mp-revb.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-11mp.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-a9mp-bbrevd.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-a9mp.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-bbrevd.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-bbrevd.dtsi (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb-mp.dtsi (props changed) stable/12/sys/gnu/dts/arm/arm-realview-eb.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-pba8.dts (props changed) stable/12/sys/gnu/dts/arm/arm-realview-pbx-a9.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-db.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-dlink-dns327l.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-mirabox.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-netgear-rn102.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-netgear-rn104.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-seagate-nas-2bay.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-seagate-nas-4bay.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-seagate-nas-xbay.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-370-seagate-personal-cloud-2bay.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-seagate-personal-cloud.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-seagate-personal-cloud.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-370-synology-ds213j.dts (props changed) stable/12/sys/gnu/dts/arm/armada-370-xp.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-370.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-375-db.dts (props changed) stable/12/sys/gnu/dts/arm/armada-375.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-380.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-385-db-88f6820-amc.dts (props changed) stable/12/sys/gnu/dts/arm/armada-385-db-ap.dts (props changed) stable/12/sys/gnu/dts/arm/armada-385-linksys-caiman.dts (props changed) stable/12/sys/gnu/dts/arm/armada-385-linksys-cobra.dts (props changed) stable/12/sys/gnu/dts/arm/armada-385-linksys-rango.dts (props changed) stable/12/sys/gnu/dts/arm/armada-385-linksys-shelby.dts (props changed) stable/12/sys/gnu/dts/arm/armada-385-linksys.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-385-synology-ds116.dts (props changed) stable/12/sys/gnu/dts/arm/armada-385-turris-omnia.dts (props changed) stable/12/sys/gnu/dts/arm/armada-385.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-388-clearfog-base.dts (props changed) stable/12/sys/gnu/dts/arm/armada-388-clearfog-pro.dts (props changed) stable/12/sys/gnu/dts/arm/armada-388-db.dts (props changed) stable/12/sys/gnu/dts/arm/armada-388-gp.dts (props changed) stable/12/sys/gnu/dts/arm/armada-388-helios4.dts (props changed) stable/12/sys/gnu/dts/arm/armada-388-rd.dts (props changed) stable/12/sys/gnu/dts/arm/armada-388.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-38x-solidrun-microsom.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-390-db.dts (props changed) stable/12/sys/gnu/dts/arm/armada-390.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-395-gp.dts (props changed) stable/12/sys/gnu/dts/arm/armada-395.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-398-db.dts (props changed) stable/12/sys/gnu/dts/arm/armada-398.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-xp-98dx3236.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-xp-98dx3336.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-xp-98dx4251.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-xp-axpwifiap.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-db-dxbc2.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-db-xc3-24g4xg.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-db.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-gp.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-lenovo-ix4-300d.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-matrix.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-mv78230.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-xp-mv78260.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-xp-mv78460.dtsi (props changed) stable/12/sys/gnu/dts/arm/armada-xp-netgear-rn2120.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-openblocks-ax3-4.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp-synology-ds414.dts (props changed) stable/12/sys/gnu/dts/arm/armada-xp.dtsi (props changed) stable/12/sys/gnu/dts/arm/armv7-m.dtsi (props changed) stable/12/sys/gnu/dts/arm/artpec6-devboard.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-ast2500-evb.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-arm-centriq2400-rep.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-facebook-cmm.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-intel-s2600wf.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-lanyang.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-romulus.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-witherspoon.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-opp-zaius.dts (props changed) stable/12/sys/gnu/dts/arm/aspeed-bmc-portwell-neptune.dts (props changed) stable/12/sys/gnu/dts/arm/at91-ariag25.dts (props changed) stable/12/sys/gnu/dts/arm/at91-ariettag25.dts (props changed) stable/12/sys/gnu/dts/arm/at91-cosino.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-cosino_mega2560.dts (props changed) stable/12/sys/gnu/dts/arm/at91-dvk_som60.dts (props changed) stable/12/sys/gnu/dts/arm/at91-dvk_su60_somc.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-dvk_su60_somc_lcm.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-foxg20.dts (props changed) stable/12/sys/gnu/dts/arm/at91-gatwick.dts (props changed) stable/12/sys/gnu/dts/arm/at91-kizbox.dts (props changed) stable/12/sys/gnu/dts/arm/at91-kizbox2.dts (props changed) stable/12/sys/gnu/dts/arm/at91-kizboxmini.dts (props changed) stable/12/sys/gnu/dts/arm/at91-linea.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-natte.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-qil_a9260.dts (props changed) stable/12/sys/gnu/dts/arm/at91-sam9_l9260.dts (props changed) stable/12/sys/gnu/dts/arm/at91-sama5d2_ptc_ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91-sama5d2_xplained.dts (props changed) stable/12/sys/gnu/dts/arm/at91-sama5d3_xplained.dts (props changed) stable/12/sys/gnu/dts/arm/at91-sama5d4_ma5d4.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-sama5d4_ma5d4evk.dts (props changed) stable/12/sys/gnu/dts/arm/at91-sama5d4_xplained.dts (props changed) stable/12/sys/gnu/dts/arm/at91-sama5d4ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91-som60.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-tse850-3.dts (props changed) stable/12/sys/gnu/dts/arm/at91-vinco.dts (props changed) stable/12/sys/gnu/dts/arm/at91-wb45n.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91-wb50n.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91rm9200_pqfp.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91rm9200ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9260ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9261ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9263ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9g15.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9g15ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9g20.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9g20ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9g20ek_2mmc.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9g20ek_common.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9g25.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9g25ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9g35.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9g35ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9m10g45ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9n12ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9rlek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9x25.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x25ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9x35.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x35ek.dts (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5_can.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5_isi.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5_lcd.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5_macb0.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5_macb1.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5_usart3.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5cm.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5dm.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9x5ek.dtsi (props changed) stable/12/sys/gnu/dts/arm/at91sam9xe.dtsi (props changed) stable/12/sys/gnu/dts/arm/atlas7-evb.dts (props changed) stable/12/sys/gnu/dts/arm/axm5516-amarillo.dts (props changed) stable/12/sys/gnu/dts/arm/axm5516-cpus.dtsi (props changed) stable/12/sys/gnu/dts/arm/axp152.dtsi (props changed) stable/12/sys/gnu/dts/arm/axp209.dtsi (props changed) stable/12/sys/gnu/dts/arm/axp223.dtsi (props changed) stable/12/sys/gnu/dts/arm/axp22x.dtsi (props changed) stable/12/sys/gnu/dts/arm/axp809.dtsi (props changed) stable/12/sys/gnu/dts/arm/axp81x.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm-cygnus-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm-hr2.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-a.dts (props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-b.dts (props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-cm1-io1.dts (props changed) stable/12/sys/gnu/dts/arm/bcm2835-rpi-cm1.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm2835.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm2836-rpi.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm2836.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm2837-rpi-cm3-io3.dts (props changed) stable/12/sys/gnu/dts/arm/bcm2837.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm283x-rpi-lan7515.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm283x-rpi-smsc9512.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm283x-rpi-smsc9514.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm283x-rpi-usb-host.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm283x-rpi-usb-otg.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm4708-asus-rt-ac56u.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-asus-rt-ac68u.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-buffalo-wzr-1750dhp.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-linksys-ea6300-v1.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-linksys-ea6500-v2.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-luxul-xap-1510.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-luxul-xwc-1000.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-netgear-r6250.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-netgear-r6300-v2.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708-smartrg-sr400ac.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4708.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm47081.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm4709-asus-rt-ac87u.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4709-buffalo-wxr-1900dhp.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4709-linksys-ea9200.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4709-netgear-r7000.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4709-netgear-r8000.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4709-tplink-archer-c9-v1.dts (props changed) stable/12/sys/gnu/dts/arm/bcm4709.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm47094.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm5301x-nand-cs0-bch1.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm5301x-nand-cs0-bch4.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm5301x-nand-cs0-bch8.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm5301x-nand-cs0.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm59056.dtsi (props changed) stable/12/sys/gnu/dts/arm/bcm7445-bcm97445svmb.dts (props changed) stable/12/sys/gnu/dts/arm/bcm911360_entphn.dts (props changed) stable/12/sys/gnu/dts/arm/bcm911360k.dts (props changed) stable/12/sys/gnu/dts/arm/bcm94708.dts (props changed) stable/12/sys/gnu/dts/arm/bcm94709.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958300k.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958305k.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958522er.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958525er.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958525xmc.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958622hr.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958623hr.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958625hr.dts (props changed) stable/12/sys/gnu/dts/arm/bcm958625k.dts (props changed) stable/12/sys/gnu/dts/arm/bcm963138dvt.dts (props changed) stable/12/sys/gnu/dts/arm/bcm988312hr.dts (props changed) stable/12/sys/gnu/dts/arm/bcm9hmidc.dtsi (props changed) stable/12/sys/gnu/dts/arm/berlin2-sony-nsz-gs7.dts (props changed) stable/12/sys/gnu/dts/arm/berlin2.dtsi (props changed) stable/12/sys/gnu/dts/arm/berlin2cd-google-chromecast.dts (props changed) stable/12/sys/gnu/dts/arm/berlin2cd-valve-steamlink.dts (props changed) stable/12/sys/gnu/dts/arm/berlin2cd.dtsi (props changed) stable/12/sys/gnu/dts/arm/berlin2q-marvell-dmp.dts (props changed) stable/12/sys/gnu/dts/arm/berlin2q.dtsi (props changed) stable/12/sys/gnu/dts/arm/compulab-sb-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/cros-adc-thermistors.dtsi (props changed) stable/12/sys/gnu/dts/arm/cros-ec-keyboard.dtsi (props changed) stable/12/sys/gnu/dts/arm/cros-ec-sbs.dtsi (props changed) stable/12/sys/gnu/dts/arm/cx92755_equinox.dts (props changed) stable/12/sys/gnu/dts/arm/da850-enbw-cmc.dts (props changed) stable/12/sys/gnu/dts/arm/da850-evm.dts (props changed) stable/12/sys/gnu/dts/arm/da850-lego-ev3.dts (props changed) stable/12/sys/gnu/dts/arm/da850.dtsi (props changed) stable/12/sys/gnu/dts/arm/dm8148-evm.dts (props changed) stable/12/sys/gnu/dts/arm/dm8148-t410.dts (props changed) stable/12/sys/gnu/dts/arm/dm814x-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/dm8168-evm.dts (props changed) stable/12/sys/gnu/dts/arm/dm816x-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/dm816x.dtsi (props changed) stable/12/sys/gnu/dts/arm/dove-cm-a510.dtsi (props changed) stable/12/sys/gnu/dts/arm/dove-cubox-es.dts (props changed) stable/12/sys/gnu/dts/arm/dove-cubox.dts (props changed) stable/12/sys/gnu/dts/arm/dove-d2plug.dts (props changed) stable/12/sys/gnu/dts/arm/dove-d3plug.dts (props changed) stable/12/sys/gnu/dts/arm/dove-dove-db.dts (props changed) stable/12/sys/gnu/dts/arm/dove-sbc-a510.dts (props changed) stable/12/sys/gnu/dts/arm/dra62x-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra62x-j5eco-evm.dts (props changed) stable/12/sys/gnu/dts/arm/dra62x.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra7-dspeve-thermal.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra7-evm-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra7-evm.dts (props changed) stable/12/sys/gnu/dts/arm/dra7-iva-thermal.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra7-mmc-iodelay.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra7.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra71-evm.dts (props changed) stable/12/sys/gnu/dts/arm/dra72-evm-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra72-evm-revc.dts (props changed) stable/12/sys/gnu/dts/arm/dra72-evm-tps65917.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra72-evm.dts (props changed) stable/12/sys/gnu/dts/arm/dra72x-mmc-iodelay.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra72x.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra74x-mmc-iodelay.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra74x.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra76-evm.dts (props changed) stable/12/sys/gnu/dts/arm/dra76x-mmc-iodelay.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra76x.dtsi (props changed) stable/12/sys/gnu/dts/arm/dra7xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/ecx-2000.dts (props changed) stable/12/sys/gnu/dts/arm/ecx-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/efm32gg-dk3750.dts (props changed) stable/12/sys/gnu/dts/arm/efm32gg.dtsi (props changed) stable/12/sys/gnu/dts/arm/elpida_ecb240abacn.dtsi (props changed) stable/12/sys/gnu/dts/arm/emev2-kzm9d.dts (props changed) stable/12/sys/gnu/dts/arm/emev2.dtsi (props changed) stable/12/sys/gnu/dts/arm/ep7211.dtsi (props changed) stable/12/sys/gnu/dts/arm/ethernut5.dts (props changed) stable/12/sys/gnu/dts/arm/evk-pro3.dts (props changed) stable/12/sys/gnu/dts/arm/exynos-mfc-reserved-memory.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos-syscon-restart.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos3250-artik5-eval.dts (props changed) stable/12/sys/gnu/dts/arm/exynos3250-artik5.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos3250-monk.dts (props changed) stable/12/sys/gnu/dts/arm/exynos3250-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos3250-rinato.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4-cpu-thermal.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4210-origen.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4210-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4210-smdkv310.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4210-trats.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4210-universal_c210.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4210.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4212.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4412-galaxy-s3.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4412-i9300.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-i9305.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-itop-elite.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-itop-scp-core.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4412-midas.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4412-n710x.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-odroidu3.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-odroidx2.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-origen.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4412-ppmu-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4412-prime.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4412-smdk4412.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-tiny4412.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412-trats2.dts (props changed) stable/12/sys/gnu/dts/arm/exynos4412.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4415-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4415.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4x12-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos4x12.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5250-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5250-smdk5250.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5250-snow-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5250-snow-rev5.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5250-snow.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5250-spring.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5250.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5260-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5260-xyref5260.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5260.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5410-odroidxu.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5410-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5410-smdk5410.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5410.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5420-arndale-octa.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5420-cpus.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5420-peach-pit.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5420-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5420-smdk5420.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5420-trip-points.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5420.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5422-cpu-thermal.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5422-cpus.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5422-odroidhc1.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5422-odroidxu3.dts (props changed) stable/12/sys/gnu/dts/arm/exynos54xx-odroidxu-leds.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos54xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/exynos5800-peach-pi.dts (props changed) stable/12/sys/gnu/dts/arm/exynos5800.dtsi (props changed) stable/12/sys/gnu/dts/arm/facebook-bmc-flash-layout.dtsi (props changed) stable/12/sys/gnu/dts/arm/ge863-pro3.dtsi (props changed) stable/12/sys/gnu/dts/arm/gemini-dlink-dir-685.dts (props changed) stable/12/sys/gnu/dts/arm/gemini-dlink-dns-313.dts (props changed) stable/12/sys/gnu/dts/arm/gemini-nas4220b.dts (props changed) stable/12/sys/gnu/dts/arm/gemini-rut1xx.dts (props changed) stable/12/sys/gnu/dts/arm/gemini-sl93512r.dts (props changed) stable/12/sys/gnu/dts/arm/gemini-sq201.dts (props changed) stable/12/sys/gnu/dts/arm/gemini-wbd111.dts (props changed) stable/12/sys/gnu/dts/arm/gemini-wbd222.dts (props changed) stable/12/sys/gnu/dts/arm/gemini.dtsi (props changed) stable/12/sys/gnu/dts/arm/gr-peach-audiocamerashield.dtsi (props changed) stable/12/sys/gnu/dts/arm/hi3519-demb.dts (props changed) stable/12/sys/gnu/dts/arm/hi3519.dtsi (props changed) stable/12/sys/gnu/dts/arm/hi3620-hi4511.dts (props changed) stable/12/sys/gnu/dts/arm/hi3620.dtsi (props changed) stable/12/sys/gnu/dts/arm/highbank.dts (props changed) stable/12/sys/gnu/dts/arm/hip01-ca9x2.dts (props changed) stable/12/sys/gnu/dts/arm/hip01.dtsi (props changed) stable/12/sys/gnu/dts/arm/hip04-d01.dts (props changed) stable/12/sys/gnu/dts/arm/hip04.dtsi (props changed) stable/12/sys/gnu/dts/arm/hisi-x5hd2-dkb.dts (props changed) stable/12/sys/gnu/dts/arm/hisi-x5hd2.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx1-ads.dts (props changed) stable/12/sys/gnu/dts/arm/imx1-apf9328.dts (props changed) stable/12/sys/gnu/dts/arm/imx1-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx1.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx23-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx23-olinuxino.dts (props changed) stable/12/sys/gnu/dts/arm/imx23-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx23-sansa.dts (props changed) stable/12/sys/gnu/dts/arm/imx23-stmp378x_devb.dts (props changed) stable/12/sys/gnu/dts/arm/imx23-xfi3.dts (props changed) stable/12/sys/gnu/dts/arm/imx23.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx25-eukrea-cpuimx25.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dts (props changed) stable/12/sys/gnu/dts/arm/imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dts (props changed) stable/12/sys/gnu/dts/arm/imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dts (props changed) stable/12/sys/gnu/dts/arm/imx25-eukrea-mbimxsd25-baseboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx25-karo-tx25.dts (props changed) stable/12/sys/gnu/dts/arm/imx25-pdk.dts (props changed) stable/12/sys/gnu/dts/arm/imx25-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx25.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx27-apf27.dts (props changed) stable/12/sys/gnu/dts/arm/imx27-apf27dev.dts (props changed) stable/12/sys/gnu/dts/arm/imx27-eukrea-cpuimx27.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx27-eukrea-mbimxsd27-baseboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx27-pdk.dts (props changed) stable/12/sys/gnu/dts/arm/imx27-phytec-phycard-s-rdk.dts (props changed) stable/12/sys/gnu/dts/arm/imx27-phytec-phycard-s-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx27-phytec-phycore-rdk.dts (props changed) stable/12/sys/gnu/dts/arm/imx27-phytec-phycore-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx27-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx28-apf28.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-apf28dev.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-apx4devkit.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-cfa10037.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-cfa10049.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-cfa10055.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-cfa10056.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-cfa10057.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-cfa10058.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-duckbill-2-485.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-duckbill-2-enocean.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-duckbill-2-spi.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-duckbill-2.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-duckbill.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-eukrea-mbmx283lc.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-eukrea-mbmx287lc.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-eukrea-mbmx28lc.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx28-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-m28.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx28-m28cu3.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-m28evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx28-sps1.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-ts4600.dts (props changed) stable/12/sys/gnu/dts/arm/imx28-tx28.dts (props changed) stable/12/sys/gnu/dts/arm/imx28.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx31-bug.dts (props changed) stable/12/sys/gnu/dts/arm/imx31-lite.dts (props changed) stable/12/sys/gnu/dts/arm/imx31.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx35-eukrea-cpuimx35.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx35-eukrea-mbimxsd35-baseboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx35-pdk.dts (props changed) stable/12/sys/gnu/dts/arm/imx35-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx35.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx50-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx50-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx50.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx51-apf51.dts (props changed) stable/12/sys/gnu/dts/arm/imx51-apf51dev.dts (props changed) stable/12/sys/gnu/dts/arm/imx51-babbage.dts (props changed) stable/12/sys/gnu/dts/arm/imx51-eukrea-cpuimx51.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx51-eukrea-mbimxsd51-baseboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx51-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx51-ts4800.dts (props changed) stable/12/sys/gnu/dts/arm/imx51-zii-rdu1.dts (props changed) stable/12/sys/gnu/dts/arm/imx51-zii-scu2-mezz.dts (props changed) stable/12/sys/gnu/dts/arm/imx51-zii-scu3-esb.dts (props changed) stable/12/sys/gnu/dts/arm/imx51.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx53-ard.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-cx9020.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-kp-ddc.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-kp-hsc.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-kp.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx53-m53.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx53-m53evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-mba53.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx53-ppd.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-qsb-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx53-qsb.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-qsrb.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-smd.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-tqma53.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx53-tx53-x03x.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-tx53-x13x.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-tx53.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx53-usbarmory.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-voipac-bsb.dts (props changed) stable/12/sys/gnu/dts/arm/imx53-voipac-dmm-668.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx53.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6dl-apf6dev.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-aristainetos2_4.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-aristainetos2_7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-aristainetos_4.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-aristainetos_7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-cubox-i-emmc-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-cubox-i-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-cubox-i.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-dfi-fs700-m60.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-emcon-avari.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw51xx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw52xx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw53xx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw54xx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw551x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw552x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw553x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw560x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw5903.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-gw5904.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-hummingboard-emmc-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-hummingboard-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-hummingboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-hummingboard2-emmc-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-hummingboard2-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-hummingboard2.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-icore-mipi.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-icore-rqs.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-icore.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-mamoj.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-nit6xlite.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-nitrogen6x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-phytec-mira-rdk-nand.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-phytec-pbab01.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-phytec-pfla02.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6dl-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx6dl-rex-basic.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-riotboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-sabreauto.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-sabrelite.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-sabresd.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-savageboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-ts4900.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-ts7970.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6dl-comtft.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6s-8034-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6s-8034.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6s-8035-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6s-8035.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6u-801x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6u-8033-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6u-8033.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6u-80xx-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6u-811x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-tx6u-81xx-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-udoo.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-wandboard-revb1.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-wandboard-revd1.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl-wandboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6dl.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6q-apalis-eval.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-apalis-ixora-v1.1.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-apalis-ixora.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-apf6dev.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-arm2.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-b450v3.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-b650v3.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-b850v3.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-ba16.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6q-bx50v3.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6q-cm-fx6.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-cubox-i-emmc-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-cubox-i-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-cubox-i.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-dfi-fs700-m60.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-dhcom-pdk2.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-dhcom-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6q-display5-tianma-tm070-1280x768.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-display5.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6q-dmo-edmqmx6.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-dms-ba16.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-emcon-avari.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-evi.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gk802.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw51xx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw52xx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw53xx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw5400-a.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw54xx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw551x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw552x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw553x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw560x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw5903.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-gw5904.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-h100.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-hummingboard-emmc-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-hummingboard-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-hummingboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-hummingboard2-emmc-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-hummingboard2-som-v15.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-hummingboard2.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-icore-mipi.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-icore-ofcap10.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-icore-ofcap12.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-icore-rqs.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-icore.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-kp-tpc.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-kp.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6q-marsboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-mccmon6.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-nitrogen6_max.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-nitrogen6_som2.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-nitrogen6x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-novena.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-phytec-mira-rdk-emmc.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-phytec-mira-rdk-nand.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-phytec-pbab01.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-phytec-pfla02.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6q-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx6q-pistachio.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-rex-pro.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-sabreauto.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-sabrelite.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-sabresd.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-savageboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-sbc6x.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-ts4900.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-ts7970.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-1010-comtft.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-1010.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-1020-comtft.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-1020.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-1036-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-1036.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-10x0-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-1110.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-tx6q-11x0-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-udoo.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-utilite-pro.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-var-dt6customboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-wandboard-revb1.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-wandboard-revd1.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-wandboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q-zii-rdu2.dts (props changed) stable/12/sys/gnu/dts/arm/imx6q.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-apf6.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-apf6dev.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-aristainetos.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-aristainetos2.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-cubox-i.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-dfi-fs700-m60.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-emcon-avari.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-emcon.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw51xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw52xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw53xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw54xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw551x.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw552x.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw553x.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw560x.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw5903.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-gw5904.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-hummingboard.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-hummingboard2-emmc.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-hummingboard2.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-icore-1.5.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-icore.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-nit6xlite.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-nitrogen6_max.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-nitrogen6_som2.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-nitrogen6x.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-phytec-mira.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-phytec-pbab01.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-phytec-phycore-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-rex.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-sabreauto.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-sabrelite.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-savageboard.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-sr-som-brcm.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-sr-som-emmc.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-sr-som-ti.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-sr-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-ts4900.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-ts7970.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-tx6-lcd.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-tx6-lvds.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-tx6-mb7.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-tx6.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-udoo.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-var-dart.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-wandboard-revb1.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-wandboard-revc1.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-wandboard-revd1.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-wandboard.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl-zii-rdu2.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qdl.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6qp-nitrogen6_max.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-nitrogen6_som2.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-phytec-mira-rdk-nand.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-sabreauto.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-sabresd.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-tx6qp-8037-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-tx6qp-8037.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-tx6qp-8137-mb7.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-tx6qp-8137.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-wandboard-revd1.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp-zii-rdu2.dts (props changed) stable/12/sys/gnu/dts/arm/imx6qp.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6sl-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sl-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx6sl-warp.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sll-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sll-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx6sll.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6sx-nitrogen6sx.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx6sx-sabreauto.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-sdb-reva.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-sdb-sai.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-sdb.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-sdb.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6sx-softing-vining-2000.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-udoo-neo-basic.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-udoo-neo-extended.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-udoo-neo-full.dts (props changed) stable/12/sys/gnu/dts/arm/imx6sx-udoo-neo.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ul-14x14-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-14x14-evk.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ul-ccimx6ulsbcexpress.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-ccimx6ulsbcpro.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-ccimx6ulsom.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ul-geam.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-isiot-emmc.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-isiot-nand.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-isiot.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ul-liteboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-litesom.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ul-opos6ul.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ul-opos6uldev.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-pico-hobbit.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-pico-pi.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-pico.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ul-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx6ul-tx6ul-0010.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-tx6ul-0011.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-tx6ul-mainboard.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ul-tx6ul.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ul.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ull-14x14-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ull-colibri-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ull-colibri-eval-v3.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ull-colibri-nonwifi.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ull-colibri-wifi-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ull-colibri-wifi.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx6ull-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx6ulz-14x14-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx6ulz.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx7-colibri-eval-v3.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx7-colibri.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx7d-cl-som-imx7.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-colibri-emmc-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-colibri-emmc.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx7d-colibri-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-colibri.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx7d-nitrogen7.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-pico-hobbit.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-pico-pi.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-pico.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx7d-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/imx7d-sbc-imx7.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-sdb-reva.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-sdb-sht11.dts (props changed) stable/12/sys/gnu/dts/arm/imx7d-sdb.dts (props changed) stable/12/sys/gnu/dts/arm/imx7s-colibri-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/imx7s-colibri.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx7s-warp.dts (props changed) stable/12/sys/gnu/dts/arm/imx7s.dtsi (props changed) stable/12/sys/gnu/dts/arm/imx7ulp-evk.dts (props changed) stable/12/sys/gnu/dts/arm/imx7ulp-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/integratorap.dts (props changed) stable/12/sys/gnu/dts/arm/iwg20d-q7-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/iwg20d-q7-dbcm-ca.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2e-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2e-evm.dts (props changed) stable/12/sys/gnu/dts/arm/keystone-k2e-netcp.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2e.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2g-evm.dts (props changed) stable/12/sys/gnu/dts/arm/keystone-k2g-ice.dts (props changed) stable/12/sys/gnu/dts/arm/keystone-k2g-netcp.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2g.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2hk-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2hk-evm.dts (props changed) stable/12/sys/gnu/dts/arm/keystone-k2hk-netcp.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2hk.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2l-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2l-evm.dts (props changed) stable/12/sys/gnu/dts/arm/keystone-k2l-netcp.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone-k2l.dtsi (props changed) stable/12/sys/gnu/dts/arm/keystone.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-6192.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-6281.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-6282.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-98dx4122.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-b3.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-blackarmor-nas220.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-cloudbox.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-d2net.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-db-88f6281.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-db-88f6282.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-db.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-dns320.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-dns325.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-dnskw.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-dockstar.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-dreamplug.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds109.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds110jv10.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds111.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds112.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds209.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds210.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds212.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds212j.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds409.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds409slim.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds411.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds411j.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ds411slim.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-goflexnet.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-guruplug-server-plus.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ib62x0.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-iconnect.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-iomega_ix2_200.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-is2.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-km_common.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-km_fixedeth.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-km_kirkwood.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-laplug.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-linkstation-6282.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-linkstation-duo-6281.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-linkstation-lsqvl.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-linkstation-lsvl.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-linkstation-lswsxl.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-linkstation-lswvl.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-linkstation-lswxl.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-linkstation.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-lschlv2.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-lsxhl.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-lsxl.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-mplcec4.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-nas2big.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-net2big.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-net5big.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-netgear_readynas_duo_v2.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-netgear_readynas_nv+_v2.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-netxbig.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ns2-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ns2.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ns2lite.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ns2max.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ns2mini.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-nsa310.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-nsa310a.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-nsa320.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-nsa325.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-nsa3x0-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-openblocks_a6.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-openblocks_a7.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-openrd-base.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-openrd-client.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-openrd-ultimate.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-openrd.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-pogo_e02.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-pogoplug-series-4.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-rd88f6192.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-rd88f6281-a.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-rs212.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-rs409.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-rs411.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-sheevaplug-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-sheevaplug-esata.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-sheevaplug.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-synology.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-t5325.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-topkick.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ts219-6281.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ts219-6282.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ts219.dtsi (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ts419-6281.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ts419-6282.dts (props changed) stable/12/sys/gnu/dts/arm/kirkwood-ts419.dtsi (props changed) stable/12/sys/gnu/dts/arm/logicpd-som-lv-35xx-devkit.dts (props changed) stable/12/sys/gnu/dts/arm/logicpd-som-lv-37xx-devkit.dts (props changed) stable/12/sys/gnu/dts/arm/logicpd-som-lv-baseboard.dtsi (props changed) stable/12/sys/gnu/dts/arm/logicpd-som-lv.dtsi (props changed) stable/12/sys/gnu/dts/arm/logicpd-torpedo-35xx-devkit.dts (props changed) stable/12/sys/gnu/dts/arm/logicpd-torpedo-37xx-devkit.dts (props changed) stable/12/sys/gnu/dts/arm/logicpd-torpedo-baseboard.dtsi (props changed) stable/12/sys/gnu/dts/arm/logicpd-torpedo-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/lpc18xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/lpc4337-ciaa.dts (props changed) stable/12/sys/gnu/dts/arm/lpc4350.dtsi (props changed) stable/12/sys/gnu/dts/arm/lpc4357.dtsi (props changed) stable/12/sys/gnu/dts/arm/motorola-cpcap-mapphone.dtsi (props changed) stable/12/sys/gnu/dts/arm/moxart-uc7112lx.dts (props changed) stable/12/sys/gnu/dts/arm/mpa1600.dts (props changed) stable/12/sys/gnu/dts/arm/mps2-an385.dts (props changed) stable/12/sys/gnu/dts/arm/mps2-an399.dts (props changed) stable/12/sys/gnu/dts/arm/mt2701-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/mt6323.dtsi (props changed) stable/12/sys/gnu/dts/arm/mt7623a-rfb-emmc.dts (props changed) stable/12/sys/gnu/dts/arm/mt7623a-rfb-nand.dts (props changed) stable/12/sys/gnu/dts/arm/mt7623a.dtsi (props changed) stable/12/sys/gnu/dts/arm/mt7623n-bananapi-bpi-r2.dts (props changed) stable/12/sys/gnu/dts/arm/mt7623n-rfb-emmc.dts (props changed) stable/12/sys/gnu/dts/arm/mt8135-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/mvebu-linkstation-fan.dtsi (props changed) stable/12/sys/gnu/dts/arm/mvebu-linkstation-gpio-simple.dtsi (props changed) stable/12/sys/gnu/dts/arm/mxs-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/nspire-classic.dtsi (props changed) stable/12/sys/gnu/dts/arm/nspire-clp.dts (props changed) stable/12/sys/gnu/dts/arm/nspire-cx.dts (props changed) stable/12/sys/gnu/dts/arm/nspire-tp.dts (props changed) stable/12/sys/gnu/dts/arm/nuvoton-common-npcm7xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/nuvoton-npcm750-evb.dts (props changed) stable/12/sys/gnu/dts/arm/nuvoton-npcm750.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap-gpmc-smsc911x.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap-gpmc-smsc9221.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap-zoom-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap2.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap2420-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap2420-h4.dts (props changed) stable/12/sys/gnu/dts/arm/omap2420-n800.dts (props changed) stable/12/sys/gnu/dts/arm/omap2420-n810-wimax.dts (props changed) stable/12/sys/gnu/dts/arm/omap2420-n810.dts (props changed) stable/12/sys/gnu/dts/arm/omap2420-n8x0-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap2420.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap2430-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap2430-sdp.dts (props changed) stable/12/sys/gnu/dts/arm/omap2430.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap24xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-beagle-xm-ab.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-beagle-xm.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-beagle.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-cm-t3517.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-cm-t3530.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-cm-t3730.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-cm-t3x.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-cm-t3x30.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-cpu-thermal.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-devkit8000-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-devkit8000-lcd-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-devkit8000-lcd43.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-devkit8000-lcd70.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-devkit8000.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-evm-37xx.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-evm.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-gta04a3.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-gta04a4.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-gta04a5one.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-ha-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-ha-lcd.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-ha.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-igep.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-igep0020-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-igep0020-rev-f.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-igep0020.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-igep0030-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-igep0030-rev-g.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-igep0030.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-ldp.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-lilly-a83x.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-lilly-dbb056.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-n9.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-n900.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-n950-n9.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-n950.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-alto35-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-alto35.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-base.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-chestnut43-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-chestnut43.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-common-dvi.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-common-lcd35.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-common-lcd43.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-common-peripherals.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-gallop43-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-gallop43.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-palo35-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-palo35.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-palo43-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-palo43.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm-alto35.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm-chestnut43.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm-gallop43.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm-palo35.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm-palo43.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm-summit.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm-tobi.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm-tobiduo.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-storm.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-summit-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-summit.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-tobi-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-tobi.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-tobiduo-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-overo-tobiduo.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-overo.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-pandora-1ghz.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-pandora-600mhz.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-pandora-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-panel-sharp-ls037v7dw01.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-sb-t35.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-sbc-t3517.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-sbc-t3530.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-sbc-t3730.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-sniper.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-tao3530.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3-thunder.dts (props changed) stable/12/sys/gnu/dts/arm/omap3-zoom3.dts (props changed) stable/12/sys/gnu/dts/arm/omap3.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3430-sdp.dts (props changed) stable/12/sys/gnu/dts/arm/omap3430es1-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap34xx-omap36xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap34xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap36xx-am35xx-omap3430es2plus-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap36xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap36xx-omap3430es2plus-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap36xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap3xxx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4-cpu-thermal.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4-duovero-parlor.dts (props changed) stable/12/sys/gnu/dts/arm/omap4-duovero.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4-kc1.dts (props changed) stable/12/sys/gnu/dts/arm/omap4-l4.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4-panda-a4.dts (props changed) stable/12/sys/gnu/dts/arm/omap4-panda-es.dts (props changed) stable/12/sys/gnu/dts/arm/omap4-panda.dts (props changed) stable/12/sys/gnu/dts/arm/omap4-sdp-es23plus.dts (props changed) stable/12/sys/gnu/dts/arm/omap4-var-dvk-om44.dts (props changed) stable/12/sys/gnu/dts/arm/omap4-var-om44customboard.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4-var-som-om44-wlan.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4-var-som-om44.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4-var-stk-om44.dts (props changed) stable/12/sys/gnu/dts/arm/omap4.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap443x-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap443x.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap4460.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap446x-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap44xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap5-board-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap5-cm-t54.dts (props changed) stable/12/sys/gnu/dts/arm/omap5-core-thermal.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap5-gpu-thermal.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap5-igep0050.dts (props changed) stable/12/sys/gnu/dts/arm/omap5-l4.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap5-sbc-t54.dts (props changed) stable/12/sys/gnu/dts/arm/omap5-uevm.dts (props changed) stable/12/sys/gnu/dts/arm/omap5.dtsi (props changed) stable/12/sys/gnu/dts/arm/omap54xx-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm/openbmc-flash-layout.dtsi (props changed) stable/12/sys/gnu/dts/arm/orion5x-kuroboxpro.dts (props changed) stable/12/sys/gnu/dts/arm/orion5x-linkstation-lschl.dts (props changed) stable/12/sys/gnu/dts/arm/orion5x-linkstation-lsgl.dts (props changed) stable/12/sys/gnu/dts/arm/orion5x-linkstation-lswtgl.dts (props changed) stable/12/sys/gnu/dts/arm/orion5x-linkstation.dtsi (props changed) stable/12/sys/gnu/dts/arm/orion5x-mv88f5181.dtsi (props changed) stable/12/sys/gnu/dts/arm/orion5x-mv88f5182.dtsi (props changed) stable/12/sys/gnu/dts/arm/owl-s500-cubieboard6.dts (props changed) stable/12/sys/gnu/dts/arm/owl-s500-guitar-bb-rev-b.dts (props changed) stable/12/sys/gnu/dts/arm/owl-s500-guitar.dtsi (props changed) stable/12/sys/gnu/dts/arm/owl-s500-sparky.dts (props changed) stable/12/sys/gnu/dts/arm/owl-s500.dtsi (props changed) stable/12/sys/gnu/dts/arm/ox810se-wd-mbwe.dts (props changed) stable/12/sys/gnu/dts/arm/ox820-cloudengines-pogoplug-series-3.dts (props changed) stable/12/sys/gnu/dts/arm/picoxcell-pc7302-pc3x2.dts (props changed) stable/12/sys/gnu/dts/arm/picoxcell-pc7302-pc3x3.dts (props changed) stable/12/sys/gnu/dts/arm/pm9g45.dts (props changed) stable/12/sys/gnu/dts/arm/pxa168-aspenite.dts (props changed) stable/12/sys/gnu/dts/arm/pxa25x.dtsi (props changed) stable/12/sys/gnu/dts/arm/pxa27x.dtsi (props changed) stable/12/sys/gnu/dts/arm/pxa300-raumfeld-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/pxa300-raumfeld-connector.dts (props changed) stable/12/sys/gnu/dts/arm/pxa300-raumfeld-controller.dts (props changed) stable/12/sys/gnu/dts/arm/pxa300-raumfeld-speaker-l.dts (props changed) stable/12/sys/gnu/dts/arm/pxa300-raumfeld-speaker-m.dts (props changed) stable/12/sys/gnu/dts/arm/pxa300-raumfeld-speaker-one.dts (props changed) stable/12/sys/gnu/dts/arm/pxa300-raumfeld-speaker-s.dts (props changed) stable/12/sys/gnu/dts/arm/pxa300-raumfeld-tuneable-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm/pxa3xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/pxa910-dkb.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064-arrow-db600c-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064-arrow-db600c.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064-asus-nexus7-flo.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064-cm-qs600.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064-ifc6410.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064-sony-xperia-yuga.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8064-v2.0.dtsi (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8074-dragonboard.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8084-ifc6540.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-apq8084-mtp.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019-ap.dk01.1-c1.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019-ap.dk01.1.dtsi (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019-ap.dk04.1-c1.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019-ap.dk04.1-c3.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019-ap.dk04.1.dtsi (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019-ap.dk07.1-c1.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019-ap.dk07.1-c2.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq4019-ap.dk07.1.dtsi (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq8064-ap148.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-ipq8064-v1.0.dtsi (props changed) stable/12/sys/gnu/dts/arm/qcom-mdm9615-wp8548-mangoh-green.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-msm8660-surf.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-msm8960-cdp.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-msm8974-fairphone-fp2.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-msm8974-samsung-klte.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-msm8974-sony-xperia-amami.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-msm8974-sony-xperia-castor.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-msm8974-sony-xperia-honami.dts (props changed) stable/12/sys/gnu/dts/arm/qcom-msm8974pro.dtsi (props changed) stable/12/sys/gnu/dts/arm/qcom-pm8841.dtsi (props changed) stable/12/sys/gnu/dts/arm/r7s72100-genmai.dts (props changed) stable/12/sys/gnu/dts/arm/r7s72100-gr-peach.dts (props changed) stable/12/sys/gnu/dts/arm/r7s72100-rskrza1.dts (props changed) stable/12/sys/gnu/dts/arm/r7s72100.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a73a4-ape6evm.dts (props changed) stable/12/sys/gnu/dts/arm/r8a73a4.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7740-armadillo800eva.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7740.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7743-iwg20d-q7-dbcm-ca.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7743-iwg20d-q7.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7743-iwg20m.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7743-sk-rzg1m.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7744-iwg20d-q7-dbcm-ca.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7744-iwg20d-q7.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7744-iwg20m.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7745-iwg22d-sodimm-dbhd-ca.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7745-iwg22d-sodimm.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7745-iwg22m.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7745-sk-rzg1e.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7745.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a77470.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7778-bockw.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7779-marzen.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7790-lager.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7790.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7791-koelsch.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7791-porter.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7791.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7792-blanche.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7792-wheat.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7792.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7793-gose.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7793.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a7794-alt.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7794-silk.dts (props changed) stable/12/sys/gnu/dts/arm/r8a7794.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a77xx-aa104xd12-panel.dtsi (props changed) stable/12/sys/gnu/dts/arm/r8a77xx-aa121td01-panel.dtsi (props changed) stable/12/sys/gnu/dts/arm/r9a06g032-rzn1d400-db.dts (props changed) stable/12/sys/gnu/dts/arm/r9a06g032.dtsi (props changed) stable/12/sys/gnu/dts/arm/rda8810pl-orangepi-2g-iot.dts (props changed) stable/12/sys/gnu/dts/arm/rda8810pl-orangepi-i96.dts (props changed) stable/12/sys/gnu/dts/arm/rda8810pl.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk1108-evb.dts (props changed) stable/12/sys/gnu/dts/arm/rk1108.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3036-evb.dts (props changed) stable/12/sys/gnu/dts/arm/rk3066a-marsboard.dts (props changed) stable/12/sys/gnu/dts/arm/rk3188-radxarock.dts (props changed) stable/12/sys/gnu/dts/arm/rk3188.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3228-evb.dts (props changed) stable/12/sys/gnu/dts/arm/rk3228.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3229.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk322x.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-evb-act8846.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-evb-rk808.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-evb.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-firefly-beta.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-firefly-reload-core.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-firefly.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-firefly.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-phycore-rdk.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-phycore-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-r89.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-rock2-som.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-tinker.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-analog-audio.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-brain.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-chromebook.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-jaq.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-jerry.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-mickey.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-minnie.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-pinky.dts (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-sdmmc.dtsi (props changed) stable/12/sys/gnu/dts/arm/rk3288-veyron-speedy.dts (props changed) stable/12/sys/gnu/dts/arm/rk3xxx.dtsi (props changed) stable/12/sys/gnu/dts/arm/s3c2416-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/s3c2416.dtsi (props changed) stable/12/sys/gnu/dts/arm/s3c24xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/s3c6400.dtsi (props changed) stable/12/sys/gnu/dts/arm/s3c6410-mini6410.dts (props changed) stable/12/sys/gnu/dts/arm/s3c6410-smdk6410.dts (props changed) stable/12/sys/gnu/dts/arm/s3c6410.dtsi (props changed) stable/12/sys/gnu/dts/arm/s3c64xx-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/s3c64xx.dtsi (props changed) stable/12/sys/gnu/dts/arm/s5pv210-aquila.dts (props changed) stable/12/sys/gnu/dts/arm/s5pv210-goni.dts (props changed) stable/12/sys/gnu/dts/arm/s5pv210-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/s5pv210-smdkc110.dts (props changed) stable/12/sys/gnu/dts/arm/s5pv210-smdkv210.dts (props changed) stable/12/sys/gnu/dts/arm/s5pv210-torbreck.dts (props changed) stable/12/sys/gnu/dts/arm/sama5d31.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d31ek.dts (props changed) stable/12/sys/gnu/dts/arm/sama5d33.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d33ek.dts (props changed) stable/12/sys/gnu/dts/arm/sama5d34.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d34ek.dts (props changed) stable/12/sys/gnu/dts/arm/sama5d35.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d35ek.dts (props changed) stable/12/sys/gnu/dts/arm/sama5d36.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d36ek.dts (props changed) stable/12/sys/gnu/dts/arm/sama5d36ek_cmp.dts (props changed) stable/12/sys/gnu/dts/arm/sama5d3_can.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3_emac.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3_gmac.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3_lcd.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3_mci2.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3_tcb1.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3_uart.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3xcm.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3xcm_cmp.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3xdm.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3xmb.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3xmb_cmp.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3xmb_emac.dtsi (props changed) stable/12/sys/gnu/dts/arm/sama5d3xmb_gmac.dtsi (props changed) stable/12/sys/gnu/dts/arm/sh73a0-kzm9g.dts (props changed) stable/12/sys/gnu/dts/arm/sh73a0.dtsi (props changed) stable/12/sys/gnu/dts/arm/socfpga_arria10_socdk.dtsi (props changed) stable/12/sys/gnu/dts/arm/socfpga_arria10_socdk_nand.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_arria10_socdk_qspi.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_arria10_socdk_sdmmc.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_arria5.dtsi (props changed) stable/12/sys/gnu/dts/arm/socfpga_arria5_socdk.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5.dtsi (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5_de0_nano_soc.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5_mcv.dtsi (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5_mcvevk.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5_socdk.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5_sockit.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5_socrates.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5_sodia.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_cyclone5_vining_fpga.dts (props changed) stable/12/sys/gnu/dts/arm/socfpga_vt.dts (props changed) stable/12/sys/gnu/dts/arm/spear1310-evb.dts (props changed) stable/12/sys/gnu/dts/arm/spear1310.dtsi (props changed) stable/12/sys/gnu/dts/arm/spear1340-evb.dts (props changed) stable/12/sys/gnu/dts/arm/spear1340.dtsi (props changed) stable/12/sys/gnu/dts/arm/spear300-evb.dts (props changed) stable/12/sys/gnu/dts/arm/spear300.dtsi (props changed) stable/12/sys/gnu/dts/arm/spear310-evb.dts (props changed) stable/12/sys/gnu/dts/arm/spear310.dtsi (props changed) stable/12/sys/gnu/dts/arm/spear320-evb.dts (props changed) stable/12/sys/gnu/dts/arm/spear320-hmi.dts (props changed) stable/12/sys/gnu/dts/arm/spear320.dtsi (props changed) stable/12/sys/gnu/dts/arm/spear600-evb.dts (props changed) stable/12/sys/gnu/dts/arm/st-pincfg.h (props changed) stable/12/sys/gnu/dts/arm/ste-dbx5x0.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-href-ab8500.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-href-ab8505.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-href-family-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-href-stuib.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-href-tvk1281618.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-href.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-hrefprev60-stuib.dts (props changed) stable/12/sys/gnu/dts/arm/ste-hrefprev60-tvk.dts (props changed) stable/12/sys/gnu/dts/arm/ste-hrefprev60.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-hrefv60plus-stuib.dts (props changed) stable/12/sys/gnu/dts/arm/ste-hrefv60plus-tvk.dts (props changed) stable/12/sys/gnu/dts/arm/ste-hrefv60plus.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-nomadik-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/ste-nomadik-s8815.dts (props changed) stable/12/sys/gnu/dts/arm/ste-snowball.dts (props changed) stable/12/sys/gnu/dts/arm/stih407-b2120.dts (props changed) stable/12/sys/gnu/dts/arm/stih407-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih407-family.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih407-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih407.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih410-b2120.dts (props changed) stable/12/sys/gnu/dts/arm/stih410-b2260.dts (props changed) stable/12/sys/gnu/dts/arm/stih410-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih410-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih410.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih415-b2000.dts (props changed) stable/12/sys/gnu/dts/arm/stih415-b2020.dts (props changed) stable/12/sys/gnu/dts/arm/stih415-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih415-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih415.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih416-b2000.dts (props changed) stable/12/sys/gnu/dts/arm/stih416-b2020.dts (props changed) stable/12/sys/gnu/dts/arm/stih416-b2020e.dts (props changed) stable/12/sys/gnu/dts/arm/stih416-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih416-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih416.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih418-b2199.dts (props changed) stable/12/sys/gnu/dts/arm/stih418-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih418.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih41x-b2000.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih41x-b2020.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih41x-b2020x.dtsi (props changed) stable/12/sys/gnu/dts/arm/stih41x.dtsi (props changed) stable/12/sys/gnu/dts/arm/stihxxx-b2120.dtsi (props changed) stable/12/sys/gnu/dts/arm/stm32f4-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stm32f429-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stm32f469-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stm32f469.dtsi (props changed) stable/12/sys/gnu/dts/arm/stm32f7-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stm32f746-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/stm32f769-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-a1000.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-ba10-tvbox.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-chuwi-v7-cw0825.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-cubieboard.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-dserve-dsrv9703c.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-gemei-g9.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-hackberry.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-hyundai-a7hd.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-inet1.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-inet97fv2.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-inet9f-rev03.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-itead-iteaduino-plus.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-jesurun-q5.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-marsboard.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-mini-xplus.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-mk802.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-mk802ii.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-olinuxino-lime.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-pcduino.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-pcduino2.dts (props changed) stable/12/sys/gnu/dts/arm/sun4i-a10-pov-protab2-ips9.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a10s-auxtek-t003.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a10s-auxtek-t004.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a10s-mk802.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a10s-olinuxino-micro.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a10s-r7-tv-dongle.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a10s-wobo-i5.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a10s.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-difrnce-dit4350.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-empire-electronix-d709.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-empire-electronix-m712.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-hsg-h702.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-inet-98v-rev2.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-licheepi-one.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-olinuxino-micro.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-olinuxino.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13-utoo-p66.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-a13.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun5i-gr8-chip-pro.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-gr8-evb.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-gr8.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun5i-q8-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun5i-r8-chip.dts (props changed) stable/12/sys/gnu/dts/arm/sun5i-r8.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun5i.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31-app4-evb1.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31-colombus.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31-hummingbird.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31-i7.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31-m9.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31-mele-a1000g-quad.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s-colorfly-e708-q1.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s-cs908.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s-inet-q972.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s-primo81.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s-sina31s-core.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s-sina31s.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s-sinovoip-bpi-m2.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s-yones-toptech-bs1078-v2.dts (props changed) stable/12/sys/gnu/dts/arm/sun6i-a31s.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun6i-reference-design-tablet.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-bananapi-m1-plus.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-bananapro.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-cubieboard2.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-cubietruck.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-hummingbird.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-i12-tvbox.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-icnova-swac.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-itead-ibox.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-lamobo-r1.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-m3.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-mk808c.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olimex-som-evb-emmc.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olimex-som-evb.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olimex-som204-evb-emmc.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olimex-som204-evb.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-lime.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-lime2-emmc.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-lime2.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-micro-emmc.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-olinuxino-micro.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-orangepi-mini.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-orangepi.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-pcduino3-nano.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-pcduino3.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-wexler-tab7200.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20-wits-pro-a20-dkt.dts (props changed) stable/12/sys/gnu/dts/arm/sun7i-a20.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-evb.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-gt90h-v4.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-inet86dz.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-polaroid-mid2407pxe03.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a23-polaroid-mid2809pxe04.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a33-et-q8-v1.6.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a33-ga10h-v1.1.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a33-inet-d978-rev2.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a33-ippo-q8h-v1.2.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a33-olinuxino.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a33-q8-tablet.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a33-sinlinx-sina33.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a83t-tbs-a711.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-a83t.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun8i-h2-plus-bananapi-m2-zero.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h2-plus-libretech-all-h3-cc.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h2-plus-orangepi-r1.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h2-plus-orangepi-zero.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-bananapi-m2-plus-v1.2.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-bananapi-m2-plus.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-beelink-x2.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-libretech-all-h3-cc.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-mapleboard-mp130.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-nanopi-m1.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-nanopi-neo-air.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-nanopi-neo.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-nanopi.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-2.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-lite.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-one.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-pc-plus.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-pc.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-plus.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-plus2e.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3-orangepi-zero-plus2.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-h3.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun8i-r16-bananapi-m2m.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-r16-nintendo-nes-classic.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-r16-nintendo-super-nes-classic.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-r16-parrot.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-reference-design-tablet.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun8i-t3-cqa3t-bv3.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-v3s-licheepi-zero-dock.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-v3s-licheepi-zero.dts (props changed) stable/12/sys/gnu/dts/arm/sun8i-v3s.dtsi (props changed) stable/12/sys/gnu/dts/arm/sun8i-v40-bananapi-m2-berry.dts (props changed) stable/12/sys/gnu/dts/arm/suniv-f1c100s-licheepi-nano.dts (props changed) stable/12/sys/gnu/dts/arm/suniv-f1c100s.dtsi (props changed) stable/12/sys/gnu/dts/arm/sunxi-bananapi-m2-plus-v1.2.dtsi (props changed) stable/12/sys/gnu/dts/arm/sunxi-common-regulators.dtsi (props changed) stable/12/sys/gnu/dts/arm/sunxi-itead-core-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/sunxi-libretech-all-h3-cc.dtsi (props changed) stable/12/sys/gnu/dts/arm/sunxi-q8-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/sunxi-reference-design-tablet.dtsi (props changed) stable/12/sys/gnu/dts/arm/tango4-common.dtsi (props changed) stable/12/sys/gnu/dts/arm/tango4-smp8758.dtsi (props changed) stable/12/sys/gnu/dts/arm/tango4-vantage-1172.dts (props changed) stable/12/sys/gnu/dts/arm/tegra114-roth.dts (props changed) stable/12/sys/gnu/dts/arm/tegra114-tn7.dts (props changed) stable/12/sys/gnu/dts/arm/tegra114.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra124-apalis-emc.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra124-apalis-eval.dts (props changed) stable/12/sys/gnu/dts/arm/tegra124-apalis-v1.2-eval.dts (props changed) stable/12/sys/gnu/dts/arm/tegra124-apalis-v1.2.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra124-apalis.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra124-jetson-tk1-emc.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra124-nyan-big-emc.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra124-nyan-big.dts (props changed) stable/12/sys/gnu/dts/arm/tegra124-nyan-blaze-emc.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra124-nyan-blaze.dts (props changed) stable/12/sys/gnu/dts/arm/tegra124.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra20-colibri-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-colibri-iris.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-colibri.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra20-harmony.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-medcom-wide.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-paz00.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-plutux.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-seaboard.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-tamonten.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra20-tec.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-ventana.dts (props changed) stable/12/sys/gnu/dts/arm/tegra20-whistler.dts (props changed) stable/12/sys/gnu/dts/arm/tegra30-apalis-eval.dts (props changed) stable/12/sys/gnu/dts/arm/tegra30-apalis-v1.1-eval.dts (props changed) stable/12/sys/gnu/dts/arm/tegra30-apalis-v1.1.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra30-apalis.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra30-cardhu-a02.dts (props changed) stable/12/sys/gnu/dts/arm/tegra30-cardhu-a04.dts (props changed) stable/12/sys/gnu/dts/arm/tegra30-colibri-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/tegra30-colibri.dtsi (props changed) stable/12/sys/gnu/dts/arm/tegra30.dtsi (props changed) stable/12/sys/gnu/dts/arm/tny_a9260.dts (props changed) stable/12/sys/gnu/dts/arm/tny_a9260_common.dtsi (props changed) stable/12/sys/gnu/dts/arm/tny_a9263.dts (props changed) stable/12/sys/gnu/dts/arm/tny_a9g20.dts (props changed) stable/12/sys/gnu/dts/arm/tps6507x.dtsi (props changed) stable/12/sys/gnu/dts/arm/tps65217.dtsi (props changed) stable/12/sys/gnu/dts/arm/tps65910.dtsi (props changed) stable/12/sys/gnu/dts/arm/twl4030.dtsi (props changed) stable/12/sys/gnu/dts/arm/twl4030_omap3.dtsi (props changed) stable/12/sys/gnu/dts/arm/twl6030.dtsi (props changed) stable/12/sys/gnu/dts/arm/twl6030_omap4.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-common32.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ld4-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ld4.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ld6b-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ld6b.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-ld4-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-ld4.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-ld6b-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-ld6b.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-pro4-ace.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-pro4-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-pro4-sanji.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-pro4.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-pro5.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-sld3-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-sld3.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-sld8-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-ph1-sld8.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-pro4-ace.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-pro4-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-pro4-sanji.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-pro4.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-pro5.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-proxstream2-gentil.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-proxstream2-vodka.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-proxstream2.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-pxs2-gentil.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-pxs2-vodka.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-pxs2.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-ref-daughter.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-sld8-ref.dts (props changed) stable/12/sys/gnu/dts/arm/uniphier-sld8.dtsi (props changed) stable/12/sys/gnu/dts/arm/uniphier-support-card.dtsi (props changed) stable/12/sys/gnu/dts/arm/usb_a9260.dts (props changed) stable/12/sys/gnu/dts/arm/usb_a9260_common.dtsi (props changed) stable/12/sys/gnu/dts/arm/usb_a9263.dts (props changed) stable/12/sys/gnu/dts/arm/usb_a9g20-dab-mmx.dtsi (props changed) stable/12/sys/gnu/dts/arm/usb_a9g20.dts (props changed) stable/12/sys/gnu/dts/arm/usb_a9g20_common.dtsi (props changed) stable/12/sys/gnu/dts/arm/usb_a9g20_lpw.dts (props changed) stable/12/sys/gnu/dts/arm/versatile-ab-ib2.dts (props changed) stable/12/sys/gnu/dts/arm/versatile-pb.dts (props changed) stable/12/sys/gnu/dts/arm/vexpress-v2p-ca15-tc1.dts (props changed) stable/12/sys/gnu/dts/arm/vexpress-v2p-ca5s.dts (props changed) stable/12/sys/gnu/dts/arm/vexpress-v2p-ca9.dts (props changed) stable/12/sys/gnu/dts/arm/vf-colibri-eval-v3.dtsi (props changed) stable/12/sys/gnu/dts/arm/vf-colibri.dtsi (props changed) stable/12/sys/gnu/dts/arm/vf500-colibri-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/vf500-colibri.dtsi (props changed) stable/12/sys/gnu/dts/arm/vf500.dtsi (props changed) stable/12/sys/gnu/dts/arm/vf610-colibri-eval-v3.dts (props changed) stable/12/sys/gnu/dts/arm/vf610-colibri.dtsi (props changed) stable/12/sys/gnu/dts/arm/vf610-cosmic.dts (props changed) stable/12/sys/gnu/dts/arm/vf610-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm/vf610-twr.dts (props changed) stable/12/sys/gnu/dts/arm/vf610-zii-dev-rev-b.dts (props changed) stable/12/sys/gnu/dts/arm/vf610-zii-dev-rev-c.dts (props changed) stable/12/sys/gnu/dts/arm/vf610-zii-dev.dtsi (props changed) stable/12/sys/gnu/dts/arm/vf610-zii-scu4-aib.dts (props changed) stable/12/sys/gnu/dts/arm/vf610.dtsi (props changed) stable/12/sys/gnu/dts/arm/vf610m4-colibri.dts (props changed) stable/12/sys/gnu/dts/arm/vf610m4-cosmic.dts (props changed) stable/12/sys/gnu/dts/arm/vf610m4.dtsi (props changed) stable/12/sys/gnu/dts/arm/vfxxx.dtsi (props changed) stable/12/sys/gnu/dts/arm/vt8500-bv07.dts (props changed) stable/12/sys/gnu/dts/arm/wm8505-ref.dts (props changed) stable/12/sys/gnu/dts/arm/wm8650-mid.dts (props changed) stable/12/sys/gnu/dts/arm/wm8750-apc8750.dts (props changed) stable/12/sys/gnu/dts/arm/wm8850-w70v2.dts (props changed) stable/12/sys/gnu/dts/arm/xenvm-4.2.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-7000.dtsi (props changed) stable/12/sys/gnu/dts/arm/zynq-cc108.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-microzed.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-parallella.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zc702.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zc706.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zc770-xm010.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zc770-xm011.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zc770-xm012.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zc770-xm013.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zed.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zybo-z7.dts (props changed) stable/12/sys/gnu/dts/arm/zynq-zybo.dts (props changed) stable/12/sys/gnu/dts/arm64/actions/s900-bubblegum-96.dts (props changed) stable/12/sys/gnu/dts/arm64/al/alpine-v2-evp.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/axp803.dtsi (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-amarula-relic.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pine64-lts.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pine64-plus.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-pinebook.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-sopine-baseboard.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-a64-sopine.dtsi (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-bananapi-m2-plus-v1.2.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-bananapi-m2-plus.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-emlid-neutis-n5-devboard.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-emlid-neutis-n5.dtsi (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-nanopi-neo-plus2.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-nanopi-neo2.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-orangepi-pc2.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-orangepi-prime.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-orangepi-zero-plus.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h5-orangepi-zero-plus2.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi-lite2.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi-one-plus.dts (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-orangepi.dtsi (props changed) stable/12/sys/gnu/dts/arm64/allwinner/sun50i-h6-pine-h64.dts (props changed) stable/12/sys/gnu/dts/arm64/altera/socfpga_stratix10_socdk.dts (props changed) stable/12/sys/gnu/dts/arm64/amd/amd-overdrive-rev-b0.dts (props changed) stable/12/sys/gnu/dts/arm64/amd/amd-overdrive-rev-b1.dts (props changed) stable/12/sys/gnu/dts/arm64/amd/amd-overdrive.dts (props changed) stable/12/sys/gnu/dts/arm64/amd/amd-seattle-clks.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amd/amd-seattle-soc.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amd/amd-seattle-xgbe-b.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amd/husky.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-g12a-u200.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gx-p23x-q20x.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-nanopi-k2.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-nexbox-a95x.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-odroidc2.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-p200.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-p201.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-p20x.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-vega-s95-meta.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-vega-s95-pro.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-vega-s95-telos.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-vega-s95.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-wetek-hub.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-wetek-play2.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxbb-wetek.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-mali.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s805x-libretech-ac.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s805x-p241.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905d-p230.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905d-p231.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905d-phicomm-n1.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905d.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905w-p281.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905w-tx3-mini.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-hwacom-amazetv.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-khadas-vim.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-libretech-cc.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-nexbox-a95x.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-p212.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x-p212.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxl-s905x.dtsi (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-khadas-vim2.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-nexbox-a1.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-q200.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-q201.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-rbox-pro.dts (props changed) stable/12/sys/gnu/dts/arm64/amlogic/meson-gxm-vega-s96.dts (props changed) stable/12/sys/gnu/dts/arm64/apm/apm-merlin.dts (props changed) stable/12/sys/gnu/dts/arm64/apm/apm-mustang.dts (props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8-gicv3-psci.dts (props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8-gicv3.dts (props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8-psci.dts (props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8-psci.dtsi (props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8-spin-table.dtsi (props changed) stable/12/sys/gnu/dts/arm64/arm/foundation-v8.dts (props changed) stable/12/sys/gnu/dts/arm64/arm/juno-clocks.dtsi (props changed) stable/12/sys/gnu/dts/arm64/arm/juno-cs-r1r2.dtsi (props changed) stable/12/sys/gnu/dts/arm64/arm/juno-motherboard.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/bcm2837-rpi-3-b-plus.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/bcm2837-rpi-3-b.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/bcm2837-rpi-cm3-io3.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/northstar2/ns2-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/northstar2/ns2-svk.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/northstar2/ns2-xmc.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/bcm958742-base.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/bcm958742k.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/bcm958742t.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/bcm958802a802x.dts (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray-board-base.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray-clock.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray-fs4.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray-pcie.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm64/broadcom/stingray/stingray-sata.dtsi (props changed) stable/12/sys/gnu/dts/arm64/cavium/thunder-88xx.dts (props changed) stable/12/sys/gnu/dts/arm64/cavium/thunder2-99xx.dts (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos5433-bus.dtsi (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos5433-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos5433-tm2-common.dtsi (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos5433-tm2.dts (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos5433-tm2e.dts (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos5433-tmu.dtsi (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos7-espresso.dts (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos7-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm64/exynos/exynos7-trip-points.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a-frdm.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a-frwy.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a-qds.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1012a-rdb.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1028a-qds.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043-post.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1043a-rdb.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1046-post.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1088a-qds.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls1088a-rdb.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls2080a-qds.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls2080a-rdb.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls2080a-simu.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls2080a.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls2088a-qds.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls2088a-rdb.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls2088a.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls208xa-qds.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-ls208xa-rdb.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/fsl-lx2160a-qds.dts (props changed) stable/12/sys/gnu/dts/arm64/freescale/imx8mq-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-bman-portals.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0-10g-0.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0-10g-1.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0-1g-0.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0-1g-1.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0-1g-2.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0-1g-3.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0-1g-4.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0-1g-5.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-fman3-0.dtsi (props changed) stable/12/sys/gnu/dts/arm64/freescale/qoriq-qman-portals.dtsi (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi3670-hikey970.dts (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hi6220-coresight.dtsi (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hikey-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hikey960-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hikey970-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hip05-d02.dts (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hip06-d03.dts (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/hip07-d05.dts (props changed) stable/12/sys/gnu/dts/arm64/hisilicon/poplar-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm64/lg/lg1312-ref.dts (props changed) stable/12/sys/gnu/dts/arm64/lg/lg1313-ref.dts (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-371x.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-3720-db.dts (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-7020.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-7040.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-70x0.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8020.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8040-clearfog-gt-8k.dts (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8040-mcbin-singleshot.dts (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8040-mcbin.dts (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8040-mcbin.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8040.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8080-db.dts (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-8080.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-80x0.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-ap810-ap0.dtsi (props changed) stable/12/sys/gnu/dts/arm64/marvell/armada-common.dtsi (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt2712-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6380.dtsi (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6755-evb.dts (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6755.dtsi (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6795-evb.dts (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt6795.dtsi (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt7622-bananapi-bpi-r64.dts (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt7622-rfb1.dts (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt8173-evb.dts (props changed) stable/12/sys/gnu/dts/arm64/mediatek/mt8173-pinfunc.h (props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra132-norrin.dts (props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2180.dtsi (props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2371-0000.dts (props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2530.dtsi (props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2571.dts (props changed) stable/12/sys/gnu/dts/arm64/nvidia/tegra210-p2595.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/apq8016-sbc-pmic-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/apq8016-sbc-soc-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/apq8016-sbc.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/apq8096-db820c-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/apq8096-db820c-pmic-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/apq8096-db820c.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/apq8096-db820c.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/ipq8074-hk01.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8916-mtp.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8916-mtp.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8916-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8992-bullhead-rev-101.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8992-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8994-angler-rev-101.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8994-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8994-smd-rpm.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8996-mtp.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8996-mtp.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8998-mtp.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/msm8998-pins.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/pm8004.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/pm8994.dtsi (props changed) stable/12/sys/gnu/dts/arm64/qcom/qcs404-evb-1000.dts (props changed) stable/12/sys/gnu/dts/arm64/qcom/qcs404-evb-4000.dts (props changed) stable/12/sys/gnu/dts/arm64/realtek/rtd1295-mele-v9.dts (props changed) stable/12/sys/gnu/dts/arm64/realtek/rtd1295-probox2-ava.dts (props changed) stable/12/sys/gnu/dts/arm64/realtek/rtd1295-zidoo-x9s.dts (props changed) stable/12/sys/gnu/dts/arm64/realtek/rtd129x.dtsi (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795-es1-h3ulcb-kf.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795-es1-h3ulcb.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795-es1-salvator-x.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795-es1.dtsi (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795-h3ulcb-kf.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795-h3ulcb.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795-salvator-x.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7795-salvator-xs.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7796-m3ulcb-kf.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7796-m3ulcb.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a7796-salvator-x.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77965-m3nulcb-kf.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77965-m3nulcb.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77965-salvator-x.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77965-salvator-xs.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77970-eagle.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77980-condor.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/r8a77980-v3hsk.dts (props changed) stable/12/sys/gnu/dts/arm64/renesas/salvator-x.dtsi (props changed) stable/12/sys/gnu/dts/arm64/renesas/salvator-xs.dtsi (props changed) stable/12/sys/gnu/dts/arm64/rockchip/px30-evb.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3328-evb.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368-evb-act8846.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3368-lion-haikou.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-evb.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-ficus.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-firefly.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-bob.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-kevin.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet-inx.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-gru-scarlet-kd.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-op1-opp.dtsi (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-opp.dtsi (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-puma-haikou.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-puma.dtsi (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-roc-pc.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-rock960.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-sapphire.dts (props changed) stable/12/sys/gnu/dts/arm64/rockchip/rk3399-sapphire.dtsi (props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld11-global.dts (props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld11-ref.dts (props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-ld20-ref.dts (props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-pinctrl.dtsi (props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-ref-daughter.dtsi (props changed) stable/12/sys/gnu/dts/arm64/socionext/uniphier-support-card.dtsi (props changed) stable/12/sys/gnu/dts/arm64/sprd/sc9836-openphone.dts (props changed) stable/12/sys/gnu/dts/arm64/sprd/sharkl64.dtsi (props changed) stable/12/sys/gnu/dts/arm64/sprd/whale2.dtsi (props changed) stable/12/sys/gnu/dts/arm64/synaptics/berlin4ct-dmp.dts (props changed) stable/12/sys/gnu/dts/arm64/synaptics/berlin4ct-stb.dts (props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am65-wakeup.dtsi (props changed) stable/12/sys/gnu/dts/arm64/ti/k3-am65.dtsi (props changed) stable/12/sys/gnu/dts/arm64/xilinx/avnet-ultra96-rev1.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-clk.dtsi (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zc1232-revA.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zc1254-revA.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zc1275-revA.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zc1751-xm015-dc1.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zc1751-xm016-dc2.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zc1751-xm017-dc3.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zc1751-xm018-dc4.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zc1751-xm019-dc5.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu102-rev1.0.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu102-revA.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu102-revB.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu104-revA.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu106-revA.dts (props changed) stable/12/sys/gnu/dts/arm64/xilinx/zynqmp-zcu111-revA.dts (props changed) stable/12/sys/gnu/dts/arm64/zte/zx296718-evb.dts (props changed) stable/12/sys/gnu/dts/arm64/zte/zx296718-pcbox.dts (props changed) stable/12/sys/gnu/dts/include/dt-bindings/arm/ux500_pm_domains.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/bus/ti-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clk/ti-dra7-atl.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/actions,s700-cmu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/actions,s900-cmu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/alphascale,asm9260.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/am3.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/am4.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/aspeed-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/at91.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/axg-audio-clkc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/axg-clkc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/axis,artpec6-clkctrl.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm-cygnus.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm-ns2.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm-nsp.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm-sr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm21664.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm281xx.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm2835-aux.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/bcm2835.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/berlin2.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/berlin2q.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/boston-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/clps711x-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/cortina,gemini-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/dm814.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/dm816.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/dra7.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/efm32-cmu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos-audss-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos3250.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos4.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos4415.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5250.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5260-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5410.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos5420.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/exynos7-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/gxbb-clkc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/hi3516cv300-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/hi3519-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/hi3620-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/hi3660-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/hi3670-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/hi6220-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/hip04-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/histb-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/hix5hd2-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx1-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx21-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx27-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6qdl-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6sl-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6sll-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6sx-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx6ul-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx7d-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx7ulp-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/imx8-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/jz4725b-cgu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/jz4740-cgu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/jz4770-cgu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/jz4780-cgu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/lpc18xx-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/lpc18xx-cgu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/lpc32xx-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/lsi,axm5516-clks.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/marvell,pxa168.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/marvell,pxa1928.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/marvell,pxa910.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/maxim,max77620.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/maxim,max77686.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/maxim,max77802.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/maxim,max9485.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/microchip,pic32-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/mpc512x-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/mt2701-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/mt6797-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/mt7622-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/mt7629-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/mt8135-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/nuvoton,npcm7xx-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/omap4.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/omap5.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/oxsemi,ox810se.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/oxsemi,ox820.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/pistachio-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/px30-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/pxa-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,camcc-sdm845.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,dispcc-sdm845.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-apq8084.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-ipq4019.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-ipq806x.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-ipq8074.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-mdm9615.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8660.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8916.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8960.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8974.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8994.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8996.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-msm8998.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-qcs404.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-sdm660.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gcc-sdm845.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,gpucc-sdm845.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,lcc-ipq806x.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,lcc-mdm9615.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,lcc-msm8960.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,lpass-sdm845.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,mmcc-apq8084.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,mmcc-msm8960.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,mmcc-msm8974.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,mmcc-msm8996.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/qcom,videocc-sdm845.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r7s72100-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r7s9210-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a73a4-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7740-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7743-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7744-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7745-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77470-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7779-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7790-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7790-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7791-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7791-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7792-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7792-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7793-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7793-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7794-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7794-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7795-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a7796-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77965-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77970-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77980-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77990-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r8a77995-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/r9a06g032-sysctrl.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/renesas-cpg-mssr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3036-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3066a-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3128-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3188-cru-common.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3188-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3228-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3288-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3328-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3368-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3399-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rk3399-ddr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rockchip,rk808.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/rv1108-cru.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/s3c2410.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/s3c2412.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/s3c2443.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/s5pv210-audss.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/s5pv210.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/samsung,s2mps11.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/samsung,s3c64xx-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sh73a0-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sprd,sc9860-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/ste-ab8500.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stih407-clks.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stih410-clks.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stih415-clks.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stih416-clks.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stih418-clks.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stm32fx-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stm32h7-clks.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/stratix10-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun4i-a10-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun4i-a10-pll2.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun50i-a64-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun50i-h6-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun50i-h6-r-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun5i-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun6i-a31-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun7i-a20-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-a23-a33-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-a83t-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-de2.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-h3-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-r-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-r40-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-tcon-top.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun8i-v3s-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun9i-a80-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun9i-a80-de.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/sun9i-a80-usb.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/suniv-ccu-f1c100s.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/tegra114-car.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/tegra124-car-common.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/tegra124-car.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/tegra186-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/tegra194-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/tegra20-car.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/tegra210-car.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/tegra30-car.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/vf610-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/xlnx,zynqmp-clk.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/zx296702-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/clock/zx296718-clock.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/display/tda998x.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/dma/at91.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/dma/axi-dmac.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/dma/dw-dmac.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/dma/jz4780-dma.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/dma/nbpfaxi.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/dma/sun4i-a10.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/firmware/imx/rsrc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gce/mt8173-gce.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/aspeed-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/meson-axg-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/meson-g12a-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/meson-gxbb-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/meson-gxl-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/meson8-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/meson8b-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/tegra-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/tegra186-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/tegra194-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/gpio/uniphier-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/i2c/i2c.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/iio/adc/at91-sama5d2_adc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/iio/adc/fsl-imx25-gcq.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/iio/adi,ad5592r.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/iio/qcom,spmi-vadc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/input/gpio-keys.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/input/input.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/input/ti-drv260x.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/interrupt-controller/arm-gic.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/interrupt-controller/irq-st.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/interrupt-controller/irq.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/interrupt-controller/mips-gic.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/interrupt-controller/mvebu-icu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/leds/common.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/leds/leds-netxbig.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/leds/leds-ns2.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/leds/leds-pca9532.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/leds/leds-pca955x.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mailbox/tegra186-hsp.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/media/c8sectpfe.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/media/omap3-isp.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/media/tda1997x.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/media/tvp5150.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/media/xilinx-vip.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/mt2701-larb-port.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/mt2712-larb-port.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/mt8173-larb-port.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/tegra114-mc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/tegra124-mc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/tegra186-mc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/tegra20-mc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/tegra210-mc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/memory/tegra30-mc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/arizona.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/as3722.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/at91-usart.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/atmel-flexcom.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/dbx500-prcmu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/max77620.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/palmas.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/qcom-rpm.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/st-lpc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/stm32f4-rcc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/stm32f7-rcc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mfd/stm32h7-rcc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mips/lantiq_rcu_gphy.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/mux/mux.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/net/microchip-lan78xx.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/net/mscc-phy-vsc8531.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/net/rfkill-regulator.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/net/ti-dp83867.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/phy/phy-ocelot-serdes.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/phy/phy-pistachio-usb.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/phy/phy-qcom-qusb2.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/phy/phy.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/am33xx.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/am43xx.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/bcm2835.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/brcm,pinctrl-stingray.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/dm814x.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/dra.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/hisi.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/k3.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/keystone.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/mt6397-pinfunc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/mt65xx.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/mt6797-pinfunc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/mt7623-pinfunc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/nomadik.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/omap.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/pads-imx8qm.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/pads-imx8qxp.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/pinctrl-tegra-xusb.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/pinctrl-tegra.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/qcom,pmic-gpio.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/qcom,pmic-mpp.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/r7s72100-pinctrl.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/r7s9210-pinctrl.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/rockchip.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/rzn1-pinctrl.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/samsung.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/stm32-pinfunc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/stm32f429-pinfunc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/stm32f746-pinfunc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/stm32h7-pinfunc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pinctrl/sun4i-a10.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/imx7-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/imx8mq-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/mt2701-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/mt2712-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/mt6797-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/mt7622-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/mt7623a-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/owl-s500-powergate.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/owl-s700-powergate.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/owl-s900-powergate.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/px30-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7743-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7744-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7745-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a77470-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a774a1-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a774c0-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7779-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7790-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7791-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7792-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7793-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7794-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7795-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a7796-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a77965-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a77970-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a77980-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a77990-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/r8a77995-sysc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/raspberrypi-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3036-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3066-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3128-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3188-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3228-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3288-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3328-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3366-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3368-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/rk3399-power.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/tegra186-powergate.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/power/tegra194-powergate.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/pwm/pwm.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/regulator/active-semi,8945a-regulator.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/regulator/maxim,max77802.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/regulator/qcom,rpmh-regulator.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/actions,s700-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/actions,s900-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/altr,rst-mgr-a10.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/altr,rst-mgr-a10sr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/altr,rst-mgr-s10.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/altr,rst-mgr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/amlogic,meson-axg-audio-arb.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/amlogic,meson-axg-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/amlogic,meson-gxbb-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/amlogic,meson8b-clkc-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/amlogic,meson8b-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/axg-aoclkc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/cortina,gemini-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/gxbb-aoclkc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/hisi,hi6220-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/imx7-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/mt2701-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/mt7622-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/mt8135-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/mt8173-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/oxsemi,ox810se.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/oxsemi,ox820.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/pistachio-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,gcc-apq8084.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,gcc-ipq806x.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,gcc-mdm9615.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,gcc-msm8660.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,gcc-msm8916.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,gcc-msm8960.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,gcc-msm8974.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,mmcc-apq8084.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,mmcc-msm8960.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,mmcc-msm8974.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,sdm845-aoss.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/qcom,sdm845-pdc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/snps,hsdk-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/stih407-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/stih415-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/stih416-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/stm32mp1-resets.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun4i-a10-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun50i-a64-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun50i-h6-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun50i-h6-r-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun5i-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun6i-a31-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun8i-a23-a33-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun8i-a83t-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun8i-de2.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun8i-h3-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun8i-r-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun8i-r40-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun8i-v3s-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun9i-a80-ccu.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun9i-a80-de.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/sun9i-a80-usb.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/suniv-ccu-f1c100s.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/tegra124-car.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/tegra186-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/tegra194-reset.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/tegra210-car.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/reset/ti-syscon.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/soc/qcom,apr.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/soc/qcom,gsbi.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/soc/qcom,rpmh-rsc.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/soc/rockchip,boot-mode.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/soc/zte,pm_domains.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/apq8016-lpass.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/audio-jack-events.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/cs35l32.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/cs42l42.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/fsl-imx-audmux.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/qcom,q6afe.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/qcom,q6asm.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/rt5640.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/rt5651.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/samsung-i2s.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/tas2552.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/sound/tlv320aic31xx-micbias.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/spmi/spmi.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/thermal/lm90.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/thermal/tegra124-soctherm.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/thermal/tegra186-bpmp-thermal.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/thermal/tegra194-bpmp-thermal.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/thermal/thermal.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/thermal/thermal_exynos.h (props changed) stable/12/sys/gnu/dts/include/dt-bindings/usb/pd.h (props changed) stable/12/sys/gnu/dts/mips/3G-6200N.dts (props changed) stable/12/sys/gnu/dts/mips/3G-6200NL.dts (props changed) stable/12/sys/gnu/dts/mips/3G150B.dts (props changed) stable/12/sys/gnu/dts/mips/3G300M.dts (props changed) stable/12/sys/gnu/dts/mips/A5-V11.dts (props changed) stable/12/sys/gnu/dts/mips/AI-BR100.dts (props changed) stable/12/sys/gnu/dts/mips/AIR3GII.dts (props changed) stable/12/sys/gnu/dts/mips/ALL0239-3G.dts (props changed) stable/12/sys/gnu/dts/mips/ALL0256N-4M.dts (props changed) stable/12/sys/gnu/dts/mips/ALL0256N-8M.dts (props changed) stable/12/sys/gnu/dts/mips/ALL5002.dts (props changed) stable/12/sys/gnu/dts/mips/ALL5003.dts (props changed) stable/12/sys/gnu/dts/mips/AR670W.dts (props changed) stable/12/sys/gnu/dts/mips/AR725W.dts (props changed) stable/12/sys/gnu/dts/mips/ASL26555-16M.dts (props changed) stable/12/sys/gnu/dts/mips/ASL26555-8M.dts (props changed) stable/12/sys/gnu/dts/mips/ATP-52B.dts (props changed) stable/12/sys/gnu/dts/mips/AWAPN2403.dts (props changed) stable/12/sys/gnu/dts/mips/AWM002-4M.dtsi (props changed) stable/12/sys/gnu/dts/mips/AWM002-8M.dtsi (props changed) stable/12/sys/gnu/dts/mips/AWM002-EVB-4M.dts (props changed) stable/12/sys/gnu/dts/mips/AWM002-EVB-8M.dts (props changed) stable/12/sys/gnu/dts/mips/AWM002.dtsi (props changed) stable/12/sys/gnu/dts/mips/AWM003-EVB.dts (props changed) stable/12/sys/gnu/dts/mips/ArcherC20i.dts (props changed) stable/12/sys/gnu/dts/mips/BC2.dts (props changed) stable/12/sys/gnu/dts/mips/BR-6425.dts (props changed) stable/12/sys/gnu/dts/mips/BR-6475ND.dts (props changed) stable/12/sys/gnu/dts/mips/BROADWAY.dts (props changed) stable/12/sys/gnu/dts/mips/CARAMBOLA.dts (props changed) stable/12/sys/gnu/dts/mips/CF-WR800N.dts (props changed) stable/12/sys/gnu/dts/mips/CS-QR10.dts (props changed) stable/12/sys/gnu/dts/mips/CY-SWR1100.dts (props changed) stable/12/sys/gnu/dts/mips/D105.dts (props changed) stable/12/sys/gnu/dts/mips/DAP-1350.dts (props changed) stable/12/sys/gnu/dts/mips/DB-WRT01.dts (props changed) stable/12/sys/gnu/dts/mips/DCS-930.dts (props changed) stable/12/sys/gnu/dts/mips/DCS-930L-B1.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-300-B1.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-300-B7.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-320-B1.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-600-B1.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-600-B2.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-610-A1.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-615-D.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-615-H1.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-620-A1.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-620-D1.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-645.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-810L.dts (props changed) stable/12/sys/gnu/dts/mips/DIR-860L-B1.dts (props changed) stable/12/sys/gnu/dts/mips/E1700.dts (props changed) stable/12/sys/gnu/dts/mips/ESR-9753.dts (props changed) stable/12/sys/gnu/dts/mips/EX2700.dts (props changed) stable/12/sys/gnu/dts/mips/F5D8235_V1.dts (props changed) stable/12/sys/gnu/dts/mips/F5D8235_V2.dts (props changed) stable/12/sys/gnu/dts/mips/F7C027.dts (props changed) stable/12/sys/gnu/dts/mips/FIREWRT.dts (props changed) stable/12/sys/gnu/dts/mips/FONERA20N.dts (props changed) stable/12/sys/gnu/dts/mips/FREESTATION5.dts (props changed) stable/12/sys/gnu/dts/mips/GL-MT300A.dts (props changed) stable/12/sys/gnu/dts/mips/GL-MT300N.dts (props changed) stable/12/sys/gnu/dts/mips/GL-MT750.dts (props changed) stable/12/sys/gnu/dts/mips/HC5661.dts (props changed) stable/12/sys/gnu/dts/mips/HC5761.dts (props changed) stable/12/sys/gnu/dts/mips/HC5861.dts (props changed) stable/12/sys/gnu/dts/mips/HC5XXX.dtsi (props changed) stable/12/sys/gnu/dts/mips/HG255D.dts (props changed) stable/12/sys/gnu/dts/mips/HLKRM04.dts (props changed) stable/12/sys/gnu/dts/mips/HPM.dts (props changed) stable/12/sys/gnu/dts/mips/HT-TM02.dts (props changed) stable/12/sys/gnu/dts/mips/HW550-3G.dts (props changed) stable/12/sys/gnu/dts/mips/IP2202.dts (props changed) stable/12/sys/gnu/dts/mips/JHR-N805R.dts (props changed) stable/12/sys/gnu/dts/mips/JHR-N825R.dts (props changed) stable/12/sys/gnu/dts/mips/JHR-N926R.dts (props changed) stable/12/sys/gnu/dts/mips/LINKIT7688.dts (props changed) stable/12/sys/gnu/dts/mips/M2M.dts (props changed) stable/12/sys/gnu/dts/mips/M3.dts (props changed) stable/12/sys/gnu/dts/mips/M4-4M.dts (props changed) stable/12/sys/gnu/dts/mips/M4-8M.dts (props changed) stable/12/sys/gnu/dts/mips/MINIEMBPLUG.dts (props changed) stable/12/sys/gnu/dts/mips/MINIEMBWIFI.dts (props changed) stable/12/sys/gnu/dts/mips/MIWIFI-MINI.dts (props changed) stable/12/sys/gnu/dts/mips/MIWIFI-NANO.dts (props changed) stable/12/sys/gnu/dts/mips/MLW221.dts (props changed) stable/12/sys/gnu/dts/mips/MLWG2.dts (props changed) stable/12/sys/gnu/dts/mips/MOFI3500-3GN.dts (props changed) stable/12/sys/gnu/dts/mips/MPRA1.dts (props changed) stable/12/sys/gnu/dts/mips/MPRA2.dts (props changed) stable/12/sys/gnu/dts/mips/MR-102N.dts (props changed) stable/12/sys/gnu/dts/mips/MT7620a.dts (props changed) stable/12/sys/gnu/dts/mips/MT7620a_MT7530.dts (props changed) stable/12/sys/gnu/dts/mips/MT7620a_MT7610e.dts (props changed) stable/12/sys/gnu/dts/mips/MT7620a_V22SG.dts (props changed) stable/12/sys/gnu/dts/mips/MT7621.dts (props changed) stable/12/sys/gnu/dts/mips/MT7628.dts (props changed) stable/12/sys/gnu/dts/mips/MZK-750DHP.dts (props changed) stable/12/sys/gnu/dts/mips/MZK-DP150N.dts (props changed) stable/12/sys/gnu/dts/mips/MZK-EX300NP.dts (props changed) stable/12/sys/gnu/dts/mips/MZK-EX750NP.dts (props changed) stable/12/sys/gnu/dts/mips/MZK-W04N-XX.dts (props changed) stable/12/sys/gnu/dts/mips/MZK-W300NH2.dts (props changed) stable/12/sys/gnu/dts/mips/MZK-WDPR.dts (props changed) stable/12/sys/gnu/dts/mips/MicroWRT.dts (props changed) stable/12/sys/gnu/dts/mips/NA930.dts (props changed) stable/12/sys/gnu/dts/mips/NBG-419N.dts (props changed) stable/12/sys/gnu/dts/mips/NCS601W.dts (props changed) stable/12/sys/gnu/dts/mips/NW718.dts (props changed) stable/12/sys/gnu/dts/mips/OY-0001.dts (props changed) stable/12/sys/gnu/dts/mips/PBR-M1.dts (props changed) stable/12/sys/gnu/dts/mips/PSG1208.dts (props changed) stable/12/sys/gnu/dts/mips/PSR-680W.dts (props changed) stable/12/sys/gnu/dts/mips/PWH2004.dts (props changed) stable/12/sys/gnu/dts/mips/PX-4885-4M.dts (props changed) stable/12/sys/gnu/dts/mips/PX-4885-8M.dts (props changed) stable/12/sys/gnu/dts/mips/PX-4885.dtsi (props changed) stable/12/sys/gnu/dts/mips/RE6500.dts (props changed) stable/12/sys/gnu/dts/mips/RP-N53.dts (props changed) stable/12/sys/gnu/dts/mips/RT-G32-B1.dts (props changed) stable/12/sys/gnu/dts/mips/RT-N10-PLUS.dts (props changed) stable/12/sys/gnu/dts/mips/RT-N13U.dts (props changed) stable/12/sys/gnu/dts/mips/RT-N14U.dts (props changed) stable/12/sys/gnu/dts/mips/RT-N15.dts (props changed) stable/12/sys/gnu/dts/mips/RT-N56U.dts (props changed) stable/12/sys/gnu/dts/mips/RT5350F-OLINUXINO-EVB.dts (props changed) stable/12/sys/gnu/dts/mips/RT5350F-OLINUXINO.dts (props changed) stable/12/sys/gnu/dts/mips/RUT5XX.dts (props changed) stable/12/sys/gnu/dts/mips/SAP-G3200U3.dts (props changed) stable/12/sys/gnu/dts/mips/SK-WB8.dts (props changed) stable/12/sys/gnu/dts/mips/SL-R7205.dts (props changed) stable/12/sys/gnu/dts/mips/TEW-691GR.dts (props changed) stable/12/sys/gnu/dts/mips/TEW-692GR.dts (props changed) stable/12/sys/gnu/dts/mips/TINY-AC.dts (props changed) stable/12/sys/gnu/dts/mips/UBNT-ERX.dts (props changed) stable/12/sys/gnu/dts/mips/UR-326N4G.dts (props changed) stable/12/sys/gnu/dts/mips/UR-336UN.dts (props changed) stable/12/sys/gnu/dts/mips/V11STFE.dts (props changed) stable/12/sys/gnu/dts/mips/V22RW-2X2.dts (props changed) stable/12/sys/gnu/dts/mips/VOCORE-16M.dts (props changed) stable/12/sys/gnu/dts/mips/VOCORE-8M.dts (props changed) stable/12/sys/gnu/dts/mips/VOCORE.dtsi (props changed) stable/12/sys/gnu/dts/mips/W150M.dts (props changed) stable/12/sys/gnu/dts/mips/W306R_V20.dts (props changed) stable/12/sys/gnu/dts/mips/W502U.dts (props changed) stable/12/sys/gnu/dts/mips/WCR150GN.dts (props changed) stable/12/sys/gnu/dts/mips/WF-2881.dts (props changed) stable/12/sys/gnu/dts/mips/WHR-1166D.dts (props changed) stable/12/sys/gnu/dts/mips/WHR-300HP2.dts (props changed) stable/12/sys/gnu/dts/mips/WHR-600D.dts (props changed) stable/12/sys/gnu/dts/mips/WHR-G300N.dts (props changed) stable/12/sys/gnu/dts/mips/WITI.dts (props changed) stable/12/sys/gnu/dts/mips/WIZARD8800.dts (props changed) stable/12/sys/gnu/dts/mips/WIZFI630A.dts (props changed) stable/12/sys/gnu/dts/mips/WL-330N.dts (props changed) stable/12/sys/gnu/dts/mips/WL-330N3G.dts (props changed) stable/12/sys/gnu/dts/mips/WL-341V3.dts (props changed) stable/12/sys/gnu/dts/mips/WL-351.dts (props changed) stable/12/sys/gnu/dts/mips/WLI-TX4-AG300N.dts (props changed) stable/12/sys/gnu/dts/mips/WMR-300.dts (props changed) stable/12/sys/gnu/dts/mips/WNCE2001.dts (props changed) stable/12/sys/gnu/dts/mips/WNDR3700V5.dts (props changed) stable/12/sys/gnu/dts/mips/WR512-3GN-4M.dts (props changed) stable/12/sys/gnu/dts/mips/WR512-3GN-8M.dts (props changed) stable/12/sys/gnu/dts/mips/WR6202.dts (props changed) stable/12/sys/gnu/dts/mips/WRH-300CR.dts (props changed) stable/12/sys/gnu/dts/mips/WRTNODE.dts (props changed) stable/12/sys/gnu/dts/mips/WRTNODE2.dtsi (props changed) stable/12/sys/gnu/dts/mips/WRTNODE2P.dts (props changed) stable/12/sys/gnu/dts/mips/WRTNODE2R.dts (props changed) stable/12/sys/gnu/dts/mips/WSR-1166.dts (props changed) stable/12/sys/gnu/dts/mips/WSR-600.dts (props changed) stable/12/sys/gnu/dts/mips/WT1520-4M.dts (props changed) stable/12/sys/gnu/dts/mips/WT1520-8M.dts (props changed) stable/12/sys/gnu/dts/mips/WT1520.dtsi (props changed) stable/12/sys/gnu/dts/mips/WT3020-4M.dts (props changed) stable/12/sys/gnu/dts/mips/WT3020-8M.dts (props changed) stable/12/sys/gnu/dts/mips/WZR-AGL300NH.dts (props changed) stable/12/sys/gnu/dts/mips/X5.dts (props changed) stable/12/sys/gnu/dts/mips/X8.dts (props changed) stable/12/sys/gnu/dts/mips/XDXRN502J.dts (props changed) stable/12/sys/gnu/dts/mips/Y1.dts (props changed) stable/12/sys/gnu/dts/mips/Y1.dtsi (props changed) stable/12/sys/gnu/dts/mips/Y1S.dts (props changed) stable/12/sys/gnu/dts/mips/YOUKU-YK1.dts (props changed) stable/12/sys/gnu/dts/mips/ZBT-WA05.dts (props changed) stable/12/sys/gnu/dts/mips/ZBT-WE826.dts (props changed) stable/12/sys/gnu/dts/mips/ZBT-WG2626.dts (props changed) stable/12/sys/gnu/dts/mips/ZBT-WG3526.dts (props changed) stable/12/sys/gnu/dts/mips/ZBT-WR8305RT.dts (props changed) stable/12/sys/gnu/dts/mips/ZTE-Q7.dts (props changed) stable/12/sys/gnu/dts/mips/ingenic/canna.dts (props changed) stable/12/sys/gnu/dts/mips/ingenic/ci20.dts (props changed) stable/12/sys/gnu/dts/mips/ingenic/jz4780.dtsi (props changed) stable/12/sys/gnu/dts/mips/ingenic/x1000.dtsi (props changed) stable/12/sys/gnu/dts/mips/mt7620a.dtsi (props changed) stable/12/sys/gnu/dts/mips/mt7620n.dtsi (props changed) stable/12/sys/gnu/dts/mips/mt7621.dtsi (props changed) stable/12/sys/gnu/dts/mips/mt7628an.dtsi (props changed) stable/12/sys/gnu/dts/mips/rt2880.dtsi (props changed) stable/12/sys/gnu/dts/mips/rt3050.dtsi (props changed) stable/12/sys/gnu/dts/mips/rt3352.dtsi (props changed) stable/12/sys/gnu/dts/mips/rt3883.dtsi (props changed) stable/12/sys/gnu/dts/mips/rt5350.dtsi (props changed) Modified: stable/12/sys/gnu/dts/arm/alphascale-asm9260.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/alphascale-asm9260.dtsi Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/alphascale-asm9260.dtsi Wed Aug 7 19:18:32 2019 (r350690) @@ -4,10 +4,11 @@ * Licensed under the X11 license or the GPL v2 (or later) */ -#include "skeleton.dtsi" #include / { + #address-cells = <1>; + #size-cells = <1>; interrupt-parent = <&icoll>; memory { Modified: stable/12/sys/gnu/dts/arm/alpine.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/alpine.dtsi Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/alpine.dtsi Wed Aug 7 19:18:32 2019 (r350690) @@ -25,11 +25,17 @@ */ #include -#include "skeleton64.dtsi" / { + #address-cells = <2>; + #size-cells = <2>; /* SOC compatibility */ compatible = "al,alpine"; + + memory { + device_type = "memory"; + reg = <0 0 0 0>; + }; /* CPU Configuration */ cpus { Modified: stable/12/sys/gnu/dts/arm/am335x-baltos-ir2110.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-baltos-ir2110.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-baltos-ir2110.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -72,7 +72,3 @@ dual_emac_res_vlan = <2>; phy-handle = <&phy1>; }; - -&phy_sel { - rmii-clock-ext = <1>; -}; Modified: stable/12/sys/gnu/dts/arm/am335x-baltos-ir3220.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-baltos-ir3220.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-baltos-ir3220.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -114,7 +114,3 @@ dual_emac_res_vlan = <2>; phy-handle = <&phy1>; }; - -&phy_sel { - rmii-clock-ext = <1>; -}; Modified: stable/12/sys/gnu/dts/arm/am335x-baltos-ir5221.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-baltos-ir5221.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-baltos-ir5221.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -133,10 +133,6 @@ phy-handle = <&phy1>; }; -&phy_sel { - rmii-clock-ext = <1>; -}; - &dcan1 { pinctrl-names = "default"; pinctrl-0 = <&dcan1_pins>; Modified: stable/12/sys/gnu/dts/arm/am335x-chiliboard.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-chiliboard.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-chiliboard.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -14,6 +14,10 @@ compatible = "grinn,am335x-chiliboard", "grinn,am335x-chilisom", "ti,am33xx"; + chosen { + stdout-path = &uart0; + }; + leds { compatible = "gpio-leds"; pinctrl-names = "default"; @@ -149,10 +153,6 @@ &cpsw_emac0 { phy-handle = <ðphy0>; phy-mode = "rmii"; -}; - -&phy_sel { - rmii-clock-ext; }; /* USB */ Modified: stable/12/sys/gnu/dts/arm/am335x-evm.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-evm.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-evm.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -57,6 +57,24 @@ enable-active-high; }; + /* TPS79501 */ + v1_8d_reg: fixedregulator-v1_8d { + compatible = "regulator-fixed"; + regulator-name = "v1_8d"; + vin-supply = <&vbat>; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + /* TPS79501 */ + v3_3d_reg: fixedregulator-v3_3d { + compatible = "regulator-fixed"; + regulator-name = "v3_3d"; + vin-supply = <&vbat>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + matrix_keypad: matrix_keypad0 { compatible = "gpio-matrix-keypad"; debounce-delay-ms = <5>; @@ -499,10 +517,10 @@ status = "okay"; /* Regulators */ - AVDD-supply = <&vaux2_reg>; - IOVDD-supply = <&vaux2_reg>; - DRVDD-supply = <&vaux2_reg>; - DVDD-supply = <&vbat>; + AVDD-supply = <&v3_3d_reg>; + IOVDD-supply = <&v3_3d_reg>; + DRVDD-supply = <&v3_3d_reg>; + DVDD-supply = <&v1_8d_reg>; }; }; Modified: stable/12/sys/gnu/dts/arm/am335x-evmsk.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-evmsk.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-evmsk.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -73,6 +73,24 @@ enable-active-high; }; + /* TPS79518 */ + v1_8d_reg: fixedregulator-v1_8d { + compatible = "regulator-fixed"; + regulator-name = "v1_8d"; + vin-supply = <&vbat>; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + /* TPS78633 */ + v3_3d_reg: fixedregulator-v3_3d { + compatible = "regulator-fixed"; + regulator-name = "v3_3d"; + vin-supply = <&vbat>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + leds { pinctrl-names = "default"; pinctrl-0 = <&user_leds_s0>; @@ -501,10 +519,10 @@ status = "okay"; /* Regulators */ - AVDD-supply = <&vaux2_reg>; - IOVDD-supply = <&vaux2_reg>; - DRVDD-supply = <&vaux2_reg>; - DVDD-supply = <&vbat>; + AVDD-supply = <&v3_3d_reg>; + IOVDD-supply = <&v3_3d_reg>; + DRVDD-supply = <&v3_3d_reg>; + DVDD-supply = <&v1_8d_reg>; }; }; Copied: stable/12/sys/gnu/dts/arm/am335x-guardian.dts (from r347366, head/sys/gnu/dts/arm/am335x-guardian.dts) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/gnu/dts/arm/am335x-guardian.dts Wed Aug 7 19:18:32 2019 (r350690, copy of r347366, head/sys/gnu/dts/arm/am335x-guardian.dts) @@ -0,0 +1,511 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * Copyright (C) 2018 Robert Bosch Power Tools GmbH + */ +/dts-v1/; + +#include "am33xx.dtsi" +#include +#include + +/ { + model = "Bosch AM335x Guardian"; + compatible = "bosch,am335x-guardian", "ti,am33xx"; + + chosen { + stdout-path = &uart0; + tick-timer = &timer2; + }; + + cpus { + cpu@0 { + cpu0-supply = <&dcdc2_reg>; + }; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x80000000 0x10000000>; /* 256 MB */ + }; + + gpio_keys { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&gpio_keys_pins>; + + button21 { + label = "guardian-power-button"; + linux,code = ; + gpios = <&gpio2 21 0>; + wakeup-source; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&leds_pins>; + + led1 { + label = "green:heartbeat"; + gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + default-state = "off"; + }; + + led2 { + label = "green:mmc0"; + gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "mmc0"; + default-state = "off"; + }; + }; + + panel { + compatible = "ti,tilcdc,panel"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&lcd_pins_default &lcd_disen_pins>; + pinctrl-1 = <&lcd_pins_sleep>; + + display-timings { + 320x240 { + hactive = <320>; + vactive = <240>; + hback-porch = <68>; + hfront-porch = <20>; + hsync-len = <1>; + vback-porch = <18>; + vfront-porch = <4>; + vsync-len = <1>; + clock-frequency = <9000000>; + hsync-active = <0>; + vsync-active = <0>; + }; + }; + panel-info { + ac-bias = <255>; + ac-bias-intrpt = <0>; + dma-burst-sz = <16>; + bpp = <24>; + bus-width = <16>; + fdd = <0x80>; + sync-edge = <0>; + sync-ctrl = <1>; + raster-order = <0>; + fifo-th = <0>; + }; + + }; + + pwm7: dmtimer-pwm { + compatible = "ti,omap-dmtimer-pwm"; + ti,timers = <&timer7>; + pinctrl-names = "default"; + pinctrl-0 = <&dmtimer7_pins>; + }; + + vmmcsd_fixed: regulator-3v3 { + compatible = "regulator-fixed"; + regulator-name = "vmmcsd_fixed"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; +}; + +&cppi41dma { + status = "okay"; +}; + +&elm { + status = "okay"; +}; + +&gpmc { + pinctrl-names = "default"; + pinctrl-0 = <&nandflash_pins>; + ranges = <0 0 0x08000000 0x1000000>; /* CS0: 16MB for NAND */ + status = "okay"; + + nand@0,0 { + compatible = "ti,omap2-nand"; + reg = <0 0 4>; /* CS0, offset 0, IO size 4 */ + interrupt-parent = <&gpmc>; + interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */ + <1 IRQ_TYPE_NONE>; /* termcount */ + rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */ + ti,nand-ecc-opt = "bch16"; + ti,elm-id = <&elm>; + nand-bus-width = <8>; + gpmc,device-width = <1>; + gpmc,sync-clk-ps = <0>; + gpmc,cs-on-ns = <0>; + gpmc,cs-rd-off-ns = <44>; + gpmc,cs-wr-off-ns = <44>; + gpmc,adv-on-ns = <6>; + gpmc,adv-rd-off-ns = <34>; + gpmc,adv-wr-off-ns = <44>; + gpmc,we-on-ns = <0>; + gpmc,we-off-ns = <40>; + gpmc,oe-on-ns = <0>; + gpmc,oe-off-ns = <54>; + gpmc,access-ns = <64>; + gpmc,rd-cycle-ns = <82>; + gpmc,wr-cycle-ns = <82>; + gpmc,bus-turnaround-ns = <0>; + gpmc,cycle2cycle-delay-ns = <0>; + gpmc,clk-activation-ns = <0>; + gpmc,wr-access-ns = <40>; + gpmc,wr-data-mux-bus-ns = <0>; + + /* + * MTD partition table + * + * All SPL-* partitions are sized to minimal length which can + * be independently programmable. For NAND flash this is equal + * to size of erase-block. + */ + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "SPL"; + reg = <0x0 0x40000>; + }; + + partition@1 { + label = "SPL.backup1"; + reg = <0x40000 0x40000>; + }; + + partition@2 { + label = "SPL.backup2"; + reg = <0x80000 0x40000>; + }; + + partition@3 { + label = "SPL.backup3"; + reg = <0xc0000 0x40000>; + }; + + partition@4 { + label = "u-boot"; + reg = <0x100000 0x100000>; + }; + + partition@5 { + label = "u-boot.backup1"; + reg = <0x200000 0x100000>; + }; + + partition@6 { + label = "u-boot-env"; + reg = <0x300000 0x40000>; + }; + + partition@7 { + label = "u-boot-env.backup1"; + reg = <0x340000 0x40000>; + }; + + partition@8 { + label = "UBI"; + reg = <0x380000 0x1fc80000>; + }; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <400000>; + status = "okay"; + + tps: tps@24 { + reg = <0x24>; + }; +}; + +&lcdc { + blue-and-red-wiring = "crossed"; + status = "okay"; +}; + +&mmc1 { + bus-width = <0x4>; + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_pins>; + cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>; + vmmc-supply = <&vmmcsd_fixed>; + status = "okay"; +}; + +&rtc { + clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; + clock-names = "ext-clk", "int-clk"; + system-power-controller; +}; + +&spi0 { + ti,pindir-d0-out-d1-in; + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; + status = "okay"; +}; + +#include "tps65217.dtsi" + +&tps { + ti,pmic-shutdown-controller; + interrupt-parent = <&intc>; + interrupts = <7>; /* NMI */ + + backlight { + isel = <1>; /* 1 - ISET1, 2 ISET2 */ + fdim = <100>; /* TPS65217_BL_FDIM_100HZ */ + default-brightness = <100>; + }; + + regulators { + dcdc1_reg: regulator@0 { + regulator-name = "vdds_dpr"; + regulator-always-on; + }; + + dcdc2_reg: regulator@1 { + regulator-name = "vdd_mpu"; + regulator-min-microvolt = <925000>; + regulator-max-microvolt = <1351500>; + regulator-boot-on; + regulator-always-on; + }; + + dcdc3_reg: regulator@2 { + regulator-name = "vdd_core"; + regulator-min-microvolt = <925000>; + regulator-max-microvolt = <1150000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo1_reg: regulator@3 { + regulator-name = "vio,vrtc,vdds"; + regulator-always-on; + }; + + ldo2_reg: regulator@4 { + regulator-name = "vdd_3v3aux"; + regulator-always-on; + }; + + ldo3_reg: regulator@5 { + regulator-name = "vdd_1v8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + ldo4_reg: regulator@6 { + regulator-name = "vdd_3v3a"; + regulator-always-on; + }; + }; +}; + +&tscadc { + status = "okay"; + + adc { + ti,adc-channels = <0 1 2 3 4 5 6>; + }; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "okay"; +}; + +&usb { + status = "okay"; +}; + +&usb_ctrl_mod { + status = "okay"; +}; + +&usb0 { + dr_mode = "peripheral"; + status = "okay"; +}; + +&usb0_phy { + status = "okay"; +}; + +&usb1 { + dr_mode = "host"; + status = "okay"; +}; + +&usb1_phy { + status = "okay"; +}; + +&am33xx_pinmux { + pinctrl-names = "default"; + pinctrl-0 = <&clkout2_pin &gpio_pins>; + + clkout2_pin: pinmux_clkout2_pin { + pinctrl-single,pins = < + AM33XX_IOPAD(0x9b4, PIN_OUTPUT_PULLDOWN | MUX_MODE3) + >; + }; + + dmtimer7_pins: pinmux_dmtimer7_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x968, PIN_OUTPUT | MUX_MODE5) + >; + }; + + gpio_keys_pins: pinmux_gpio_keys_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x940, PIN_INPUT | MUX_MODE7) + >; + }; + + gpio_pins: pinmux_gpio_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x928, PIN_OUTPUT | MUX_MODE7) + AM33XX_IOPAD(0x990, PIN_OUTPUT | MUX_MODE7) + >; + }; + + i2c0_pins: pinmux_i2c0_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x988, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x98c, PIN_INPUT_PULLUP | MUX_MODE0) + >; + }; + + lcd_disen_pins: pinmux_lcd_disen_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x9a4, PIN_OUTPUT_PULLUP | SLEWCTRL_SLOW | MUX_MODE7) + >; + }; + + lcd_pins_default: pinmux_lcd_pins_default { + pinctrl-single,pins = < + AM33XX_IOPAD(0x820, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1) + AM33XX_IOPAD(0x824, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1) + AM33XX_IOPAD(0x828, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1) + AM33XX_IOPAD(0x82c, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1) + AM33XX_IOPAD(0x830, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1) + AM33XX_IOPAD(0x834, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1) + AM33XX_IOPAD(0x838, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1) + AM33XX_IOPAD(0x83c, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1) + AM33XX_IOPAD(0x8a0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8a4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8a8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8ac, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8b0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8b4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8b8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8bc, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8c0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8c4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8c8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8cc, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8d0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8d4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8d8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8dc, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8e0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8e4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8e8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + AM33XX_IOPAD(0x8ec, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0) + >; + }; + + lcd_pins_sleep: pinmux_lcd_pins_sleep { + pinctrl-single,pins = < + AM33XX_IOPAD(0x8a0, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8a4, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8a8, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8ac, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8b0, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8b4, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8b8, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8bc, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8c0, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8c4, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8c8, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8cc, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8d0, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8d4, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8d8, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8dc, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8e0, PIN_INPUT_PULLDOWN | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8e4, PIN_INPUT_PULLDOWN | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8e8, PIN_INPUT_PULLDOWN | SLEWCTRL_SLOW | MUX_MODE7) + AM33XX_IOPAD(0x8ec, PIN_INPUT_PULLDOWN | SLEWCTRL_SLOW | MUX_MODE7) + >; + }; + + leds_pins: pinmux_leds_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x868, PIN_OUTPUT | MUX_MODE7) + AM33XX_IOPAD(0x86c, PIN_OUTPUT | MUX_MODE7) + >; + }; + + mmc1_pins: pinmux_mmc1_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x8f0, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x8f4, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x8f8, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x8fc, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7) + >; + }; + + spi0_pins: pinmux_spi0_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x950, PIN_OUTPUT_PULLDOWN | MUX_MODE0) + AM33XX_IOPAD(0x954, PIN_OUTPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x95c, PIN_OUTPUT_PULLUP | MUX_MODE0) + >; + }; + + uart0_pins: pinmux_uart0_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0) + AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0) + >; + }; + + nandflash_pins: pinmux_nandflash_pins { + pinctrl-single,pins = < + AM33XX_IOPAD(0x800, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x804, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x808, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x80c, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x810, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x814, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x818, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x81c, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x870, PIN_INPUT | MUX_MODE0) + AM33XX_IOPAD(0x874, PIN_OUTPUT | MUX_MODE0) + AM33XX_IOPAD(0x87c, PIN_OUTPUT | MUX_MODE0) + AM33XX_IOPAD(0x890, PIN_OUTPUT | MUX_MODE0) + AM33XX_IOPAD(0x894, PIN_OUTPUT | MUX_MODE0) + AM33XX_IOPAD(0x898, PIN_OUTPUT | MUX_MODE0) + AM33XX_IOPAD(0x89c, PIN_OUTPUT | MUX_MODE0) + >; + }; +}; Modified: stable/12/sys/gnu/dts/arm/am335x-icev2.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-icev2.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-icev2.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -484,10 +484,6 @@ dual_emac; }; -&phy_sel { - rmii-clock-ext; -}; - &davinci_mdio { pinctrl-names = "default", "sleep"; pinctrl-0 = <&davinci_mdio_default>; Modified: stable/12/sys/gnu/dts/arm/am335x-igep0033.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-igep0033.dtsi Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-igep0033.dtsi Wed Aug 7 19:18:32 2019 (r350690) @@ -123,10 +123,6 @@ phy-mode = "rmii"; }; -&phy_sel { - rmii-clock-ext; -}; - &elm { status = "okay"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-lxm.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-lxm.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-lxm.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -328,10 +328,6 @@ dual_emac_res_vlan = <3>; }; -&phy_sel { - rmii-clock-ext; -}; - &mac { pinctrl-names = "default", "sleep"; pinctrl-0 = <&cpsw_default>; Modified: stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-moxa-uc-2100-common.dtsi Wed Aug 7 19:18:32 2019 (r350690) @@ -159,11 +159,6 @@ status = "okay"; }; -&phy_sel { - reg= <0x44e10650 0xf5>; - rmii-clock-ext; -}; - &sham { status = "okay"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-moxa-uc-8100-me-t.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-moxa-uc-8100-me-t.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-moxa-uc-8100-me-t.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -446,11 +446,6 @@ dual_emac_res_vlan = <2>; }; -&phy_sel { - reg= <0x44e10650 0xf5>; - rmii-clock-ext; -}; - &sham { status = "okay"; }; Modified: stable/12/sys/gnu/dts/arm/am335x-phycore-som.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-phycore-som.dtsi Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-phycore-som.dtsi Wed Aug 7 19:18:32 2019 (r350690) @@ -100,10 +100,6 @@ status = "okay"; }; -&phy_sel { - rmii-clock-ext; -}; - /* I2C Busses */ &am33xx_pinmux { i2c0_pins: pinmux_i2c0 { Modified: stable/12/sys/gnu/dts/arm/am335x-shc.dts ============================================================================== --- stable/12/sys/gnu/dts/arm/am335x-shc.dts Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am335x-shc.dts Wed Aug 7 19:18:32 2019 (r350690) @@ -1,11 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0 /* * support for the bosch am335x based shc c3 board * * Copyright, C) 2015 Heiko Schocher * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. */ /dts-v1/; Modified: stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi Wed Aug 7 18:35:59 2019 (r350689) +++ stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi Wed Aug 7 19:18:32 2019 (r350690) @@ -279,17 +279,9 @@ #pinctrl-cells = <1>; ranges = <0 0 0x2000>; - phy_sel: cpsw-phy-sel@650 { - compatible = "ti,am3352-cpsw-phy-sel"; - reg= <0x650 0x4>; - reg-names = "gmii-sel"; - }; - am33xx_pinmux: pinmux@800 { compatible = "pinctrl-single"; reg = <0x800 0x238>; - #address-cells = <1>; - #size-cells = <0>; #pinctrl-cells = <1>; pinctrl-single,register-width = <32>; pinctrl-single,function-mask = <0x7f>; @@ -302,6 +294,12 @@ #size-cells = <1>; ranges = <0 0 0x800>; + phy_gmii_sel: phy-gmii-sel { + compatible = "ti,am3352-phy-gmii-sel"; + reg = <0x650 0x4>; + #phy-cells = <2>; + }; + scm_clocks: clocks { #address-cells = <1>; #size-cells = <0>; @@ -717,7 +715,6 @@ interrupts = <40 41 42 43>; ranges = <0 0 0x8000>; syscon = <&scm_conf>; - cpsw-phy-sel = <&phy_sel>; status = "disabled"; davinci_mdio: mdio@1000 { @@ -733,11 +730,13 @@ cpsw_emac0: slave@200 { /* Filled in by U-Boot */ mac-address = [ 00 00 00 00 00 00 ]; + phys = <&phy_gmii_sel 1 1>; }; cpsw_emac1: slave@300 { /* Filled in by U-Boot */ mac-address = [ 00 00 00 00 00 00 ]; + phys = <&phy_gmii_sel 2 1>; }; }; }; @@ -1763,7 +1762,7 @@ reg = <0xcc000 0x4>; reg-names = "rev"; /* Domains (P, C): per_pwrdm, l4ls_clkdm */ - clocks = <&l4ls_clkctrl AM3_D_CAN0_CLKCTRL 0>; + clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN0_CLKCTRL 0>; clock-names = "fck"; #address-cells = <1>; #size-cells = <1>; @@ -1786,7 +1785,7 @@ reg = <0xd0000 0x4>; reg-names = "rev"; /* Domains (P, C): per_pwrdm, l4ls_clkdm */ - clocks = <&l4ls_clkctrl AM3_D_CAN1_CLKCTRL 0>; + clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN1_CLKCTRL 0>; clock-names = "fck"; #address-cells = <1>; #size-cells = <1>; Copied: stable/12/sys/gnu/dts/arm/am3874-iceboard.dts (from r347366, head/sys/gnu/dts/arm/am3874-iceboard.dts) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/gnu/dts/arm/am3874-iceboard.dts Wed Aug 7 19:18:32 2019 (r350690, copy of r347366, head/sys/gnu/dts/arm/am3874-iceboard.dts) @@ -0,0 +1,496 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device tree for Winterland IceBoard + * + * http://mcgillcosmology.com + * http://threespeedlogic.com + * + * This is an ARM + FPGA instrumentation board used at telescopes in + * Antarctica (the South Pole Telescope), Chile (POLARBEAR), and at the DRAO + * observatory in British Columbia (CHIME). + * + * Copyright (c) 2019 Three-Speed Logic, Inc. + */ + +/dts-v1/; + +#include "dm814x.dtsi" +#include + +/ { + model = "Winterland IceBoard"; + compatible = "ti,dm8148", "ti,dm814"; + + chosen { + stdout-path = "serial1:115200n8"; + bootargs = "earlycon"; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x80000000 0x40000000>; /* 1 GB */ + }; + + vmmcsd_fixed: fixedregulator0 { + compatible = "regulator-fixed"; + regulator-name = "vmmcsd_fixed"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; +}; + +/* The MAC provides internal delay for the transmit path ONLY, which is enabled + * provided no -id/-txid/-rxid suffix is provided to "phy-mode". + * + * The receive path is delayed at the PHY. The recommended register settings + * are 0xf0 for the control bits, and 0x7777 for the data bits. However, the + * conversion code in the kernel lies: the PHY's registers are 120 ps per tap, + * and the kernel assumes 200 ps per tap. So we have fudged the numbers here to + * obtain the correct register settings. + */ +&mac { dual_emac = <1>; }; +&cpsw_emac0 { + phy-handle = <ðphy0>; + phy-mode = "rgmii"; + dual_emac_res_vlan = <1>; +}; +&cpsw_emac1 { + phy-handle = <ðphy1>; + phy-mode = "rgmii"; + dual_emac_res_vlan = <2>; +}; + +&davinci_mdio { + ethphy0: ethernet-phy@0 { + reg = <0x2>; + + rxc-skew-ps = <3000>; + rxdv-skew-ps = <0>; + + rxd3-skew-ps = <0>; + rxd2-skew-ps = <0>; + rxd1-skew-ps = <0>; + rxd0-skew-ps = <0>; + + phy-reset-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>; + }; + + ethphy1: ethernet-phy@1 { + reg = <0x1>; + + rxc-skew-ps = <3000>; + rxdv-skew-ps = <0>; + + rxd3-skew-ps = <0>; + rxd2-skew-ps = <0>; + rxd1-skew-ps = <0>; + rxd0-skew-ps = <0>; + + phy-reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; + }; +}; + +&mmc1 { status = "disabled"; }; +&mmc2 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc2_pins>; + vmmc-supply = <&vmmcsd_fixed>; + bus-width = <4>; +}; +&mmc3 { status = "disabled"; }; + +&i2c1 { + /* Most I2C activity happens through this port, with the sole exception + * of the backplane. Since there are multiply assigned addresses, the + * "i2c-mux-idle-disconnect" is important. + */ + + pca9548@70 { + compatible = "nxp,pca9548"; + reg = <0x70>; + #address-cells = <1>; + #size-cells = <0>; + + i2c@0 { + /* FMC A */ + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + i2c-mux-idle-disconnect; + }; + + i2c@1 { + /* FMC B */ + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + i2c-mux-idle-disconnect; + }; + + i2c@2 { + /* QSFP A */ + #address-cells = <1>; + #size-cells = <0>; + reg = <2>; + i2c-mux-idle-disconnect; + }; + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Wed Aug 7 20:36:37 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B84DDB712D; Wed, 7 Aug 2019 20:36:37 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463jw54QVDz4JVj; Wed, 7 Aug 2019 20:36:37 +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 793D81A3E1; Wed, 7 Aug 2019 20:36:37 +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 x77Kab85027535; Wed, 7 Aug 2019 20:36:37 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x77Kabid027533; Wed, 7 Aug 2019 20:36:37 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201908072036.x77Kabid027533@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 7 Aug 2019 20:36:37 +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: r350699 - stable/12/tests/sys/vm X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/tests/sys/vm X-SVN-Commit-Revision: 350699 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 20:36:37 -0000 Author: markj Date: Wed Aug 7 20:36:36 2019 New Revision: 350699 URL: https://svnweb.freebsd.org/changeset/base/350699 Log: MFC r346995: Add a few regression tests for mlock(2). Added: stable/12/tests/sys/vm/mlock_test.c - copied unchanged from r346995, head/tests/sys/vm/mlock_test.c Modified: stable/12/tests/sys/vm/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/tests/sys/vm/Makefile ============================================================================== --- stable/12/tests/sys/vm/Makefile Wed Aug 7 20:28:27 2019 (r350698) +++ stable/12/tests/sys/vm/Makefile Wed Aug 7 20:36:36 2019 (r350699) @@ -4,6 +4,7 @@ PACKAGE= tests TESTSDIR= ${TESTSBASE}/sys/vm -ATF_TESTS_C+= mmap_test +ATF_TESTS_C+= mlock_test \ + mmap_test .include Copied: stable/12/tests/sys/vm/mlock_test.c (from r346995, head/tests/sys/vm/mlock_test.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/tests/sys/vm/mlock_test.c Wed Aug 7 20:36:36 2019 (r350699, copy of r346995, head/tests/sys/vm/mlock_test.c) @@ -0,0 +1,174 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +static void +test_wired_copy_on_write(void *addr, size_t len) +{ + int status, val; + pid_t pid; + + pid = fork(); + if (pid == -1) + atf_tc_fail("fork() failed: %s", strerror(errno)); + if (pid == 0) { + if (mlock(addr, len) != 0) + _exit(1); + if (ptrace(PT_TRACE_ME, 0, NULL, 0) != 0) + _exit(2); + if (raise(SIGSTOP) != 0) + _exit(3); + if (munlock(addr, len) != 0) + _exit(4); + _exit(0); + } + + ATF_REQUIRE(waitpid(pid, &status, 0) == pid); + ATF_REQUIRE_MSG(!WIFEXITED(status), + "child exited with status %d", WEXITSTATUS(status)); + ATF_REQUIRE(WIFSTOPPED(status)); + ATF_REQUIRE(WSTOPSIG(status) == SIGSTOP); + + errno = 0; + val = ptrace(PT_READ_D, pid, addr, 0); + ATF_REQUIRE(errno == 0); + ATF_REQUIRE(ptrace(PT_WRITE_D, pid, addr, val) == 0); + ATF_REQUIRE(ptrace(PT_CONTINUE, pid, (caddr_t)1, 0) == 0); + ATF_REQUIRE(waitpid(pid, &status, 0) == pid); + ATF_REQUIRE(WIFEXITED(status)); + ATF_REQUIRE_MSG(WEXITSTATUS(status) == 0, + "child exited with status %d", WSTOPSIG(status)); +} + +/* + * Use ptrace(2) to trigger a copy-on-write fault of anonymous memory. + */ +ATF_TC_WITHOUT_HEAD(mlock__copy_on_write_anon); +ATF_TC_BODY(mlock__copy_on_write_anon, tc) +{ + char *addr; + int len; + + len = getpagesize(); + addr = mmap(NULL, len, PROT_READ, MAP_ANON, -1, 0); + ATF_REQUIRE(addr != MAP_FAILED); + + test_wired_copy_on_write(addr, len); +} + +/* + * Use ptrace(2) to trigger a copy-on-write fault of a read-only text page. + */ +ATF_TC_WITHOUT_HEAD(mlock__copy_on_write_vnode); +ATF_TC_BODY(mlock__copy_on_write_vnode, tc) +{ + void *addr; + int len; + + len = getpagesize(); + addr = (void *)((uintptr_t)test_wired_copy_on_write & ~(len - 1)); + + test_wired_copy_on_write(addr, len); +} + +/* + * Try truncating and then resizing an mlock()ed mapping. + */ +ATF_TC_WITHOUT_HEAD(mlock__truncate_and_resize); +ATF_TC_BODY(mlock__truncate_and_resize, tc) +{ + char filename[16]; + char *addr; + int fd, i, len; + + snprintf(filename, sizeof(filename), "tmp.XXXXXX"); + fd = mkstemp(filename); + ATF_REQUIRE(fd >= 0); + ATF_REQUIRE(unlink(filename) == 0); + + len = getpagesize(); + ATF_REQUIRE(ftruncate(fd, len) == 0); + + addr = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + ATF_REQUIRE(addr != MAP_FAILED); + ATF_REQUIRE(mlock(addr, len) == 0); + memset(addr, 1, len); + ATF_REQUIRE(ftruncate(fd, 0) == 0); + ATF_REQUIRE(ftruncate(fd, len) == 0); + for (i = 0; i < len; i++) + ATF_REQUIRE(addr[i] == 0); + ATF_REQUIRE(munlock(addr, len) == 0); +} + +/* + * Make sure that we can munlock() a truncated mapping. + */ +ATF_TC_WITHOUT_HEAD(mlock__truncate_and_unlock); +ATF_TC_BODY(mlock__truncate_and_unlock, tc) +{ + char filename[16]; + void *addr; + int fd, len; + + snprintf(filename, sizeof(filename), "tmp.XXXXXX"); + fd = mkstemp(filename); + ATF_REQUIRE(fd >= 0); + ATF_REQUIRE(unlink(filename) == 0); + + len = getpagesize(); + ATF_REQUIRE(ftruncate(fd, len) == 0); + + addr = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + ATF_REQUIRE(addr != MAP_FAILED); + ATF_REQUIRE(mlock(addr, len) == 0); + ATF_REQUIRE(ftruncate(fd, 0) == 0); + ATF_REQUIRE(munlock(addr, len) == 0); +} + +ATF_TP_ADD_TCS(tp) +{ + ATF_TP_ADD_TC(tp, mlock__copy_on_write_anon); + ATF_TP_ADD_TC(tp, mlock__copy_on_write_vnode); + ATF_TP_ADD_TC(tp, mlock__truncate_and_resize); + ATF_TP_ADD_TC(tp, mlock__truncate_and_unlock); + + return (atf_no_error()); +} From owner-svn-src-stable@freebsd.org Thu Aug 8 00:17:17 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 81EEDBC547; Thu, 8 Aug 2019 00:17:17 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463ppj2tWmz4WKJ; Thu, 8 Aug 2019 00:17:17 +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 405F61CBB4; Thu, 8 Aug 2019 00:17:17 +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 x780HHxg060176; Thu, 8 Aug 2019 00:17:17 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780HGd1060174; Thu, 8 Aug 2019 00:17:16 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080017.x780HGd1060174@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:17:16 +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: r350703 - in stable/12/sys/cam: . scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys/cam: . scsi X-SVN-Commit-Revision: 350703 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:17:17 -0000 Author: mav Date: Thu Aug 8 00:17:16 2019 New Revision: 350703 URL: https://svnweb.freebsd.org/changeset/base/350703 Log: MFC r340024 (by imp): Add comments explaining what hold/unhold do They act as a simple one-deep semaphore to keep open/close/probe from running at the same time to avoid races that creates. Modified: stable/12/sys/cam/cam_periph.c stable/12/sys/cam/scsi/scsi_da.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/cam_periph.c ============================================================================== --- stable/12/sys/cam/cam_periph.c Wed Aug 7 21:20:25 2019 (r350702) +++ stable/12/sys/cam/cam_periph.c Thu Aug 8 00:17:16 2019 (r350703) @@ -474,6 +474,12 @@ cam_periph_release(struct cam_periph *periph) mtx_unlock(mtx); } +/* + * hold/unhold act as mutual exclusion for sections of the code that + * need to sleep and want to make sure that other sections that + * will interfere are held off. This only protects exclusive sections + * from each other. + */ int cam_periph_hold(struct cam_periph *periph, int priority) { Modified: stable/12/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_da.c Wed Aug 7 21:20:25 2019 (r350702) +++ stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 00:17:16 2019 (r350703) @@ -2737,9 +2737,10 @@ daregister(struct cam_periph *periph, void *arg) TASK_INIT(&softc->sysctl_task, 0, dasysctlinit, periph); /* - * Take an exclusive refcount on the periph while dastart is called - * to finish the probe. The reference will be dropped in dadone at - * the end of probe. + * Take an exclusive section lock qon the periph while dastart is called + * to finish the probe. The lock will be dropped in dadone at the end + * of probe. This locks out daopen and daclose from racing with the + * probe. * * XXX if cam_periph_hold returns an error, we don't hold a refcount. */ From owner-svn-src-stable@freebsd.org Thu Aug 8 00:18:37 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2D7F1BC5F5; Thu, 8 Aug 2019 00:18:37 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463prF17Jqz4WRv; Thu, 8 Aug 2019 00:18:37 +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 085D71CBB6; Thu, 8 Aug 2019 00:18:37 +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 x780IaeD060291; Thu, 8 Aug 2019 00:18:36 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780IaIR060289; Thu, 8 Aug 2019 00:18:36 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080018.x780IaIR060289@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:18:36 +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: r350704 - in stable/12/sys/cam: ata scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys/cam: ata scsi X-SVN-Commit-Revision: 350704 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:18:37 -0000 Author: mav Date: Thu Aug 8 00:18:36 2019 New Revision: 350704 URL: https://svnweb.freebsd.org/changeset/base/350704 Log: MFC r340448 (by imp): Remove trailing white space in advance of other changes. Modified: stable/12/sys/cam/ata/ata_da.c stable/12/sys/cam/scsi/scsi_da.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ata/ata_da.c ============================================================================== --- stable/12/sys/cam/ata/ata_da.c Thu Aug 8 00:17:16 2019 (r350703) +++ stable/12/sys/cam/ata/ata_da.c Thu Aug 8 00:18:36 2019 (r350704) @@ -994,7 +994,7 @@ adaclose(struct disk *dp) cam_periph_sleep(periph, &softc->refcount, PRIBIO, "adaclose", 1); cam_periph_unlock(periph); cam_periph_release(periph); - return (0); + return (0); } static void @@ -1018,7 +1018,7 @@ adastrategy(struct bio *bp) { struct cam_periph *periph; struct ada_softc *softc; - + periph = (struct cam_periph *)bp->bio_disk->d_drv1; softc = (struct ada_softc *)periph->softc; @@ -1042,7 +1042,7 @@ adastrategy(struct bio *bp) */ if (bp->bio_cmd == BIO_ZONE) bp->bio_flags |= BIO_ORDERED; - + /* * Place it in the queue of disk activities for this disk */ @@ -1075,7 +1075,6 @@ adadump(void *arg, void *virtual, vm_offset_t physical secsize = softc->params.secsize; lba = offset / secsize; count = length / secsize; - if ((periph->flags & CAM_PERIPH_INVALID) != 0) return (ENXIO); @@ -1265,7 +1264,7 @@ adaasync(void *callback_arg, u_int32_t code, { struct ccb_getdev *cgd; cam_status status; - + cgd = (struct ccb_getdev *)arg; if (cgd == NULL) break; @@ -2155,7 +2154,7 @@ ada_zone_cmd(struct cam_periph *periph, union ccb *ccb error = ENOMEM; goto bailout; } - + ata_zac_mgmt_in(&ccb->ataio, /*retries*/ ada_retry_count, /*cbcfnp*/ adadone, @@ -2996,7 +2995,7 @@ adadone(struct cam_periph *periph, union ccb *done_ccb */ if ((softc->valid_logdir_len >= ((ATA_IDENTIFY_DATA_LOG + 1) * sizeof(uint16_t))) - && (le16dec(softc->ata_logdir.header) == + && (le16dec(softc->ata_logdir.header) == ATA_GP_LOG_DIR_VERSION) && (le16dec(&softc->ata_logdir.num_pages[ (ATA_IDENTIFY_DATA_LOG * @@ -3016,7 +3015,7 @@ adadone(struct cam_periph *periph, union ccb *done_ccb * then ATA logs are effectively not * supported even if the bit is set in the * identify data. - */ + */ softc->flags &= ~(ADA_FLAG_CAN_LOG | ADA_FLAG_CAN_IDLOG); if ((done_ccb->ccb_h.status & @@ -3126,7 +3125,7 @@ adadone(struct cam_periph *periph, union ccb *done_ccb softc->state = ADA_STATE_SUP_CAP; xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); - } else + } else adaprobedone(periph, done_ccb); return; } @@ -3190,11 +3189,10 @@ adadone(struct cam_periph *periph, union ccb *done_ccb * to an earlier spec, it won't have * the field. So, assume all * commands are supported. - */ + */ softc->zone_flags |= ADA_ZONE_FLAG_SUP_MASK; } - } } else { error = adaerror(done_ccb, CAM_RETRY_SELTO, @@ -3231,7 +3229,7 @@ adadone(struct cam_periph *periph, union ccb *done_ccb softc->state = ADA_STATE_ZONE; xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); - } else + } else adaprobedone(periph, done_ccb); return; } @@ -3315,7 +3313,6 @@ adadone(struct cam_periph *periph, union ccb *done_ccb /*getcount_only*/0); } } - } free(ataio->data_ptr, M_ATADA); @@ -3382,7 +3379,7 @@ adagetparams(struct cam_periph *periph, struct ccb_get dp->secs_per_track = cgd->ident_data.sectors; dp->cylinders = cgd->ident_data.cylinders; dp->sectors = cgd->ident_data.cylinders * - (u_int32_t)(dp->heads * dp->secs_per_track); + (u_int32_t)(dp->heads * dp->secs_per_track); } lbasize = (u_int32_t)cgd->ident_data.lba_size_1 | ((u_int32_t)cgd->ident_data.lba_size_2 << 16); @@ -3596,7 +3593,7 @@ adaresume(void *arg) /*openings*/0, /*timeout*/0, /*getcount_only*/0); - + cam_periph_unlock(periph); } } Modified: stable/12/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 00:17:16 2019 (r350703) +++ stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 00:18:36 2019 (r350704) @@ -75,7 +75,7 @@ __FBSDID("$FreeBSD$"); * Note that there are probe ordering dependencies here. The order isn't * controlled by this enumeration, but by explicit state transitions in * dastart() and dadone(). Here are some of the dependencies: - * + * * 1. RC should come first, before RC16, unless there is evidence that RC16 * is supported. * 2. BDC needs to come before any of the ATA probes, or the ZONE probe. @@ -163,7 +163,7 @@ typedef enum { DA_CCB_PROBE_ATA_ZONE = 0x11, DA_CCB_PROBE_WP = 0x12, DA_CCB_TYPE_MASK = 0x1F, - DA_CCB_RETRY_UA = 0x20 + DA_CCB_RETRY_UA = 0x20 } da_ccb_state; /* @@ -312,7 +312,7 @@ struct da_softc { LIST_HEAD(, ccb_hdr) pending_ccbs; int refcount; /* Active xpt_action() calls */ da_state state; - da_flags flags; + da_flags flags; da_quirks quirks; int minimum_cmd_size; int error_inject; @@ -698,7 +698,7 @@ static struct da_quirk_entry da_quirk_table[] = { /* * PNY USB Flash keys - * PR: usb/75578, usb/72344, usb/65436 + * PR: usb/75578, usb/72344, usb/65436 */ {T_DIRECT, SIP_MEDIA_REMOVABLE, "*" , "USB DISK*", "*"}, /*quirks*/ DA_Q_NO_SYNC_CACHE @@ -1389,9 +1389,9 @@ static struct da_quirk_entry da_quirk_table[] = }, { /* - * Hama Innostor USB-Stick + * Hama Innostor USB-Stick */ - { T_DIRECT, SIP_MEDIA_REMOVABLE, "Innostor", "Innostor*", "*" }, + { T_DIRECT, SIP_MEDIA_REMOVABLE, "Innostor", "Innostor*", "*" }, /*quirks*/DA_Q_NO_RC16 }, { @@ -1811,7 +1811,7 @@ dastrategy(struct bio *bp) { struct cam_periph *periph; struct da_softc *softc; - + periph = (struct cam_periph *)bp->bio_disk->d_drv1; softc = (struct da_softc *)periph->softc; @@ -1864,7 +1864,7 @@ dadump(void *arg, void *virtual, vm_offset_t physical, periph = dp->d_drv1; softc = (struct da_softc *)periph->softc; secsize = softc->params.secsize; - + if ((softc->flags & DA_FLAG_PACK_INVALID) != 0) return (ENXIO); @@ -1891,7 +1891,7 @@ dadump(void *arg, void *virtual, vm_offset_t physical, printf("Aborting dump due to I/O error.\n"); return (error); } - + /* * Sync the disk cache contents to the physical media. */ @@ -1948,7 +1948,7 @@ dainit(void) } else if (da_send_ordered) { /* Register our shutdown event handler */ - if ((EVENTHANDLER_REGISTER(shutdown_post_sync, dashutdown, + if ((EVENTHANDLER_REGISTER(shutdown_post_sync, dashutdown, NULL, SHUTDOWN_PRI_DEFAULT)) == NULL) printf("dainit: shutdown event registration failed!\n"); } @@ -2044,7 +2044,7 @@ daasync(void *callback_arg, u_int32_t code, { struct ccb_getdev *cgd; cam_status status; - + cgd = (struct ccb_getdev *)arg; if (cgd == NULL) break; @@ -2260,7 +2260,7 @@ dasysctlinit(void *context, int pending) SYSCTL_CHILDREN(softc->sysctl_tree), OID_AUTO, "unmapped_io", - CTLFLAG_RD, + CTLFLAG_RD, &softc->unmappedio, 0, "Unmapped I/O support"); @@ -2269,7 +2269,7 @@ dasysctlinit(void *context, int pending) SYSCTL_CHILDREN(softc->sysctl_tree), OID_AUTO, "rotating", - CTLFLAG_RD, + CTLFLAG_RD, &softc->rotating, 0, "Rotating media"); @@ -2683,7 +2683,7 @@ daregister(struct cam_periph *periph, void *arg) free(softc, M_DEVBUF); return(CAM_REQ_CMP_ERR); } - + LIST_INIT(&softc->pending_ccbs); softc->state = DA_STATE_PROBE_WP; bioq_init(&softc->delete_run_queue); @@ -2782,7 +2782,7 @@ daregister(struct cam_periph *periph, void *arg) softc->minimum_cmd_size = 10; else softc->minimum_cmd_size = 6; - + /* Predict whether device may support READ CAPACITY(16). */ if (SID_ANSI_REV(&cgd->inq_data) >= SCSI_REV_SPC3 && (softc->quirks & DA_Q_NO_RC16) == 0) { @@ -2860,7 +2860,7 @@ daregister(struct cam_periph *periph, void *arg) AC_INQ_CHANGED, daasync, periph, periph->path); /* - * Emit an attribute changed notification just in case + * Emit an attribute changed notification just in case * physical path information arrived before our async * event handler was registered, but after anyone attaching * to our disk device polled it. @@ -3024,7 +3024,7 @@ da_zone_cmd(struct cam_periph *periph, union ccb *ccb, error = ENOMEM; goto bailout; } - + if (softc->zone_interface != DA_ZONE_IF_ATA_PASS) { scsi_zbc_in(&ccb->csio, /*retries*/ da_retry_count, @@ -3859,7 +3859,7 @@ out: * single device request, we might have changed the delete * method due to the device incorrectly advertising either * its supported methods or limits. - * + * * To prevent this causing further issues we validate the * against the methods limits, and warn which would * otherwise be unnecessary. @@ -4808,7 +4808,7 @@ dadone_proberc(struct cam_periph *periph, union ccb *d "Attempt to query device " "size failed: %s, %s", sense_key_desc, asc_desc); - } else { + } else { if (have_sense) scsi_sense_print(&done_ccb->csio); else { @@ -4826,7 +4826,7 @@ dadone_proberc(struct cam_periph *periph, union ccb *d * Free up resources. */ cam_periph_invalidate(periph); - } + } } } free(csio->data_ptr, M_SCSIDA); @@ -5117,7 +5117,7 @@ dadone_probebdc(struct cam_periph *periph, union ccb * softc->zone_mode =DA_ZONE_DRIVE_MANAGED; softc->zone_interface = (ata_proto) ? DA_ZONE_IF_ATA_SAT : DA_ZONE_IF_SCSI; - } else if ((bdc->flags & SVPD_ZBC_MASK) != + } else if ((bdc->flags & SVPD_ZBC_MASK) != SVPD_ZBC_NR) { xpt_print(periph->path, "Unknown zoned " "type %#x", @@ -5266,7 +5266,7 @@ dadone_probeata(struct cam_periph *periph, union ccb * /* * If the ATA IDENTIFY failed, we could be talking * to a SCSI drive, although that seems unlikely, - * since the drive did report that it supported the + * since the drive did report that it supported the * ATA Information VPD page. If the ATA IDENTIFY * succeeded, and the SAT layer doesn't support * ZBC -> ZAC translation, continue on to get the @@ -5326,7 +5326,7 @@ dadone_probeatalogdir(struct cam_periph *periph, union */ if ((softc->valid_logdir_len >= ((ATA_IDENTIFY_DATA_LOG + 1) * sizeof(uint16_t))) - && (le16dec(softc->ata_logdir.header) == + && (le16dec(softc->ata_logdir.header) == ATA_GP_LOG_DIR_VERSION) && (le16dec(&softc->ata_logdir.num_pages[ (ATA_IDENTIFY_DATA_LOG * @@ -5346,7 +5346,7 @@ dadone_probeatalogdir(struct cam_periph *periph, union * then ATA logs are effectively not * supported even if the bit is set in the * identify data. - */ + */ softc->flags &= ~(DA_FLAG_CAN_ATA_LOG | DA_FLAG_CAN_ATA_IDLOG); if ((done_ccb->ccb_h.status & @@ -5369,7 +5369,7 @@ dadone_probeatalogdir(struct cam_periph *periph, union xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); return; - } + } daprobedone(periph, done_ccb); return; } @@ -5460,7 +5460,7 @@ dadone_probeataiddir(struct cam_periph *periph, union xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); return; - } + } daprobedone(periph, done_ccb); return; } @@ -5535,10 +5535,9 @@ dadone_probeatasup(struct cam_periph *periph, union cc * to an earlier spec, it won't have * the field. So, assume all * commands are supported. - */ + */ softc->zone_flags |= DA_ZONE_FLAG_SUP_MASK; } - } } else { error = daerror(done_ccb, CAM_RETRY_SELTO, @@ -5574,7 +5573,7 @@ dadone_probeatasup(struct cam_periph *periph, union cc xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); return; - } + } daprobedone(periph, done_ccb); return; } @@ -5910,9 +5909,9 @@ static void daprevent(struct cam_periph *periph, int action) { struct da_softc *softc; - union ccb *ccb; + union ccb *ccb; int error; - + cam_periph_assert(periph, MA_OWNED); softc = (struct da_softc *)periph->softc; @@ -6185,7 +6184,7 @@ scsi_read_defects(struct ccb_scsiio *csio, uint32_t re void (*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, uint8_t list_format, uint32_t addr_desc_index, uint8_t *data_ptr, - uint32_t dxfer_len, int minimum_cmd_size, + uint32_t dxfer_len, int minimum_cmd_size, uint8_t sense_len, uint32_t timeout) { uint8_t cdb_len; @@ -6195,7 +6194,7 @@ scsi_read_defects(struct ccb_scsiio *csio, uint32_t re * need to use the 12 byte command. */ if ((minimum_cmd_size <= 10) - && (addr_desc_index == 0) + && (addr_desc_index == 0) && (dxfer_len <= SRDD10_MAX_LENGTH)) { struct scsi_read_defect_data_10 *cdb10; @@ -6263,7 +6262,7 @@ scsi_sanitize(struct ccb_scsiio *csio, u_int32_t retri #endif /* _KERNEL */ void -scsi_zbc_out(struct ccb_scsiio *csio, uint32_t retries, +scsi_zbc_out(struct ccb_scsiio *csio, uint32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, uint8_t service_action, uint64_t zone_id, uint8_t zone_flags, uint8_t *data_ptr, uint32_t dxfer_len, @@ -6290,7 +6289,7 @@ scsi_zbc_out(struct ccb_scsiio *csio, uint32_t retries } void -scsi_zbc_in(struct ccb_scsiio *csio, uint32_t retries, +scsi_zbc_in(struct ccb_scsiio *csio, uint32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, uint8_t service_action, uint64_t zone_start_lba, uint8_t zone_options, uint8_t *data_ptr, uint32_t dxfer_len, @@ -6319,7 +6318,7 @@ scsi_zbc_in(struct ccb_scsiio *csio, uint32_t retries, } int -scsi_ata_zac_mgmt_out(struct ccb_scsiio *csio, uint32_t retries, +scsi_ata_zac_mgmt_out(struct ccb_scsiio *csio, uint32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, int use_ncq, uint8_t zm_action, uint64_t zone_id, uint8_t zone_flags, @@ -6431,7 +6430,7 @@ bailout: } int -scsi_ata_zac_mgmt_in(struct ccb_scsiio *csio, uint32_t retries, +scsi_ata_zac_mgmt_in(struct ccb_scsiio *csio, uint32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, int use_ncq, uint8_t zm_action, uint64_t zone_id, uint8_t zone_flags, From owner-svn-src-stable@freebsd.org Thu Aug 8 00:19:46 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4040ABC6DF; Thu, 8 Aug 2019 00:19: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463psZ0xPHz4WZV; Thu, 8 Aug 2019 00:19: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 031831CBB7; Thu, 8 Aug 2019 00:19: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 x780JjcT060404; Thu, 8 Aug 2019 00:19:45 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780JjwG060402; Thu, 8 Aug 2019 00:19:45 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080019.x780JjwG060402@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:19: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: r350705 - stable/12/sys/cam/scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam/scsi X-SVN-Commit-Revision: 350705 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:19:46 -0000 Author: mav Date: Thu Aug 8 00:19:45 2019 New Revision: 350705 URL: https://svnweb.freebsd.org/changeset/base/350705 Log: MFC r340452 (by imp): Introduce scsi_ata_setfeatures() as a convenient way to make a passthru ATA SETFEATURES command. Modified: stable/12/sys/cam/scsi/scsi_all.c stable/12/sys/cam/scsi/scsi_all.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/scsi/scsi_all.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_all.c Thu Aug 8 00:18:36 2019 (r350704) +++ stable/12/sys/cam/scsi/scsi_all.c Thu Aug 8 00:19:45 2019 (r350705) @@ -8387,6 +8387,38 @@ scsi_ata_read_log(struct ccb_scsiio *csio, uint32_t re return (retval); } +int scsi_ata_setfeatures(struct ccb_scsiio *csio, uint32_t retries, + void (*cbfcnp)(struct cam_periph *, union ccb *), + uint8_t tag_action, uint8_t feature, + uint64_t lba, uint32_t count, + uint8_t sense_len, uint32_t timeout) +{ + return (scsi_ata_pass(csio, + retries, + cbfcnp, + /*flags*/CAM_DIR_NONE, + tag_action, + /*protocol*/AP_PROTO_PIO_IN, + /*ata_flags*/AP_FLAG_TDIR_FROM_DEV | + AP_FLAG_BYT_BLOK_BYTES | + AP_FLAG_TLEN_SECT_CNT, + /*features*/feature, + /*sector_count*/count, + /*lba*/lba, + /*command*/ATA_SETFEATURES, + /*device*/ 0, + /*icc*/ 0, + /*auxiliary*/0, + /*control*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + /*cdb_storage*/NULL, + /*cdb_storage_len*/0, + /*minimum_cmd_size*/0, + sense_len, + timeout)); +} + /* * Note! This is an unusual CDB building function because it can return * an error in the event that the command in question requires a variable Modified: stable/12/sys/cam/scsi/scsi_all.h ============================================================================== --- stable/12/sys/cam/scsi/scsi_all.h Thu Aug 8 00:18:36 2019 (r350704) +++ stable/12/sys/cam/scsi/scsi_all.h Thu Aug 8 00:19:45 2019 (r350705) @@ -4177,6 +4177,12 @@ int scsi_ata_read_log(struct ccb_scsiio *csio, uint32_ uint8_t protocol, uint8_t *data_ptr, uint32_t dxfer_len, uint8_t sense_len, uint32_t timeout); +int scsi_ata_setfeatures(struct ccb_scsiio *csio, uint32_t retries, + void (*cbfcnp)(struct cam_periph *, union ccb *), + uint8_t tag_action, uint8_t feature, + uint64_t lba, uint32_t count, + uint8_t sense_len, uint32_t timeout); + int scsi_ata_pass(struct ccb_scsiio *csio, uint32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), uint32_t flags, uint8_t tag_action, From owner-svn-src-stable@freebsd.org Thu Aug 8 00:22:16 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 033BCBC929; Thu, 8 Aug 2019 00:22:16 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463pwR6M6fz4Wwh; Thu, 8 Aug 2019 00:22:15 +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 BBE411CD5B; Thu, 8 Aug 2019 00:22:15 +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 x780MFhW065246; Thu, 8 Aug 2019 00:22:15 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780MFIf065245; Thu, 8 Aug 2019 00:22:15 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080022.x780MFIf065245@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:22:15 +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: r350706 - stable/12/sys/cam/scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam/scsi X-SVN-Commit-Revision: 350706 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:22:16 -0000 Author: mav Date: Thu Aug 8 00:22:15 2019 New Revision: 350706 URL: https://svnweb.freebsd.org/changeset/base/350706 Log: MFC r341769 (by imp): Send a START UNIT command when a disk responds with an ASC of 04/1C. This will hopefully spin up a disk that's in low-power mode. Modified: stable/12/sys/cam/scsi/scsi_all.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/scsi/scsi_all.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_all.c Thu Aug 8 00:19:45 2019 (r350705) +++ stable/12/sys/cam/scsi/scsi_all.c Thu Aug 8 00:22:15 2019 (r350706) @@ -1165,7 +1165,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x04, 0x1B, SS_RDEF, /* XXX TBD */ "Logical unit not ready, sanitize in progress") }, /* DT MAEB */ - { SST(0x04, 0x1C, SS_RDEF, /* XXX TBD */ + { SST(0x04, 0x1C, SS_START | SSQ_DECREMENT_COUNT | ENXIO, "Logical unit not ready, additional power use not yet granted") }, /* D */ { SST(0x04, 0x1D, SS_RDEF, /* XXX TBD */ From owner-svn-src-stable@freebsd.org Thu Aug 8 00:23:11 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E9DC4BC9CB; Thu, 8 Aug 2019 00:23:11 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463pxW5syWz4X4p; Thu, 8 Aug 2019 00:23:11 +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 AB4021CD75; Thu, 8 Aug 2019 00:23:11 +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 x780NBJu066155; Thu, 8 Aug 2019 00:23:11 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780NBLl066154; Thu, 8 Aug 2019 00:23:11 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080023.x780NBLl066154@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:23:11 +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: r350707 - stable/12/sys/cam/scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam/scsi X-SVN-Commit-Revision: 350707 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:23:12 -0000 Author: mav Date: Thu Aug 8 00:23:11 2019 New Revision: 350707 URL: https://svnweb.freebsd.org/changeset/base/350707 Log: MFC r342866 (by imp): Add NO_SYNC_CACHE quirk for PENTAX cameras PR: 93389 Modified: stable/12/sys/cam/scsi/scsi_da.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 00:22:15 2019 (r350706) +++ stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 00:23:11 2019 (r350707) @@ -1122,6 +1122,14 @@ static struct da_quirk_entry da_quirk_table[] = }, { /* + * Pentax Digital Camera + * PR: usb/93389 + */ + {T_DIRECT, SIP_MEDIA_REMOVABLE, "PENTAX", "DIGITAL CAMERA", + "*"}, /*quirks*/ DA_Q_NO_SYNC_CACHE + }, + { + /* * LG UP3S MP3 player */ {T_DIRECT, SIP_MEDIA_REMOVABLE, "LG", "UP3S", From owner-svn-src-stable@freebsd.org Thu Aug 8 00:27:27 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DC1D2BCA6E; Thu, 8 Aug 2019 00:27:27 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463q2R5Ml2z4XD3; Thu, 8 Aug 2019 00:27:27 +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 9389C1CD7D; Thu, 8 Aug 2019 00:27:27 +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 x780RR7p066470; Thu, 8 Aug 2019 00:27:27 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780RRmQ066469; Thu, 8 Aug 2019 00:27:27 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080027.x780RRmQ066469@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:27: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: r350708 - in stable/12/sys/cam: ata scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys/cam: ata scsi X-SVN-Commit-Revision: 350708 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:27:27 -0000 Author: mav Date: Thu Aug 8 00:27:26 2019 New Revision: 350708 URL: https://svnweb.freebsd.org/changeset/base/350708 Log: MFC r343814 (by imp): Add quirk for Sansisk X400 drives Certain versions of Sandisk x400 firmware can hang under extremely heavly load of large I/Os for prolonged periods of time. Newer / current versions work fine, and should be used where possible. Where not possible, this quirk ensures that I/O requests are limited to 128k to avoids the bug, even under extreme load. Since MAXPHYS is 128k, only users with custom kernels are at risk on the older firmware. Once all known users of the older firmware have upgraded, this quirk will be removed. Modified: stable/12/sys/cam/ata/ata_da.c stable/12/sys/cam/scsi/scsi_da.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ata/ata_da.c ============================================================================== --- stable/12/sys/cam/ata/ata_da.c Thu Aug 8 00:23:11 2019 (r350707) +++ stable/12/sys/cam/ata/ata_da.c Thu Aug 8 00:27:26 2019 (r350708) @@ -119,7 +119,8 @@ typedef enum { ADA_Q_NCQ_TRIM_BROKEN = 0x02, ADA_Q_LOG_BROKEN = 0x04, ADA_Q_SMR_DM = 0x08, - ADA_Q_NO_TRIM = 0x10 + ADA_Q_NO_TRIM = 0x10, + ADA_Q_128KB = 0x20 } ada_quirks; #define ADA_Q_BIT_STRING \ @@ -128,7 +129,8 @@ typedef enum { "\002NCQ_TRIM_BROKEN" \ "\003LOG_BROKEN" \ "\004SMR_DM" \ - "\005NO_TRIM" + "\005NO_TRIM" \ + "\006128KB" typedef enum { ADA_CCB_RAHEAD = 0x01, @@ -274,6 +276,11 @@ struct ada_quirk_entry { static struct ada_quirk_entry ada_quirk_table[] = { { + /* Sandisk X400 */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "SanDisk?SD8SB8U1T00*", "X4162000*" }, + /*quirks*/ADA_Q_128KB + }, + { /* Hitachi Advanced Format (4k) drives */ { T_DIRECT, SIP_MEDIA_FIXED, "*", "Hitachi H??????????E3*", "*" }, /*quirks*/ADA_Q_4K @@ -1800,6 +1807,8 @@ adaregister(struct cam_periph *periph, void *arg) maxio = min(maxio, 65536 * softc->params.secsize); else /* 28bit ATA command limit */ maxio = min(maxio, 256 * softc->params.secsize); + if (softc->quirks & ADA_Q_128KB) + maxio = min(maxio, 128 * 1024); softc->disk->d_maxsize = maxio; softc->disk->d_unit = periph->unit_number; softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; Modified: stable/12/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 00:23:11 2019 (r350707) +++ stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 00:27:26 2019 (r350708) @@ -130,7 +130,8 @@ typedef enum { DA_Q_NO_UNMAP = 0x20, DA_Q_RETRY_BUSY = 0x40, DA_Q_SMR_DM = 0x80, - DA_Q_STRICT_UNMAP = 0x100 + DA_Q_STRICT_UNMAP = 0x100, + DA_Q_128KB = 0x200 } da_quirks; #define DA_Q_BIT_STRING \ @@ -143,7 +144,8 @@ typedef enum { "\006NO_UNMAP" \ "\007RETRY_BUSY" \ "\010SMR_DM" \ - "\011STRICT_UNMAP" + "\011STRICT_UNMAP" \ + "\012128KB" typedef enum { DA_CCB_PROBE_RC = 0x01, @@ -870,6 +872,11 @@ static struct da_quirk_entry da_quirk_table[] = }, /* ATA/SATA devices over SAS/USB/... */ { + /* Sandisk X400 */ + { T_DIRECT, SIP_MEDIA_FIXED, "ATA", "SanDisk SD8SB8U1*", "*" }, + /*quirks*/DA_Q_128KB + }, + { /* Hitachi Advanced Format (4k) drives */ { T_DIRECT, SIP_MEDIA_FIXED, "Hitachi", "H??????????E3*", "*" }, /*quirks*/DA_Q_4K @@ -2821,6 +2828,8 @@ daregister(struct cam_periph *periph, void *arg) softc->maxio = MAXPHYS; /* for safety */ else softc->maxio = cpi.maxio; + if (softc->quirks & DA_Q_128KB) + softc->maxio = min(softc->maxio, 128 * 1024); softc->disk->d_maxsize = softc->maxio; softc->disk->d_unit = periph->unit_number; softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; From owner-svn-src-stable@freebsd.org Thu Aug 8 00:29:40 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2D8D4BCB06; Thu, 8 Aug 2019 00:29:40 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463q500Mkjz4XLJ; Thu, 8 Aug 2019 00:29:40 +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 DE3061CD7E; Thu, 8 Aug 2019 00:29:39 +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 x780TdUD066617; Thu, 8 Aug 2019 00:29:39 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780Tdex066616; Thu, 8 Aug 2019 00:29:39 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080029.x780Tdex066616@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:29: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: r350709 - stable/12/sys/cam X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam X-SVN-Commit-Revision: 350709 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:29:40 -0000 Author: mav Date: Thu Aug 8 00:29:39 2019 New Revision: 350709 URL: https://svnweb.freebsd.org/changeset/base/350709 Log: MFC r344070 (by imp): Fix panic message. The panic message lead people to believe some userland CAM request had caused a problem when in reallity it was for a kernel request (eg the USER bit was cleared). Reword message. Also, improve a couple of comments to reflect that the periph shouldn't be completely torn down before we get here (so the path and sim pointers should be valid, but aren't and the code is designed to be robust enough in the face of that to give a specific panic message). Modified: stable/12/sys/cam/cam_xpt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/cam_xpt.c ============================================================================== --- stable/12/sys/cam/cam_xpt.c Thu Aug 8 00:27:26 2019 (r350708) +++ stable/12/sys/cam/cam_xpt.c Thu Aug 8 00:29:39 2019 (r350709) @@ -5425,8 +5425,9 @@ xpt_done_process(struct ccb_hdr *ccb_h) } /* - * Insulate against a race where the periph is destroyed - * but CCBs are still not all processed. + * Insulate against a race where the periph is destroyed but CCBs are + * still not all processed. This shouldn't happen, but allows us better + * bug diagnostic when it does. */ if (ccb_h->path->bus) sim = ccb_h->path->bus->sim; @@ -5448,7 +5449,7 @@ xpt_done_process(struct ccb_hdr *ccb_h) if (sim) devq = sim->devq; - KASSERT(devq, ("sim missing for XPT_FC_USER_CCB request")); + KASSERT(devq, ("Periph disappeared with request pending.")); mtx_lock(&devq->send_mtx); devq->send_active--; From owner-svn-src-stable@freebsd.org Thu Aug 8 00:31:01 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4E14FBCBB6; Thu, 8 Aug 2019 00:31:01 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463q6Y18Vlz4XbT; Thu, 8 Aug 2019 00:31:01 +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 E48331CDAD; Thu, 8 Aug 2019 00:31:00 +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 x780V0S1069730; Thu, 8 Aug 2019 00:31:00 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780V0jU069728; Thu, 8 Aug 2019 00:31:00 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080031.x780V0jU069728@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:31: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: r350710 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350710 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:31:01 -0000 Author: mav Date: Thu Aug 8 00:31:00 2019 New Revision: 350710 URL: https://svnweb.freebsd.org/changeset/base/350710 Log: MFC r345051 (by imp): Add -l to camcontrol readcap. The -l flag sends only the READ CAPACITY (16) sevice action. Normally we send the READ CAPACITY (10) command, and only send RC16 when the capacity is larger than 2TB (since that's the max RC10 can report). However, some badly programmed drives report different numbers for RC10 and RC16. This can be hard to diagnose, but generally there's a "Logical block address out of range" error when RC16 reports a larger number than RC10 and the RC10 number is the correct one. By comparing the output of readcap with and without the -l argmuent, one can determine if there's a mismatch and if the DA_Q_NO_RC16 quirk is needed. Modified: stable/12/sbin/camcontrol/camcontrol.8 stable/12/sbin/camcontrol/camcontrol.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 00:29:39 2019 (r350709) +++ stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 00:31:00 2019 (r350710) @@ -78,6 +78,7 @@ .Op Fl b .Op Fl h .Op Fl H +.Op Fl l .Op Fl N .Op Fl q .Op Fl s @@ -548,6 +549,11 @@ or .Fl b . .It Fl H Print out the device size in human readable (base 10, 1K == 1000) format. +.It Fl l +Skip sending the SCSI READ CAPACITY (10) command. +Send only the SCSI READ CAPACITY (16) service action and report +its results. +When the two do not match, a quirk is needed to resolve the ambiguity. .It Fl N Print out the number of blocks in the device instead of the last logical block. Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 00:29:39 2019 (r350709) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 00:31:00 2019 (r350710) @@ -204,7 +204,7 @@ static struct camcontrol_opts option_table[] = { {"load", CAM_CMD_STARTSTOP, CAM_ARG_START_UNIT | CAM_ARG_EJECT, NULL}, {"eject", CAM_CMD_STARTSTOP, CAM_ARG_EJECT, NULL}, {"reportluns", CAM_CMD_REPORTLUNS, CAM_ARG_NONE, "clr:"}, - {"readcapacity", CAM_CMD_READCAP, CAM_ARG_NONE, "bhHNqs"}, + {"readcapacity", CAM_CMD_READCAP, CAM_ARG_NONE, "bhHlNqs"}, {"reprobe", CAM_CMD_REPROBE, CAM_ARG_NONE, NULL}, #endif /* MINIMALISTIC */ {"rescan", CAM_CMD_RESCAN, CAM_ARG_NONE, NULL}, @@ -7164,7 +7164,7 @@ scsireadcapacity(struct cam_device *device, int argc, char *combinedopt, int task_attr, int retry_count, int timeout) { union ccb *ccb; - int blocksizeonly, humanize, numblocks, quiet, sizeonly, baseten; + int blocksizeonly, humanize, numblocks, quiet, sizeonly, baseten, longonly; struct scsi_read_capacity_data rcap; struct scsi_read_capacity_data_long rcaplong; uint64_t maxsector; @@ -7174,6 +7174,7 @@ scsireadcapacity(struct cam_device *device, int argc, blocksizeonly = 0; humanize = 0; + longonly = 0; numblocks = 0; quiet = 0; sizeonly = 0; @@ -7202,6 +7203,9 @@ scsireadcapacity(struct cam_device *device, int argc, humanize++; baseten++; break; + case 'l': + longonly++; + break; case 'N': numblocks++; break; @@ -7244,6 +7248,9 @@ scsireadcapacity(struct cam_device *device, int argc, goto bailout; } + if (longonly != 0) + goto long_only; + scsi_read_capacity(&ccb->csio, /*retries*/ retry_count, /*cbfcnp*/ NULL, @@ -7286,6 +7293,7 @@ scsireadcapacity(struct cam_device *device, int argc, if (maxsector != 0xffffffff) goto do_print; +long_only: scsi_read_capacity_16(&ccb->csio, /*retries*/ retry_count, /*cbfcnp*/ NULL, @@ -9582,7 +9590,7 @@ usage(int printlong) " camcontrol identify [dev_id][generic args] [-v]\n" " camcontrol reportluns [dev_id][generic args] [-c] [-l] [-r report]\n" " camcontrol readcap [dev_id][generic args] [-b] [-h] [-H] [-N]\n" -" [-q] [-s]\n" +" [-q] [-s] [-l]\n" " camcontrol start [dev_id][generic args]\n" " camcontrol stop [dev_id][generic args]\n" " camcontrol load [dev_id][generic args]\n" From owner-svn-src-stable@freebsd.org Thu Aug 8 00:32:23 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 91AB0BCDA2; Thu, 8 Aug 2019 00:32:23 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463q873MzZz4Xn3; Thu, 8 Aug 2019 00:32:23 +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 5699C1CF26; Thu, 8 Aug 2019 00:32:23 +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 x780WNYV072251; Thu, 8 Aug 2019 00:32:23 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780WN73072250; Thu, 8 Aug 2019 00:32:23 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080032.x780WN73072250@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:32:23 +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: r350711 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350711 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:32:23 -0000 Author: mav Date: Thu Aug 8 00:32:22 2019 New Revision: 350711 URL: https://svnweb.freebsd.org/changeset/base/350711 Log: MFC r345060 (by 0mp): camcontrol.8: Bump date after r345051 Modified: stable/12/sbin/camcontrol/camcontrol.8 Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 00:31:00 2019 (r350710) +++ stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 00:32:22 2019 (r350711) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 9, 2019 +.Dd March 12, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME From owner-svn-src-stable@freebsd.org Thu Aug 8 00:33:24 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 46A8DBCE28; Thu, 8 Aug 2019 00:33:24 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463q9J0zgVz4Xvv; Thu, 8 Aug 2019 00:33:24 +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 051841CF3C; Thu, 8 Aug 2019 00:33:24 +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 x780XNdS072373; Thu, 8 Aug 2019 00:33:23 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x780XNBL072372; Thu, 8 Aug 2019 00:33:23 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080033.x780XNBL072372@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 00:33:23 +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: r350712 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350712 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 00:33:24 -0000 Author: mav Date: Thu Aug 8 00:33:23 2019 New Revision: 350712 URL: https://svnweb.freebsd.org/changeset/base/350712 Log: MFC r345363 (by imp): Make WD and WDC aliases for HGST. HGST was bought by WDC. Over the years, it has sold different drives branded as HGST, WD or WDC. All of them need the HGST workaround of sending 4k-sized packets (or multiples of 4k). And the ones that don't really need this aren't broken by this change. Submitter is the vendor who has tested these changes on a number of drives. I've simplified it slightly, since we don't need additional vendors for this at this time. Modified: stable/12/sbin/camcontrol/fwdownload.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/fwdownload.c ============================================================================== --- stable/12/sbin/camcontrol/fwdownload.c Thu Aug 8 00:32:22 2019 (r350711) +++ stable/12/sbin/camcontrol/fwdownload.c Thu Aug 8 00:33:23 2019 (r350712) @@ -212,6 +212,10 @@ static struct fw_vendor vendors_list[] = { 0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT}, {VENDOR_SMART, "SmrtStor", T_DIRECT, 0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT}, + {VENDOR_HGST, "WD", T_DIRECT, + 0x1000, 0x07, 0x07, 1, 0, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT}, + {VENDOR_HGST, "WDC", T_DIRECT, + 0x1000, 0x07, 0x07, 1, 0, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT}, /* * We match any ATA device. This is really just a placeholder, From owner-svn-src-stable@freebsd.org Thu Aug 8 02:00:12 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5D6EFBF929; Thu, 8 Aug 2019 02:00:12 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463s5S1RVLz4dg9; Thu, 8 Aug 2019 02:00:12 +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 147151DE25; Thu, 8 Aug 2019 02:00:12 +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 x7820BU5019861; Thu, 8 Aug 2019 02:00:11 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7820Bcp019859; Thu, 8 Aug 2019 02:00:11 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080200.x7820Bcp019859@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:00:11 +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: r350716 - in stable/12/sys: cam/nvme conf X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys: cam/nvme conf X-SVN-Commit-Revision: 350716 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:00:12 -0000 Author: mav Date: Thu Aug 8 02:00:11 2019 New Revision: 350716 URL: https://svnweb.freebsd.org/changeset/base/350716 Log: MFC r345817: Build NVMe CAM transport unrelated to NVMe SIM. Before this I suppose it was impossible load CAM-based NVMe as module. Plus this appeared to be needed to build r345815 without NVMe driver. Modified: stable/12/sys/cam/nvme/nvme_da.c stable/12/sys/conf/files Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/nvme/nvme_da.c ============================================================================== --- stable/12/sys/cam/nvme/nvme_da.c Thu Aug 8 01:37:41 2019 (r350715) +++ stable/12/sys/cam/nvme/nvme_da.c Thu Aug 8 02:00:11 2019 (r350716) @@ -759,10 +759,6 @@ ndaregister(struct cam_periph *periph, void *arg) softc->quirks = quirks; cam_iosched_set_sort_queue(softc->cam_iosched, 0); softc->disk = disk = disk_alloc(); - strlcpy(softc->disk->d_descr, cd->mn, - MIN(sizeof(softc->disk->d_descr), sizeof(cd->mn))); - strlcpy(softc->disk->d_ident, cd->sn, - MIN(sizeof(softc->disk->d_ident), sizeof(cd->sn))); disk->d_rotation_rate = DISK_RR_NON_ROTATING; disk->d_open = ndaopen; disk->d_close = ndaclose; @@ -801,9 +797,9 @@ ndaregister(struct cam_periph *periph, void *arg) * d_ident and d_descr are both far bigger than the length of either * the serial or model number strings. */ - nvme_strvis(disk->d_descr, cd->mn, + cam_strvis(disk->d_descr, cd->mn, sizeof(disk->d_descr), NVME_MODEL_NUMBER_LENGTH); - nvme_strvis(disk->d_ident, cd->sn, + cam_strvis(disk->d_ident, cd->sn, sizeof(disk->d_ident), NVME_SERIAL_NUMBER_LENGTH); disk->d_hba_vendor = cpi.hba_vendor; disk->d_hba_device = cpi.hba_device; Modified: stable/12/sys/conf/files ============================================================================== --- stable/12/sys/conf/files Thu Aug 8 01:37:41 2019 (r350715) +++ stable/12/sys/conf/files Thu Aug 8 02:00:11 2019 (r350716) @@ -78,9 +78,9 @@ cam/cam_xpt.c optional scbus cam/ata/ata_all.c optional scbus cam/ata/ata_xpt.c optional scbus cam/ata/ata_pmp.c optional scbus -cam/nvme/nvme_all.c optional scbus nvme -cam/nvme/nvme_da.c optional scbus nvme da -cam/nvme/nvme_xpt.c optional scbus nvme +cam/nvme/nvme_all.c optional scbus +cam/nvme/nvme_da.c optional nda | da +cam/nvme/nvme_xpt.c optional scbus cam/scsi/scsi_xpt.c optional scbus cam/scsi/scsi_all.c optional scbus cam/scsi/scsi_cd.c optional cd From owner-svn-src-stable@freebsd.org Thu Aug 8 02:01:02 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8EF98BFA9B; Thu, 8 Aug 2019 02:01:02 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463s6Q3BDSz4drh; Thu, 8 Aug 2019 02:01:02 +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 4EC661DE4D; Thu, 8 Aug 2019 02:01:02 +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 x78212Or022424; Thu, 8 Aug 2019 02:01:02 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78211l1022420; Thu, 8 Aug 2019 02:01:01 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080201.x78211l1022420@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:01:01 +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: r350717 - in stable/12: lib/libcam sys/cam sys/cam/nvme X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12: lib/libcam sys/cam sys/cam/nvme X-SVN-Commit-Revision: 350717 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:01:02 -0000 Author: mav Date: Thu Aug 8 02:01:01 2019 New Revision: 350717 URL: https://svnweb.freebsd.org/changeset/base/350717 Log: MFC r345815: Make cam_error_print() decode NVMe commands. Modified: stable/12/lib/libcam/Makefile stable/12/sys/cam/cam.c stable/12/sys/cam/nvme/nvme_all.c stable/12/sys/cam/nvme/nvme_all.h stable/12/sys/cam/nvme/nvme_xpt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/lib/libcam/Makefile ============================================================================== --- stable/12/lib/libcam/Makefile Thu Aug 8 02:00:11 2019 (r350716) +++ stable/12/lib/libcam/Makefile Thu Aug 8 02:01:01 2019 (r350717) @@ -4,7 +4,7 @@ PACKAGE= lib${LIB} LIB= cam SHLIBDIR?= /lib SRCS= camlib.c scsi_cmdparse.c scsi_all.c scsi_da.c scsi_sa.c cam.c \ - ata_all.c smp_all.c + ata_all.c nvme_all.c smp_all.c INCS= camlib.h LIBADD= sbuf @@ -38,6 +38,7 @@ MLINKS+= cam.3 cam_open_device.3 \ .PATH: ${SRCTOP}/sys/cam \ ${SRCTOP}/sys/cam/ata \ + ${SRCTOP}/sys/cam/nvme \ ${SRCTOP}/sys/cam/mmc \ ${SRCTOP}/sys/cam/scsi Modified: stable/12/sys/cam/cam.c ============================================================================== --- stable/12/sys/cam/cam.c Thu Aug 8 02:00:11 2019 (r350716) +++ stable/12/sys/cam/cam.c Thu Aug 8 02:01:01 2019 (r350717) @@ -415,7 +415,6 @@ cam_error_string(struct cam_device *device, union ccb switch (ccb->ccb_h.func_code) { case XPT_ATA_IO: ata_command_sbuf(&ccb->ataio, &sb); - sbuf_printf(&sb, "\n"); break; case XPT_SCSI_IO: #ifdef _KERNEL @@ -423,17 +422,22 @@ cam_error_string(struct cam_device *device, union ccb #else /* !_KERNEL */ scsi_command_string(device, &ccb->csio, &sb); #endif /* _KERNEL/!_KERNEL */ - sbuf_printf(&sb, "\n"); break; case XPT_SMP_IO: smp_command_sbuf(&ccb->smpio, &sb, path_str, 79 - strlen(path_str), (proto_flags & CAM_ESMF_PRINT_FULL_CMD) ? 79 : 0); - sbuf_printf(&sb, "\n"); break; + case XPT_NVME_IO: + case XPT_NVME_ADMIN: + nvme_command_sbuf(&ccb->nvmeio, &sb); + break; default: + sbuf_printf(&sb, "CAM func %#x", + ccb->ccb_h.func_code); break; } + sbuf_printf(&sb, "\n"); } if (flags & CAM_ESF_CAM_STATUS) { Modified: stable/12/sys/cam/nvme/nvme_all.c ============================================================================== --- stable/12/sys/cam/nvme/nvme_all.c Thu Aug 8 02:00:11 2019 (r350716) +++ stable/12/sys/cam/nvme/nvme_all.c Thu Aug 8 02:01:01 2019 (r350717) @@ -111,37 +111,84 @@ nvme_opc2str[] = { "COMPARE", "RSVD-6", "RSVD-7", - "DATASET_MANAGEMENT" + "WRITE_ZEROES", + "DATASET_MANAGEMENT", + "RSVD-a", + "RSVD-b", + "RSVD-c", + "RESERVATION_REGISTER", + "RESERVATION_REPORT", + "RSVD-f", + "RSVD-10", + "RESERVATION_ACQUIRE", + "RSVD-12", + "RSVD-13", + "RSVD-14", + "RESERVATION_RELEASE", }; const char * -nvme_op_string(const struct nvme_command *cmd) +nvme_op_string(const struct nvme_command *cmd, int admin) { - if (cmd->opc >= nitems(nvme_opc2str)) - return "UNKNOWN"; - - return nvme_opc2str[cmd->opc]; + if (admin) { + return "ADMIN"; + } else { + if (cmd->opc >= nitems(nvme_opc2str)) + return "UNKNOWN"; + return nvme_opc2str[cmd->opc]; + } } const char * nvme_cmd_string(const struct nvme_command *cmd, char *cmd_string, size_t len) { + struct sbuf sb; + int error; + if (len == 0) + return (""); + + sbuf_new(&sb, cmd_string, len, SBUF_FIXEDLEN); + nvme_cmd_sbuf(cmd, &sb); + + error = sbuf_finish(&sb); + if (error != 0 && error != ENOMEM) + return (""); + + return(sbuf_data(&sb)); +} + +void +nvme_cmd_sbuf(const struct nvme_command *cmd, struct sbuf *sb) +{ + /* * cid, rsvd areas and mptr not printed, since they are used * only internally by the SIM. */ - snprintf(cmd_string, len, + sbuf_printf(sb, "opc=%x fuse=%x nsid=%x prp1=%llx prp2=%llx cdw=%x %x %x %x %x %x", cmd->opc, cmd->fuse, cmd->nsid, (unsigned long long)cmd->prp1, (unsigned long long)cmd->prp2, cmd->cdw10, cmd->cdw11, cmd->cdw12, cmd->cdw13, cmd->cdw14, cmd->cdw15); +} - return cmd_string; +/* + * nvme_command_sbuf() returns 0 for success and -1 for failure. + */ +int +nvme_command_sbuf(struct ccb_nvmeio *nvmeio, struct sbuf *sb) +{ + + sbuf_printf(sb, "%s. NCB: ", nvme_op_string(&nvmeio->cmd, + nvmeio->ccb_h.func_code == XPT_NVME_ADMIN)); + nvme_cmd_sbuf(&nvmeio->cmd, sb); + return(0); } +#ifdef _KERNEL const void * nvme_get_identify_cntrl(struct cam_periph *periph) { @@ -161,3 +208,4 @@ nvme_get_identify_ns(struct cam_periph *periph) return device->nvme_data; } +#endif Modified: stable/12/sys/cam/nvme/nvme_all.h ============================================================================== --- stable/12/sys/cam/nvme/nvme_all.h Thu Aug 8 02:00:11 2019 (r350716) +++ stable/12/sys/cam/nvme/nvme_all.h Thu Aug 8 02:01:01 2019 (r350717) @@ -42,8 +42,10 @@ int nvme_identify_match(caddr_t identbuffer, caddr_t t struct sbuf; void nvme_print_ident(const struct nvme_controller_data *, const struct nvme_namespace_data *, struct sbuf *); -const char *nvme_op_string(const struct nvme_command *); +const char *nvme_op_string(const struct nvme_command *, int admin); const char *nvme_cmd_string(const struct nvme_command *, char *, size_t); +void nvme_cmd_sbuf(const struct nvme_command *, struct sbuf *sb); +int nvme_command_sbuf(struct ccb_nvmeio *nvmeio, struct sbuf *sb); const void *nvme_get_identify_cntrl(struct cam_periph *); const void *nvme_get_identify_ns(struct cam_periph *); Modified: stable/12/sys/cam/nvme/nvme_xpt.c ============================================================================== --- stable/12/sys/cam/nvme/nvme_xpt.c Thu Aug 8 02:00:11 2019 (r350716) +++ stable/12/sys/cam/nvme/nvme_xpt.c Thu Aug 8 02:01:01 2019 (r350717) @@ -769,11 +769,13 @@ nvme_proto_debug_out(union ccb *ccb) { char cdb_str[(sizeof(struct nvme_command) * 3) + 1]; - if (ccb->ccb_h.func_code != XPT_NVME_IO) + if (ccb->ccb_h.func_code != XPT_NVME_IO || + ccb->ccb_h.func_code != XPT_NVME_ADMIN) return; CAM_DEBUG(ccb->ccb_h.path, - CAM_DEBUG_CDB,("%s. NCB: %s\n", nvme_op_string(&ccb->nvmeio.cmd), + CAM_DEBUG_CDB,("%s. NCB: %s\n", nvme_op_string(&ccb->nvmeio.cmd, + ccb->ccb_h.func_code == XPT_NVME_ADMIN), nvme_cmd_string(&ccb->nvmeio.cmd, cdb_str, sizeof(cdb_str)))); } From owner-svn-src-stable@freebsd.org Thu Aug 8 02:02:02 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3BA15BFE3D; Thu, 8 Aug 2019 02:02:02 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463s7Z0pf7z4f5l; Thu, 8 Aug 2019 02:02:02 +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 F11281DFAF; Thu, 8 Aug 2019 02:02:01 +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 x78221Tl024041; Thu, 8 Aug 2019 02:02:01 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782211I024040; Thu, 8 Aug 2019 02:02:01 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080202.x782211I024040@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:02:01 +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: r350718 - stable/12/sys/cam/nvme X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam/nvme X-SVN-Commit-Revision: 350718 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:02:02 -0000 Author: mav Date: Thu Aug 8 02:02:01 2019 New Revision: 350718 URL: https://svnweb.freebsd.org/changeset/base/350718 Log: MFC r348110: Fix condition broken at r345815. Modified: stable/12/sys/cam/nvme/nvme_xpt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/nvme/nvme_xpt.c ============================================================================== --- stable/12/sys/cam/nvme/nvme_xpt.c Thu Aug 8 02:01:01 2019 (r350717) +++ stable/12/sys/cam/nvme/nvme_xpt.c Thu Aug 8 02:02:01 2019 (r350718) @@ -769,7 +769,7 @@ nvme_proto_debug_out(union ccb *ccb) { char cdb_str[(sizeof(struct nvme_command) * 3) + 1]; - if (ccb->ccb_h.func_code != XPT_NVME_IO || + if (ccb->ccb_h.func_code != XPT_NVME_IO && ccb->ccb_h.func_code != XPT_NVME_ADMIN) return; From owner-svn-src-stable@freebsd.org Thu Aug 8 02:04:30 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6870ABFF49; Thu, 8 Aug 2019 02:04: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sBQ1Jmwz4fN6; Thu, 8 Aug 2019 02:04: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 0DDD91DFE2; Thu, 8 Aug 2019 02:04: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 x7824TrC025772; Thu, 8 Aug 2019 02:04:29 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7824T1J025770; Thu, 8 Aug 2019 02:04:29 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080204.x7824T1J025770@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:04:29 +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: r350719 - in stable/12/sys: cam/nvme dev/nvme X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys: cam/nvme dev/nvme X-SVN-Commit-Revision: 350719 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:04:30 -0000 Author: mav Date: Thu Aug 8 02:04:29 2019 New Revision: 350719 URL: https://svnweb.freebsd.org/changeset/base/350719 Log: MFC r348786 (by chuck): Fix nda(4) PCIe link status output Differentiate between PCI Express Endpoint devices and Root Complex Integrated Endpoints in the nda driver. The Link Status and Capability registers are not valid for Integrated Endpoints and should not be displayed. The bhyve emulated NVMe device will advertise as being an Integrated Endpoint. Modified: stable/12/sys/cam/nvme/nvme_xpt.c stable/12/sys/dev/nvme/nvme_sim.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/nvme/nvme_xpt.c ============================================================================== --- stable/12/sys/cam/nvme/nvme_xpt.c Thu Aug 8 02:02:01 2019 (r350718) +++ stable/12/sys/cam/nvme/nvme_xpt.c Thu Aug 8 02:04:29 2019 (r350719) @@ -722,6 +722,8 @@ nvme_announce_periph(struct cam_periph *periph) struct ccb_trans_settings cts; struct cam_path *path = periph->path; struct ccb_trans_settings_nvme *nvmex; + struct sbuf sb; + char buffer[120]; cam_periph_assert(periph, MA_OWNED); @@ -736,13 +738,18 @@ nvme_announce_periph(struct cam_periph *periph) /* Ask the SIM for its base transfer speed */ xpt_path_inq(&cpi, periph->path); - printf("%s%d: nvme version %d.%d x%d (max x%d) lanes PCIe Gen%d (max Gen%d) link", + sbuf_new(&sb, buffer, sizeof(buffer), SBUF_FIXEDLEN); + sbuf_printf(&sb, "%s%d: nvme version %d.%d", periph->periph_name, periph->unit_number, NVME_MAJOR(nvmex->spec), - NVME_MINOR(nvmex->spec), - nvmex->lanes, nvmex->max_lanes, - nvmex->speed, nvmex->max_speed); - printf("\n"); + NVME_MINOR(nvmex->spec)); + if (nvmex->valid & CTS_NVME_VALID_LINK) + sbuf_printf(&sb, " x%d (max x%d) lanes PCIe Gen%d (max Gen%d) link", + nvmex->lanes, nvmex->max_lanes, + nvmex->speed, nvmex->max_speed); + sbuf_printf(&sb, "\n"); + sbuf_finish(&sb); + sbuf_putbuf(&sb); } static void Modified: stable/12/sys/dev/nvme/nvme_sim.c ============================================================================== --- stable/12/sys/dev/nvme/nvme_sim.c Thu Aug 8 02:02:01 2019 (r350718) +++ stable/12/sys/dev/nvme/nvme_sim.c Thu Aug 8 02:04:29 2019 (r350719) @@ -212,7 +212,7 @@ nvme_sim_action(struct cam_sim *sim, union ccb *ccb) struct ccb_trans_settings_nvme *nvmep; struct ccb_trans_settings_nvme *nvmex; device_t dev; - uint32_t status, caps; + uint32_t status, caps, flags; dev = ctrlr->dev; cts = &ccb->cts; @@ -221,12 +221,16 @@ nvme_sim_action(struct cam_sim *sim, union ccb *ccb) status = pcie_read_config(dev, PCIER_LINK_STA, 2); caps = pcie_read_config(dev, PCIER_LINK_CAP, 2); - nvmex->valid = CTS_NVME_VALID_SPEC | CTS_NVME_VALID_LINK; + flags = pcie_read_config(dev, PCIER_FLAGS, 2); nvmex->spec = nvme_mmio_read_4(ctrlr, vs); - nvmex->speed = status & PCIEM_LINK_STA_SPEED; - nvmex->lanes = (status & PCIEM_LINK_STA_WIDTH) >> 4; - nvmex->max_speed = caps & PCIEM_LINK_CAP_MAX_SPEED; - nvmex->max_lanes = (caps & PCIEM_LINK_CAP_MAX_WIDTH) >> 4; + nvmex->valid = CTS_NVME_VALID_SPEC; + if ((flags & PCIEM_FLAGS_TYPE) == PCIEM_TYPE_ENDPOINT) { + nvmex->valid |= CTS_NVME_VALID_LINK; + nvmex->speed = status & PCIEM_LINK_STA_SPEED; + nvmex->lanes = (status & PCIEM_LINK_STA_WIDTH) >> 4; + nvmex->max_speed = caps & PCIEM_LINK_CAP_MAX_SPEED; + nvmex->max_lanes = (caps & PCIEM_LINK_CAP_MAX_WIDTH) >> 4; + } /* XXX these should be something else maybe ? */ nvmep->valid = 1; From owner-svn-src-stable@freebsd.org Thu Aug 8 02:06:24 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1F40DBFFE5; Thu, 8 Aug 2019 02:06:24 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sDb6s8bz4fVV; Thu, 8 Aug 2019 02:06:23 +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 CCA111DFE5; Thu, 8 Aug 2019 02:06:23 +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 x7826NnE025932; Thu, 8 Aug 2019 02:06:23 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7826NVA025931; Thu, 8 Aug 2019 02:06:23 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080206.x7826NVA025931@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:06:23 +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: r350720 - stable/12/sys/cam/scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam/scsi X-SVN-Commit-Revision: 350720 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:06:24 -0000 Author: mav Date: Thu Aug 8 02:06:23 2019 New Revision: 350720 URL: https://svnweb.freebsd.org/changeset/base/350720 Log: MFC r348963: Minor white space changes. Remove trailing white space that's crept into this file. Modified: stable/12/sys/cam/scsi/scsi_xpt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/scsi/scsi_xpt.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_xpt.c Thu Aug 8 02:04:29 2019 (r350719) +++ stable/12/sys/cam/scsi/scsi_xpt.c Thu Aug 8 02:06:23 2019 (r350720) @@ -1603,7 +1603,7 @@ probe_device_check: start = strspn(serial_buf->serial_num, " "); slen = serial_buf->length - start; if (slen <= 0) { - /* + /* * SPC5r05 says that an all-space serial * number means no product serial number * is available @@ -2116,7 +2116,7 @@ scsi_scan_bus(struct cam_periph *periph, union ccb *re CAM_GET_LUN(target->luns, 0, first); if (first == 0 && scan_info->lunindex[target_id] == 0) { scan_info->lunindex[target_id]++; - } + } /* * Skip any LUNs that the HBA can't deal with. @@ -2601,7 +2601,7 @@ scsi_dev_advinfo(union ccb *start_ccb) * We fetch extended inquiry data during probe, if * available. We don't allow changing it. */ - if (cdai->flags & CDAI_FLAG_STORE) + if (cdai->flags & CDAI_FLAG_STORE) return; cdai->provsiz = device->ext_inq_len; if (device->ext_inq_len == 0) @@ -2993,7 +2993,7 @@ scsi_dev_async(u_int32_t async_code, struct cam_eb *bu */ if (async_code == AC_SENT_BDR || async_code == AC_BUS_RESET) { - cam_freeze_devq(&newpath); + cam_freeze_devq(&newpath); cam_release_devq(&newpath, RELSIM_RELEASE_AFTER_TIMEOUT, /*reduction*/0, @@ -3051,7 +3051,7 @@ _scsi_announce_periph(struct cam_periph *periph, u_int cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); - /* Report connection speed */ + /* Report connection speed */ *speed = cpi.base_transfer_speed; *freq = 0; From owner-svn-src-stable@freebsd.org Thu Aug 8 02:07:06 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3F009C0050; Thu, 8 Aug 2019 02:07:06 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sFQ0kJcz4fcq; Thu, 8 Aug 2019 02:07:06 +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 EFAD41DFE8; Thu, 8 Aug 2019 02:07: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 x78275xC026022; Thu, 8 Aug 2019 02:07:05 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78275qr026021; Thu, 8 Aug 2019 02:07:05 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080207.x78275qr026021@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:07: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: r350721 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350721 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:07:06 -0000 Author: mav Date: Thu Aug 8 02:07:05 2019 New Revision: 350721 URL: https://svnweb.freebsd.org/changeset/base/350721 Log: MFC r349010: Increase the timeout for READ NATIVE MAX READ NATIVE MAX can take longer than a second if the queued NCQ I/Os take longer than a second to drain. Modified: stable/12/sbin/camcontrol/camcontrol.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:06:23 2019 (r350720) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:07:05 2019 (r350721) @@ -2059,7 +2059,7 @@ ata_read_native_max(struct cam_device *device, int ret /*sector_count*/0, /*data_ptr*/NULL, /*dxfer_len*/0, - timeout ? timeout : 1000, + timeout ? timeout : 5000, is48bit); if (error) From owner-svn-src-stable@freebsd.org Thu Aug 8 02:08:10 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7E438C00CA; Thu, 8 Aug 2019 02:08:10 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sGf2kRzz4flK; Thu, 8 Aug 2019 02:08:10 +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 3F6BB1DFEB; Thu, 8 Aug 2019 02:08:10 +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 x7828Aai026121; Thu, 8 Aug 2019 02:08:10 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7828Amx026120; Thu, 8 Aug 2019 02:08:10 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080208.x7828Amx026120@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:08: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: r350722 - stable/12/sys/cam X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam X-SVN-Commit-Revision: 350722 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:08:10 -0000 Author: mav Date: Thu Aug 8 02:08:09 2019 New Revision: 350722 URL: https://svnweb.freebsd.org/changeset/base/350722 Log: MFC r349283 (by scottl): Refactor xpt_getattr() to make it more readable. No outwardly visible functional changes, though code flow was modified a bit internally to lessen the need for goto jumps and chained if conditionals. Modified: stable/12/sys/cam/cam_xpt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/cam_xpt.c ============================================================================== --- stable/12/sys/cam/cam_xpt.c Thu Aug 8 02:07:05 2019 (r350721) +++ stable/12/sys/cam/cam_xpt.c Thu Aug 8 02:08:09 2019 (r350722) @@ -1253,6 +1253,7 @@ xpt_getattr(char *buf, size_t len, const char *attr, s { int ret = -1, l, o; struct ccb_dev_advinfo cdai; + struct scsi_vpd_device_id *did; struct scsi_vpd_id_descriptor *idd; xpt_path_assert(path, MA_OWNED); @@ -1285,31 +1286,36 @@ xpt_getattr(char *buf, size_t len, const char *attr, s cam_release_devq(cdai.ccb_h.path, 0, 0, 0, FALSE); if (cdai.provsiz == 0) goto out; - if (cdai.buftype == CDAI_TYPE_SCSI_DEVID) { + switch(cdai.buftype) { + case CDAI_TYPE_SCSI_DEVID: + did = (struct scsi_vpd_device_id *)cdai.buf; if (strcmp(attr, "GEOM::lunid") == 0) { - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_naa); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_naa); if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_eui64); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_eui64); if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_uuid); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_uuid); if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_md5); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_md5); } else idd = NULL; + if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_t10); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_t10); if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_name); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_name); if (idd == NULL) - goto out; + break; + ret = 0; - if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == SVPD_ID_CODESET_ASCII) { + if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == + SVPD_ID_CODESET_ASCII) { if (idd->length < len) { for (l = 0; l < idd->length; l++) buf[l] = idd->identifier[l] ? @@ -1317,38 +1323,46 @@ xpt_getattr(char *buf, size_t len, const char *attr, s buf[l] = 0; } else ret = EFAULT; - } else if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == SVPD_ID_CODESET_UTF8) { + break; + } + if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == + SVPD_ID_CODESET_UTF8) { l = strnlen(idd->identifier, idd->length); if (l < len) { bcopy(idd->identifier, buf, l); buf[l] = 0; } else ret = EFAULT; - } else if ((idd->id_type & SVPD_ID_TYPE_MASK) == SVPD_ID_TYPE_UUID - && idd->identifier[0] == 0x10) { - if ((idd->length - 2) * 2 + 4 < len) { - for (l = 2, o = 0; l < idd->length; l++) { - if (l == 6 || l == 8 || l == 10 || l == 12) - o += sprintf(buf + o, "-"); - o += sprintf(buf + o, "%02x", - idd->identifier[l]); - } - } else + break; + } + if ((idd->id_type & SVPD_ID_TYPE_MASK) == + SVPD_ID_TYPE_UUID && idd->identifier[0] == 0x10) { + if ((idd->length - 2) * 2 + 4 >= len) { ret = EFAULT; - } else { - if (idd->length * 2 < len) { - for (l = 0; l < idd->length; l++) - sprintf(buf + l * 2, "%02x", - idd->identifier[l]); - } else - ret = EFAULT; + break; + } + for (l = 2, o = 0; l < idd->length; l++) { + if (l == 6 || l == 8 || l == 10 || l == 12) + o += sprintf(buf + o, "-"); + o += sprintf(buf + o, "%02x", + idd->identifier[l]); + } + break; } - } else { + if (idd->length * 2 < len) { + for (l = 0; l < idd->length; l++) + sprintf(buf + l * 2, "%02x", + idd->identifier[l]); + } else + ret = EFAULT; + break; + default: if (cdai.provsiz < len) { cdai.buf[cdai.provsiz] = 0; ret = 0; } else ret = EFAULT; + break; } out: From owner-svn-src-stable@freebsd.org Thu Aug 8 02:11:09 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 78EF1C01C3; Thu, 8 Aug 2019 02:11:09 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sL52gN4z4fwC; Thu, 8 Aug 2019 02:11:09 +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 3D4A51E022; Thu, 8 Aug 2019 02:11:09 +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 x782B9t2028603; Thu, 8 Aug 2019 02:11:09 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782B99V028602; Thu, 8 Aug 2019 02:11:09 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080211.x782B99V028602@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:11:09 +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: r350723 - stable/12/sys/cam/ata X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam/ata X-SVN-Commit-Revision: 350723 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:11:09 -0000 Author: mav Date: Thu Aug 8 02:11:08 2019 New Revision: 350723 URL: https://svnweb.freebsd.org/changeset/base/350723 Log: MFC r349339 (by imp): Go ahead and completely fix the ata_params before calling the veto function. This breaks nothing that uses it in the tree since ata_params is ignored in storvsc_ada_probe_veto which is the only in-tree consumer. Modified: stable/12/sys/cam/ata/ata_xpt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ata/ata_xpt.c ============================================================================== --- stable/12/sys/cam/ata/ata_xpt.c Thu Aug 8 02:08:09 2019 (r350722) +++ stable/12/sys/cam/ata/ata_xpt.c Thu Aug 8 02:11:08 2019 (r350723) @@ -896,22 +896,14 @@ noerror: int16_t *ptr; int veto = 0; + /* + * Convert to host byte order, and fix the strings. + */ ident_buf = &softc->ident_data; for (ptr = (int16_t *)ident_buf; ptr < (int16_t *)ident_buf + sizeof(struct ata_params)/2; ptr++) { *ptr = le16toh(*ptr); } - - /* - * Allow others to veto this ATA disk attachment. This - * is mainly used by VMs, whose disk controllers may - * share the disks with the simulated ATA controllers. - */ - EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto); - if (veto) { - goto device_fail; - } - if (strncmp(ident_buf->model, "FX", 2) && strncmp(ident_buf->model, "NEC", 3) && strncmp(ident_buf->model, "Pioneer", 7) && @@ -926,6 +918,17 @@ noerror: ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision)); ata_btrim(ident_buf->serial, sizeof(ident_buf->serial)); ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial)); + + /* + * Allow others to veto this ATA disk attachment. This + * is mainly used by VMs, whose disk controllers may + * share the disks with the simulated ATA controllers. + */ + EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto); + if (veto) { + goto device_fail; + } + /* Device may need spin-up before IDENTIFY become valid. */ if ((ident_buf->specconf == 0x37c8 || ident_buf->specconf == 0x738c) && From owner-svn-src-stable@freebsd.org Thu Aug 8 02:11:43 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EA723C03BA; Thu, 8 Aug 2019 02:11:43 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sLl5xWDz4gCn; Thu, 8 Aug 2019 02:11:43 +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 ADC641E060; Thu, 8 Aug 2019 02:11:43 +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 x782BhIo029322; Thu, 8 Aug 2019 02:11:43 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782BgjP029318; Thu, 8 Aug 2019 02:11:42 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080211.x782BgjP029318@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:11: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: r350724 - in stable/12/sys/cam: ata scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys/cam: ata scsi X-SVN-Commit-Revision: 350724 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:11:44 -0000 Author: mav Date: Thu Aug 8 02:11:42 2019 New Revision: 350724 URL: https://svnweb.freebsd.org/changeset/base/350724 Log: MFC r349340 (by imp): Create ata_param_fixup Create a common fixup routine to do the canonical fixup of the ata_param fixup. Call it from both the ATA and the ATA over SCSI paths. Modified: stable/12/sys/cam/ata/ata_all.c stable/12/sys/cam/ata/ata_all.h stable/12/sys/cam/ata/ata_xpt.c stable/12/sys/cam/scsi/scsi_da.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ata/ata_all.c ============================================================================== --- stable/12/sys/cam/ata/ata_all.c Thu Aug 8 02:11:08 2019 (r350723) +++ stable/12/sys/cam/ata/ata_all.c Thu Aug 8 02:11:42 2019 (r350724) @@ -1238,3 +1238,28 @@ ata_zac_mgmt_in(struct ccb_ataio *ataio, uint32_t retr ataio->aux = auxiliary; } } + +void +ata_param_fixup(struct ata_params *ident_buf) +{ + int16_t *ptr; + + for (ptr = (int16_t *)ident_buf; + ptr < (int16_t *)ident_buf + sizeof(struct ata_params)/2; ptr++) { + *ptr = le16toh(*ptr); + } + if (strncmp(ident_buf->model, "FX", 2) && + strncmp(ident_buf->model, "NEC", 3) && + strncmp(ident_buf->model, "Pioneer", 7) && + strncmp(ident_buf->model, "SHARP", 5)) { + ata_bswap(ident_buf->model, sizeof(ident_buf->model)); + ata_bswap(ident_buf->revision, sizeof(ident_buf->revision)); + ata_bswap(ident_buf->serial, sizeof(ident_buf->serial)); + } + ata_btrim(ident_buf->model, sizeof(ident_buf->model)); + ata_bpack(ident_buf->model, ident_buf->model, sizeof(ident_buf->model)); + ata_btrim(ident_buf->revision, sizeof(ident_buf->revision)); + ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision)); + ata_btrim(ident_buf->serial, sizeof(ident_buf->serial)); + ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial)); +} Modified: stable/12/sys/cam/ata/ata_all.h ============================================================================== --- stable/12/sys/cam/ata/ata_all.h Thu Aug 8 02:11:08 2019 (r350723) +++ stable/12/sys/cam/ata/ata_all.h Thu Aug 8 02:11:42 2019 (r350724) @@ -135,6 +135,7 @@ void ata_read_log(struct ccb_ataio *ataio, uint32_t re uint16_t block_count, uint32_t protocol, uint8_t *data_ptr, uint32_t dxfer_len, uint32_t timeout); +void ata_param_fixup(struct ata_params *ident_buf); void ata_bswap(int8_t *buf, int len); void ata_btrim(int8_t *buf, int len); void ata_bpack(int8_t *src, int8_t *dst, int len); Modified: stable/12/sys/cam/ata/ata_xpt.c ============================================================================== --- stable/12/sys/cam/ata/ata_xpt.c Thu Aug 8 02:11:08 2019 (r350723) +++ stable/12/sys/cam/ata/ata_xpt.c Thu Aug 8 02:11:42 2019 (r350724) @@ -893,31 +893,13 @@ noerror: case PROBE_IDENTIFY: { struct ccb_pathinq cpi; - int16_t *ptr; int veto = 0; /* * Convert to host byte order, and fix the strings. */ ident_buf = &softc->ident_data; - for (ptr = (int16_t *)ident_buf; - ptr < (int16_t *)ident_buf + sizeof(struct ata_params)/2; ptr++) { - *ptr = le16toh(*ptr); - } - if (strncmp(ident_buf->model, "FX", 2) && - strncmp(ident_buf->model, "NEC", 3) && - strncmp(ident_buf->model, "Pioneer", 7) && - strncmp(ident_buf->model, "SHARP", 5)) { - ata_bswap(ident_buf->model, sizeof(ident_buf->model)); - ata_bswap(ident_buf->revision, sizeof(ident_buf->revision)); - ata_bswap(ident_buf->serial, sizeof(ident_buf->serial)); - } - ata_btrim(ident_buf->model, sizeof(ident_buf->model)); - ata_bpack(ident_buf->model, ident_buf->model, sizeof(ident_buf->model)); - ata_btrim(ident_buf->revision, sizeof(ident_buf->revision)); - ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision)); - ata_btrim(ident_buf->serial, sizeof(ident_buf->serial)); - ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial)); + ata_param_fixup(ident_buf); /* * Allow others to veto this ATA disk attachment. This Modified: stable/12/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 02:11:08 2019 (r350723) +++ stable/12/sys/cam/scsi/scsi_da.c Thu Aug 8 02:11:42 2019 (r350724) @@ -5174,7 +5174,7 @@ dadone_probeata(struct cam_periph *periph, union ccb * struct da_softc *softc; u_int32_t priority; int continue_probe; - int error, i; + int error; int16_t *ptr; CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("dadone_probeata\n")); @@ -5192,8 +5192,7 @@ dadone_probeata(struct cam_periph *periph, union ccb * if ((csio->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { uint16_t old_rate; - for (i = 0; i < sizeof(*ata_params) / 2; i++) - ptr[i] = le16toh(ptr[i]); + ata_param_fixup(ata_params); if (ata_params->support_dsm & ATA_SUPPORT_DSM_TRIM && (softc->quirks & DA_Q_NO_UNMAP) == 0) { dadeleteflag(softc, DA_DELETE_ATA_TRIM, 1); From owner-svn-src-stable@freebsd.org Thu Aug 8 02:12:09 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 637B9C0459; Thu, 8 Aug 2019 02:12:09 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sMF22gCz3BmB; Thu, 8 Aug 2019 02:12:09 +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 27E181E188; Thu, 8 Aug 2019 02:12:09 +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 x782C9UR029400; Thu, 8 Aug 2019 02:12:09 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782C9us029399; Thu, 8 Aug 2019 02:12:09 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080212.x782C9us029399@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:12:09 +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: r350725 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350725 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:12:09 -0000 Author: mav Date: Thu Aug 8 02:12:08 2019 New Revision: 350725 URL: https://svnweb.freebsd.org/changeset/base/350725 Log: MFC r349341: Use ata_param_fixup instead of a custom copy here Modified: stable/12/sbin/camcontrol/camcontrol.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:11:42 2019 (r350724) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:12:08 2019 (r350725) @@ -2326,9 +2326,11 @@ ata_do_identify(struct cam_device *device, int retry_c } } + ident_buf = (struct ata_params *)ptr; + ata_param_fixup(ident_buf); + error = 1; for (i = 0; i < sizeof(struct ata_params) / 2; i++) { - ptr[i] = le16toh(ptr[i]); if (ptr[i] != 0) error = 0; } @@ -2345,26 +2347,6 @@ ata_do_identify(struct cam_device *device, int retry_c free(ptr); return (error); } - - ident_buf = (struct ata_params *)ptr; - if (strncmp(ident_buf->model, "FX", 2) && - strncmp(ident_buf->model, "NEC", 3) && - strncmp(ident_buf->model, "Pioneer", 7) && - strncmp(ident_buf->model, "SHARP", 5)) { - ata_bswap(ident_buf->model, sizeof(ident_buf->model)); - ata_bswap(ident_buf->revision, sizeof(ident_buf->revision)); - ata_bswap(ident_buf->serial, sizeof(ident_buf->serial)); - ata_bswap(ident_buf->media_serial, sizeof(ident_buf->media_serial)); - } - ata_btrim(ident_buf->model, sizeof(ident_buf->model)); - ata_bpack(ident_buf->model, ident_buf->model, sizeof(ident_buf->model)); - ata_btrim(ident_buf->revision, sizeof(ident_buf->revision)); - ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision)); - ata_btrim(ident_buf->serial, sizeof(ident_buf->serial)); - ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial)); - ata_btrim(ident_buf->media_serial, sizeof(ident_buf->media_serial)); - ata_bpack(ident_buf->media_serial, ident_buf->media_serial, - sizeof(ident_buf->media_serial)); *ident_bufp = ident_buf; From owner-svn-src-stable@freebsd.org Thu Aug 8 02:17:25 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 506B7C07CB; Thu, 8 Aug 2019 02:17:25 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sTK0M8Cz3C5d; Thu, 8 Aug 2019 02:17:25 +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 E1FC51E1BD; Thu, 8 Aug 2019 02:17:24 +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 x782HOxQ031950; Thu, 8 Aug 2019 02:17:24 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782HOm4031948; Thu, 8 Aug 2019 02:17:24 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080217.x782HOm4031948@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:17: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: r350726 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350726 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:17:25 -0000 Author: mav Date: Thu Aug 8 02:17:24 2019 New Revision: 350726 URL: https://svnweb.freebsd.org/changeset/base/350726 Log: MFC r349964: Add device type NVME and device type MMCSD to get_device_type For completeness, add nvme and mmc/sd devices to the list of device types we know. Modified: stable/12/sbin/camcontrol/camcontrol.c stable/12/sbin/camcontrol/camcontrol.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:12:08 2019 (r350725) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:17:24 2019 (r350726) @@ -5391,6 +5391,14 @@ get_device_type(struct cam_device *dev, int retry_coun *devtype = CC_DT_ATA; goto bailout; break; /*NOTREACHED*/ + case PROTO_NVME: + *devtype = CC_DT_NVME; + goto bailout; + break; /*NOTREACHED*/ + case PROTO_MMCSD: + *devtype = CC_DT_MMCSD; + goto bailout; + break; /*NOTREACHED*/ default: *devtype = CC_DT_UNKNOWN; goto bailout; Modified: stable/12/sbin/camcontrol/camcontrol.h ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.h Thu Aug 8 02:12:08 2019 (r350725) +++ stable/12/sbin/camcontrol/camcontrol.h Thu Aug 8 02:17:24 2019 (r350726) @@ -44,6 +44,8 @@ typedef enum { CC_DT_SCSI, CC_DT_ATA_BEHIND_SCSI, CC_DT_ATA, + CC_DT_NVME, + CC_DT_MMCSD, CC_DT_UNKNOWN } camcontrol_devtype; From owner-svn-src-stable@freebsd.org Thu Aug 8 02:18:15 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A000AC0870; Thu, 8 Aug 2019 02:18:15 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sVH3nrGz3CD8; Thu, 8 Aug 2019 02:18:15 +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 63F0B1E1BE; Thu, 8 Aug 2019 02:18:15 +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 x782IFwS032051; Thu, 8 Aug 2019 02:18:15 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782IEht032045; Thu, 8 Aug 2019 02:18:14 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080218.x782IEht032045@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:18: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: r350727 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350727 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:18:15 -0000 Author: mav Date: Thu Aug 8 02:18:14 2019 New Revision: 350727 URL: https://svnweb.freebsd.org/changeset/base/350727 Log: MFC r350008 (by imp): Use the more proper term of SATL instead of ATA_BEHIND_SCSI. Most people know SAS attached SATA devices by the name SAT or SATL (with the latter being a little more common). Change the device type ATA_BEHIND_SCSI to SATL since it's more specific and meaningful. Modified: stable/12/sbin/camcontrol/camcontrol.c stable/12/sbin/camcontrol/camcontrol.h stable/12/sbin/camcontrol/epc.c stable/12/sbin/camcontrol/fwdownload.c stable/12/sbin/camcontrol/zone.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:17:24 2019 (r350726) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:18:14 2019 (r350727) @@ -5416,7 +5416,7 @@ get_device_type(struct cam_device *dev, int retry_coun retval = dev_has_vpd_page(dev, SVPD_ATA_INFORMATION, retry_count, timeout, verbosemode); if (retval == 1) - *devtype = CC_DT_ATA_BEHIND_SCSI; + *devtype = CC_DT_SATL; else *devtype = CC_DT_SCSI; Modified: stable/12/sbin/camcontrol/camcontrol.h ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.h Thu Aug 8 02:17:24 2019 (r350726) +++ stable/12/sbin/camcontrol/camcontrol.h Thu Aug 8 02:18:14 2019 (r350727) @@ -42,7 +42,7 @@ typedef enum { typedef enum { CC_DT_NONE, CC_DT_SCSI, - CC_DT_ATA_BEHIND_SCSI, + CC_DT_SATL, CC_DT_ATA, CC_DT_NVME, CC_DT_MMCSD, Modified: stable/12/sbin/camcontrol/epc.c ============================================================================== --- stable/12/sbin/camcontrol/epc.c Thu Aug 8 02:17:24 2019 (r350726) +++ stable/12/sbin/camcontrol/epc.c Thu Aug 8 02:18:14 2019 (r350727) @@ -767,7 +767,7 @@ epc(struct cam_device *device, int argc, char **argv, switch (devtype) { case CC_DT_ATA: - case CC_DT_ATA_BEHIND_SCSI: + case CC_DT_SATL: break; default: warnx("The epc subcommand only works with ATA protocol " Modified: stable/12/sbin/camcontrol/fwdownload.c ============================================================================== --- stable/12/sbin/camcontrol/fwdownload.c Thu Aug 8 02:17:24 2019 (r350726) +++ stable/12/sbin/camcontrol/fwdownload.c Thu Aug 8 02:18:14 2019 (r350727) @@ -694,7 +694,7 @@ fw_check_device_ready(struct cam_device *dev, camcontr /*sense_len*/ SSD_FULL_SIZE, /*timeout*/ 5000); break; - case CC_DT_ATA_BEHIND_SCSI: + case CC_DT_SATL: case CC_DT_ATA: { retval = build_ata_cmd(ccb, /*retries*/ 1, @@ -853,7 +853,7 @@ fw_download_img(struct cam_device *cam_dev, struct fw_ timeout ? timeout : WB_TIMEOUT); /* timeout*/ break; case CC_DT_ATA: - case CC_DT_ATA_BEHIND_SCSI: { + case CC_DT_SATL: { uint32_t off; off = (uint32_t)(pkt_ptr - buf); @@ -969,7 +969,7 @@ fwdownload(struct cam_device *device, int argc, char * errx(1, "Unable to determine device type"); if ((devtype == CC_DT_ATA) - || (devtype == CC_DT_ATA_BEHIND_SCSI)) { + || (devtype == CC_DT_SATL)) { ccb = cam_getccb(device); if (ccb == NULL) { warnx("couldn't allocate CCB"); Modified: stable/12/sbin/camcontrol/zone.c ============================================================================== --- stable/12/sbin/camcontrol/zone.c Thu Aug 8 02:17:24 2019 (r350726) +++ stable/12/sbin/camcontrol/zone.c Thu Aug 8 02:18:14 2019 (r350727) @@ -466,7 +466,7 @@ restart_report: /*timeout*/ timeout ? timeout : 60000); break; case CC_DT_ATA: - case CC_DT_ATA_BEHIND_SCSI: { + case CC_DT_SATL: { uint8_t command = 0; uint8_t protocol = 0; uint16_t features = 0, sector_count = 0; @@ -558,7 +558,7 @@ restart_report: /*timeout*/ timeout ? timeout : 60000); break; case CC_DT_ATA: - case CC_DT_ATA_BEHIND_SCSI: { + case CC_DT_SATL: { uint8_t command = 0; uint8_t protocol = 0; uint16_t features = 0, sector_count = 0; From owner-svn-src-stable@freebsd.org Thu Aug 8 02:20:44 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0F66CC0943; Thu, 8 Aug 2019 02:20:44 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sY76QbGz3CM1; Thu, 8 Aug 2019 02:20:43 +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 BE2581E1C9; Thu, 8 Aug 2019 02:20:43 +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 x782Khxk032242; Thu, 8 Aug 2019 02:20:43 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782KhTI032239; Thu, 8 Aug 2019 02:20:43 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080220.x782KhTI032239@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:20:43 +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: r350728 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350728 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:20:44 -0000 Author: mav Date: Thu Aug 8 02:20:42 2019 New Revision: 350728 URL: https://svnweb.freebsd.org/changeset/base/350728 Log: MFC r350018: Implement a devtype command. List the device's protocol. The returned value is one of the following: ata direct attach ATA or SATA device satl a SATA device attached via SAS scsi A parallel SCSI or SAS nvme A direct attached NVMe device mmcsd A MMC or SD attached device Modified: stable/12/sbin/camcontrol/camcontrol.8 stable/12/sbin/camcontrol/camcontrol.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 02:18:14 2019 (r350727) +++ stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 02:20:42 2019 (r350728) @@ -353,6 +353,9 @@ .Op generic args .Ao Fl r Oo Ns Fl f Ar format | Fl m | Fl U Oc | Fl s Ao Fl f Ar format Fl T Ar time | Fl U Ac Ac .Nm +.Ic devtype +.Op device id +.Nm .Ic help .Sh DESCRIPTION The @@ -2515,6 +2518,26 @@ option. .It Fl U Set the timestamp to the host system's time in UTC. .El +.El +.It Ic devtype +Print out the device type for specified device. +.Bl -tag -width 10n +.It ata +An ATA device attached directly to an ATA controller +.It satl +An SATA device attached behind a SAS controller via SCSI-ATA Translation Layer (SATL) +.It scsi +A SCSI device +.It nvme +An directly attached NVMe device +.It mmcsd +An MMC or SD device attached via a mmcsd bus +.It none +No device type reported +.It unknown +Device type is unknown +.It illegal +A programming error occurred .El .It Ic help Print out verbose usage information. Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:18:14 2019 (r350727) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:20:42 2019 (r350728) @@ -111,6 +111,7 @@ typedef enum { CAM_CMD_TIMESTAMP = 0x00000028, CAM_CMD_MMCSD_CMD = 0x00000029, CAM_CMD_POWER_MODE = 0x0000002a, + CAM_CMD_DEVTYPE = 0x0000002b, } cam_cmdmask; typedef enum { @@ -225,6 +226,7 @@ static struct camcontrol_opts option_table[] = { {"defectlist", CAM_CMD_READ_DEFECTS, CAM_ARG_NONE, readdefect_opts}, #endif /* MINIMALISTIC */ {"devlist", CAM_CMD_DEVTREE, CAM_ARG_NONE, "-b"}, + {"devtype", CAM_CMD_DEVTYPE, CAM_ARG_NONE, ""}, #ifndef MINIMALISTIC {"periphlist", CAM_CMD_DEVLIST, CAM_ARG_NONE, NULL}, {"modepage", CAM_CMD_MODE_PAGE, CAM_ARG_NONE, "bdelm:P:"}, @@ -273,6 +275,16 @@ struct cam_devlist { static cam_cmdmask cmdlist; static cam_argmask arglist; +static const char *devtype_names[] = { + "none", + "scsi", + "satl", + "ata", + "nvme", + "mmcsd", + "unknown", +}; + camcontrol_optret getoption(struct camcontrol_opts *table, char *arg, uint32_t *cmdnum, cam_argmask *argnum, const char **subopt); @@ -280,6 +292,7 @@ camcontrol_optret getoption(struct camcontrol_opts *ta static int getdevlist(struct cam_device *device); #endif /* MINIMALISTIC */ static int getdevtree(int argc, char **argv, char *combinedopt); +static int getdevtype(struct cam_device *device); static int print_dev_scsi(struct device_match_result *dev_result, char *tmpstr); static int print_dev_ata(struct device_match_result *dev_result, char *tmpstr); static int print_dev_semb(struct device_match_result *dev_result, char *tmpstr); @@ -672,6 +685,24 @@ getdevtree(int argc, char **argv, char *combinedopt) } static int +getdevtype(struct cam_device *cam_dev) +{ + camcontrol_devtype dt; + int error; + + /* + * Get the device type and report it, request no I/O be done to do this. + */ + error = get_device_type(cam_dev, -1, 0, 0, &dt); + if (error != 0 || dt < CC_DT_NONE || dt > CC_DT_UNKNOWN) { + fprintf(stdout, "illegal\n"); + return (1); + } + fprintf(stdout, "%s\n", devtype_names[dt]); + return (0); +} + +static int print_dev_scsi(struct device_match_result *dev_result, char *tmpstr) { char vendor[16], product[48], revision[16]; @@ -5376,7 +5407,7 @@ get_device_type(struct cam_device *dev, int retry_coun int verbosemode, camcontrol_devtype *devtype) { struct ccb_getdev cgd; - int retval = 0; + int retval; retval = get_cgd(dev, &cgd); if (retval != 0) @@ -5405,21 +5436,34 @@ get_device_type(struct cam_device *dev, int retry_coun break; /*NOTREACHED*/ } - /* - * Check for the ATA Information VPD page (0x89). If this is an - * ATA device behind a SCSI to ATA translation layer, this VPD page - * should be present. - * - * If that VPD page isn't present, or we get an error back from the - * INQUIRY command, we'll just treat it as a normal SCSI device. - */ - retval = dev_has_vpd_page(dev, SVPD_ATA_INFORMATION, retry_count, - timeout, verbosemode); - if (retval == 1) - *devtype = CC_DT_SATL; - else - *devtype = CC_DT_SCSI; - + if (retry_count == -1) { + /* + * For a retry count of -1, used only the cached data to avoid + * I/O to the drive. Sending the identify command to the drive + * can cause issues for SATL attachaed drives since identify is + * not an NCQ command. + */ + if (cgd.ident_data.config != 0) + *devtype = CC_DT_SATL; + else + *devtype = CC_DT_SCSI; + } else { + /* + * Check for the ATA Information VPD page (0x89). If this is an + * ATA device behind a SCSI to ATA translation layer (SATL), + * this VPD page should be present. + * + * If that VPD page isn't present, or we get an error back from + * the INQUIRY command, we'll just treat it as a normal SCSI + * device. + */ + retval = dev_has_vpd_page(dev, SVPD_ATA_INFORMATION, retry_count, + timeout, verbosemode); + if (retval == 1) + *devtype = CC_DT_SATL; + else + *devtype = CC_DT_SCSI; + } retval = 0; bailout: @@ -9648,6 +9692,7 @@ usage(int printlong) " [-S power_src] [-T timer]\n" " camcontrol timestamp [dev_id][generic_args] <-r [-f format|-m|-U]>|\n" " <-s <-f format -T time | -U >>\n" +" camcontrol devtype [dev_id]\n" " \n" #endif /* MINIMALISTIC */ " camcontrol help\n"); @@ -9695,6 +9740,7 @@ usage(int printlong) "zone manage Zoned Block (Shingled) devices\n" "epc send ATA Extended Power Conditions commands\n" "timestamp report or set the device's timestamp\n" +"devtype report the type of device\n" "help this message\n" "Device Identifiers:\n" "bus:target specify the bus and target, lun defaults to 0\n" @@ -10166,6 +10212,9 @@ main(int argc, char **argv) #endif /* MINIMALISTIC */ case CAM_CMD_DEVTREE: error = getdevtree(argc, argv, combinedopt); + break; + case CAM_CMD_DEVTYPE: + error = getdevtype(cam_dev); break; #ifndef MINIMALISTIC case CAM_CMD_TUR: From owner-svn-src-stable@freebsd.org Thu Aug 8 02:21:30 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D7780C0AE0; Thu, 8 Aug 2019 02:21: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sZ25RxRz3CWN; Thu, 8 Aug 2019 02:21: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 9CBAE1E211; Thu, 8 Aug 2019 02:21: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 x782LUOk033039; Thu, 8 Aug 2019 02:21:30 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782LUtT033038; Thu, 8 Aug 2019 02:21:30 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080221.x782LUtT033038@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:21:30 +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: r350729 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350729 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:21:30 -0000 Author: mav Date: Thu Aug 8 02:21:30 2019 New Revision: 350729 URL: https://svnweb.freebsd.org/changeset/base/350729 Log: MFC r350020 (by imp): Use a different approach to range check. gcc hates dt < CC_DT_NONE since it can never be true when dt is an unsigned type. Since that's a compiler choice and may be affected by weird stuff, instead use (unsigned)dt > CC_DT_UNKNOWN to test for bounds error since that will work regardless of the signedness of dt. Modified: stable/12/sbin/camcontrol/camcontrol.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:20:42 2019 (r350728) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:21:30 2019 (r350729) @@ -694,7 +694,7 @@ getdevtype(struct cam_device *cam_dev) * Get the device type and report it, request no I/O be done to do this. */ error = get_device_type(cam_dev, -1, 0, 0, &dt); - if (error != 0 || dt < CC_DT_NONE || dt > CC_DT_UNKNOWN) { + if (error != 0 || (unsigned)dt > CC_DT_UNKNOWN) { fprintf(stdout, "illegal\n"); return (1); } From owner-svn-src-stable@freebsd.org Thu Aug 8 02:24:58 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E8DC6C0B93; Thu, 8 Aug 2019 02:24:58 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sf26bkKz3Crg; Thu, 8 Aug 2019 02:24:58 +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 C00CD1E392; Thu, 8 Aug 2019 02:24:58 +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 x782OwtE038086; Thu, 8 Aug 2019 02:24:58 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782Ovv6038082; Thu, 8 Aug 2019 02:24:57 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080224.x782Ovv6038082@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:24: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: r350730 - in stable/12: sbin/camcontrol sys/cam/ata sys/sys X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12: sbin/camcontrol sys/cam/ata sys/sys X-SVN-Commit-Revision: 350730 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:24:59 -0000 Author: mav Date: Thu Aug 8 02:24:57 2019 New Revision: 350730 URL: https://svnweb.freebsd.org/changeset/base/350730 Log: MFC r350149: Add Accessible Max Address Configuration support to camcontrol. AMA replaced HPA in ACS-3 specification. It allows to limit size of the disk alike to HPA, but declares inaccessible data as indeterminate. One of its practical use cases is to under-provision SATA SSDs for better reliability and performance. While there, fix HPA Security detection/reporting. Modified: stable/12/sbin/camcontrol/camcontrol.8 stable/12/sbin/camcontrol/camcontrol.c stable/12/sys/cam/ata/ata_all.c stable/12/sys/sys/ata.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 02:21:30 2019 (r350729) +++ stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 02:24:57 2019 (r350730) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 12, 2019 +.Dd July 19, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -292,6 +292,13 @@ .Op Fl U Ar pwd .Op Fl y .Nm +.Ic ama +.Op device id +.Op generic args +.Op Fl f +.Op Fl q +.Op Fl s Ar max_sectors +.Nm .Ic persist .Op device id .Op generic args @@ -1599,6 +1606,40 @@ without prompting for confirmation .Pp The password for all HPA commands is limited to 32 characters, longer passwords will fail. +.It Ic ama +Update or report Accessible Max Address Configuration. +By default +.Nm +will print out the Accessible Max Address Configuration support and associated +settings of the device. +The +.Ic ama +command takes several optional arguments: +.Bl -tag -width 0n +.It Fl f +.Pp +Freeze the Accessible Max Address Configuration of the specified device. +.Pp +After command completion any other commands that update the configuration +shall be command aborted. +Frozen mode is disabled by power-off. +.It Fl q +.Pp +Be quiet, do not print any status messages. +.It Fl s Ar max_sectors +.Pp +Configures the maximum user accessible sectors of the device. +This will change the number of sectors the device reports. +.Pp +.Em WARNING! WARNING! WARNING! +.Pp +Changing the max sectors of a device using this option will make the data on +the device beyond the specified value indeterminate. +.Pp +Only one successful +.Fl s Ar max_sectors +call can be made without a power-on reset of the device. +.El .It Ic fwdownload Program firmware of the named .Tn SCSI Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:21:30 2019 (r350729) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:24:57 2019 (r350730) @@ -112,6 +112,7 @@ typedef enum { CAM_CMD_MMCSD_CMD = 0x00000029, CAM_CMD_POWER_MODE = 0x0000002a, CAM_CMD_DEVTYPE = 0x0000002b, + CAM_CMD_AMA = 0x0000002c, } cam_cmdmask; typedef enum { @@ -245,6 +246,7 @@ static struct camcontrol_opts option_table[] = { {"fwdownload", CAM_CMD_DOWNLOAD_FW, CAM_ARG_NONE, "f:qsy"}, {"security", CAM_CMD_SECURITY, CAM_ARG_NONE, "d:e:fh:k:l:qs:T:U:y"}, {"hpa", CAM_CMD_HPA, CAM_ARG_NONE, "Pflp:qs:U:y"}, + {"ama", CAM_CMD_AMA, CAM_ARG_NONE, "fqs:"}, {"persist", CAM_CMD_PERSIST, CAM_ARG_NONE, "ai:I:k:K:o:ps:ST:U"}, {"attrib", CAM_CMD_ATTRIB, CAM_ARG_NONE, "a:ce:F:p:r:s:T:w:V:"}, {"opcodes", CAM_CMD_OPCODES, CAM_ARG_NONE, "No:s:T"}, @@ -374,6 +376,8 @@ static int atasecurity(struct cam_device *device, int int argc, char **argv, char *combinedopt); static int atahpa(struct cam_device *device, int retry_count, int timeout, int argc, char **argv, char *combinedopt); +static int ataama(struct cam_device *device, int retry_count, int timeout, + int argc, char **argv, char *combinedopt); static int scsiprintoneopcode(struct cam_device *device, int req_opcode, int sa_set, int req_sa, uint8_t *buf, uint32_t valid_len); @@ -1442,8 +1446,9 @@ atahpa_print(struct ata_params *parm, u_int64_t hpasiz lba, hpasize); printf("HPA - Security "); - if (parm->support.command1 & ATA_SUPPORT_MAXSECURITY) - printf("yes\n"); + if (parm->support.command2 & ATA_SUPPORT_MAXSECURITY) + printf("yes %s\n", (parm->enabled.command2 & + ATA_SUPPORT_MAXSECURITY) ? "yes" : "no "); else printf("no\n"); } else { @@ -1451,6 +1456,32 @@ atahpa_print(struct ata_params *parm, u_int64_t hpasiz } } +static void +ataama_print(struct ata_params *parm, u_int64_t nativesize, int header) +{ + u_int32_t lbasize = (u_int32_t)parm->lba_size_1 | + ((u_int32_t)parm->lba_size_2 << 16); + + u_int64_t lbasize48 = ((u_int64_t)parm->lba_size48_1) | + ((u_int64_t)parm->lba_size48_2 << 16) | + ((u_int64_t)parm->lba_size48_3 << 32) | + ((u_int64_t)parm->lba_size48_4 << 48); + + if (header) { + printf("\nFeature " + "Support Enabled Value\n"); + } + + printf("Accessible Max Address Config "); + if (parm->support2 & ATA_SUPPORT_AMAX_ADDR) { + u_int64_t lba = lbasize48 ? lbasize48 : lbasize; + printf("yes %s %ju/%ju\n", + (nativesize > lba) ? "yes" : "no ", lba, nativesize); + } else { + printf("no\n"); + } +} + static int atasata(struct ata_params *parm) { @@ -2277,7 +2308,95 @@ atahpa_freeze_lock(struct cam_device *device, int retr return atahpa_proc_resp(device, ccb, is48bit, NULL); } +static int +ata_get_native_max(struct cam_device *device, int retry_count, + u_int32_t timeout, union ccb *ccb, + u_int64_t *nativesize) +{ + int error; + error = ata_do_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_AMAX_ADDR, + /*features*/ATA_AMAX_ADDR_GET, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + timeout ? timeout : 30 * 1000, + /*force48bit*/1); + + if (error) + return (error); + + return atahpa_proc_resp(device, ccb, /*is48bit*/1, nativesize); +} + +static int +ataama_set(struct cam_device *device, int retry_count, + u_int32_t timeout, union ccb *ccb, u_int64_t maxsize) +{ + int error; + + /* lba's are zero indexed so the max lba is requested max - 1 */ + if (maxsize) + maxsize--; + + error = ata_do_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_AMAX_ADDR, + /*features*/ATA_AMAX_ADDR_SET, + /*lba*/maxsize, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + timeout ? timeout : 30 * 1000, + /*force48bit*/1); + + if (error) + return (error); + + return atahpa_proc_resp(device, ccb, /*is48bit*/1, NULL); +} + +static int +ataama_freeze(struct cam_device *device, int retry_count, + u_int32_t timeout, union ccb *ccb) +{ + int error; + + error = ata_do_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_AMAX_ADDR, + /*features*/ATA_AMAX_ADDR_FREEZE, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + timeout ? timeout : 30 * 1000, + /*force48bit*/1); + + if (error) + return (error); + + return atahpa_proc_resp(device, ccb, /*is48bit*/1, NULL); +} + int ata_do_identify(struct cam_device *device, int retry_count, int timeout, union ccb *ccb, struct ata_params** ident_bufp) @@ -2390,7 +2509,7 @@ ataidentify(struct cam_device *device, int retry_count { union ccb *ccb; struct ata_params *ident_buf; - u_int64_t hpasize; + u_int64_t hpasize, nativesize; if ((ccb = cam_getccb(device)) == NULL) { warnx("couldn't allocate CCB"); @@ -2411,12 +2530,22 @@ ataidentify(struct cam_device *device, int retry_count } else { hpasize = 0; } + if (ident_buf->support2 & ATA_SUPPORT_AMAX_ADDR) { + if (ata_get_native_max(device, retry_count, timeout, ccb, + &nativesize) != 0) { + cam_freeccb(ccb); + return (1); + } + } else { + nativesize = 0; + } printf("%s%d: ", device->device_name, device->dev_unit_num); ata_print_ident(ident_buf); camxferrate(device); atacapprint(ident_buf); atahpa_print(ident_buf, hpasize, 0); + ataama_print(ident_buf, nativesize, 0); free(ident_buf); cam_freeccb(ccb); @@ -2938,7 +3067,7 @@ atahpa(struct cam_device *device, int retry_count, int return (1); } - if (security && !(ident_buf->support.command1 & ATA_SUPPORT_MAXSECURITY)) { + if (security && !(ident_buf->support.command2 & ATA_SUPPORT_MAXSECURITY)) { warnx("HPA Security is not supported by this device"); cam_freeccb(ccb); free(ident_buf); @@ -2967,7 +3096,7 @@ atahpa(struct cam_device *device, int retry_count, int if (error == 0) { error = atahpa_set_max(device, retry_count, timeout, ccb, is48bit, maxsize, persist); - if (error == 0) { + if (error == 0 && quiet == 0) { /* redo identify to get new lba values */ error = ata_do_identify(device, retry_count, timeout, ccb, @@ -2980,28 +3109,28 @@ atahpa(struct cam_device *device, int retry_count, int case ATA_HPA_ACTION_SET_PWD: error = atahpa_password(device, retry_count, timeout, ccb, is48bit, &pwd); - if (error == 0) + if (error == 0 && quiet == 0) printf("HPA password has been set\n"); break; case ATA_HPA_ACTION_LOCK: error = atahpa_lock(device, retry_count, timeout, ccb, is48bit); - if (error == 0) + if (error == 0 && quiet == 0) printf("HPA has been locked\n"); break; case ATA_HPA_ACTION_UNLOCK: error = atahpa_unlock(device, retry_count, timeout, ccb, is48bit, &pwd); - if (error == 0) + if (error == 0 && quiet == 0) printf("HPA has been unlocked\n"); break; case ATA_HPA_ACTION_FREEZE_LOCK: error = atahpa_freeze_lock(device, retry_count, timeout, ccb, is48bit); - if (error == 0) + if (error == 0 && quiet == 0) printf("HPA has been frozen\n"); break; @@ -3015,7 +3144,128 @@ atahpa(struct cam_device *device, int retry_count, int return (error); } +enum { + ATA_AMA_ACTION_PRINT, + ATA_AMA_ACTION_SET_MAX, + ATA_AMA_ACTION_FREEZE_LOCK +}; + static int +ataama(struct cam_device *device, int retry_count, int timeout, + int argc, char **argv, char *combinedopt) +{ + union ccb *ccb; + struct ata_params *ident_buf; + struct ccb_getdev cgd; + int error, quiet, c, action, actions; + u_int64_t nativesize, maxsize; + + actions = 0; + quiet = 0; + maxsize = 0; + + /* default action is to print AMA information */ + action = ATA_AMA_ACTION_PRINT; + + while ((c = getopt(argc, argv, combinedopt)) != -1) { + switch(c){ + case 's': + action = ATA_AMA_ACTION_SET_MAX; + maxsize = strtoumax(optarg, NULL, 0); + actions++; + break; + + case 'f': + action = ATA_AMA_ACTION_FREEZE_LOCK; + actions++; + break; + + case 'q': + quiet++; + break; + } + } + + if (actions > 1) { + warnx("too many AMA actions specified"); + return (1); + } + + if (get_cgd(device, &cgd) != 0) { + warnx("couldn't get CGD"); + return (1); + } + + ccb = cam_getccb(device); + if (ccb == NULL) { + warnx("couldn't allocate CCB"); + return (1); + } + + error = ata_do_identify(device, retry_count, timeout, ccb, &ident_buf); + if (error != 0) { + cam_freeccb(ccb); + return (1); + } + + if (quiet == 0) { + printf("%s%d: ", device->device_name, device->dev_unit_num); + ata_print_ident(ident_buf); + camxferrate(device); + } + + if (action == ATA_AMA_ACTION_PRINT) { + error = ata_get_native_max(device, retry_count, timeout, ccb, + &nativesize); + if (error == 0) + ataama_print(ident_buf, nativesize, 1); + + cam_freeccb(ccb); + free(ident_buf); + return (error); + } + + if (!(ident_buf->support2 & ATA_SUPPORT_AMAX_ADDR)) { + warnx("Accessible Max Address is not supported by this device"); + cam_freeccb(ccb); + free(ident_buf); + return (1); + } + + switch(action) { + case ATA_AMA_ACTION_SET_MAX: + error = ata_get_native_max(device, retry_count, timeout, ccb, + &nativesize); + if (error == 0) { + error = ataama_set(device, retry_count, timeout, + ccb, maxsize); + if (error == 0 && quiet == 0) { + /* redo identify to get new lba values */ + error = ata_do_identify(device, retry_count, + timeout, ccb, &ident_buf); + ataama_print(ident_buf, nativesize, 1); + } + } + break; + + case ATA_AMA_ACTION_FREEZE_LOCK: + error = ataama_freeze(device, retry_count, timeout, + ccb); + if (error == 0 && quiet == 0) + printf("Accessible Max Address has been frozen\n"); + break; + + default: + errx(1, "Option currently not supported"); + } + + cam_freeccb(ccb); + free(ident_buf); + + return (error); +} + +static int atasecurity(struct cam_device *device, int retry_count, int timeout, int argc, char **argv, char *combinedopt) { @@ -9677,6 +9927,7 @@ usage(int printlong) " [-U ] [-y]\n" " camcontrol hpa [dev_id][generic args] [-f] [-l] [-P] [-p pwd]\n" " [-q] [-s max_sectors] [-U pwd] [-y]\n" +" camcontrol ama [dev_id][generic args] [-f] [-q] [-s max_sectors]\n" " camcontrol persist [dev_id][generic args] <-i action|-o action>\n" " [-a][-I tid][-k key][-K sa_key][-p][-R rtp]\n" " [-s scope][-S][-T type][-U]\n" @@ -9877,6 +10128,11 @@ usage(int printlong) " device\n" "-U pwd unlock the HPA configuration of the device\n" "-y don't ask any questions\n" +"ama arguments:\n" +"-f freeze the AMA configuration of the device\n" +"-q be quiet, do not print any status messages\n" +"-s sectors configures the maximum user accessible sectors of the\n" +" device\n" "persist arguments:\n" "-i action specify read_keys, read_reservation, report_cap, or\n" " read_full_status\n" @@ -10207,6 +10463,10 @@ main(int argc, char **argv) break; case CAM_CMD_HPA: error = atahpa(cam_dev, retry_count, timeout, + argc, argv, combinedopt); + break; + case CAM_CMD_AMA: + error = ataama(cam_dev, retry_count, timeout, argc, argv, combinedopt); break; #endif /* MINIMALISTIC */ Modified: stable/12/sys/cam/ata/ata_all.c ============================================================================== --- stable/12/sys/cam/ata/ata_all.c Thu Aug 8 02:21:30 2019 (r350729) +++ stable/12/sys/cam/ata/ata_all.c Thu Aug 8 02:24:57 2019 (r350730) @@ -184,7 +184,13 @@ ata_op_string(struct ata_cmd *cmd) return ("SEP_ATTN"); case 0x70: return ("SEEK"); case 0x77: return ("SET_DATE_TIME_EXT"); - case 0x78: return ("ACCESSIBLE_MAX_ADDRESS_CONFIGURATION"); + case 0x78: + switch (cmd->features) { + case 0x00: return ("GET_NATIVE_MAX_ADDRESS_EXT"); + case 0x01: return ("SET_ACCESSIBLE_MAX_ADDRESS_EXT"); + case 0x02: return ("FREEZE_ACCESSIBLE_MAX_ADDRESS_EXT"); + } + return ("ACCESSIBLE_MAX_ADDRESS_CONFIGURATION"); case 0x7C: return ("REMOVE_ELEMENT_AND_TRUNCATE"); case 0x87: return ("CFA_TRANSLATE_SECTOR"); case 0x90: return ("EXECUTE_DEVICE_DIAGNOSTIC"); Modified: stable/12/sys/sys/ata.h ============================================================================== --- stable/12/sys/sys/ata.h Thu Aug 8 02:21:30 2019 (r350729) +++ stable/12/sys/sys/ata.h Thu Aug 8 02:24:57 2019 (r350730) @@ -236,12 +236,15 @@ struct ata_params { #define ATA_SUPPORT_FREEFALL 0x0020 #define ATA_SUPPORT_SENSE_REPORT 0x0040 #define ATA_SUPPORT_EPC 0x0080 +#define ATA_SUPPORT_AMAX_ADDR 0x0100 +#define ATA_SUPPORT_DSN 0x0200 /*120*/ u_int16_t enabled2; #define ATA_ENABLED_WRITEREADVERIFY 0x0002 #define ATA_ENABLED_WRITEUNCORREXT 0x0004 #define ATA_ENABLED_FREEFALL 0x0020 #define ATA_ENABLED_SENSE_REPORT 0x0040 #define ATA_ENABLED_EPC 0x0080 +#define ATA_ENABLED_DSN 0x0200 u_int16_t reserved121[6]; /*127*/ u_int16_t removable_status; /*128*/ u_int16_t security_status; @@ -418,6 +421,10 @@ struct ata_params { #define ATA_RFPDMA_ZAC_MGMT_IN 0x02 /* NCQ ZAC mgmt in w/data */ #define ATA_SEP_ATTN 0x67 /* SEP request */ #define ATA_SEEK 0x70 /* seek */ +#define ATA_AMAX_ADDR 0x78 /* Accessible Max Address */ +#define ATA_AMAX_ADDR_GET 0x00 /* GET NATIVE MAX ADDRESS EXT */ +#define ATA_AMAX_ADDR_SET 0x01 /* SET ACCESSIBLE MAX ADDRESS EXT */ +#define ATA_AMAX_ADDR_FREEZE 0x02 /* FREEZE ACCESSIBLE MAX ADDRESS EXT */ #define ATA_ZAC_MANAGEMENT_OUT 0x9f /* ZAC management out */ #define ATA_ZM_CLOSE_ZONE 0x01 /* close zone */ #define ATA_ZM_FINISH_ZONE 0x02 /* finish zone */ From owner-svn-src-stable@freebsd.org Thu Aug 8 02:25:35 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1E2A1C0C0C; Thu, 8 Aug 2019 02:25: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sfk73Rhz3D20; Thu, 8 Aug 2019 02:25:34 +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 D40551E393; Thu, 8 Aug 2019 02:25:34 +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 x782PYJV038184; Thu, 8 Aug 2019 02:25:34 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782PYTQ038183; Thu, 8 Aug 2019 02:25:34 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080225.x782PYTQ038183@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:25:34 +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: r350731 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350731 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:25:35 -0000 Author: mav Date: Thu Aug 8 02:25:34 2019 New Revision: 350731 URL: https://svnweb.freebsd.org/changeset/base/350731 Log: MFC r350150: Properly report ACS revisions alike to kernel. Modified: stable/12/sbin/camcontrol/camcontrol.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:24:57 2019 (r350730) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:25:34 2019 (r350731) @@ -1497,6 +1497,7 @@ atasata(struct ata_params *parm) static void atacapprint(struct ata_params *parm) { + const char *proto; u_int32_t lbasize = (u_int32_t)parm->lba_size_1 | ((u_int32_t)parm->lba_size_2 << 16); @@ -1507,7 +1508,19 @@ atacapprint(struct ata_params *parm) printf("\n"); printf("protocol "); - printf("ATA/ATAPI-%d", ata_version(parm->version_major)); + proto = (parm->config == ATA_PROTO_CFA) ? "CFA" : + (parm->config & ATA_PROTO_ATAPI) ? "ATAPI" : "ATA"; + if (ata_version(parm->version_major) == 0) { + printf("%s", proto); + } else if (ata_version(parm->version_major) <= 7) { + printf("%s-%d", proto, + ata_version(parm->version_major)); + } else if (ata_version(parm->version_major) == 8) { + printf("%s8-ACS", proto); + } else { + printf("ACS-%d %s", + ata_version(parm->version_major) - 7, proto); + } if (parm->satacapabilities && parm->satacapabilities != 0xffff) { if (parm->satacapabilities & ATA_SATA_GEN3) printf(" SATA 3.x\n"); From owner-svn-src-stable@freebsd.org Thu Aug 8 02:26:13 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B8737C0C89; Thu, 8 Aug 2019 02:26:13 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sgT4W18z3D8t; Thu, 8 Aug 2019 02:26:13 +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 654701E394; Thu, 8 Aug 2019 02:26:13 +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 x782QD54038273; Thu, 8 Aug 2019 02:26:13 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782QDFo038271; Thu, 8 Aug 2019 02:26:13 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080226.x782QDFo038271@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:26: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: r350732 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350732 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:26:13 -0000 Author: mav Date: Thu Aug 8 02:26:12 2019 New Revision: 350732 URL: https://svnweb.freebsd.org/changeset/base/350732 Log: MFC r350214: Unify BTL parsing for `camcontrol debug` and `reset`. This makes `camcontrol debug` also allow peripheral device specification. While there, make BTL parser more strict and switch from strtok() to strsep(). Modified: stable/12/sbin/camcontrol/camcontrol.8 stable/12/sbin/camcontrol/camcontrol.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 02:25:34 2019 (r350731) +++ stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 02:26:12 2019 (r350732) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 19, 2019 +.Dd July 22, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -185,7 +185,7 @@ .Op Fl X .Op Fl c .Op Fl p -.Aq all|off|bus Ns Op :target Ns Op :lun +.Aq all | off | device id | bus Ns Op :target Ns Op :lun .Nm .Ic tags .Op device id Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:25:34 2019 (r350731) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:26:12 2019 (r350732) @@ -3557,6 +3557,66 @@ atasecurity(struct cam_device *device, int retry_count #endif /* MINIMALISTIC */ /* + * Convert periph name into a bus, target and lun. + * + * Returns the number of parsed components, or 0. + */ +static int +parse_btl_name(char *tstr, path_id_t *bus, target_id_t *target, lun_id_t *lun, + cam_argmask *arglst) +{ + int fd; + union ccb ccb; + + bzero(&ccb, sizeof(ccb)); + ccb.ccb_h.func_code = XPT_GDEVLIST; + if (cam_get_device(tstr, ccb.cgdl.periph_name, + sizeof(ccb.cgdl.periph_name), &ccb.cgdl.unit_number) == -1) { + warnx("%s", cam_errbuf); + return (0); + } + + /* + * Attempt to get the passthrough device. This ioctl will + * fail if the device name is null, if the device doesn't + * exist, or if the passthrough driver isn't in the kernel. + */ + if ((fd = open(XPT_DEVICE, O_RDWR)) == -1) { + warn("Unable to open %s", XPT_DEVICE); + return (0); + } + if (ioctl(fd, CAMGETPASSTHRU, &ccb) == -1) { + warn("Unable to find bus:target:lun for device %s%d", + ccb.cgdl.periph_name, ccb.cgdl.unit_number); + close(fd); + return (0); + } + close(fd); + if ((ccb.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { + const struct cam_status_entry *entry; + + entry = cam_fetch_status_entry(ccb.ccb_h.status); + warnx("Unable to find bus:target_lun for device %s%d, " + "CAM status: %s (%#x)", + ccb.cgdl.periph_name, ccb.cgdl.unit_number, + entry ? entry->status_text : "Unknown", + ccb.ccb_h.status); + return (0); + } + + /* + * The kernel fills in the bus/target/lun. We don't + * need the passthrough device name and unit number since + * we aren't going to open it. + */ + *bus = ccb.ccb_h.path_id; + *target = ccb.ccb_h.target_id; + *lun = ccb.ccb_h.target_lun; + *arglst |= CAM_ARG_BUS | CAM_ARG_TARGET | CAM_ARG_LUN; + return (3); +} + +/* * Parse out a bus, or a bus, target and lun in the following * format: * bus @@ -3569,25 +3629,43 @@ static int parse_btl(char *tstr, path_id_t *bus, target_id_t *target, lun_id_t *lun, cam_argmask *arglst) { - char *tmpstr; + char *tmpstr, *end; int convs = 0; + *bus = CAM_BUS_WILDCARD; + *target = CAM_TARGET_WILDCARD; + *lun = CAM_LUN_WILDCARD; + while (isspace(*tstr) && (*tstr != '\0')) tstr++; - tmpstr = (char *)strtok(tstr, ":"); + if (strncasecmp(tstr, "all", strlen("all")) == 0) { + arglist |= CAM_ARG_BUS; + return (1); + } + + if (!isdigit(*tstr)) + return (parse_btl_name(tstr, bus, target, lun, arglst)); + + tmpstr = strsep(&tstr, ":"); if ((tmpstr != NULL) && (*tmpstr != '\0')) { - *bus = strtol(tmpstr, NULL, 0); + *bus = strtol(tmpstr, &end, 0); + if (*end != '\0') + return (0); *arglst |= CAM_ARG_BUS; convs++; - tmpstr = (char *)strtok(NULL, ":"); + tmpstr = strsep(&tstr, ":"); if ((tmpstr != NULL) && (*tmpstr != '\0')) { - *target = strtol(tmpstr, NULL, 0); + *target = strtol(tmpstr, &end, 0); + if (*end != '\0') + return (0); *arglst |= CAM_ARG_TARGET; convs++; - tmpstr = (char *)strtok(NULL, ":"); + tmpstr = strsep(&tstr, ":"); if ((tmpstr != NULL) && (*tmpstr != '\0')) { - *lun = strtol(tmpstr, NULL, 0); + *lun = strtoll(tmpstr, &end, 0); + if (*end != '\0') + return (0); *arglst |= CAM_ARG_LUN; convs++; } @@ -3601,7 +3679,7 @@ static int dorescan_or_reset(int argc, char **argv, int rescan) { static const char must[] = - "you must specify \"all\", a bus, or a bus:target:lun to %s"; + "you must specify \"all\", a bus, a bus:target:lun or periph to %s"; int rv, error = 0; path_id_t bus = CAM_BUS_WILDCARD; target_id_t target = CAM_TARGET_WILDCARD; @@ -3618,118 +3696,19 @@ dorescan_or_reset(int argc, char **argv, int rescan) tstr++; if (strncasecmp(tstr, "all", strlen("all")) == 0) arglist |= CAM_ARG_BUS; - else if (isdigit(*tstr)) { + else { rv = parse_btl(argv[optind], &bus, &target, &lun, &arglist); if (rv != 1 && rv != 3) { - warnx(must, rescan? "rescan" : "reset"); + warnx(must, rescan ? "rescan" : "reset"); return (1); } - } else { - char name[30]; - int unit; - int fd = -1; - union ccb ccb; - - /* - * Note that resetting or rescanning a device used to - * require a bus or bus:target:lun. This is because the - * device in question may not exist and you're trying to - * get the controller to rescan to find it. It may also be - * because the device is hung / unresponsive, and opening - * an unresponsive device is not desireable. - * - * It can be more convenient to reference a device by - * peripheral name and unit number, though, and it is - * possible to get the bus:target:lun for devices that - * currently exist in the EDT. So this can work for - * devices that we want to reset, or devices that exist - * that we want to rescan, but not devices that do not - * exist yet. - * - * So, we are careful here to look up the bus/target/lun - * for the device the user wants to operate on, specified - * by peripheral instance (e.g. da0, pass32) without - * actually opening that device. The process is similar to - * what cam_lookup_pass() does, except that we don't - * actually open the passthrough driver instance in the end. - */ - - if (cam_get_device(tstr, name, sizeof(name), &unit) == -1) { - warnx("%s", cam_errbuf); - error = 1; - goto bailout; - } - - if ((fd = open(XPT_DEVICE, O_RDWR)) == -1) { - warn("Unable to open %s", XPT_DEVICE); - error = 1; - goto bailout; - } - - bzero(&ccb, sizeof(ccb)); - - /* - * The function code isn't strictly necessary for the - * GETPASSTHRU ioctl. - */ - ccb.ccb_h.func_code = XPT_GDEVLIST; - - /* - * These two are necessary for the GETPASSTHRU ioctl to - * work. - */ - strlcpy(ccb.cgdl.periph_name, name, - sizeof(ccb.cgdl.periph_name)); - ccb.cgdl.unit_number = unit; - - /* - * Attempt to get the passthrough device. This ioctl will - * fail if the device name is null, if the device doesn't - * exist, or if the passthrough driver isn't in the kernel. - */ - if (ioctl(fd, CAMGETPASSTHRU, &ccb) == -1) { - warn("Unable to find bus:target:lun for device %s%d", - name, unit); - error = 1; - close(fd); - goto bailout; - } - if ((ccb.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { - const struct cam_status_entry *entry; - - entry = cam_fetch_status_entry(ccb.ccb_h.status); - warnx("Unable to find bus:target_lun for device %s%d, " - "CAM status: %s (%#x)", name, unit, - entry ? entry->status_text : "Unknown", - ccb.ccb_h.status); - error = 1; - close(fd); - goto bailout; - } - - /* - * The kernel fills in the bus/target/lun. We don't - * need the passthrough device name and unit number since - * we aren't going to open it. - */ - bus = ccb.ccb_h.path_id; - target = ccb.ccb_h.target_id; - lun = ccb.ccb_h.target_lun; - - arglist |= CAM_ARG_BUS | CAM_ARG_TARGET | CAM_ARG_LUN; - - close(fd); } - if ((arglist & CAM_ARG_BUS) - && (arglist & CAM_ARG_TARGET) - && (arglist & CAM_ARG_LUN)) + if (arglist & CAM_ARG_LUN) error = scanlun_or_reset_dev(bus, target, lun, rescan); else error = rescan_or_reset_bus(bus, rescan); -bailout: - return (error); } @@ -5116,9 +5095,9 @@ camdebug(int argc, char **argv, char *combinedopt) path_id_t bus = CAM_BUS_WILDCARD; target_id_t target = CAM_TARGET_WILDCARD; lun_id_t lun = CAM_LUN_WILDCARD; - char *tstr, *tmpstr = NULL; + char *tstr; union ccb ccb; - int error = 0; + int error = 0, rv; bzero(&ccb, sizeof(union ccb)); @@ -5157,23 +5136,16 @@ camdebug(int argc, char **argv, char *combinedopt) } } - if ((fd = open(XPT_DEVICE, O_RDWR)) < 0) { - warnx("error opening transport layer device %s", XPT_DEVICE); - warn("%s", XPT_DEVICE); - return (1); - } argc -= optind; argv += optind; if (argc <= 0) { warnx("you must specify \"off\", \"all\" or a bus,"); - warnx("bus:target, or bus:target:lun"); - close(fd); + warnx("bus:target, bus:target:lun or periph"); return (1); } tstr = *argv; - while (isspace(*tstr) && (*tstr != '\0')) tstr++; @@ -5182,66 +5154,54 @@ camdebug(int argc, char **argv, char *combinedopt) arglist &= ~(CAM_ARG_DEBUG_INFO|CAM_ARG_DEBUG_PERIPH| CAM_ARG_DEBUG_TRACE|CAM_ARG_DEBUG_SUBTRACE| CAM_ARG_DEBUG_XPT|CAM_ARG_DEBUG_PROBE); - } else if (strncmp(tstr, "all", 3) != 0) { - tmpstr = (char *)strtok(tstr, ":"); - if ((tmpstr != NULL) && (*tmpstr != '\0')){ - bus = strtol(tmpstr, NULL, 0); - arglist |= CAM_ARG_BUS; - tmpstr = (char *)strtok(NULL, ":"); - if ((tmpstr != NULL) && (*tmpstr != '\0')){ - target = strtol(tmpstr, NULL, 0); - arglist |= CAM_ARG_TARGET; - tmpstr = (char *)strtok(NULL, ":"); - if ((tmpstr != NULL) && (*tmpstr != '\0')){ - lun = strtol(tmpstr, NULL, 0); - arglist |= CAM_ARG_LUN; - } - } - } else { - error = 1; + } else { + rv = parse_btl(tstr, &bus, &target, &lun, &arglist); + if (rv < 1) { warnx("you must specify \"all\", \"off\", or a bus,"); - warnx("bus:target, or bus:target:lun to debug"); + warnx("bus:target, bus:target:lun or periph to debug"); + return (1); } } - if (error == 0) { + if ((fd = open(XPT_DEVICE, O_RDWR)) < 0) { + warnx("error opening transport layer device %s", XPT_DEVICE); + warn("%s", XPT_DEVICE); + return (1); + } - ccb.ccb_h.func_code = XPT_DEBUG; - ccb.ccb_h.path_id = bus; - ccb.ccb_h.target_id = target; - ccb.ccb_h.target_lun = lun; + ccb.ccb_h.func_code = XPT_DEBUG; + ccb.ccb_h.path_id = bus; + ccb.ccb_h.target_id = target; + ccb.ccb_h.target_lun = lun; - if (ioctl(fd, CAMIOCOMMAND, &ccb) == -1) { - warn("CAMIOCOMMAND ioctl failed"); + if (ioctl(fd, CAMIOCOMMAND, &ccb) == -1) { + warn("CAMIOCOMMAND ioctl failed"); + error = 1; + } else { + if ((ccb.ccb_h.status & CAM_STATUS_MASK) == + CAM_FUNC_NOTAVAIL) { + warnx("CAM debugging not available"); + warnx("you need to put options CAMDEBUG in" + " your kernel config file!"); error = 1; - } - - if (error == 0) { - if ((ccb.ccb_h.status & CAM_STATUS_MASK) == - CAM_FUNC_NOTAVAIL) { - warnx("CAM debugging not available"); - warnx("you need to put options CAMDEBUG in" - " your kernel config file!"); - error = 1; - } else if ((ccb.ccb_h.status & CAM_STATUS_MASK) != - CAM_REQ_CMP) { - warnx("XPT_DEBUG CCB failed with status %#x", - ccb.ccb_h.status); - error = 1; + } else if ((ccb.ccb_h.status & CAM_STATUS_MASK) != + CAM_REQ_CMP) { + warnx("XPT_DEBUG CCB failed with status %#x", + ccb.ccb_h.status); + error = 1; + } else { + if (ccb.cdbg.flags == CAM_DEBUG_NONE) { + fprintf(stderr, + "Debugging turned off\n"); } else { - if (ccb.cdbg.flags == CAM_DEBUG_NONE) { - fprintf(stderr, - "Debugging turned off\n"); - } else { - fprintf(stderr, - "Debugging enabled for " - "%d:%d:%jx\n", - bus, target, (uintmax_t)lun); - } + fprintf(stderr, + "Debugging enabled for " + "%d:%d:%jx\n", + bus, target, (uintmax_t)lun); } } - close(fd); } + close(fd); return (error); } @@ -9915,7 +9875,7 @@ usage(int printlong) " camcontrol smpphylist [dev_id][generic args][-l][-q]\n" " camcontrol smpmaninfo [dev_id][generic args][-l]\n" " camcontrol debug [-I][-P][-T][-S][-X][-c]\n" -" \n" +" \n" " camcontrol tags [dev_id][generic args] [-N tags] [-q] [-v]\n" " camcontrol negotiate [dev_id][generic args] [-a][-c]\n" " [-D ][-M mode][-O offset]\n" From owner-svn-src-stable@freebsd.org Thu Aug 8 02:28:32 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A834EC0D86; Thu, 8 Aug 2019 02:28:32 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463sk84j83z3DMx; Thu, 8 Aug 2019 02:28:32 +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 82E701E39B; Thu, 8 Aug 2019 02:28:32 +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 x782SWLF038438; Thu, 8 Aug 2019 02:28:32 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782SWvA038437; Thu, 8 Aug 2019 02:28:32 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080228.x782SWvA038437@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:28: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: r350733 - stable/12/sys/cam/ata X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam/ata X-SVN-Commit-Revision: 350733 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:28:32 -0000 Author: mav Date: Thu Aug 8 02:28:32 2019 New Revision: 350733 URL: https://svnweb.freebsd.org/changeset/base/350733 Log: MFC r350233: Make CAM ATA stack handle disk resizes. While for ATA disks resize is even more rare situation than for SCSI, it may happen in case of HPA or AMA being used. Make ATA XPT report minor IDENTIFY DATA change to upper layers with AC_GETDEV_CHANGED, and ada(4) periph driver handle that event, recalculating all the disk properties and signalling resize to GEOM. Since ATA has no mechanism of UNIT ATTENTIONs, like SCSI, it has no way to detect that something has changed. That is why this functionality depends on explicit reprobe via XPT_REPROBE_LUN call. Modified: stable/12/sys/cam/ata/ata_da.c stable/12/sys/cam/ata/ata_xpt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ata/ata_da.c ============================================================================== --- stable/12/sys/cam/ata/ata_da.c Thu Aug 8 02:26:12 2019 (r350732) +++ stable/12/sys/cam/ata/ata_da.c Thu Aug 8 02:28:32 2019 (r350733) @@ -248,8 +248,9 @@ struct ada_softc { int periodic_read_error; int periodic_read_count; #endif - struct disk_params params; - struct disk *disk; + struct ccb_pathinq cpi; + struct disk_params params; + struct disk *disk; struct task sysctl_task; struct sysctl_ctx_list sysctl_ctx; struct sysctl_oid *sysctl_tree; @@ -804,6 +805,8 @@ static void adasysctlinit(void *context, int pending) static int adagetattr(struct bio *bp); static void adasetflags(struct ada_softc *softc, struct ccb_getdev *cgd); +static void adasetgeom(struct ada_softc *softc, + struct ccb_getdev *cgd); static periph_ctor_t adaregister; static void ada_dsmtrim(struct ada_softc *softc, struct bio *bp, struct ccb_ataio *ataio); @@ -819,8 +822,6 @@ static void adadone(struct cam_periph *periph, union ccb *done_ccb); static int adaerror(union ccb *ccb, u_int32_t cam_flags, u_int32_t sense_flags); -static void adagetparams(struct cam_periph *periph, - struct ccb_getdev *cgd); static timeout_t adasendorderedtag; static void adashutdown(void *arg, int howto); static void adasuspend(void *arg); @@ -1304,9 +1305,11 @@ adaasync(void *callback_arg, u_int32_t code, xpt_action((union ccb *)&cgd); /* - * Set/clear support flags based on the new Identify data. + * Update our information based on the new Identify data. */ adasetflags(softc, &cgd); + adasetgeom(softc, &cgd); + disk_resize(softc->disk, M_NOWAIT); cam_periph_async(periph, code, path, arg); break; @@ -1630,7 +1633,8 @@ adasetflags(struct ada_softc *softc, struct ccb_getdev softc->flags &= ~ADA_FLAG_CAN_NCQ; if ((cgd->ident_data.support_dsm & ATA_SUPPORT_DSM_TRIM) && - (cgd->inq_flags & SID_DMA)) { + (cgd->inq_flags & SID_DMA) && + (softc->quirks & ADA_Q_NO_TRIM) == 0) { softc->flags |= ADA_FLAG_CAN_TRIM; softc->trim_max_ranges = TRIM_MAX_RANGES; if (cgd->ident_data.max_dsm_blocks != 0) { @@ -1698,13 +1702,11 @@ static cam_status adaregister(struct cam_periph *periph, void *arg) { struct ada_softc *softc; - struct ccb_pathinq cpi; struct ccb_getdev *cgd; struct disk_params *dp; struct sbuf sb; char *announce_buf; caddr_t match; - u_int maxio; int quirks; cgd = (struct ccb_getdev *)arg; @@ -1733,6 +1735,7 @@ adaregister(struct cam_periph *periph, void *arg) } periph->softc = softc; + xpt_path_inq(&softc->cpi, periph->path); /* * See if this device has any quirks. @@ -1746,8 +1749,6 @@ adaregister(struct cam_periph *periph, void *arg) else softc->quirks = ADA_Q_NONE; - xpt_path_inq(&cpi, periph->path); - TASK_INIT(&softc->sysctl_task, 0, adasysctlinit, periph); /* @@ -1773,6 +1774,8 @@ adaregister(struct cam_periph *periph, void *arg) * Set support flags based on the Identify data and quirks. */ adasetflags(softc, cgd); + if (softc->cpi.hba_misc & PIM_ATA_EXT) + softc->flags |= ADA_FLAG_PIM_ATA_EXT; /* Disable queue sorting for non-rotational media by default. */ if (cgd->ident_data.media_rotation_rate == ATA_RATE_NON_ROTATING) { @@ -1781,14 +1784,13 @@ adaregister(struct cam_periph *periph, void *arg) softc->rotating = 1; } cam_iosched_set_sort_queue(softc->cam_iosched, softc->rotating ? -1 : 0); - adagetparams(periph, cgd); softc->disk = disk_alloc(); - softc->disk->d_rotation_rate = cgd->ident_data.media_rotation_rate; + adasetgeom(softc, cgd); softc->disk->d_devstat = devstat_new_entry(periph->periph_name, periph->unit_number, softc->params.secsize, DEVSTAT_ALL_SUPPORTED, DEVSTAT_TYPE_DIRECT | - XPORT_DEVSTAT_TYPE(cpi.transport), + XPORT_DEVSTAT_TYPE(softc->cpi.transport), DEVSTAT_PRIORITY_DISK); softc->disk->d_open = adaopen; softc->disk->d_close = adaclose; @@ -1798,70 +1800,8 @@ adaregister(struct cam_periph *periph, void *arg) softc->disk->d_gone = adadiskgonecb; softc->disk->d_name = "ada"; softc->disk->d_drv1 = periph; - maxio = cpi.maxio; /* Honor max I/O size of SIM */ - if (maxio == 0) - maxio = DFLTPHYS; /* traditional default */ - else if (maxio > MAXPHYS) - maxio = MAXPHYS; /* for safety */ - if (softc->flags & ADA_FLAG_CAN_48BIT) - maxio = min(maxio, 65536 * softc->params.secsize); - else /* 28bit ATA command limit */ - maxio = min(maxio, 256 * softc->params.secsize); - if (softc->quirks & ADA_Q_128KB) - maxio = min(maxio, 128 * 1024); - softc->disk->d_maxsize = maxio; softc->disk->d_unit = periph->unit_number; - softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; - if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) - softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; - /* Device lies about TRIM capability. */ - if ((softc->quirks & ADA_Q_NO_TRIM) && - (softc->flags & ADA_FLAG_CAN_TRIM)) - softc->flags &= ~ADA_FLAG_CAN_TRIM; - if (softc->flags & ADA_FLAG_CAN_TRIM) { - softc->disk->d_flags |= DISKFLAG_CANDELETE; - softc->disk->d_delmaxsize = softc->params.secsize * - ATA_DSM_RANGE_MAX * - softc->trim_max_ranges; - } else if ((softc->flags & ADA_FLAG_CAN_CFA) && - !(softc->flags & ADA_FLAG_CAN_48BIT)) { - softc->disk->d_flags |= DISKFLAG_CANDELETE; - softc->disk->d_delmaxsize = 256 * softc->params.secsize; - } else - softc->disk->d_delmaxsize = maxio; - if ((cpi.hba_misc & PIM_UNMAPPED) != 0) { - softc->disk->d_flags |= DISKFLAG_UNMAPPED_BIO; - softc->unmappedio = 1; - } - if (cpi.hba_misc & PIM_ATA_EXT) - softc->flags |= ADA_FLAG_PIM_ATA_EXT; - strlcpy(softc->disk->d_descr, cgd->ident_data.model, - MIN(sizeof(softc->disk->d_descr), sizeof(cgd->ident_data.model))); - strlcpy(softc->disk->d_ident, cgd->ident_data.serial, - MIN(sizeof(softc->disk->d_ident), sizeof(cgd->ident_data.serial))); - softc->disk->d_hba_vendor = cpi.hba_vendor; - softc->disk->d_hba_device = cpi.hba_device; - softc->disk->d_hba_subvendor = cpi.hba_subvendor; - softc->disk->d_hba_subdevice = cpi.hba_subdevice; - softc->disk->d_sectorsize = softc->params.secsize; - softc->disk->d_mediasize = (off_t)softc->params.sectors * - softc->params.secsize; - if (ata_physical_sector_size(&cgd->ident_data) != - softc->params.secsize) { - softc->disk->d_stripesize = - ata_physical_sector_size(&cgd->ident_data); - softc->disk->d_stripeoffset = (softc->disk->d_stripesize - - ata_logical_sector_offset(&cgd->ident_data)) % - softc->disk->d_stripesize; - } else if (softc->quirks & ADA_Q_4K) { - softc->disk->d_stripesize = 4096; - softc->disk->d_stripeoffset = 0; - } - softc->disk->d_fwsectors = softc->params.secs_per_track; - softc->disk->d_fwheads = softc->params.heads; - ata_disk_firmware_geom_adjust(softc->disk); - /* * Acquire a reference to the periph before we register with GEOM. * We'll release this reference once GEOM calls us back (via @@ -3368,16 +3308,17 @@ adaerror(union ccb *ccb, u_int32_t cam_flags, u_int32_ } static void -adagetparams(struct cam_periph *periph, struct ccb_getdev *cgd) +adasetgeom(struct ada_softc *softc, struct ccb_getdev *cgd) { - struct ada_softc *softc = (struct ada_softc *)periph->softc; struct disk_params *dp = &softc->params; u_int64_t lbasize48; u_int32_t lbasize; + u_int maxio, d_flags; dp->secsize = ata_logical_sector_size(&cgd->ident_data); if ((cgd->ident_data.atavalid & ATA_FLAG_54_58) && - cgd->ident_data.current_heads && cgd->ident_data.current_sectors) { + cgd->ident_data.current_heads != 0 && + cgd->ident_data.current_sectors != 0) { dp->heads = cgd->ident_data.current_heads; dp->secs_per_track = cgd->ident_data.current_sectors; dp->cylinders = cgd->ident_data.cylinders; @@ -3405,6 +3346,60 @@ adagetparams(struct cam_periph *periph, struct ccb_get if ((cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) && lbasize48 > ATA_MAX_28BIT_LBA) dp->sectors = lbasize48; + + maxio = softc->cpi.maxio; /* Honor max I/O size of SIM */ + if (maxio == 0) + maxio = DFLTPHYS; /* traditional default */ + else if (maxio > MAXPHYS) + maxio = MAXPHYS; /* for safety */ + if (softc->flags & ADA_FLAG_CAN_48BIT) + maxio = min(maxio, 65536 * softc->params.secsize); + else /* 28bit ATA command limit */ + maxio = min(maxio, 256 * softc->params.secsize); + if (softc->quirks & ADA_Q_128KB) + maxio = min(maxio, 128 * 1024); + softc->disk->d_maxsize = maxio; + d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; + if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) + d_flags |= DISKFLAG_CANFLUSHCACHE; + if (softc->flags & ADA_FLAG_CAN_TRIM) { + d_flags |= DISKFLAG_CANDELETE; + softc->disk->d_delmaxsize = softc->params.secsize * + ATA_DSM_RANGE_MAX * softc->trim_max_ranges; + } else if ((softc->flags & ADA_FLAG_CAN_CFA) && + !(softc->flags & ADA_FLAG_CAN_48BIT)) { + d_flags |= DISKFLAG_CANDELETE; + softc->disk->d_delmaxsize = 256 * softc->params.secsize; + } else + softc->disk->d_delmaxsize = maxio; + if ((softc->cpi.hba_misc & PIM_UNMAPPED) != 0) { + d_flags |= DISKFLAG_UNMAPPED_BIO; + softc->unmappedio = 1; + } + softc->disk->d_flags = d_flags; + strlcpy(softc->disk->d_descr, cgd->ident_data.model, + MIN(sizeof(softc->disk->d_descr), sizeof(cgd->ident_data.model))); + strlcpy(softc->disk->d_ident, cgd->ident_data.serial, + MIN(sizeof(softc->disk->d_ident), sizeof(cgd->ident_data.serial))); + + softc->disk->d_sectorsize = softc->params.secsize; + softc->disk->d_mediasize = (off_t)softc->params.sectors * + softc->params.secsize; + if (ata_physical_sector_size(&cgd->ident_data) != + softc->params.secsize) { + softc->disk->d_stripesize = + ata_physical_sector_size(&cgd->ident_data); + softc->disk->d_stripeoffset = (softc->disk->d_stripesize - + ata_logical_sector_offset(&cgd->ident_data)) % + softc->disk->d_stripesize; + } else if (softc->quirks & ADA_Q_4K) { + softc->disk->d_stripesize = 4096; + softc->disk->d_stripeoffset = 0; + } + softc->disk->d_fwsectors = softc->params.secs_per_track; + softc->disk->d_fwheads = softc->params.heads; + ata_disk_firmware_geom_adjust(softc->disk); + softc->disk->d_rotation_rate = cgd->ident_data.media_rotation_rate; } static void Modified: stable/12/sys/cam/ata/ata_xpt.c ============================================================================== --- stable/12/sys/cam/ata/ata_xpt.c Thu Aug 8 02:26:12 2019 (r350732) +++ stable/12/sys/cam/ata/ata_xpt.c Thu Aug 8 02:28:32 2019 (r350733) @@ -344,6 +344,7 @@ probestart(struct cam_periph *periph, union ccb *start probe_softc *softc; struct cam_path *path; struct ata_params *ident_buf; + u_int oif; CAM_DEBUG(start_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("probestart\n")); @@ -383,7 +384,7 @@ probestart(struct cam_periph *periph, union ccb *start /*data_ptr*/(u_int8_t *)&softc->ident_data, /*dxfer_len*/sizeof(softc->ident_data), 30 * 1000); - if (periph->path->device->protocol == PROTO_ATA) + if (path->device->protocol == PROTO_ATA) ata_28bit_cmd(ataio, ATA_ATA_IDENTIFY, 0, 0, 0); else ata_28bit_cmd(ataio, ATA_ATAPI_IDENTIFY, 0, 0, 0); @@ -419,7 +420,7 @@ probestart(struct cam_periph *periph, union ccb *start if (cts.xport_specific.sata.valid & CTS_SATA_VALID_MODE) mode = cts.xport_specific.sata.mode; } - if (periph->path->device->protocol == PROTO_ATA) { + if (path->device->protocol == PROTO_ATA) { if (ata_dma == 0 && (mode == 0 || mode > ATA_PIO_MAX)) mode = ATA_PIO_MAX; } else { @@ -459,11 +460,13 @@ negotiate: if (mode != wantmode) goto negotiate; /* Remember what transport thinks about DMA. */ + oif = path->device->inq_flags; if (mode < ATA_DMA) path->device->inq_flags &= ~SID_DMA; else path->device->inq_flags |= SID_DMA; - xpt_async(AC_GETDEV_CHANGED, path, NULL); + if (path->device->inq_flags != oif) + xpt_async(AC_GETDEV_CHANGED, path, NULL); cam_fill_ataio(ataio, 1, probedone, @@ -516,11 +519,13 @@ negotiate: break; case PROBE_SETAN: /* Remember what transport thinks about AEN. */ + oif = path->device->inq_flags; if (softc->caps & CTS_SATA_CAPS_H_AN) path->device->inq_flags |= SID_AEN; else path->device->inq_flags &= ~SID_AEN; - xpt_async(AC_GETDEV_CHANGED, path, NULL); + if (path->device->inq_flags != oif) + xpt_async(AC_GETDEV_CHANGED, path, NULL); cam_fill_ataio(ataio, 1, probedone, @@ -639,7 +644,7 @@ negotiate: { u_int inquiry_len; struct scsi_inquiry_data *inq_buf = - &periph->path->device->inq_data; + &path->device->inq_data; if (softc->action == PROBE_INQUIRY) inquiry_len = SHORT_INQUIRY_LENGTH; @@ -744,8 +749,8 @@ probedone(struct cam_periph *periph, union ccb *done_c struct cam_path *path; cam_status status; u_int32_t priority; - u_int caps; - int changed = 1, found = 1; + u_int caps, oif; + int changed, found = 1; static const uint8_t fake_device_id_hdr[8] = {0, SVPD_DEVICE_ID, 0, 12, SVPD_ID_CODESET_BINARY, SVPD_ID_TYPE_NAA, 0, 8}; @@ -922,23 +927,32 @@ noerror: goto out; } ident_buf = &path->device->ident_data; + + /* Check that it is the same device as we know. */ if ((periph->path->device->flags & CAM_DEV_UNCONFIGURED) == 0) { - /* Check that it is the same device. */ if (bcmp(softc->ident_data.model, ident_buf->model, sizeof(ident_buf->model)) || - bcmp(softc->ident_data.revision, ident_buf->revision, - sizeof(ident_buf->revision)) || bcmp(softc->ident_data.serial, ident_buf->serial, sizeof(ident_buf->serial))) { - /* Device changed. */ + /* The device was replaced. */ + changed = 2; xpt_async(AC_LOST_DEVICE, path, NULL); + } else if (bcmp(&softc->ident_data, ident_buf, + sizeof(*ident_buf))) { + /* The device is the same, but has changed. */ + changed = 1; } else { - bcopy(&softc->ident_data, ident_buf, sizeof(struct ata_params)); + /* Nothing has changed. */ changed = 0; } + } else { + /* This is a new device. */ + changed = 2; } - if (changed) { + + if (changed != 0) bcopy(&softc->ident_data, ident_buf, sizeof(struct ata_params)); + if (changed == 2) { /* Clean up from previous instance of this device */ if (path->device->serial_num != NULL) { free(path->device->serial_num, M_CAMXPT); @@ -975,10 +989,10 @@ noerror: ata_bswap(path->device->device_id + 8, 8); } } - path->device->flags |= CAM_DEV_IDENTIFY_DATA_VALID; - xpt_async(AC_GETDEV_CHANGED, path, NULL); } + if (changed == 1) + xpt_async(AC_GETDEV_CHANGED, path, NULL); if (ident_buf->satacapabilities & ATA_SUPPORT_NCQ) { path->device->mintags = 2; path->device->maxtags = @@ -1002,7 +1016,7 @@ noerror: } } ata_device_transport(path); - if (changed) + if (changed == 2) proberequestdefaultnegotiation(periph); PROBE_SET_ACTION(softc, PROBE_SETMODE); xpt_release_ccb(done_ccb); @@ -1058,6 +1072,7 @@ noerror: * capability information is not provided or transport is * SATA, we take support for granted. */ + oif = path->device->inq_flags; if (!(path->device->inq_flags & SID_DMA) || (path->device->transport == XPORT_ATA && (cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS) && @@ -1065,6 +1080,8 @@ noerror: path->device->inq_flags &= ~SID_DMA48; else path->device->inq_flags |= SID_DMA48; + if (path->device->inq_flags != oif) + xpt_async(AC_GETDEV_CHANGED, path, NULL); /* Store result to SIM. */ bzero(&cts, sizeof(cts)); xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE); @@ -1235,6 +1252,7 @@ notsata: else caps = 0; /* Remember what transport thinks about AEN. */ + oif = path->device->inq_flags; if ((caps & CTS_SATA_CAPS_H_AN) && path->device->protocol != PROTO_ATA) path->device->inq_flags |= SID_AEN; else @@ -1248,7 +1266,6 @@ notsata: cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS; xpt_action((union ccb *)&cts); softc->caps = caps; - xpt_async(AC_GETDEV_CHANGED, path, NULL); if (periph->path->device->flags & CAM_DEV_UNCONFIGURED) { path->device->flags &= ~CAM_DEV_UNCONFIGURED; xpt_acquire_device(path->device); @@ -1256,6 +1273,8 @@ notsata: xpt_action(done_ccb); xpt_async(AC_FOUND_DEVICE, path, done_ccb); } else { + if (path->device->inq_flags != oif) + xpt_async(AC_GETDEV_CHANGED, path, NULL); done_ccb->ccb_h.func_code = XPT_GDEV_TYPE; xpt_action(done_ccb); xpt_async(AC_SCSI_AEN, path, done_ccb); @@ -1268,12 +1287,14 @@ notsata: /* Check that it is the same device. */ if (bcmp(&softc->ident_data, ident_buf, 53)) { /* Device changed. */ + changed = 2; xpt_async(AC_LOST_DEVICE, path, NULL); } else { bcopy(&softc->ident_data, ident_buf, sizeof(struct ata_params)); changed = 0; } - } + } else + changed = 2; if (changed) { bcopy(&softc->ident_data, ident_buf, sizeof(struct ata_params)); /* Clean up from previous instance of this device */ From owner-svn-src-stable@freebsd.org Thu Aug 8 02:29:12 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 66B79C0E44; Thu, 8 Aug 2019 02:29:12 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463skw1vLxz3DVW; Thu, 8 Aug 2019 02:29:12 +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 08B7E1E39C; Thu, 8 Aug 2019 02:29:12 +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 x782TBJ1038523; Thu, 8 Aug 2019 02:29:11 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782TBqN038522; Thu, 8 Aug 2019 02:29:11 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080229.x782TBqN038522@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:29:11 +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: r350734 - stable/12/sbin/camcontrol X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sbin/camcontrol X-SVN-Commit-Revision: 350734 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:29:12 -0000 Author: mav Date: Thu Aug 8 02:29:11 2019 New Revision: 350734 URL: https://svnweb.freebsd.org/changeset/base/350734 Log: MFC r350257: Make `camcontrol hpa` and `camcontrol ama` trigger reprobe. This makes OS automatically see the disk's new disk size. Modified: stable/12/sbin/camcontrol/camcontrol.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:28:32 2019 (r350733) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:29:11 2019 (r350734) @@ -315,6 +315,7 @@ static int scsiserial(struct cam_device *device, int t #endif /* MINIMALISTIC */ static int parse_btl(char *tstr, path_id_t *bus, target_id_t *target, lun_id_t *lun, cam_argmask *arglst); +static int reprobe(struct cam_device *device); static int dorescan_or_reset(int argc, char **argv, int rescan); static int rescan_or_reset_bus(path_id_t bus, int rescan); static int scanlun_or_reset_dev(path_id_t bus, target_id_t target, @@ -386,7 +387,6 @@ static int scsiprintopcodes(struct cam_device *device, static int scsiopcodes(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout, int verbose); -static int scsireprobe(struct cam_device *device); #endif /* MINIMALISTIC */ #ifndef min @@ -3115,6 +3115,8 @@ atahpa(struct cam_device *device, int retry_count, int timeout, ccb, &ident_buf); atahpa_print(ident_buf, hpasize, 1); + /* Hint CAM to reprobe the device. */ + reprobe(device); } } break; @@ -3257,6 +3259,8 @@ ataama(struct cam_device *device, int retry_count, int error = ata_do_identify(device, retry_count, timeout, ccb, &ident_buf); ataama_print(ident_buf, nativesize, 1); + /* Hint CAM to reprobe the device. */ + reprobe(device); } } break; @@ -9799,7 +9803,7 @@ bailout: #endif /* MINIMALISTIC */ static int -scsireprobe(struct cam_device *device) +reprobe(struct cam_device *device) { union ccb *ccb; int retval = 0; @@ -9811,7 +9815,7 @@ scsireprobe(struct cam_device *device) return (1); } - CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); + CCB_CLEAR_ALL_EXCEPT_HDR(ccb); ccb->ccb_h.func_code = XPT_REPROBE_LUN; @@ -10580,7 +10584,7 @@ main(int argc, char **argv) arglist & CAM_ARG_VERBOSE); break; case CAM_CMD_REPROBE: - error = scsireprobe(cam_dev); + error = reprobe(cam_dev); break; case CAM_CMD_ZONE: error = zone(cam_dev, argc, argv, combinedopt, From owner-svn-src-stable@freebsd.org Thu Aug 8 02:29:44 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 55C8AC0EAE; Thu, 8 Aug 2019 02:29:44 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463slX2KGTz3Dcn; Thu, 8 Aug 2019 02:29:44 +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 315CB1E39D; Thu, 8 Aug 2019 02:29:44 +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 x782TiZx038604; Thu, 8 Aug 2019 02:29:44 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x782ThYx038597; Thu, 8 Aug 2019 02:29:43 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080229.x782ThYx038597@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 02:29:43 +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: r350735 - in stable/12: sbin/camcontrol sys/cam/ata sys/cam/scsi sys/sys X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12: sbin/camcontrol sys/cam/ata sys/cam/scsi sys/sys X-SVN-Commit-Revision: 350735 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 02:29:44 -0000 Author: mav Date: Thu Aug 8 02:29:42 2019 New Revision: 350735 URL: https://svnweb.freebsd.org/changeset/base/350735 Log: MFC r350331: Make `camcontrol sanitize` support also ATA devices. ATA sanitize is functionally identical to SCSI, just uses different initiation commands and status reporting mechanism. While there, make kernel better handle sanitize commands and statuses. Modified: stable/12/sbin/camcontrol/camcontrol.8 stable/12/sbin/camcontrol/camcontrol.c stable/12/sys/cam/ata/ata_all.c stable/12/sys/cam/scsi/scsi_all.c stable/12/sys/sys/ata.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 02:29:11 2019 (r350734) +++ stable/12/sbin/camcontrol/camcontrol.8 Thu Aug 8 02:29:42 2019 (r350735) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 22, 2019 +.Dd July 25, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -1276,13 +1276,11 @@ will not be asked about the timeout if a timeout is sp command line. .El .It Ic sanitize -Issue the -.Tn SCSI -SANITIZE command to the named device. +Issue the SANITIZE command to the named device. .Pp .Em WARNING! WARNING! WARNING! .Pp -ALL data in the cache and on the disk will be destroyed or made inaccessible. +ALL data on the disk will be destroyed or made inaccessible. Recovery of the data is not possible. Use extreme caution when issuing this command. .Pp Modified: stable/12/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:29:11 2019 (r350734) +++ stable/12/sbin/camcontrol/camcontrol.c Thu Aug 8 02:29:42 2019 (r350735) @@ -362,7 +362,7 @@ static int ratecontrol(struct cam_device *device, int static int scsiformat(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout); -static int scsisanitize(struct cam_device *device, int argc, char **argv, +static int sanitize(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout); static int scsireportluns(struct cam_device *device, int argc, char **argv, @@ -1762,6 +1762,19 @@ atacapprint(struct ata_params *parm) } else { printf("no\n"); } + printf("Sanitize "); + if (parm->multi & ATA_SUPPORT_SANITIZE) { + printf("yes\t\t%s%s%s\n", + parm->multi & ATA_SUPPORT_BLOCK_ERASE_EXT ? "block, " : "", + parm->multi & ATA_SUPPORT_OVERWRITE_EXT ? "overwrite, " : "", + parm->multi & ATA_SUPPORT_CRYPTO_SCRAMBLE_EXT ? "crypto" : ""); + printf("Sanitize - commands allowed %s\n", + parm->multi & ATA_SUPPORT_SANITIZE_ALLOWED ? "yes" : "no"); + printf("Sanitize - antifreeze lock %s\n", + parm->multi & ATA_SUPPORT_ANTIFREEZE_LOCK_EXT ? "yes" : "no"); + } else { + printf("no\n"); + } } static int @@ -2008,6 +2021,11 @@ ata_do_cmd(struct cam_device *device, union ccb *ccb, res->lba_high_exp = res_pass16->lba_high_exp; res->sector_count = res_pass16->sector_count; res->sector_count_exp = res_pass16->sector_count_exp; + ccb->ccb_h.status &= ~CAM_STATUS_MASK; + if (res->status & ATA_STATUS_ERROR) + ccb->ccb_h.status |= CAM_ATA_STATUS_ERROR; + else + ccb->ccb_h.status |= CAM_REQ_CMP; } return (error); @@ -2498,12 +2516,6 @@ ata_do_identify(struct cam_device *device, int retry_c error = 0; } - if (arglist & CAM_ARG_VERBOSE) { - fprintf(stdout, "%s%d: Raw identify data:\n", - device->device_name, device->dev_unit_num); - dump_data(ptr, sizeof(struct ata_params)); - } - /* check for invalid (all zero) response */ if (error != 0) { warnx("Invalid identify response detected"); @@ -2534,6 +2546,12 @@ ataidentify(struct cam_device *device, int retry_count return (1); } + if (arglist & CAM_ARG_VERBOSE) { + printf("%s%d: Raw identify data:\n", + device->device_name, device->dev_unit_num); + dump_data((void*)ident_buf, sizeof(struct ata_params)); + } + if (ident_buf->support.command1 & ATA_SUPPORT_PROTECTED) { if (ata_read_native_max(device, retry_count, timeout, ccb, ident_buf, &hpasize) != 0) { @@ -6769,15 +6787,184 @@ scsiformat_bailout: } static int -scsisanitize(struct cam_device *device, int argc, char **argv, +sanitize_wait_ata(struct cam_device *device, union ccb *ccb, int quiet) +{ + struct ata_res *res; + int retval; + cam_status status; + u_int val, perc; + + do { + retval = ata_do_cmd(device, + ccb, + /*retries*/1, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SANITIZE, + /*features*/0x00, /* SANITIZE STATUS EXT */ + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + /*timeout*/10000, + /*is48bit*/1); + if (retval < 0) { + warn("error sending CAMIOCOMMAND ioctl"); + if (arglist & CAM_ARG_VERBOSE) { + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + } + return (1); + } + + status = ccb->ccb_h.status & CAM_STATUS_MASK; + if (status == CAM_REQ_CMP) { + res = &ccb->ataio.res; + if (res->sector_count_exp & 0x40) { + if (quiet == 0) { + val = (res->lba_mid << 8) + res->lba_low; + perc = 10000 * val; + fprintf(stdout, + "Sanitizing: %u.%02u%% (%d/%d)\r", + (perc / (0x10000 * 100)), + ((perc / 0x10000) % 100), + val, 0x10000); + fflush(stdout); + } + sleep(1); + } else if ((res->sector_count_exp & 0x80) == 0) { + warnx("Sanitize complete with an error. "); + return (1); + } else + break; + + } else if (status != CAM_REQ_CMP && status != CAM_REQUEUE_REQ) { + warnx("Unexpected CAM status %#x", status); + if (arglist & CAM_ARG_VERBOSE) + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + return (1); + } + } while (1); + return (0); +} + +static int +sanitize_wait_scsi(struct cam_device *device, union ccb *ccb, int task_attr, int quiet) +{ + int warnings = 0, retval; + cam_status status; + u_int val, perc; + + do { + CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); + + /* + * There's really no need to do error recovery or + * retries here, since we're just going to sit in a + * loop and wait for the device to finish sanitizing. + */ + scsi_test_unit_ready(&ccb->csio, + /* retries */ 0, + /* cbfcnp */ NULL, + /* tag_action */ task_attr, + /* sense_len */ SSD_FULL_SIZE, + /* timeout */ 5000); + + /* Disable freezing the device queue */ + ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; + + retval = cam_send_ccb(device, ccb); + + /* + * If we get an error from the ioctl, bail out. SCSI + * errors are expected. + */ + if (retval < 0) { + warn("error sending CAMIOCOMMAND ioctl"); + if (arglist & CAM_ARG_VERBOSE) { + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + } + return (1); + } + + status = ccb->ccb_h.status & CAM_STATUS_MASK; + if ((status == CAM_SCSI_STATUS_ERROR) && + ((ccb->ccb_h.status & CAM_AUTOSNS_VALID) != 0)) { + struct scsi_sense_data *sense; + int error_code, sense_key, asc, ascq; + + sense = &ccb->csio.sense_data; + scsi_extract_sense_len(sense, ccb->csio.sense_len - + ccb->csio.sense_resid, &error_code, &sense_key, + &asc, &ascq, /*show_errors*/ 1); + + /* + * According to the SCSI-3 spec, a drive that is in the + * middle of a sanitize should return NOT READY with an + * ASC of "logical unit not ready, sanitize in + * progress". The sense key specific bytes will then + * be a progress indicator. + */ + if ((sense_key == SSD_KEY_NOT_READY) + && (asc == 0x04) && (ascq == 0x1b)) { + uint8_t sks[3]; + + if ((scsi_get_sks(sense, ccb->csio.sense_len - + ccb->csio.sense_resid, sks) == 0) + && (quiet == 0)) { + val = scsi_2btoul(&sks[1]); + perc = 10000 * val; + fprintf(stdout, + "Sanitizing: %u.%02u%% (%d/%d)\r", + (perc / (0x10000 * 100)), + ((perc / 0x10000) % 100), + val, 0x10000); + fflush(stdout); + } else if ((quiet == 0) && (++warnings <= 1)) { + warnx("Unexpected SCSI Sense Key " + "Specific value returned " + "during sanitize:"); + scsi_sense_print(device, &ccb->csio, + stderr); + warnx("Unable to print status " + "information, but sanitze will " + "proceed."); + warnx("will exit when sanitize is " + "complete"); + } + sleep(1); + } else { + warnx("Unexpected SCSI error during sanitize"); + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + return (1); + } + + } else if (status != CAM_REQ_CMP && status != CAM_REQUEUE_REQ) { + warnx("Unexpected CAM status %#x", status); + if (arglist & CAM_ARG_VERBOSE) + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + return (1); + } + } while ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP); + return (0); +} + +static int +sanitize(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout) { union ccb *ccb; u_int8_t action = 0; int c; int ycount = 0, quiet = 0; - int error = 0, retval = 0; - int use_timeout = 10800 * 1000; + int error = 0; + int use_timeout; int immediate = 1; int invert = 0; int passes = 0; @@ -6786,14 +6973,25 @@ scsisanitize(struct cam_device *device, int argc, char const char *pattern = NULL; u_int8_t *data_ptr = NULL; u_int32_t dxfer_len = 0; - u_int8_t byte2 = 0; - int num_warnings = 0; + uint8_t byte2; + uint16_t feature, count; + uint64_t lba; int reportonly = 0; + camcontrol_devtype dt; + /* + * Get the device type, request no I/O be done to do this. + */ + error = get_device_type(device, -1, 0, 0, &dt); + if (error != 0 || (unsigned)dt > CC_DT_UNKNOWN) { + warnx("sanitize: can't get device type"); + return (1); + } + ccb = cam_getccb(device); if (ccb == NULL) { - warnx("scsisanitize: error allocating ccb"); + warnx("sanitize: error allocating ccb"); return (1); } @@ -6814,7 +7012,7 @@ scsisanitize(struct cam_device *device, int argc, char warnx("invalid service operation \"%s\"", optarg); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } break; case 'c': @@ -6822,7 +7020,7 @@ scsisanitize(struct cam_device *device, int argc, char if (passes < 1 || passes > 31) { warnx("invalid passes value %d", passes); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } break; case 'I': @@ -6841,7 +7039,9 @@ scsisanitize(struct cam_device *device, int argc, char reportonly = 1; break; case 'w': - immediate = 0; + /* ATA supports only immediate commands. */ + if (dt == CC_DT_SCSI) + immediate = 0; break; case 'y': ycount++; @@ -6855,7 +7055,7 @@ scsisanitize(struct cam_device *device, int argc, char if (action == 0) { warnx("an action is required"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } else if (action == SSZ_SERVICE_ACTION_OVERWRITE) { struct scsi_sanitize_parameter_list *pl; struct stat sb; @@ -6864,43 +7064,43 @@ scsisanitize(struct cam_device *device, int argc, char if (pattern == NULL) { warnx("overwrite action requires -P argument"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } fd = open(pattern, O_RDONLY); if (fd < 0) { warn("cannot open pattern file %s", pattern); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } if (fstat(fd, &sb) < 0) { warn("cannot stat pattern file %s", pattern); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } sz = sb.st_size; if (sz > SSZPL_MAX_PATTERN_LENGTH) { warnx("pattern file size exceeds maximum value %d", SSZPL_MAX_PATTERN_LENGTH); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } dxfer_len = sizeof(*pl) + sz; data_ptr = calloc(1, dxfer_len); if (data_ptr == NULL) { warnx("cannot allocate parameter list buffer"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } amt = read(fd, data_ptr + sizeof(*pl), sz); if (amt < 0) { warn("cannot read pattern file"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } else if (amt != sz) { warnx("short pattern file read"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } pl = (struct scsi_sanitize_parameter_list *)data_ptr; @@ -6926,7 +7126,7 @@ scsisanitize(struct cam_device *device, int argc, char warnx("%s argument only valid with overwrite " "operation", arg); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } } @@ -6934,26 +7134,41 @@ scsisanitize(struct cam_device *device, int argc, char fprintf(stdout, "You are about to REMOVE ALL DATA from the " "following device:\n"); - error = scsidoinquiry(device, argc, argv, combinedopt, - task_attr, retry_count, timeout); + if (dt == CC_DT_SCSI) { + error = scsidoinquiry(device, argc, argv, combinedopt, + task_attr, retry_count, timeout); + } else if (dt == CC_DT_ATA || dt == CC_DT_SATL) { + struct ata_params *ident_buf; + error = ata_do_identify(device, retry_count, timeout, + ccb, &ident_buf); + if (error == 0) { + printf("%s%d: ", device->device_name, + device->dev_unit_num); + ata_print_ident(ident_buf); + free(ident_buf); + } + } else + error = 1; if (error != 0) { - warnx("scsisanitize: error sending inquiry"); - goto scsisanitize_bailout; + warnx("sanitize: error sending inquiry"); + goto sanitize_bailout; } } if (ycount == 0) { if (!get_confirmation()) { error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } } if (timeout != 0) use_timeout = timeout; + else + use_timeout = (immediate ? 10 : 10800) * 1000; - if (quiet == 0) { + if (immediate == 0 && quiet == 0) { fprintf(stdout, "Current sanitize timeout is %d seconds\n", use_timeout / 1000); } @@ -6963,8 +7178,7 @@ scsisanitize(struct cam_device *device, int argc, char * timeout on the command line, ask them if they want the current * timeout. */ - if ((ycount == 0) - && (timeout == 0)) { + if (immediate == 0 && ycount == 0 && timeout == 0) { char str[1024]; int new_timeout = 0; @@ -6984,33 +7198,76 @@ scsisanitize(struct cam_device *device, int argc, char } } - byte2 = action; - if (ause != 0) - byte2 |= SSZ_UNRESTRICTED_EXIT; - if (immediate != 0) - byte2 |= SSZ_IMMED; + if (dt == CC_DT_SCSI) { + byte2 = action; + if (ause != 0) + byte2 |= SSZ_UNRESTRICTED_EXIT; + if (immediate != 0) + byte2 |= SSZ_IMMED; + scsi_sanitize(&ccb->csio, + /* retries */ retry_count, + /* cbfcnp */ NULL, + /* tag_action */ task_attr, + /* byte2 */ byte2, + /* control */ 0, + /* data_ptr */ data_ptr, + /* dxfer_len */ dxfer_len, + /* sense_len */ SSD_FULL_SIZE, + /* timeout */ use_timeout); - scsi_sanitize(&ccb->csio, - /* retries */ retry_count, - /* cbfcnp */ NULL, - /* tag_action */ task_attr, - /* byte2 */ byte2, - /* control */ 0, - /* data_ptr */ data_ptr, - /* dxfer_len */ dxfer_len, - /* sense_len */ SSD_FULL_SIZE, - /* timeout */ use_timeout); + ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; + if (arglist & CAM_ARG_ERR_RECOVER) + ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER; + if (cam_send_ccb(device, ccb) < 0) { + warn("error sending sanitize command"); + error = 1; + goto sanitize_bailout; + } + } else if (dt == CC_DT_ATA || dt == CC_DT_SATL) { + if (action == SSZ_SERVICE_ACTION_OVERWRITE) { + feature = 0x14; /* OVERWRITE EXT */ + lba = 0x4F5700000000 | scsi_4btoul(data_ptr + 4); + count = (passes == 0) ? 1 : (passes >= 16) ? 0 : passes; + if (invert) + count |= 0x80; /* INVERT PATTERN */ + if (ause) + count |= 0x10; /* FAILURE MODE */ + } else if (action == SSZ_SERVICE_ACTION_BLOCK_ERASE) { + feature = 0x12; /* BLOCK ERASE EXT */ + lba = 0x0000426B4572; + count = 0; + if (ause) + count |= 0x10; /* FAILURE MODE */ + } else if (action == SSZ_SERVICE_ACTION_CRYPTO_ERASE) { + feature = 0x11; /* CRYPTO SCRAMBLE EXT */ + lba = 0x000043727970; + count = 0; + if (ause) + count |= 0x10; /* FAILURE MODE */ + } else if (action == SSZ_SERVICE_ACTION_EXIT_MODE_FAILURE) { + feature = 0x00; /* SANITIZE STATUS EXT */ + lba = 0; + count = 1; /* CLEAR SANITIZE OPERATION FAILED */ + } else { + error = 1; + goto sanitize_bailout; + } - /* Disable freezing the device queue */ - ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; - - if (arglist & CAM_ARG_ERR_RECOVER) - ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER; - - if (cam_send_ccb(device, ccb) < 0) { - warn("error sending sanitize command"); - error = 1; - goto scsisanitize_bailout; + error = ata_do_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SANITIZE, + /*features*/feature, + /*lba*/lba, + /*sector_count*/count, + /*data_ptr*/NULL, + /*dxfer_len*/0, + /*timeout*/ use_timeout, + /*is48bit*/1); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { @@ -7038,7 +7295,7 @@ scsisanitize(struct cam_device *device, int argc, char CAM_EPF_ALL, stderr); } error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } /* @@ -7051,124 +7308,20 @@ scsisanitize(struct cam_device *device, int argc, char if (quiet == 0) { fprintf(stdout, "Sanitize Complete\n"); } - goto scsisanitize_bailout; + goto sanitize_bailout; } doreport: - do { - cam_status status; + if (dt == CC_DT_SCSI) { + error = sanitize_wait_scsi(device, ccb, task_attr, quiet); + } else if (dt == CC_DT_ATA || dt == CC_DT_SATL) { + error = sanitize_wait_ata(device, ccb, quiet); + } else + error = 1; + if (error == 0 && quiet == 0) + fprintf(stdout, "Sanitize Complete \n"); - CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); - - /* - * There's really no need to do error recovery or - * retries here, since we're just going to sit in a - * loop and wait for the device to finish sanitizing. - */ - scsi_test_unit_ready(&ccb->csio, - /* retries */ 0, - /* cbfcnp */ NULL, - /* tag_action */ task_attr, - /* sense_len */ SSD_FULL_SIZE, - /* timeout */ 5000); - - /* Disable freezing the device queue */ - ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; - - retval = cam_send_ccb(device, ccb); - - /* - * If we get an error from the ioctl, bail out. SCSI - * errors are expected. - */ - if (retval < 0) { - warn("error sending CAMIOCOMMAND ioctl"); - if (arglist & CAM_ARG_VERBOSE) { - cam_error_print(device, ccb, CAM_ESF_ALL, - CAM_EPF_ALL, stderr); - } - error = 1; - goto scsisanitize_bailout; - } - - status = ccb->ccb_h.status & CAM_STATUS_MASK; - - if ((status != CAM_REQ_CMP) - && (status == CAM_SCSI_STATUS_ERROR) - && ((ccb->ccb_h.status & CAM_AUTOSNS_VALID) != 0)) { - struct scsi_sense_data *sense; - int error_code, sense_key, asc, ascq; - - sense = &ccb->csio.sense_data; - scsi_extract_sense_len(sense, ccb->csio.sense_len - - ccb->csio.sense_resid, &error_code, &sense_key, - &asc, &ascq, /*show_errors*/ 1); - - /* - * According to the SCSI-3 spec, a drive that is in the - * middle of a sanitize should return NOT READY with an - * ASC of "logical unit not ready, sanitize in - * progress". The sense key specific bytes will then - * be a progress indicator. - */ - if ((sense_key == SSD_KEY_NOT_READY) - && (asc == 0x04) && (ascq == 0x1b)) { - uint8_t sks[3]; - - if ((scsi_get_sks(sense, ccb->csio.sense_len - - ccb->csio.sense_resid, sks) == 0) - && (quiet == 0)) { - int val; - u_int64_t percentage; - - val = scsi_2btoul(&sks[1]); - percentage = 10000 * val; - - fprintf(stdout, - "\rSanitizing: %ju.%02u %% " - "(%d/%d) done", - (uintmax_t)(percentage / - (0x10000 * 100)), - (unsigned)((percentage / - 0x10000) % 100), - val, 0x10000); - fflush(stdout); - } else if ((quiet == 0) - && (++num_warnings <= 1)) { - warnx("Unexpected SCSI Sense Key " - "Specific value returned " - "during sanitize:"); - scsi_sense_print(device, &ccb->csio, - stderr); - warnx("Unable to print status " - "information, but sanitze will " - "proceed."); - warnx("will exit when sanitize is " - "complete"); - } - sleep(1); - } else { - warnx("Unexpected SCSI error during sanitize"); - cam_error_print(device, ccb, CAM_ESF_ALL, - CAM_EPF_ALL, stderr); - error = 1; - goto scsisanitize_bailout; - } - - } else if (status != CAM_REQ_CMP) { - warnx("Unexpected CAM status %#x", status); - if (arglist & CAM_ARG_VERBOSE) - cam_error_print(device, ccb, CAM_ESF_ALL, - CAM_EPF_ALL, stderr); - error = 1; - goto scsisanitize_bailout; - } - } while((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP); - - if (quiet == 0) - fprintf(stdout, "\nSanitize Complete\n"); - -scsisanitize_bailout: +sanitize_bailout: if (fd >= 0) close(fd); if (data_ptr != NULL) @@ -10562,9 +10715,8 @@ main(int argc, char **argv) timeout); break; case CAM_CMD_SANITIZE: - error = scsisanitize(cam_dev, argc, argv, - combinedopt, task_attr, - retry_count, timeout); + error = sanitize(cam_dev, argc, argv, combinedopt, task_attr, + retry_count, timeout); break; case CAM_CMD_PERSIST: error = scsipersist(cam_dev, argc, argv, combinedopt, Modified: stable/12/sys/cam/ata/ata_all.c ============================================================================== --- stable/12/sys/cam/ata/ata_all.c Thu Aug 8 02:29:11 2019 (r350734) +++ stable/12/sys/cam/ata/ata_all.c Thu Aug 8 02:29:42 2019 (r350735) @@ -215,7 +215,16 @@ ata_op_string(struct ata_cmd *cmd) return ("SMART"); case 0xb1: return ("DEVICE CONFIGURATION"); case 0xb2: return ("SET_SECTOR_CONFIGURATION_EXT"); - case 0xb4: return ("SANITIZE_DEVICE"); + case 0xb4: + switch(cmd->features) { + case 0x00: return ("SANITIZE_STATUS_EXT"); + case 0x11: return ("CRYPTO_SCRAMBLE_EXT"); + case 0x12: return ("BLOCK_ERASE_EXT"); + case 0x14: return ("OVERWRITE_EXT"); + case 0x20: return ("SANITIZE_FREEZE_LOCK_EXT"); + case 0x40: return ("SANITIZE_ANTIFREEZE_LOCK_EXT"); + } + return ("SANITIZE_DEVICE"); case 0xc0: return ("CFA_ERASE"); case 0xc4: return ("READ_MUL"); case 0xc5: return ("WRITE_MUL"); Modified: stable/12/sys/cam/scsi/scsi_all.c ============================================================================== --- stable/12/sys/cam/scsi/scsi_all.c Thu Aug 8 02:29:11 2019 (r350734) +++ stable/12/sys/cam/scsi/scsi_all.c Thu Aug 8 02:29:42 2019 (r350735) @@ -379,7 +379,7 @@ static struct op_table_entry scsi_op_codes[] = { { 0x40, D | T | L | P | W | R | O | M | S | C, "CHANGE DEFINITION" }, /* 41 O WRITE SAME(10) */ { 0x41, D, "WRITE SAME(10)" }, - /* 42 O UNMAP */ + /* 42 O UNMAP */ { 0x42, D, "UNMAP" }, /* 42 O READ SUB-CHANNEL */ { 0x42, R, "READ SUB-CHANNEL" }, @@ -394,7 +394,8 @@ static struct op_table_entry scsi_op_codes[] = { { 0x46, R, "GET CONFIGURATION" }, /* 47 O PLAY AUDIO MSF */ { 0x47, R, "PLAY AUDIO MSF" }, - /* 48 */ + /* 48 O SANITIZE */ + { 0x48, D, "SANITIZE" }, /* 49 */ /* 4A M GET EVENT STATUS NOTIFICATION */ { 0x4A, R, "GET EVENT STATUS NOTIFICATION" }, @@ -1162,7 +1163,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x04, 0x1A, SS_RDEF, /* XXX TBD */ "Logical unit not ready, START/STOP UNIT command in progress") }, /* D B */ - { SST(0x04, 0x1B, SS_RDEF, /* XXX TBD */ + { SST(0x04, 0x1B, SS_WAIT | EBUSY, "Logical unit not ready, sanitize in progress") }, /* DT MAEB */ { SST(0x04, 0x1C, SS_START | SSQ_DECREMENT_COUNT | ENXIO, @@ -1453,7 +1454,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x11, 0x14, SS_RDEF, /* XXX TBD */ "Read error - LBA marked bad by application client") }, /* D */ - { SST(0x11, 0x15, SS_RDEF, /* XXX TBD */ + { SST(0x11, 0x15, SS_FATAL | EIO, "Write after sanitize required") }, /* D W O BK */ { SST(0x12, 0x00, SS_RDEF, @@ -2064,7 +2065,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x31, 0x02, SS_RDEF, /* XXX TBD */ "Zoned formatting failed due to spare linking") }, /* D B */ - { SST(0x31, 0x03, SS_RDEF, /* XXX TBD */ + { SST(0x31, 0x03, SS_FATAL | EIO, "SANITIZE command failed") }, /* D W O BK */ { SST(0x32, 0x00, SS_RDEF, Modified: stable/12/sys/sys/ata.h ============================================================================== --- stable/12/sys/sys/ata.h Thu Aug 8 02:29:11 2019 (r350734) +++ stable/12/sys/sys/ata.h Thu Aug 8 02:29:42 2019 (r350735) @@ -92,6 +92,8 @@ struct ata_params { /*057*/ u_int16_t current_size_1; /*058*/ u_int16_t current_size_2; /*059*/ u_int16_t multi; +#define ATA_SUPPORT_SANITIZE_ALLOWED 0x0800 +#define ATA_SUPPORT_ANTIFREEZE_LOCK_EXT 0x0400 #define ATA_MULTI_VALID 0x0100 /*060*/ u_int16_t lba_size_1; @@ -436,6 +438,7 @@ struct ata_params { #define ATA_ATAPI_IDENTIFY 0xa1 /* get ATAPI params*/ #define ATA_SERVICE 0xa2 /* service command */ #define ATA_SMART_CMD 0xb0 /* SMART command */ +#define ATA_SANITIZE 0xb4 /* sanitize device */ #define ATA_CFA_ERASE 0xc0 /* CFA erase */ #define ATA_READ_MUL 0xc4 /* read multi */ #define ATA_WRITE_MUL 0xc5 /* write multi */ From owner-svn-src-stable@freebsd.org Thu Aug 8 03:01:36 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 00610C195E; Thu, 8 Aug 2019 03:01:36 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 463tSH6BB0z3GCT; Thu, 8 Aug 2019 03:01: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 B79DF1EA6B; Thu, 8 Aug 2019 03:01: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 x7831ZZU059792; Thu, 8 Aug 2019 03:01:35 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7831ZVq059757; Thu, 8 Aug 2019 03:01:35 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908080301.x7831ZVq059757@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 03:01: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: r350736 - stable/12/sys/sys X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/sys X-SVN-Commit-Revision: 350736 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 03:01:36 -0000 Author: mav Date: Thu Aug 8 03:01:35 2019 New Revision: 350736 URL: https://svnweb.freebsd.org/changeset/base/350736 Log: MFC r348376 (by rpokala): Add bits related to SANITIZE, SED, and form-factor to (struct ata_params) Based on ATA-ACS-4, recognize several bit-fields related to the ATA SANITIZE feature-set, Self-Encrypting Drives, and form-factor identification. As part of this change, the name of word 48 of (struct ata_params) is being changed. The previous name, "usedmovsd" does not appear to be related to the previous definition of the word ("double-word IO supported"). The word was defined that way in ATA-1 (1994), but it was marked "Reserved" (meaning "unused, but might be used in the future") in ATA-2 (1996). It stayed that way until ATA-8 (2008), which re-defined it as implemented in this change. The field is not used in-tree. Modified: stable/12/sys/sys/ata.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/sys/ata.h ============================================================================== --- stable/12/sys/sys/ata.h Thu Aug 8 02:29:42 2019 (r350735) +++ stable/12/sys/sys/ata.h Thu Aug 8 03:01:35 2019 (r350736) @@ -66,7 +66,8 @@ struct ata_params { /*023*/ u_int8_t revision[8]; /* firmware revision */ /*027*/ u_int8_t model[40]; /* model name */ /*047*/ u_int16_t sectors_intr; /* sectors per interrupt */ -/*048*/ u_int16_t usedmovsd; /* double word read/write? */ +/*048*/ u_int16_t tcg; /* Trusted Computing Group */ +#define ATA_SUPPORT_TCG 0x0001 /*049*/ u_int16_t capabilities1; #define ATA_SUPPORT_DMA 0x0100 #define ATA_SUPPORT_LBA 0x0200 @@ -92,6 +93,10 @@ struct ata_params { /*057*/ u_int16_t current_size_1; /*058*/ u_int16_t current_size_2; /*059*/ u_int16_t multi; +#define ATA_SUPPORT_BLOCK_ERASE_EXT 0x8000 +#define ATA_SUPPORT_OVERWRITE_EXT 0x4000 +#define ATA_SUPPORT_CRYPTO_SCRAMBLE_EXT 0x2000 +#define ATA_SUPPORT_SANITIZE 0x1000 #define ATA_SUPPORT_SANITIZE_ALLOWED 0x0800 #define ATA_SUPPORT_ANTIFREEZE_LOCK_EXT 0x0400 #define ATA_MULTI_VALID 0x0100 @@ -109,6 +114,7 @@ struct ata_params { /*069*/ u_int16_t support3; #define ATA_SUPPORT_RZAT 0x0020 #define ATA_SUPPORT_DRAT 0x4000 +#define ATA_ENCRYPTS_ALL_USER_DATA 0x0010 /* Self-encrypting drive */ #define ATA_SUPPORT_ZONE_MASK 0x0003 #define ATA_SUPPORT_ZONE_NR 0x0000 #define ATA_SUPPORT_ZONE_HOST_AWARE 0x0001 @@ -264,7 +270,19 @@ struct ata_params { /*162*/ u_int16_t cfa_kms_support; /*163*/ u_int16_t cfa_trueide_modes; /*164*/ u_int16_t cfa_memory_modes; - u_int16_t reserved165[4]; + u_int16_t reserved165[3]; +/*168*/ u_int16_t form_factor; +#define ATA_FORM_FACTOR_MASK 0x000f +#define ATA_FORM_FACTOR_NOT_REPORTED 0x0000 +#define ATA_FORM_FACTOR_5_25 0x0001 +#define ATA_FORM_FACTOR_3_5 0x0002 +#define ATA_FORM_FACTOR_2_5 0x0003 +#define ATA_FORM_FACTOR_1_8 0x0004 +#define ATA_FORM_FACTOR_SUB_1_8 0x0005 +#define ATA_FORM_FACTOR_MSATA 0x0006 +#define ATA_FORM_FACTOR_M_2 0x0007 +#define ATA_FORM_FACTOR_MICRO_SSD 0x0008 +#define ATA_FORM_FACTOR_C_FAST 0x0009 /*169*/ u_int16_t support_dsm; #define ATA_SUPPORT_DSM_TRIM 0x0001 u_int16_t reserved170[6]; From owner-svn-src-stable@freebsd.org Thu Aug 8 17:28:55 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BC6EDAC441; Thu, 8 Aug 2019 17:28:55 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464Fj34Sksz4bM9; Thu, 8 Aug 2019 17:28:55 +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 76E7292B; Thu, 8 Aug 2019 17:28:55 +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 x78HStVu073801; Thu, 8 Aug 2019 17:28:55 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78HStFw073800; Thu, 8 Aug 2019 17:28:55 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081728.x78HStFw073800@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 17:28:55 +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: r350762 - stable/11/sys/cam/ctl X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/ctl X-SVN-Commit-Revision: 350762 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 17:28:55 -0000 Author: mav Date: Thu Aug 8 17:28:55 2019 New Revision: 350762 URL: https://svnweb.freebsd.org/changeset/base/350762 Log: MFC r327239 (by manu): ctl: Correct comment in ctl_worker_thread The incoming queue is handled before the RtR one. No functional change. Modified: stable/11/sys/cam/ctl/ctl.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/ctl/ctl.c ============================================================================== --- stable/11/sys/cam/ctl/ctl.c Thu Aug 8 17:03:30 2019 (r350761) +++ stable/11/sys/cam/ctl/ctl.c Thu Aug 8 17:28:55 2019 (r350762) @@ -13249,8 +13249,8 @@ ctl_work_thread(void *arg) * We handle the queues in this order: * - ISC * - done queue (to free up resources, unblock other commands) - * - RtR queue * - incoming queue + * - RtR queue * * If those queues are empty, we break out of the loop and * go to sleep. From owner-svn-src-stable@freebsd.org Thu Aug 8 17:30:52 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3FE9DAC500; Thu, 8 Aug 2019 17:30:52 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464FlJ0yCmz4bWd; Thu, 8 Aug 2019 17:30:52 +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 0397C940; Thu, 8 Aug 2019 17:30:52 +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 x78HUpSI074923; Thu, 8 Aug 2019 17:30:51 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78HUpx0074922; Thu, 8 Aug 2019 17:30:51 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081730.x78HUpx0074922@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 17:30:51 +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: r350763 - stable/11/sys/cam/ata X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/ata X-SVN-Commit-Revision: 350763 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 17:30:52 -0000 Author: mav Date: Thu Aug 8 17:30:51 2019 New Revision: 350763 URL: https://svnweb.freebsd.org/changeset/base/350763 Log: MFC r327577 (by eadler): cam/da: QUIRK: Add 4K quirks for WD Red and Black MHDDs PR: 188685 Modified: stable/11/sys/cam/ata/ata_da.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/ata/ata_da.c ============================================================================== --- stable/11/sys/cam/ata/ata_da.c Thu Aug 8 17:28:55 2019 (r350762) +++ stable/11/sys/cam/ata/ata_da.c Thu Aug 8 17:30:51 2019 (r350763) @@ -357,7 +357,12 @@ static struct ada_quirk_entry ada_quirk_table[] = }, { /* WDC Caviar Black Advanced Format (4k) drives */ - { T_DIRECT, SIP_MEDIA_FIXED, "*", "WDC WD??????EX*", "*" }, + { T_DIRECT, SIP_MEDIA_FIXED, "*", "WDC WD????AZEX*", "*" }, + /*quirks*/ADA_Q_4K + }, + { + /* WDC Caviar Black Advanced Format (4k) drives */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "WDC WD????FZEX*", "*" }, /*quirks*/ADA_Q_4K }, { From owner-svn-src-stable@freebsd.org Thu Aug 8 17:55:18 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5F78CAD80C; Thu, 8 Aug 2019 17:55:18 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464GHV1mnvz4dSV; Thu, 8 Aug 2019 17:55:18 +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 201DFE98; Thu, 8 Aug 2019 17:55:18 +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 x78HtIhq091507; Thu, 8 Aug 2019 17:55:18 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78HtHVP091506; Thu, 8 Aug 2019 17:55:17 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081755.x78HtHVP091506@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 17:55:17 +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: r350765 - stable/11/sys/cam/ata X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/ata X-SVN-Commit-Revision: 350765 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 17:55:18 -0000 Author: mav Date: Thu Aug 8 17:55:17 2019 New Revision: 350765 URL: https://svnweb.freebsd.org/changeset/base/350765 Log: MFC r343129 (by gonzo): [ata] Add workaround for KingDian S200 SSD crash on receiving TRIM command - Add ADA_Q_NO_TRIM quirk to be used with the device that falsely advertise TRIM support - Add ADA_Q_NO_TRIM entry for KingDian S200 SSD PR: 222802 Modified: stable/11/sys/cam/ata/ata_da.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/ata/ata_da.c ============================================================================== --- stable/11/sys/cam/ata/ata_da.c Thu Aug 8 17:48:07 2019 (r350764) +++ stable/11/sys/cam/ata/ata_da.c Thu Aug 8 17:55:17 2019 (r350765) @@ -116,7 +116,8 @@ typedef enum { ADA_Q_4K = 0x01, ADA_Q_NCQ_TRIM_BROKEN = 0x02, ADA_Q_LOG_BROKEN = 0x04, - ADA_Q_SMR_DM = 0x08 + ADA_Q_SMR_DM = 0x08, + ADA_Q_NO_TRIM = 0x10 } ada_quirks; #define ADA_Q_BIT_STRING \ @@ -124,7 +125,8 @@ typedef enum { "\0014K" \ "\002NCQ_TRIM_BROKEN" \ "\003LOG_BROKEN" \ - "\004SMR_DM" + "\004SMR_DM" \ + "\005NO_TRIM" typedef enum { ADA_CCB_RAHEAD = 0x01, @@ -534,6 +536,14 @@ static struct ada_quirk_entry ada_quirk_table[] = }, { /* + * KingDian S200 60GB P0921B + * Trimming crash the SSD + */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "KingDian S200 *", "*" }, + /*quirks*/ADA_Q_NO_TRIM + }, + { + /* * Kingston E100 Series SSDs * 4k optimised & trim only works in 4k requests + 4k aligned */ @@ -1803,6 +1813,10 @@ adaregister(struct cam_periph *periph, void *arg) softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; + /* Device lies about TRIM capability. */ + if ((softc->quirks & ADA_Q_NO_TRIM) && + (softc->flags & ADA_FLAG_CAN_TRIM)) + softc->flags &= ~ADA_FLAG_CAN_TRIM; if (softc->flags & ADA_FLAG_CAN_TRIM) { softc->disk->d_flags |= DISKFLAG_CANDELETE; softc->disk->d_delmaxsize = softc->params.secsize * From owner-svn-src-stable@freebsd.org Thu Aug 8 17:56:18 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 62E74AD90B; Thu, 8 Aug 2019 17:56:18 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464GJf1x1kz4dkZ; Thu, 8 Aug 2019 17:56:18 +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 240F0EA8; Thu, 8 Aug 2019 17:56:18 +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 x78HuILY091678; Thu, 8 Aug 2019 17:56:18 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78HuHJR091677; Thu, 8 Aug 2019 17:56:17 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081756.x78HuHJR091677@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 17:56:17 +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: r350767 - in stable/11/sys/cam: ata scsi X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/11/sys/cam: ata scsi X-SVN-Commit-Revision: 350767 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 17:56:18 -0000 Author: mav Date: Thu Aug 8 17:56:17 2019 New Revision: 350767 URL: https://svnweb.freebsd.org/changeset/base/350767 Log: MFC r343814 (by imp): Add quirk for Sansisk X400 drives Certain versions of Sandisk x400 firmware can hang under extremely heavly load of large I/Os for prolonged periods of time. Newer / current versions work fine, and should be used where possible. Where not possible, this quirk ensures that I/O requests are limited to 128k to avoids the bug, even under extreme load. Since MAXPHYS is 128k, only users with custom kernels are at risk on the older firmware. Once all known users of the older firmware have upgraded, this quirk will be removed. Modified: stable/11/sys/cam/ata/ata_da.c stable/11/sys/cam/scsi/scsi_da.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/ata/ata_da.c ============================================================================== --- stable/11/sys/cam/ata/ata_da.c Thu Aug 8 17:55:19 2019 (r350766) +++ stable/11/sys/cam/ata/ata_da.c Thu Aug 8 17:56:17 2019 (r350767) @@ -117,7 +117,8 @@ typedef enum { ADA_Q_NCQ_TRIM_BROKEN = 0x02, ADA_Q_LOG_BROKEN = 0x04, ADA_Q_SMR_DM = 0x08, - ADA_Q_NO_TRIM = 0x10 + ADA_Q_NO_TRIM = 0x10, + ADA_Q_128KB = 0x20 } ada_quirks; #define ADA_Q_BIT_STRING \ @@ -126,7 +127,8 @@ typedef enum { "\002NCQ_TRIM_BROKEN" \ "\003LOG_BROKEN" \ "\004SMR_DM" \ - "\005NO_TRIM" + "\005NO_TRIM" \ + "\006128KB" typedef enum { ADA_CCB_RAHEAD = 0x01, @@ -268,6 +270,11 @@ struct ada_quirk_entry { static struct ada_quirk_entry ada_quirk_table[] = { { + /* Sandisk X400 */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "SanDisk?SD8SB8U1T00*", "X4162000*" }, + /*quirks*/ADA_Q_128KB + }, + { /* Hitachi Advanced Format (4k) drives */ { T_DIRECT, SIP_MEDIA_FIXED, "*", "Hitachi H??????????E3*", "*" }, /*quirks*/ADA_Q_4K @@ -1808,6 +1815,8 @@ adaregister(struct cam_periph *periph, void *arg) maxio = min(maxio, 65536 * softc->params.secsize); else /* 28bit ATA command limit */ maxio = min(maxio, 256 * softc->params.secsize); + if (softc->quirks & ADA_Q_128KB) + maxio = min(maxio, 128 * 1024); softc->disk->d_maxsize = maxio; softc->disk->d_unit = periph->unit_number; softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; Modified: stable/11/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_da.c Thu Aug 8 17:55:19 2019 (r350766) +++ stable/11/sys/cam/scsi/scsi_da.c Thu Aug 8 17:56:17 2019 (r350767) @@ -125,7 +125,8 @@ typedef enum { DA_Q_NO_UNMAP = 0x20, DA_Q_RETRY_BUSY = 0x40, DA_Q_SMR_DM = 0x80, - DA_Q_STRICT_UNMAP = 0x100 + DA_Q_STRICT_UNMAP = 0x100, + DA_Q_128KB = 0x200 } da_quirks; #define DA_Q_BIT_STRING \ @@ -138,7 +139,8 @@ typedef enum { "\006NO_UNMAP" \ "\007RETRY_BUSY" \ "\010SMR_DM" \ - "\011STRICT_UNMAP" + "\011STRICT_UNMAP" \ + "\012128KB" typedef enum { DA_CCB_PROBE_RC = 0x01, @@ -847,6 +849,11 @@ static struct da_quirk_entry da_quirk_table[] = }, /* ATA/SATA devices over SAS/USB/... */ { + /* Sandisk X400 */ + { T_DIRECT, SIP_MEDIA_FIXED, "ATA", "SanDisk SD8SB8U1*", "*" }, + /*quirks*/DA_Q_128KB + }, + { /* Hitachi Advanced Format (4k) drives */ { T_DIRECT, SIP_MEDIA_FIXED, "Hitachi", "H??????????E3*", "*" }, /*quirks*/DA_Q_4K @@ -2612,6 +2619,8 @@ daregister(struct cam_periph *periph, void *arg) softc->maxio = MAXPHYS; /* for safety */ else softc->maxio = cpi.maxio; + if (softc->quirks & DA_Q_128KB) + softc->maxio = min(softc->maxio, 128 * 1024); softc->disk->d_maxsize = softc->maxio; softc->disk->d_unit = periph->unit_number; softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; From owner-svn-src-stable@freebsd.org Thu Aug 8 17:58:15 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A42C9ADA04; Thu, 8 Aug 2019 17:58:15 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464GLv3vT9z4dt5; Thu, 8 Aug 2019 17:58:15 +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 678B9EB1; Thu, 8 Aug 2019 17:58:15 +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 x78HwFdT091849; Thu, 8 Aug 2019 17:58:15 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78HwFEI091848; Thu, 8 Aug 2019 17:58:15 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081758.x78HwFEI091848@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 17:58:15 +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: r350768 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350768 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 17:58:15 -0000 Author: mav Date: Thu Aug 8 17:58:14 2019 New Revision: 350768 URL: https://svnweb.freebsd.org/changeset/base/350768 Log: MFC r344701 (by smh): Fix incorrect / unused sector_count for identify requests Fix incorrect / unused sector_count for identify requests from camcontrol. Modified: stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 17:56:17 2019 (r350767) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 17:58:14 2019 (r350768) @@ -2125,7 +2125,7 @@ ata_do_identify(struct cam_device *device, int retry_c /*command*/command, /*features*/0, /*lba*/0, - /*sector_count*/(u_int8_t)sizeof(struct ata_params), + /*sector_count*/0, /*data_ptr*/(u_int8_t *)ptr, /*dxfer_len*/sizeof(struct ata_params), /*timeout*/timeout ? timeout : 30 * 1000, @@ -2145,8 +2145,7 @@ ata_do_identify(struct cam_device *device, int retry_c /*command*/retry_command, /*features*/0, /*lba*/0, - /*sector_count*/(u_int8_t) - sizeof(struct ata_params), + /*sector_count*/0, /*data_ptr*/(u_int8_t *)ptr, /*dxfer_len*/sizeof(struct ata_params), /*timeout*/timeout ? timeout : 30 * 1000, From owner-svn-src-stable@freebsd.org Thu Aug 8 17:59:04 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CF3DBADAC2; Thu, 8 Aug 2019 17:59:04 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464GMr59Gfz4f5v; Thu, 8 Aug 2019 17:59:04 +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 9311FEB7; Thu, 8 Aug 2019 17:59:04 +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 x78Hx499092083; Thu, 8 Aug 2019 17:59:04 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78Hx48A092081; Thu, 8 Aug 2019 17:59:04 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081759.x78Hx48A092081@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 17:59:04 +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: r350769 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350769 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 17:59:04 -0000 Author: mav Date: Thu Aug 8 17:59:03 2019 New Revision: 350769 URL: https://svnweb.freebsd.org/changeset/base/350769 Log: MFC r345051 (by imp): Add -l to camcontrol readcap. The -l flag sends only the READ CAPACITY (16) sevice action. Normally we send the READ CAPACITY (10) command, and only send RC16 when the capacity is larger than 2TB (since that's the max RC10 can report). However, some badly programmed drives report different numbers for RC10 and RC16. This can be hard to diagnose, but generally there's a "Logical block address out of range" error when RC16 reports a larger number than RC10 and the RC10 number is the correct one. By comparing the output of readcap with and without the -l argmuent, one can determine if there's a mismatch and if the DA_Q_NO_RC16 quirk is needed. Modified: stable/11/sbin/camcontrol/camcontrol.8 stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 17:58:14 2019 (r350768) +++ stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 17:59:03 2019 (r350769) @@ -78,6 +78,7 @@ .Op Fl b .Op Fl h .Op Fl H +.Op Fl l .Op Fl N .Op Fl q .Op Fl s @@ -544,6 +545,11 @@ or .Fl b . .It Fl H Print out the device size in human readable (base 10, 1K == 1000) format. +.It Fl l +Skip sending the SCSI READ CAPACITY (10) command. +Send only the SCSI READ CAPACITY (16) service action and report +its results. +When the two do not match, a quirk is needed to resolve the ambiguity. .It Fl N Print out the number of blocks in the device instead of the last logical block. Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 17:58:14 2019 (r350768) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 17:59:03 2019 (r350769) @@ -198,7 +198,7 @@ static struct camcontrol_opts option_table[] = { {"load", CAM_CMD_STARTSTOP, CAM_ARG_START_UNIT | CAM_ARG_EJECT, NULL}, {"eject", CAM_CMD_STARTSTOP, CAM_ARG_EJECT, NULL}, {"reportluns", CAM_CMD_REPORTLUNS, CAM_ARG_NONE, "clr:"}, - {"readcapacity", CAM_CMD_READCAP, CAM_ARG_NONE, "bhHNqs"}, + {"readcapacity", CAM_CMD_READCAP, CAM_ARG_NONE, "bhHlNqs"}, {"reprobe", CAM_CMD_REPROBE, CAM_ARG_NONE, NULL}, #endif /* MINIMALISTIC */ {"rescan", CAM_CMD_RESCAN, CAM_ARG_NONE, NULL}, @@ -6947,7 +6947,7 @@ scsireadcapacity(struct cam_device *device, int argc, char *combinedopt, int task_attr, int retry_count, int timeout) { union ccb *ccb; - int blocksizeonly, humanize, numblocks, quiet, sizeonly, baseten; + int blocksizeonly, humanize, numblocks, quiet, sizeonly, baseten, longonly; struct scsi_read_capacity_data rcap; struct scsi_read_capacity_data_long rcaplong; uint64_t maxsector; @@ -6957,6 +6957,7 @@ scsireadcapacity(struct cam_device *device, int argc, blocksizeonly = 0; humanize = 0; + longonly = 0; numblocks = 0; quiet = 0; sizeonly = 0; @@ -6985,6 +6986,9 @@ scsireadcapacity(struct cam_device *device, int argc, humanize++; baseten++; break; + case 'l': + longonly++; + break; case 'N': numblocks++; break; @@ -7027,6 +7031,9 @@ scsireadcapacity(struct cam_device *device, int argc, goto bailout; } + if (longonly != 0) + goto long_only; + scsi_read_capacity(&ccb->csio, /*retries*/ retry_count, /*cbfcnp*/ NULL, @@ -7069,6 +7076,7 @@ scsireadcapacity(struct cam_device *device, int argc, if (maxsector != 0xffffffff) goto do_print; +long_only: scsi_read_capacity_16(&ccb->csio, /*retries*/ retry_count, /*cbfcnp*/ NULL, @@ -9017,7 +9025,7 @@ usage(int printlong) " camcontrol identify [dev_id][generic args] [-v]\n" " camcontrol reportluns [dev_id][generic args] [-c] [-l] [-r report]\n" " camcontrol readcap [dev_id][generic args] [-b] [-h] [-H] [-N]\n" -" [-q] [-s]\n" +" [-q] [-s] [-l]\n" " camcontrol start [dev_id][generic args]\n" " camcontrol stop [dev_id][generic args]\n" " camcontrol load [dev_id][generic args]\n" From owner-svn-src-stable@freebsd.org Thu Aug 8 18:00:00 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F14B6ADB5F; Thu, 8 Aug 2019 18:00:00 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464GNw67cJz4fDL; Thu, 8 Aug 2019 18:00:00 +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 B5BC6EC2; Thu, 8 Aug 2019 18:00:00 +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 x78I00I4092249; Thu, 8 Aug 2019 18:00:00 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78I00Dr092248; Thu, 8 Aug 2019 18:00:00 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081800.x78I00Dr092248@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 18:00:00 +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: r350770 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350770 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 18:00:01 -0000 Author: mav Date: Thu Aug 8 18:00:00 2019 New Revision: 350770 URL: https://svnweb.freebsd.org/changeset/base/350770 Log: MFC r345060 (by 0mp): camcontrol.8: Bump date after r345051 Modified: stable/11/sbin/camcontrol/camcontrol.8 Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 17:59:03 2019 (r350769) +++ stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 18:00:00 2019 (r350770) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 1, 2017 +.Dd March 12, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME From owner-svn-src-stable@freebsd.org Thu Aug 8 18:00:37 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BD1C0ADBF4; Thu, 8 Aug 2019 18:00:37 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464GPd4Cq6z4fM0; Thu, 8 Aug 2019 18:00:37 +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 72396EC4; Thu, 8 Aug 2019 18:00:37 +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 x78I0bD3093129; Thu, 8 Aug 2019 18:00:37 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78I0b91093128; Thu, 8 Aug 2019 18:00:37 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081800.x78I0b91093128@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 18:00: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: r350771 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350771 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 18:00:37 -0000 Author: mav Date: Thu Aug 8 18:00:37 2019 New Revision: 350771 URL: https://svnweb.freebsd.org/changeset/base/350771 Log: MFC r345363 (by imp): Make WD and WDC aliases for HGST. HGST was bought by WDC. Over the years, it has sold different drives branded as HGST, WD or WDC. All of them need the HGST workaround of sending 4k-sized packets (or multiples of 4k). And the ones that don't really need this aren't broken by this change. Submitter is the vendor who has tested these changes on a number of drives. I've simplified it slightly, since we don't need additional vendors for this at this time. Modified: stable/11/sbin/camcontrol/fwdownload.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/fwdownload.c ============================================================================== --- stable/11/sbin/camcontrol/fwdownload.c Thu Aug 8 18:00:00 2019 (r350770) +++ stable/11/sbin/camcontrol/fwdownload.c Thu Aug 8 18:00:37 2019 (r350771) @@ -212,6 +212,10 @@ static struct fw_vendor vendors_list[] = { 0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT}, {VENDOR_SMART, "SmrtStor", T_DIRECT, 0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT}, + {VENDOR_HGST, "WD", T_DIRECT, + 0x1000, 0x07, 0x07, 1, 0, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT}, + {VENDOR_HGST, "WDC", T_DIRECT, + 0x1000, 0x07, 0x07, 1, 0, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT}, /* * We match any ATA device. This is really just a placeholder, From owner-svn-src-stable@freebsd.org Thu Aug 8 18:42:40 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 74283AED09; Thu, 8 Aug 2019 18:42:40 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464HL83441z4hfm; Thu, 8 Aug 2019 18:42:40 +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 4A87717BB; Thu, 8 Aug 2019 18:42:40 +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 x78Igegx021413; Thu, 8 Aug 2019 18:42:40 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78IgeYv021412; Thu, 8 Aug 2019 18:42:40 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081842.x78IgeYv021412@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 18:42:40 +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: r350773 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350773 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 18:42:40 -0000 Author: mav Date: Thu Aug 8 18:42:39 2019 New Revision: 350773 URL: https://svnweb.freebsd.org/changeset/base/350773 Log: MFC r320861 (by ngie): Fix whitespace bugs - Delete trailing whitespace. - Replace 8 single column spaces with hard tabs. - Delete lines with consisting purely of blank space. - Add space between `return` and `(`, per style(9). Special care was taken to not blindly replace 8 single column spaces with tabs; doing so could break tools that do strict string comparisons with camcontrol output. Modified: stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 18:08:13 2019 (r350772) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 18:42:39 2019 (r350773) @@ -375,14 +375,14 @@ getoption(struct camcontrol_opts *table, char *arg, ui *argnum = opts->argnum; *subopt = opts->subopt; if (++num_matches > 1) - return(CC_OR_AMBIGUOUS); + return (CC_OR_AMBIGUOUS); } } if (num_matches > 0) - return(CC_OR_FOUND); + return (CC_OR_FOUND); else - return(CC_OR_NOT_FOUND); + return (CC_OR_NOT_FOUND); } #ifndef MINIMALISTIC @@ -404,7 +404,7 @@ getdevlist(struct cam_device *device) if (cam_send_ccb(device, ccb) < 0) { perror("error getting device list"); cam_freeccb(ccb); - return(1); + return (1); } status[0] = '\0'; @@ -442,7 +442,7 @@ getdevlist(struct cam_device *device) cam_freeccb(ccb); - return(error); + return (error); } #endif /* MINIMALISTIC */ @@ -471,7 +471,7 @@ getdevtree(int argc, char **argv, char *combinedopt) if ((fd = open(XPT_DEVICE, O_RDWR)) == -1) { warn("couldn't open %s", XPT_DEVICE); - return(1); + return (1); } bzero(&ccb, sizeof(union ccb)); @@ -487,7 +487,7 @@ getdevtree(int argc, char **argv, char *combinedopt) if (ccb.cdm.matches == NULL) { warnx("can't malloc memory for matches"); close(fd); - return(1); + return (1); } ccb.cdm.num_matches = 0; @@ -663,7 +663,7 @@ getdevtree(int argc, char **argv, char *combinedopt) close(fd); - return(error); + return (error); } #ifndef MINIMALISTIC @@ -699,7 +699,7 @@ testunitready(struct cam_device *device, int task_attr } cam_freeccb(ccb); - return(1); + return (1); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { @@ -718,7 +718,7 @@ testunitready(struct cam_device *device, int task_attr cam_freeccb(ccb); - return(error); + return (error); } static int @@ -768,7 +768,7 @@ scsistart(struct cam_device *device, int startstop, in } cam_freeccb(ccb); - return(1); + return (1); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) @@ -802,7 +802,7 @@ scsistart(struct cam_device *device, int startstop, in cam_freeccb(ccb); - return(error); + return (error); } int @@ -839,7 +839,7 @@ scsidoinquiry(struct cam_device *device, int argc, cha error = scsiinquiry(device, task_attr, retry_count, timeout); if (error != 0) - return(error); + return (error); if (arglist & CAM_ARG_GET_SERIAL) scsiserial(device, task_attr, retry_count, timeout); @@ -847,7 +847,7 @@ scsidoinquiry(struct cam_device *device, int argc, cha if (arglist & CAM_ARG_GET_XFERRATE) error = camxferrate(device); - return(error); + return (error); } static int @@ -862,7 +862,7 @@ scsiinquiry(struct cam_device *device, int task_attr, if (ccb == NULL) { warnx("couldn't allocate CCB"); - return(1); + return (1); } /* cam_getccb cleans up the header, caller has to zero the payload */ @@ -874,7 +874,7 @@ scsiinquiry(struct cam_device *device, int task_attr, if (inq_buf == NULL) { cam_freeccb(ccb); warnx("can't malloc memory for inquiry\n"); - return(1); + return (1); } bzero(inq_buf, sizeof(*inq_buf)); @@ -937,7 +937,7 @@ scsiinquiry(struct cam_device *device, int task_attr, } cam_freeccb(ccb); - return(1); + return (1); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { @@ -953,7 +953,7 @@ scsiinquiry(struct cam_device *device, int task_attr, if (error != 0) { free(inq_buf); - return(error); + return (error); } fprintf(stdout, "%s%d: ", device->device_name, @@ -962,7 +962,7 @@ scsiinquiry(struct cam_device *device, int task_attr, free(inq_buf); - return(0); + return (0); } static int @@ -978,7 +978,7 @@ scsiserial(struct cam_device *device, int task_attr, i if (ccb == NULL) { warnx("couldn't allocate CCB"); - return(1); + return (1); } /* cam_getccb cleans up the header, caller has to zero the payload */ @@ -990,7 +990,7 @@ scsiserial(struct cam_device *device, int task_attr, i if (serial_buf == NULL) { cam_freeccb(ccb); warnx("can't malloc memory for serial number"); - return(1); + return (1); } scsi_inquiry(&ccb->csio, @@ -1020,7 +1020,7 @@ scsiserial(struct cam_device *device, int task_attr, i cam_freeccb(ccb); free(serial_buf); - return(1); + return (1); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { @@ -1036,7 +1036,7 @@ scsiserial(struct cam_device *device, int task_attr, i if (error != 0) { free(serial_buf); - return(error); + return (error); } bcopy(serial_buf->serial_num, serial_num, serial_buf->length); @@ -1051,7 +1051,7 @@ scsiserial(struct cam_device *device, int task_attr, i free(serial_buf); - return(0); + return (0); } int @@ -1071,7 +1071,7 @@ camxferrate(struct cam_device *device) if (ccb == NULL) { warnx("couldn't allocate CCB"); - return(1); + return (1); } CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->cts); @@ -1210,13 +1210,13 @@ camxferrate(struct cam_device *device) } } - fprintf(stdout, "\n"); + fprintf(stdout, "\n"); xferrate_bailout: cam_freeccb(ccb); - return(retval); + return (retval); } static void @@ -1239,7 +1239,7 @@ atahpa_print(struct ata_params *parm, u_int64_t hpasiz if (parm->support.command1 & ATA_SUPPORT_PROTECTED) { u_int64_t lba = lbasize48 ? lbasize48 : lbasize; printf("yes %s %ju/%ju\n", (hpasize > lba) ? "yes" : "no ", - lba, hpasize); + lba, hpasize); printf("HPA - Security "); if (parm->support.command1 & ATA_SUPPORT_MAXSECURITY) @@ -3040,8 +3040,7 @@ atasecurity(struct cam_device *device, int retry_count } error = atasecurity_erase(device, ccb, retry_count, - timeout, erase_timeout, &pwd, - quiet); + timeout, erase_timeout, &pwd, quiet); } else { warnx("Can't secure erase (security is disabled)"); error = 1; @@ -3134,7 +3133,7 @@ dorescan_or_reset(int argc, char **argv, int rescan) if (argc < 3) { warnx(must, rescan? "rescan" : "reset"); - return(1); + return (1); } tstr = argv[optind]; @@ -3146,7 +3145,7 @@ dorescan_or_reset(int argc, char **argv, int rescan) rv = parse_btl(argv[optind], &bus, &target, &lun, &arglist); if (rv != 1 && rv != 3) { warnx(must, rescan? "rescan" : "reset"); - return(1); + return (1); } } else { char name[30]; @@ -3254,7 +3253,7 @@ dorescan_or_reset(int argc, char **argv, int rescan) bailout: - return(error); + return (error); } static int @@ -3269,7 +3268,7 @@ rescan_or_reset_bus(path_id_t bus, int rescan) if ((fd = open(XPT_DEVICE, O_RDWR)) < 0) { warnx("error opening transport layer device %s", XPT_DEVICE); warn("%s", XPT_DEVICE); - return(1); + return (1); } ccb = malloc(sizeof(*ccb)); @@ -3434,7 +3433,7 @@ bailout: } free(ccb); - return(retval); + return (retval); } static int @@ -3448,17 +3447,17 @@ scanlun_or_reset_dev(path_id_t bus, target_id_t target if (bus == CAM_BUS_WILDCARD) { warnx("invalid bus number %d", bus); - return(1); + return (1); } if (target == CAM_TARGET_WILDCARD) { warnx("invalid target number %d", target); - return(1); + return (1); } if (lun == CAM_LUN_WILDCARD) { warnx("invalid lun number %jx", (uintmax_t)lun); - return(1); + return (1); } fd = -1; @@ -3470,13 +3469,13 @@ scanlun_or_reset_dev(path_id_t bus, target_id_t target warnx("error opening transport layer device %s\n", XPT_DEVICE); warn("%s", XPT_DEVICE); - return(1); + return (1); } } else { device = cam_open_btl(bus, target, lun, O_RDWR, NULL); if (device == NULL) { warnx("%s", cam_errbuf); - return(1); + return (1); } } @@ -3494,13 +3493,13 @@ scanlun_or_reset_dev(path_id_t bus, target_id_t target if (ioctl(fd, CAMIOCOMMAND, &ccb) < 0) { warn("CAMIOCOMMAND ioctl failed"); close(fd); - return(1); + return (1); } } else { if (cam_send_ccb(device, &ccb) < 0) { warn("error sending XPT_RESET_DEV CCB"); cam_close_device(device); - return(1); + return (1); } } @@ -3517,12 +3516,12 @@ scanlun_or_reset_dev(path_id_t bus, target_id_t target && ((ccb.ccb_h.status & CAM_STATUS_MASK) == CAM_BDR_SENT))) { fprintf(stdout, "%s of %d:%d:%jx was successful\n", scan? "Re-scan" : "Reset", bus, target, (uintmax_t)lun); - return(0); + return (0); } else { fprintf(stdout, "%s of %d:%d:%jx returned error %#x\n", scan? "Re-scan" : "Reset", bus, target, (uintmax_t)lun, ccb.ccb_h.status & CAM_STATUS_MASK); - return(1); + return (1); } } @@ -3754,7 +3753,7 @@ next_batch: error = 1; goto defect_bailout; break; - } + } max_possible_size = (hdr_max / entry_size) * entry_size; num_returned = returned_length / entry_size; @@ -4100,7 +4099,7 @@ defect_bailout: if (ccb != NULL) cam_freeccb(ccb); - return(error); + return (error); } #endif /* MINIMALISTIC */ @@ -4301,7 +4300,7 @@ scsicmd(struct cam_device *device, int argc, char **ar if (ccb == NULL) { warnx("scsicmd: error allocating ccb"); - return(1); + return (1); } CCB_CLEAR_ALL_EXCEPT_HDR(ccb); @@ -4501,7 +4500,7 @@ scsicmd(struct cam_device *device, int argc, char **ar case 3: case 6: case 7: - /* computed by buff_encode_visit */ + /* computed by buff_encode_visit */ break; case 4: cdb_len = 16; @@ -4630,7 +4629,7 @@ scsicmd_bailout: cam_freeccb(ccb); - return(error); + return (error); } static int @@ -4684,7 +4683,7 @@ camdebug(int argc, char **argv, char *combinedopt) if ((fd = open(XPT_DEVICE, O_RDWR)) < 0) { warnx("error opening transport layer device %s", XPT_DEVICE); warn("%s", XPT_DEVICE); - return(1); + return (1); } argc -= optind; argv += optind; @@ -4693,7 +4692,7 @@ camdebug(int argc, char **argv, char *combinedopt) warnx("you must specify \"off\", \"all\" or a bus,"); warnx("bus:target, or bus:target:lun"); close(fd); - return(1); + return (1); } tstr = *argv; @@ -4767,7 +4766,7 @@ camdebug(int argc, char **argv, char *combinedopt) close(fd); } - return(error); + return (error); } static int @@ -4785,7 +4784,7 @@ tagcontrol(struct cam_device *device, int argc, char * if (ccb == NULL) { warnx("tagcontrol: error allocating ccb"); - return(1); + return (1); } while ((c = getopt(argc, argv, combinedopt)) != -1) { @@ -4881,7 +4880,7 @@ tagcontrol(struct cam_device *device, int argc, char * tagcontrol_bailout: cam_freeccb(ccb); - return(retval); + return (retval); } static void @@ -5034,7 +5033,7 @@ get_cpi(struct cam_device *device, struct ccb_pathinq ccb = cam_getccb(device); if (ccb == NULL) { warnx("get_cpi: couldn't allocate CCB"); - return(1); + return (1); } CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->cpi); ccb->ccb_h.func_code = XPT_PATH_INQ; @@ -5057,7 +5056,7 @@ get_cpi(struct cam_device *device, struct ccb_pathinq get_cpi_bailout: cam_freeccb(ccb); - return(retval); + return (retval); } /* @@ -5072,7 +5071,7 @@ get_cgd(struct cam_device *device, struct ccb_getdev * ccb = cam_getccb(device); if (ccb == NULL) { warnx("get_cgd: couldn't allocate CCB"); - return(1); + return (1); } CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->cgd); ccb->ccb_h.func_code = XPT_GDEV_TYPE; @@ -5095,7 +5094,7 @@ get_cgd(struct cam_device *device, struct ccb_getdev * get_cgd_bailout: cam_freeccb(ccb); - return(retval); + return (retval); } /* @@ -5117,7 +5116,7 @@ dev_has_vpd_page(struct cam_device *dev, uint8_t page_ retval = -1; goto bailout; } - + /* cam_getccb cleans up the header, caller has to zero the payload */ CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); @@ -5164,7 +5163,7 @@ dev_has_vpd_page(struct cam_device *dev, uint8_t page_ bailout: if (ccb != NULL) cam_freeccb(ccb); - + return (retval); } @@ -5194,7 +5193,7 @@ get_device_type(struct cam_device *dev, int retry_coun break; /*NOTREACHED*/ default: *devtype = CC_DT_UNKNOWN; - goto bailout; + goto bailout; break; /*NOTREACHED*/ } @@ -5269,7 +5268,7 @@ build_ata_cmd(union ccb *ccb, uint32_t retry_count, ui /*protocol*/ protocol, /*ata_flags*/ ata_flags, /*features*/ features, - /*sector_count*/ sector_count, + /*sector_count*/ sector_count, /*lba*/ lba, /*command*/ command, /*device*/ 0, @@ -5301,7 +5300,7 @@ get_ata_status(struct cam_device *dev, union ccb *ccb, /* * In this case, we have SCSI ATA PASS-THROUGH command, 12 - * or 16 byte, and need to see what + * or 16 byte, and need to see what */ if (ccb->ccb_h.flags & CAM_CDB_POINTER) opcode = ccb->csio.cdb_io.cdb_ptr[0]; @@ -5351,7 +5350,7 @@ get_ata_status(struct cam_device *dev, union ccb *ccb, ((uint64_t)desc->lba_31_24 << 24) | (desc->lba_23_16 << 16) | (desc->lba_15_8 << 8) | - desc->lba_7_0; + desc->lba_7_0; *device = desc->device; *status = desc->status; @@ -5402,7 +5401,7 @@ get_ata_status(struct cam_device *dev, union ccb *ccb, res = &ccb->ataio.res; *error = res->error; *status = res->status; - *device = res->device; + *device = res->device; *count = res->sector_count; *lba = (res->lba_high << 16) | (res->lba_mid << 8) | @@ -5602,7 +5601,7 @@ get_print_cts(struct cam_device *device, int user_sett if (ccb == NULL) { warnx("get_print_cts: error allocating ccb"); - return(1); + return (1); } CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->cts); @@ -5642,7 +5641,7 @@ get_print_cts_bailout: cam_freeccb(ccb); - return(retval); + return (retval); } static int @@ -5665,7 +5664,7 @@ ratecontrol(struct cam_device *device, int task_attr, ccb = cam_getccb(device); if (ccb == NULL) { warnx("ratecontrol: error allocating ccb"); - return(1); + return (1); } while ((c = getopt(argc, argv, combinedopt)) != -1) { switch(c){ @@ -5997,7 +5996,7 @@ ratecontrol(struct cam_device *device, int task_attr, ratecontrol_bailout: cam_freeccb(ccb); - return(retval); + return (retval); } static int @@ -6021,7 +6020,7 @@ scsiformat(struct cam_device *device, int argc, char * if (ccb == NULL) { warnx("scsiformat: error allocating ccb"); - return(1); + return (1); } CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); @@ -6287,7 +6286,7 @@ scsiformat_bailout: cam_freeccb(ccb); - return(error); + return (error); } static int @@ -6316,7 +6315,7 @@ scsisanitize(struct cam_device *device, int argc, char if (ccb == NULL) { warnx("scsisanitize: error allocating ccb"); - return(1); + return (1); } CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); @@ -6697,7 +6696,7 @@ scsisanitize_bailout: free(data_ptr); cam_freeccb(ccb); - return(error); + return (error); } static int @@ -7335,7 +7334,7 @@ smpcmd(struct cam_device *device, int argc, char **arg } else if ((amt_written == 0) && (amt_to_write > 0)) { warnx("only wrote %u bytes out of %u", - response_size - amt_to_write, + response_size - amt_to_write, response_size); } } @@ -7945,7 +7944,7 @@ buildbusdevlist(struct cam_devlist *devlist) if ((fd = open(XPT_DEVICE, O_RDWR)) == -1) { warn("couldn't open %s", XPT_DEVICE); - return(1); + return (1); } bzero(&ccb, sizeof(union ccb)); @@ -7961,7 +7960,7 @@ buildbusdevlist(struct cam_devlist *devlist) if (ccb.cdm.matches == NULL) { warnx("can't malloc memory for matches"); close(fd); - return(1); + return (1); } ccb.cdm.num_matches = 0; ccb.cdm.num_patterns = 2; @@ -8012,7 +8011,7 @@ buildbusdevlist(struct cam_devlist *devlist) case DEV_MATCH_DEVICE: { struct device_match_result *dev_result; - dev_result = + dev_result = &ccb.cdm.matches[i].result.device_result; if (dev_result->flags & @@ -8363,7 +8362,7 @@ smpphylist(struct cam_device *device, int argc, char * fprintf(stdout, "%s%d", item->periph_matches[j].periph_name, item->periph_matches[j].unit_number); - + } fprintf(stdout, ")\n"); } @@ -8565,7 +8564,7 @@ scsigetopcodes(struct cam_device *device, int opcode_s alloc_len += num_opcodes * sizeof(struct scsi_report_supported_opcodes_timeout); } - + if (sa_set != 0) { options |= RSO_OPTIONS_OC_SA; if (show_sa_errors != 0) @@ -8576,7 +8575,7 @@ retry_alloc: if (buf != NULL) { free(buf); buf = NULL; - } + } buf = malloc(alloc_len); if (buf == NULL) { @@ -8613,7 +8612,6 @@ retry_alloc: if (verbosemode != 0) cam_error_print(device, ccb, CAM_ESF_ALL, CAM_EPF_ALL, stderr); - retval = 1; goto bailout; } @@ -9599,167 +9597,167 @@ main(int argc, char **argv) switch(cmdlist) { #ifndef MINIMALISTIC - case CAM_CMD_DEVLIST: - error = getdevlist(cam_dev); - break; - case CAM_CMD_HPA: - error = atahpa(cam_dev, retry_count, timeout, - argc, argv, combinedopt); - break; + case CAM_CMD_DEVLIST: + error = getdevlist(cam_dev); + break; + case CAM_CMD_HPA: + error = atahpa(cam_dev, retry_count, timeout, + argc, argv, combinedopt); + break; #endif /* MINIMALISTIC */ - case CAM_CMD_DEVTREE: - error = getdevtree(argc, argv, combinedopt); - break; + case CAM_CMD_DEVTREE: + error = getdevtree(argc, argv, combinedopt); + break; #ifndef MINIMALISTIC - case CAM_CMD_TUR: - error = testunitready(cam_dev, task_attr, retry_count, - timeout, 0); - break; - case CAM_CMD_INQUIRY: - error = scsidoinquiry(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout); - break; - case CAM_CMD_IDENTIFY: - error = ataidentify(cam_dev, retry_count, timeout); - break; - case CAM_CMD_STARTSTOP: - error = scsistart(cam_dev, arglist & CAM_ARG_START_UNIT, - arglist & CAM_ARG_EJECT, task_attr, - retry_count, timeout); - break; + case CAM_CMD_TUR: + error = testunitready(cam_dev, task_attr, retry_count, + timeout, 0); + break; + case CAM_CMD_INQUIRY: + error = scsidoinquiry(cam_dev, argc, argv, combinedopt, + task_attr, retry_count, timeout); + break; + case CAM_CMD_IDENTIFY: + error = ataidentify(cam_dev, retry_count, timeout); + break; + case CAM_CMD_STARTSTOP: + error = scsistart(cam_dev, arglist & CAM_ARG_START_UNIT, + arglist & CAM_ARG_EJECT, task_attr, + retry_count, timeout); + break; #endif /* MINIMALISTIC */ - case CAM_CMD_RESCAN: - error = dorescan_or_reset(argc, argv, 1); - break; - case CAM_CMD_RESET: - error = dorescan_or_reset(argc, argv, 0); - break; + case CAM_CMD_RESCAN: + error = dorescan_or_reset(argc, argv, 1); + break; + case CAM_CMD_RESET: + error = dorescan_or_reset(argc, argv, 0); + break; #ifndef MINIMALISTIC - case CAM_CMD_READ_DEFECTS: - error = readdefects(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout); - break; - case CAM_CMD_MODE_PAGE: - modepage(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout); - break; - case CAM_CMD_SCSI_CMD: - error = scsicmd(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout); - break; - case CAM_CMD_SMP_CMD: - error = smpcmd(cam_dev, argc, argv, combinedopt, + case CAM_CMD_READ_DEFECTS: + error = readdefects(cam_dev, argc, argv, combinedopt, + task_attr, retry_count, timeout); + break; + case CAM_CMD_MODE_PAGE: + modepage(cam_dev, argc, argv, combinedopt, + task_attr, retry_count, timeout); + break; + case CAM_CMD_SCSI_CMD: + error = scsicmd(cam_dev, argc, argv, combinedopt, + task_attr, retry_count, timeout); + break; + case CAM_CMD_SMP_CMD: + error = smpcmd(cam_dev, argc, argv, combinedopt, + retry_count, timeout); + break; + case CAM_CMD_SMP_RG: + error = smpreportgeneral(cam_dev, argc, argv, + combinedopt, retry_count, + timeout); + break; + case CAM_CMD_SMP_PC: + error = smpphycontrol(cam_dev, argc, argv, combinedopt, + retry_count, timeout); + break; + case CAM_CMD_SMP_PHYLIST: + error = smpphylist(cam_dev, argc, argv, combinedopt, + retry_count, timeout); + break; + case CAM_CMD_SMP_MANINFO: + error = smpmaninfo(cam_dev, argc, argv, combinedopt, + retry_count, timeout); + break; + case CAM_CMD_DEBUG: + error = camdebug(argc, argv, combinedopt); + break; + case CAM_CMD_TAG: + error = tagcontrol(cam_dev, argc, argv, combinedopt); + break; + case CAM_CMD_RATE: + error = ratecontrol(cam_dev, task_attr, retry_count, + timeout, argc, argv, combinedopt); + break; + case CAM_CMD_FORMAT: + error = scsiformat(cam_dev, argc, argv, + combinedopt, task_attr, retry_count, + timeout); + break; + case CAM_CMD_REPORTLUNS: + error = scsireportluns(cam_dev, argc, argv, + combinedopt, task_attr, retry_count, timeout); - break; - case CAM_CMD_SMP_RG: - error = smpreportgeneral(cam_dev, argc, argv, - combinedopt, retry_count, - timeout); - break; - case CAM_CMD_SMP_PC: - error = smpphycontrol(cam_dev, argc, argv, combinedopt, - retry_count, timeout); - break; - case CAM_CMD_SMP_PHYLIST: - error = smpphylist(cam_dev, argc, argv, combinedopt, - retry_count, timeout); - break; - case CAM_CMD_SMP_MANINFO: - error = smpmaninfo(cam_dev, argc, argv, combinedopt, - retry_count, timeout); - break; - case CAM_CMD_DEBUG: - error = camdebug(argc, argv, combinedopt); - break; - case CAM_CMD_TAG: - error = tagcontrol(cam_dev, argc, argv, combinedopt); - break; - case CAM_CMD_RATE: - error = ratecontrol(cam_dev, task_attr, retry_count, - timeout, argc, argv, combinedopt); - break; - case CAM_CMD_FORMAT: - error = scsiformat(cam_dev, argc, argv, - combinedopt, task_attr, retry_count, - timeout); - break; - case CAM_CMD_REPORTLUNS: - error = scsireportluns(cam_dev, argc, argv, - combinedopt, task_attr, - retry_count, timeout); - break; - case CAM_CMD_READCAP: - error = scsireadcapacity(cam_dev, argc, argv, - combinedopt, task_attr, - retry_count, timeout); - break; - case CAM_CMD_IDLE: - case CAM_CMD_STANDBY: - case CAM_CMD_SLEEP: - error = atapm(cam_dev, argc, argv, - combinedopt, retry_count, timeout); - break; - case CAM_CMD_APM: - case CAM_CMD_AAM: - error = ataaxm(cam_dev, argc, argv, - combinedopt, retry_count, timeout); - break; - case CAM_CMD_SECURITY: - error = atasecurity(cam_dev, retry_count, timeout, - argc, argv, combinedopt); - break; - case CAM_CMD_DOWNLOAD_FW: - error = fwdownload(cam_dev, argc, argv, combinedopt, - arglist & CAM_ARG_VERBOSE, task_attr, retry_count, - timeout); - break; - case CAM_CMD_SANITIZE: - error = scsisanitize(cam_dev, argc, argv, - combinedopt, task_attr, - retry_count, timeout); - break; - case CAM_CMD_PERSIST: - error = scsipersist(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout, - arglist & CAM_ARG_VERBOSE, - arglist & CAM_ARG_ERR_RECOVER); - break; - case CAM_CMD_ATTRIB: - error = scsiattrib(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout, - arglist & CAM_ARG_VERBOSE, - arglist & CAM_ARG_ERR_RECOVER); - break; - case CAM_CMD_OPCODES: - error = scsiopcodes(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout, - arglist & CAM_ARG_VERBOSE); - break; - case CAM_CMD_REPROBE: - error = scsireprobe(cam_dev); - break; - case CAM_CMD_ZONE: - error = zone(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout, - arglist & CAM_ARG_VERBOSE); - break; - case CAM_CMD_EPC: - error = epc(cam_dev, argc, argv, combinedopt, - retry_count, timeout, arglist & CAM_ARG_VERBOSE); - break; - case CAM_CMD_TIMESTAMP: - error = timestamp(cam_dev, argc, argv, combinedopt, - task_attr, retry_count, timeout, - arglist & CAM_ARG_VERBOSE); - break; + break; + case CAM_CMD_READCAP: + error = scsireadcapacity(cam_dev, argc, argv, + combinedopt, task_attr, + retry_count, timeout); + break; + case CAM_CMD_IDLE: + case CAM_CMD_STANDBY: + case CAM_CMD_SLEEP: + error = atapm(cam_dev, argc, argv, + combinedopt, retry_count, timeout); + break; + case CAM_CMD_APM: + case CAM_CMD_AAM: + error = ataaxm(cam_dev, argc, argv, + combinedopt, retry_count, timeout); + break; + case CAM_CMD_SECURITY: + error = atasecurity(cam_dev, retry_count, timeout, + argc, argv, combinedopt); + break; + case CAM_CMD_DOWNLOAD_FW: + error = fwdownload(cam_dev, argc, argv, combinedopt, + arglist & CAM_ARG_VERBOSE, task_attr, retry_count, + timeout); + break; + case CAM_CMD_SANITIZE: + error = scsisanitize(cam_dev, argc, argv, + combinedopt, task_attr, + retry_count, timeout); + break; + case CAM_CMD_PERSIST: + error = scsipersist(cam_dev, argc, argv, combinedopt, + task_attr, retry_count, timeout, + arglist & CAM_ARG_VERBOSE, + arglist & CAM_ARG_ERR_RECOVER); + break; + case CAM_CMD_ATTRIB: + error = scsiattrib(cam_dev, argc, argv, combinedopt, + task_attr, retry_count, timeout, + arglist & CAM_ARG_VERBOSE, + arglist & CAM_ARG_ERR_RECOVER); + break; + case CAM_CMD_OPCODES: + error = scsiopcodes(cam_dev, argc, argv, combinedopt, + task_attr, retry_count, timeout, + arglist & CAM_ARG_VERBOSE); + break; + case CAM_CMD_REPROBE: + error = scsireprobe(cam_dev); + break; + case CAM_CMD_ZONE: + error = zone(cam_dev, argc, argv, combinedopt, + task_attr, retry_count, timeout, + arglist & CAM_ARG_VERBOSE); + break; + case CAM_CMD_EPC: + error = epc(cam_dev, argc, argv, combinedopt, + retry_count, timeout, arglist & CAM_ARG_VERBOSE); + break; + case CAM_CMD_TIMESTAMP: + error = timestamp(cam_dev, argc, argv, combinedopt, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Thu Aug 8 18:48:49 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B787DAF10E; Thu, 8 Aug 2019 18:48: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464HTF4LPnz4jD6; Thu, 8 Aug 2019 18:48: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 76A1517CA; Thu, 8 Aug 2019 18:48: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 x78ImnWa021862; Thu, 8 Aug 2019 18:48:49 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78Imn7i021860; Thu, 8 Aug 2019 18:48:49 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081848.x78Imn7i021860@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 18:48:49 +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: r350774 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350774 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 18:48:49 -0000 Author: mav Date: Thu Aug 8 18:48:48 2019 New Revision: 350774 URL: https://svnweb.freebsd.org/changeset/base/350774 Log: MFC r346594 (by smh): Add ATA power mode support to camcontrol Add the ability to report ATA device power mode with the cmmand 'powermode' to compliment the existing ability to set it using idle, standby and sleep commands. Modified: stable/11/sbin/camcontrol/camcontrol.8 stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 18:42:39 2019 (r350773) +++ stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 18:48:48 2019 (r350774) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 12, 2019 +.Dd April 22, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -243,6 +243,10 @@ .Op device id .Op generic args .Nm +.Ic powermode +.Op device id +.Op generic args +.Nm .Ic apm .Op device id .Op generic args @@ -1388,6 +1392,8 @@ Value 0 disables timer. Put ATA device into SLEEP state. Note that the only way get device out of this state may be reset. +.It Ic powermode +Report ATA device power mode. .It Ic apm It optional parameter .Pq Fl l Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 18:42:39 2019 (r350773) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 18:48:48 2019 (r350774) @@ -104,7 +104,8 @@ typedef enum { CAM_CMD_REPROBE = 0x00000025, CAM_CMD_ZONE = 0x00000026, CAM_CMD_EPC = 0x00000027, - CAM_CMD_TIMESTAMP = 0x00000028 + CAM_CMD_TIMESTAMP = 0x00000028, + CAM_CMD_POWER_MODE = 0x0000002a, } cam_cmdmask; typedef enum { @@ -230,6 +231,7 @@ static struct camcontrol_opts option_table[] = { {"idle", CAM_CMD_IDLE, CAM_ARG_NONE, "t:"}, {"standby", CAM_CMD_STANDBY, CAM_ARG_NONE, "t:"}, {"sleep", CAM_CMD_SLEEP, CAM_ARG_NONE, ""}, + {"powermode", CAM_CMD_POWER_MODE, CAM_ARG_NONE, ""}, {"apm", CAM_CMD_APM, CAM_ARG_NONE, "l:"}, {"aam", CAM_CMD_AAM, CAM_ARG_NONE, "l:"}, {"fwdownload", CAM_CMD_DOWNLOAD_FW, CAM_ARG_NONE, "f:qsy"}, @@ -8384,6 +8386,61 @@ bailout: } static int +atapm_proc_resp(struct cam_device *device, union ccb *ccb) +{ + struct ata_res *res; + + res = &ccb->ataio.res; + if (res->status & ATA_STATUS_ERROR) { + if (arglist & CAM_ARG_VERBOSE) { + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + printf("error = 0x%02x, sector_count = 0x%04x, " + "device = 0x%02x, status = 0x%02x\n", + res->error, res->sector_count, + res->device, res->status); + } + + return (1); + } + + if (arglist & CAM_ARG_VERBOSE) { + fprintf(stdout, "%s%d: Raw native check power data:\n", + device->device_name, device->dev_unit_num); + /* res is 4 byte aligned */ + dump_data((uint16_t*)(uintptr_t)res, sizeof(struct ata_res)); + + printf("error = 0x%02x, sector_count = 0x%04x, device = 0x%02x, " + "status = 0x%02x\n", res->error, res->sector_count, + res->device, res->status); + } + + printf("%s%d: ", device->device_name, device->dev_unit_num); + switch (res->sector_count) { + case 0x00: + printf("Standby mode\n"); + break; + case 0x40: + printf("NV Cache Power Mode and the spindle is spun down or spinning down\n"); + break; + case 0x41: + printf("NV Cache Power Mode and the spindle is spun up or spinning up\n"); + break; + case 0x80: + printf("Idle mode\n"); + break; + case 0xff: + printf("Active or Idle mode\n"); + break; + default: + printf("Unknown mode 0x%02x\n", res->sector_count); + break; + } + + return (0); +} + +static int atapm(struct cam_device *device, int argc, char **argv, char *combinedopt, int retry_count, int timeout) { @@ -8391,6 +8448,7 @@ atapm(struct cam_device *device, int argc, char **argv int retval = 0; int t = -1; int c; + u_int8_t ata_flags = 0; u_char cmd, sc; ccb = cam_getccb(device); @@ -8419,6 +8477,10 @@ atapm(struct cam_device *device, int argc, char **argv cmd = ATA_STANDBY_IMMEDIATE; else cmd = ATA_STANDBY_CMD; + } else if (strcmp(argv[1], "powermode") == 0) { + cmd = ATA_CHECK_POWER_MODE; + ata_flags = AP_FLAG_CHK_COND; + t = -1; } else { cmd = ATA_SLEEP; t = -1; @@ -8436,11 +8498,12 @@ atapm(struct cam_device *device, int argc, char **argv else sc = 253; - retval = ata_do_28bit_cmd(device, + retval = ata_do_cmd(device, ccb, /*retries*/retry_count, /*flags*/CAM_DIR_NONE, /*protocol*/AP_PROTO_NON_DATA, + /*ata_flags*/ata_flags, /*tag_action*/MSG_SIMPLE_Q_TAG, /*command*/cmd, /*features*/0, @@ -8452,7 +8515,11 @@ atapm(struct cam_device *device, int argc, char **argv /*quiet*/1); cam_freeccb(ccb); - return (retval); + + if (retval || cmd != ATA_CHECK_POWER_MODE) + return (retval); + + return (atapm_proc_resp(device, ccb)); } static int @@ -9065,6 +9132,7 @@ usage(int printlong) " camcontrol idle [dev_id][generic args][-t time]\n" " camcontrol standby [dev_id][generic args][-t time]\n" " camcontrol sleep [dev_id][generic args]\n" +" camcontrol powermode [dev_id][generic args]\n" " camcontrol apm [dev_id][generic args][-l level]\n" " camcontrol aam [dev_id][generic args][-l level]\n" " camcontrol fwdownload [dev_id][generic args] <-f fw_image> [-q]\n" @@ -9128,6 +9196,7 @@ usage(int printlong) "idle send the ATA IDLE command to the named device\n" "standby send the ATA STANDBY command to the named device\n" "sleep send the ATA SLEEP command to the named device\n" +"powermode send the ATA CHECK POWER MODE command to the named device\n" "fwdownload program firmware of the named device with the given image\n" "security report or send ATA security commands to the named device\n" "persist send the SCSI PERSISTENT RESERVE IN or OUT commands\n" @@ -9694,6 +9763,7 @@ main(int argc, char **argv) case CAM_CMD_IDLE: case CAM_CMD_STANDBY: case CAM_CMD_SLEEP: + case CAM_CMD_POWER_MODE: error = atapm(cam_dev, argc, argv, combinedopt, retry_count, timeout); break; From owner-svn-src-stable@freebsd.org Thu Aug 8 18:52:54 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3A285AF4CD; Thu, 8 Aug 2019 18:52:54 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464HYy0mJMz4jl6; Thu, 8 Aug 2019 18:52:54 +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 EFCF8198E; Thu, 8 Aug 2019 18:52: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 x78Iqrpp027547; Thu, 8 Aug 2019 18:52:53 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78IqruA027546; Thu, 8 Aug 2019 18:52:53 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908081852.x78IqruA027546@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 18:52:53 +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: r350775 - stable/11/sys/cam/scsi X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/scsi X-SVN-Commit-Revision: 350775 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 18:52:54 -0000 Author: mav Date: Thu Aug 8 18:52:53 2019 New Revision: 350775 URL: https://svnweb.freebsd.org/changeset/base/350775 Log: MFC r348111: Simplify math added in r310524. Should be no functional change. Modified: stable/11/sys/cam/scsi/scsi_all.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/scsi/scsi_all.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_all.c Thu Aug 8 18:48:48 2019 (r350774) +++ stable/11/sys/cam/scsi/scsi_all.c Thu Aug 8 18:52:53 2019 (r350775) @@ -3941,7 +3941,7 @@ scsi_set_sense_data_fixed_va(struct scsi_sense_data *s } if (len > sizeof(sense->cmd_spec_info)) { data += len - sizeof(sense->cmd_spec_info); - len -= len - sizeof(sense->cmd_spec_info); + len = sizeof(sense->cmd_spec_info); } bcopy(data, &sense->cmd_spec_info[ sizeof(sense->cmd_spec_info) - len], len); From owner-svn-src-stable@freebsd.org Thu Aug 8 21:30:45 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 75601B3930; Thu, 8 Aug 2019 21:30:45 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464M452YG0z4tkT; Thu, 8 Aug 2019 21:30:45 +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 391AB3656; Thu, 8 Aug 2019 21:30:45 +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 x78LUjcx017848; Thu, 8 Aug 2019 21:30:45 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LUjmB017832; Thu, 8 Aug 2019 21:30:45 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082130.x78LUjmB017832@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:30:45 +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: r350783 - stable/11/sys/cam/scsi X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/scsi X-SVN-Commit-Revision: 350783 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:30:45 -0000 Author: mav Date: Thu Aug 8 21:30:44 2019 New Revision: 350783 URL: https://svnweb.freebsd.org/changeset/base/350783 Log: MFC r348963 (by imp): Minor white space changes. Remove trailing white space that's crept into this file. Modified: stable/11/sys/cam/scsi/scsi_xpt.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/scsi/scsi_xpt.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_xpt.c Thu Aug 8 21:16:15 2019 (r350782) +++ stable/11/sys/cam/scsi/scsi_xpt.c Thu Aug 8 21:30:44 2019 (r350783) @@ -1601,7 +1601,7 @@ probe_device_check: start = strspn(serial_buf->serial_num, " "); slen = serial_buf->length - start; if (slen <= 0) { - /* + /* * SPC5r05 says that an all-space serial * number means no product serial number * is available @@ -2115,7 +2115,7 @@ scsi_scan_bus(struct cam_periph *periph, union ccb *re CAM_GET_LUN(target->luns, 0, first); if (first == 0 && scan_info->lunindex[target_id] == 0) { scan_info->lunindex[target_id]++; - } + } /* * Skip any LUNs that the HBA can't deal with. @@ -2600,7 +2600,7 @@ scsi_dev_advinfo(union ccb *start_ccb) * We fetch extended inquiry data during probe, if * available. We don't allow changing it. */ - if (cdai->flags & CDAI_FLAG_STORE) + if (cdai->flags & CDAI_FLAG_STORE) return; cdai->provsiz = device->ext_inq_len; if (device->ext_inq_len == 0) @@ -2992,7 +2992,7 @@ scsi_dev_async(u_int32_t async_code, struct cam_eb *bu */ if (async_code == AC_SENT_BDR || async_code == AC_BUS_RESET) { - cam_freeze_devq(&newpath); + cam_freeze_devq(&newpath); cam_release_devq(&newpath, RELSIM_RELEASE_AFTER_TIMEOUT, /*reduction*/0, @@ -3052,7 +3052,7 @@ scsi_announce_periph(struct cam_periph *periph) xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); - /* Report connection speed */ + /* Report connection speed */ speed = cpi.base_transfer_speed; freq = 0; if (cts.ccb_h.status == CAM_REQ_CMP && cts.transport == XPORT_SPI) { From owner-svn-src-stable@freebsd.org Thu Aug 8 21:31:24 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 33BDEB39B6; Thu, 8 Aug 2019 21:31:24 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464M4r0ccwz4ttZ; Thu, 8 Aug 2019 21:31:24 +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 EBE5637E9; Thu, 8 Aug 2019 21:31:23 +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 x78LVNVO018719; Thu, 8 Aug 2019 21:31:23 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LVNao018718; Thu, 8 Aug 2019 21:31:23 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082131.x78LVNao018718@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:31: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: r350784 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350784 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:31:24 -0000 Author: mav Date: Thu Aug 8 21:31:23 2019 New Revision: 350784 URL: https://svnweb.freebsd.org/changeset/base/350784 Log: MFC r349010 (by imp): Increase the timeout for READ NATIVE MAX READ NATIVE MAX can take longer than a second if the queued NCQ I/Os take longer than a second to drain. Modified: stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 21:30:44 2019 (r350783) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 21:31:23 2019 (r350784) @@ -1892,7 +1892,7 @@ ata_read_native_max(struct cam_device *device, int ret /*sector_count*/0, /*data_ptr*/NULL, /*dxfer_len*/0, - timeout ? timeout : 1000, + timeout ? timeout : 5000, is48bit); if (error) From owner-svn-src-stable@freebsd.org Thu Aug 8 21:32:27 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D2FDDB3BA2; Thu, 8 Aug 2019 21:32:27 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464M634rGyz4v4D; Thu, 8 Aug 2019 21:32:27 +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 87DA83836; Thu, 8 Aug 2019 21:32:27 +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 x78LWRwP022465; Thu, 8 Aug 2019 21:32:27 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LWRmR022464; Thu, 8 Aug 2019 21:32:27 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082132.x78LWRmR022464@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:32: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: r350785 - stable/11/sys/cam X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam X-SVN-Commit-Revision: 350785 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:32:27 -0000 Author: mav Date: Thu Aug 8 21:32:26 2019 New Revision: 350785 URL: https://svnweb.freebsd.org/changeset/base/350785 Log: MFC r349243: Optimize xpt_getattr(). Do not allocate temporary buffer for attributes we are going to return as-is, just make sure to NUL-terminate them. Do not zero temporary 64KB buffer for CDAI_TYPE_SCSI_DEVID, XPT tells us how much data it filled and there are also length fields inside the returned data also. Modified: stable/11/sys/cam/cam_xpt.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/cam_xpt.c ============================================================================== --- stable/11/sys/cam/cam_xpt.c Thu Aug 8 21:31:23 2019 (r350784) +++ stable/11/sys/cam/cam_xpt.c Thu Aug 8 21:32:26 2019 (r350785) @@ -1120,6 +1120,7 @@ xpt_getattr(char *buf, size_t len, const char *attr, s cdai.ccb_h.func_code = XPT_DEV_ADVINFO; cdai.flags = CDAI_FLAG_NONE; cdai.bufsiz = len; + cdai.buf = buf; if (!strcmp(attr, "GEOM::ident")) cdai.buftype = CDAI_TYPE_SERIAL_NUM; @@ -1129,14 +1130,14 @@ xpt_getattr(char *buf, size_t len, const char *attr, s strcmp(attr, "GEOM::lunname") == 0) { cdai.buftype = CDAI_TYPE_SCSI_DEVID; cdai.bufsiz = CAM_SCSI_DEVID_MAXLEN; + cdai.buf = malloc(cdai.bufsiz, M_CAMXPT, M_NOWAIT); + if (cdai.buf == NULL) { + ret = ENOMEM; + goto out; + } } else goto out; - cdai.buf = malloc(cdai.bufsiz, M_CAMXPT, M_NOWAIT|M_ZERO); - if (cdai.buf == NULL) { - ret = ENOMEM; - goto out; - } xpt_action((union ccb *)&cdai); /* can only be synchronous */ if ((cdai.ccb_h.status & CAM_DEV_QFRZN) != 0) cam_release_devq(cdai.ccb_h.path, 0, 0, 0, FALSE); @@ -1201,13 +1202,15 @@ xpt_getattr(char *buf, size_t len, const char *attr, s ret = EFAULT; } } else { - ret = 0; - if (strlcpy(buf, cdai.buf, len) >= len) + if (cdai.provsiz < len) { + cdai.buf[cdai.provsiz] = 0; + ret = 0; + } else ret = EFAULT; } out: - if (cdai.buf != NULL) + if ((char *)cdai.buf != buf) free(cdai.buf, M_CAMXPT); return ret; } From owner-svn-src-stable@freebsd.org Thu Aug 8 21:33:14 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C11E3B3C2D; Thu, 8 Aug 2019 21:33: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464M6y4g2hz4vJj; Thu, 8 Aug 2019 21:33: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 81EC8384B; Thu, 8 Aug 2019 21:33: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 x78LXECw022582; Thu, 8 Aug 2019 21:33:14 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LXECi022581; Thu, 8 Aug 2019 21:33:14 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082133.x78LXECi022581@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:33: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: r350786 - stable/11/sys/cam X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam X-SVN-Commit-Revision: 350786 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:33:14 -0000 Author: mav Date: Thu Aug 8 21:33:14 2019 New Revision: 350786 URL: https://svnweb.freebsd.org/changeset/base/350786 Log: MFC r349283 (by scottl): Refactor xpt_getattr() to make it more readable. No outwardly visible functional changes, though code flow was modified a bit internally to lessen the need for goto jumps and chained if conditionals. Modified: stable/11/sys/cam/cam_xpt.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/cam_xpt.c ============================================================================== --- stable/11/sys/cam/cam_xpt.c Thu Aug 8 21:32:26 2019 (r350785) +++ stable/11/sys/cam/cam_xpt.c Thu Aug 8 21:33:14 2019 (r350786) @@ -1111,6 +1111,7 @@ xpt_getattr(char *buf, size_t len, const char *attr, s { int ret = -1, l, o; struct ccb_dev_advinfo cdai; + struct scsi_vpd_device_id *did; struct scsi_vpd_id_descriptor *idd; xpt_path_assert(path, MA_OWNED); @@ -1143,31 +1144,36 @@ xpt_getattr(char *buf, size_t len, const char *attr, s cam_release_devq(cdai.ccb_h.path, 0, 0, 0, FALSE); if (cdai.provsiz == 0) goto out; - if (cdai.buftype == CDAI_TYPE_SCSI_DEVID) { + switch(cdai.buftype) { + case CDAI_TYPE_SCSI_DEVID: + did = (struct scsi_vpd_device_id *)cdai.buf; if (strcmp(attr, "GEOM::lunid") == 0) { - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_naa); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_naa); if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_eui64); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_eui64); if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_uuid); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_uuid); if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_md5); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_md5); } else idd = NULL; + if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_t10); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_t10); if (idd == NULL) - idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf, - cdai.provsiz, scsi_devid_is_lun_name); + idd = scsi_get_devid(did, cdai.provsiz, + scsi_devid_is_lun_name); if (idd == NULL) - goto out; + break; + ret = 0; - if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == SVPD_ID_CODESET_ASCII) { + if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == + SVPD_ID_CODESET_ASCII) { if (idd->length < len) { for (l = 0; l < idd->length; l++) buf[l] = idd->identifier[l] ? @@ -1175,38 +1181,46 @@ xpt_getattr(char *buf, size_t len, const char *attr, s buf[l] = 0; } else ret = EFAULT; - } else if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == SVPD_ID_CODESET_UTF8) { + break; + } + if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == + SVPD_ID_CODESET_UTF8) { l = strnlen(idd->identifier, idd->length); if (l < len) { bcopy(idd->identifier, buf, l); buf[l] = 0; } else ret = EFAULT; - } else if ((idd->id_type & SVPD_ID_TYPE_MASK) == SVPD_ID_TYPE_UUID - && idd->identifier[0] == 0x10) { - if ((idd->length - 2) * 2 + 4 < len) { - for (l = 2, o = 0; l < idd->length; l++) { - if (l == 6 || l == 8 || l == 10 || l == 12) - o += sprintf(buf + o, "-"); - o += sprintf(buf + o, "%02x", - idd->identifier[l]); - } - } else + break; + } + if ((idd->id_type & SVPD_ID_TYPE_MASK) == + SVPD_ID_TYPE_UUID && idd->identifier[0] == 0x10) { + if ((idd->length - 2) * 2 + 4 >= len) { ret = EFAULT; - } else { - if (idd->length * 2 < len) { - for (l = 0; l < idd->length; l++) - sprintf(buf + l * 2, "%02x", - idd->identifier[l]); - } else - ret = EFAULT; + break; + } + for (l = 2, o = 0; l < idd->length; l++) { + if (l == 6 || l == 8 || l == 10 || l == 12) + o += sprintf(buf + o, "-"); + o += sprintf(buf + o, "%02x", + idd->identifier[l]); + } + break; } - } else { + if (idd->length * 2 < len) { + for (l = 0; l < idd->length; l++) + sprintf(buf + l * 2, "%02x", + idd->identifier[l]); + } else + ret = EFAULT; + break; + default: if (cdai.provsiz < len) { cdai.buf[cdai.provsiz] = 0; ret = 0; } else ret = EFAULT; + break; } out: From owner-svn-src-stable@freebsd.org Thu Aug 8 21:33:51 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4F0D1B3CB1; Thu, 8 Aug 2019 21:33:51 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464M7g1Q6rz4vQq; Thu, 8 Aug 2019 21:33:51 +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 12246384C; Thu, 8 Aug 2019 21:33:51 +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 x78LXoXg022674; Thu, 8 Aug 2019 21:33:50 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LXoD3022673; Thu, 8 Aug 2019 21:33:50 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082133.x78LXoD3022673@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:33: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: r350787 - stable/11/sys/cam/ctl X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/ctl X-SVN-Commit-Revision: 350787 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:33:51 -0000 Author: mav Date: Thu Aug 8 21:33:50 2019 New Revision: 350787 URL: https://svnweb.freebsd.org/changeset/base/350787 Log: MFC r349246: SPC-3 and up require some UAs to be returned as fixed. Modified: stable/11/sys/cam/ctl/ctl_error.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/ctl/ctl_error.c ============================================================================== --- stable/11/sys/cam/ctl/ctl_error.c Thu Aug 8 21:33:14 2019 (r350786) +++ stable/11/sys/cam/ctl/ctl_error.c Thu Aug 8 21:33:50 2019 (r350787) @@ -79,6 +79,12 @@ ctl_set_sense_data_va(struct scsi_sense_data *sense_da */ if (sense_format == SSD_TYPE_NONE) { /* + * SPC-3 and up require some UAs to be returned as fixed. + */ + if (asc == 0x29 || (asc == 0x2A && ascq == 0x01)) + sense_format = SSD_TYPE_FIXED; + else + /* * If the format isn't specified, we only return descriptor * sense if the LUN exists and descriptor sense is turned * on for that LUN. From owner-svn-src-stable@freebsd.org Thu Aug 8 21:37:27 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AFFDAB3D7D; Thu, 8 Aug 2019 21:37:27 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MCq48vRz4vZR; Thu, 8 Aug 2019 21:37:27 +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 6BE9C3871; Thu, 8 Aug 2019 21:37:27 +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 x78LbRDq022912; Thu, 8 Aug 2019 21:37:27 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LbRK5022911; Thu, 8 Aug 2019 21:37:27 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082137.x78LbRK5022911@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:37: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: r350788 - stable/11/sys/cam/scsi X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/scsi X-SVN-Commit-Revision: 350788 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:37:27 -0000 Author: mav Date: Thu Aug 8 21:37:26 2019 New Revision: 350788 URL: https://svnweb.freebsd.org/changeset/base/350788 Log: MFC r349284: Make ELEMENT INDEX validation more strict. SES specifications tell: "The Additional Element Status descriptors shall be in the same order as the status elements in the Enclosure Status diagnostic page". It allows us to question ELEMENT INDEX that is lower then values we already processed. There are many SAS2 enclosures with this kind of problem. While there, add more specific error messages for cases when ELEMENT INDEX is obviously wrong. Also skip elements with INVALID bit set. Modified: stable/11/sys/cam/scsi/scsi_enc_ses.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/scsi/scsi_enc_ses.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc_ses.c Thu Aug 8 21:33:50 2019 (r350787) +++ stable/11/sys/cam/scsi/scsi_enc_ses.c Thu Aug 8 21:37:26 2019 (r350788) @@ -1679,7 +1679,6 @@ ses_process_elm_addlstatus(enc_softc_t *enc, struct en struct ses_iterator iter, titer; int eip; int err; - int ignore_index = 0; int length; int offset; enc_cache_t *enc_cache; @@ -1750,7 +1749,7 @@ ses_process_elm_addlstatus(enc_softc_t *enc, struct en elm_hdr = (struct ses_elm_addlstatus_base_hdr *)&buf[offset]; eip = ses_elm_addlstatus_eip(elm_hdr); - if (eip && !ignore_index) { + if (eip) { struct ses_elm_addlstatus_eip_hdr *eip_hdr; int expected_index, index; ses_elem_index_type_t index_type; @@ -1763,17 +1762,44 @@ ses_process_elm_addlstatus(enc_softc_t *enc, struct en index_type = SES_ELEM_INDEX_INDIVIDUAL; expected_index = iter.individual_element_index; } + if (eip_hdr->element_index < expected_index) { + ENC_VLOG(enc, "%s: provided %selement index " + "%d is lower then expected %d\n", + __func__, (eip_hdr->byte2 & + SES_ADDL_EIP_EIIOE) ? "global " : "", + eip_hdr->element_index, expected_index); + goto badindex; + } titer = iter; telement = ses_iter_seek_to(&titer, eip_hdr->element_index, index_type); - if (telement != NULL && - (ses_typehasaddlstatus(enc, titer.type_index) != - TYPE_ADDLSTATUS_NONE || - titer.type_index > ELMTYP_SAS_CONN)) { + if (telement == NULL) { + ENC_VLOG(enc, "%s: provided %selement index " + "%d does not exist\n", __func__, + (eip_hdr->byte2 & SES_ADDL_EIP_EIIOE) ? + "global " : "", eip_hdr->element_index); + goto badindex; + } + if (ses_typehasaddlstatus(enc, titer.type_index) == + TYPE_ADDLSTATUS_NONE) { + ENC_VLOG(enc, "%s: provided %selement index " + "%d can't have additional status\n", + __func__, + (eip_hdr->byte2 & SES_ADDL_EIP_EIIOE) ? + "global " : "", eip_hdr->element_index); +badindex: + /* + * If we expected mandatory element, we may + * guess it was just a wrong index and we may + * use the status. If element was optional, + * then we have no idea where status belongs. + */ + if (status_type == TYPE_ADDLSTATUS_OPTIONAL) + break; + } else { iter = titer; element = telement; - } else - ignore_index = 1; + } if (eip_hdr->byte2 & SES_ADDL_EIP_EIIOE) index = iter.global_element_index; @@ -1795,35 +1821,41 @@ ses_process_elm_addlstatus(enc_softc_t *enc, struct en "type element index=%d, offset=0x%x, " "byte0=0x%x, length=0x%x\n", __func__, iter.global_element_index, iter.type_index, - iter.type_element_index, offset, elmpriv->addl.hdr->byte0, - elmpriv->addl.hdr->length); + iter.type_element_index, offset, elm_hdr->byte0, + elm_hdr->length); /* Skip to after the length field */ offset += sizeof(struct ses_elm_addlstatus_base_hdr); /* Make sure the descriptor is within bounds */ - if ((offset + elmpriv->addl.hdr->length) > length) { + if ((offset + elm_hdr->length) > length) { ENC_VLOG(enc, "Element %d Beyond End " "of Additional Element Status Descriptors\n", iter.global_element_index); break; } + /* Skip elements marked as invalid. */ + if (ses_elm_addlstatus_invalid(elm_hdr)) { + offset += elm_hdr->length; + continue; + } + /* Advance to the protocol data, skipping eip bytes if needed */ offset += (eip * SES_EIP_HDR_EXTRA_LEN); - proto_info_len = elmpriv->addl.hdr->length + proto_info_len = elm_hdr->length - (eip * SES_EIP_HDR_EXTRA_LEN); /* Errors in this block are ignored as they are non-fatal */ - switch(ses_elm_addlstatus_proto(elmpriv->addl.hdr)) { + switch(ses_elm_addlstatus_proto(elm_hdr)) { case SPSP_PROTO_FC: - if (elmpriv->addl.hdr->length == 0) + if (elm_hdr->length == 0) break; ses_get_elm_addlstatus_fc(enc, enc_cache, &buf[offset], proto_info_len); break; case SPSP_PROTO_SAS: - if (elmpriv->addl.hdr->length <= 2) + if (elm_hdr->length <= 2) break; ses_get_elm_addlstatus_sas(enc, enc_cache, &buf[offset], @@ -1834,7 +1866,7 @@ ses_process_elm_addlstatus(enc_softc_t *enc, struct en default: ENC_VLOG(enc, "Element %d: Unknown Additional Element " "Protocol 0x%x\n", iter.global_element_index, - ses_elm_addlstatus_proto(elmpriv->addl.hdr)); + ses_elm_addlstatus_proto(elm_hdr)); break; } From owner-svn-src-stable@freebsd.org Thu Aug 8 21:38:14 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BBF84B3E01; Thu, 8 Aug 2019 21:38: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MDk4YRYz4vhq; Thu, 8 Aug 2019 21:38: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 7E0283879; Thu, 8 Aug 2019 21:38: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 x78LcEeZ023002; Thu, 8 Aug 2019 21:38:14 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LcEK1023001; Thu, 8 Aug 2019 21:38:14 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082138.x78LcEK1023001@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:38: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: r350789 - stable/11/sys/cam/scsi X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/scsi X-SVN-Commit-Revision: 350789 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:38:14 -0000 Author: mav Date: Thu Aug 8 21:38:13 2019 New Revision: 350789 URL: https://svnweb.freebsd.org/changeset/base/350789 Log: MFC r349287: Remove ancient SCSI-2/3 mentioning. Modified: stable/11/sys/cam/scsi/scsi_enc.c stable/11/sys/cam/scsi/scsi_enc_internal.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/scsi/scsi_enc.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc.c Thu Aug 8 21:37:26 2019 (r350788) +++ stable/11/sys/cam/scsi/scsi_enc.c Thu Aug 8 21:38:13 2019 (r350789) @@ -683,14 +683,8 @@ enc_type(struct ccb_getdev *cgd) buflen = min(sizeof(cgd->inq_data), SID_ADDITIONAL_LENGTH(&cgd->inq_data)); - if ((iqd[0] & 0x1f) == T_ENCLOSURE) { - if ((iqd[2] & 0x7) > 2) { - return (ENC_SES); - } else { - return (ENC_SES_SCSI2); - } - return (ENC_NONE); - } + if ((iqd[0] & 0x1f) == T_ENCLOSURE) + return (ENC_SES); #ifdef SES_ENABLE_PASSTHROUGH if ((iqd[6] & 0x40) && (iqd[2] & 0x7) >= 2) { @@ -926,7 +920,6 @@ enc_ctor(struct cam_periph *periph, void *arg) switch (enc->enc_type) { case ENC_SES: - case ENC_SES_SCSI2: case ENC_SES_PASSTHROUGH: case ENC_SEMB_SES: err = ses_softc_init(enc); @@ -1015,17 +1008,14 @@ enc_ctor(struct cam_periph *periph, void *arg) case ENC_NONE: tname = "No ENC device"; break; - case ENC_SES_SCSI2: - tname = "SCSI-2 ENC Device"; - break; case ENC_SES: - tname = "SCSI-3 ENC Device"; + tname = "SES Device"; break; case ENC_SES_PASSTHROUGH: - tname = "ENC Passthrough Device"; + tname = "SES Passthrough Device"; break; case ENC_SAFT: - tname = "SAF-TE Compliant Device"; + tname = "SAF-TE Device"; break; case ENC_SEMB_SES: tname = "SEMB SES Device"; Modified: stable/11/sys/cam/scsi/scsi_enc_internal.h ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc_internal.h Thu Aug 8 21:37:26 2019 (r350788) +++ stable/11/sys/cam/scsi/scsi_enc_internal.h Thu Aug 8 21:38:13 2019 (r350789) @@ -53,10 +53,8 @@ typedef struct enc_element { typedef enum { ENC_NONE, - ENC_SES_SCSI2, ENC_SES, ENC_SES_PASSTHROUGH, - ENC_SEN, ENC_SAFT, ENC_SEMB_SES, ENC_SEMB_SAFT From owner-svn-src-stable@freebsd.org Thu Aug 8 21:38:54 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4CB2EB3E79; Thu, 8 Aug 2019 21:38:54 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MFV1B8mz4vpw; Thu, 8 Aug 2019 21:38:54 +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 E448F387A; Thu, 8 Aug 2019 21:38: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 x78LcrEv023084; Thu, 8 Aug 2019 21:38:53 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LcrqS023082; Thu, 8 Aug 2019 21:38:53 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082138.x78LcrqS023082@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:38:53 +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: r350790 - stable/11/sys/cam/scsi X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/scsi X-SVN-Commit-Revision: 350790 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:38:54 -0000 Author: mav Date: Thu Aug 8 21:38:53 2019 New Revision: 350790 URL: https://svnweb.freebsd.org/changeset/base/350790 Log: MFC r349292: Decouple enc/ses verbosity from bootverbose. I don't want to be regularly notified that my enclosure violates standards until there is some real problem I want to debug. Modified: stable/11/sys/cam/scsi/scsi_enc.c stable/11/sys/cam/scsi/scsi_enc_internal.h stable/11/sys/cam/scsi/scsi_enc_safte.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/scsi/scsi_enc.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc.c Thu Aug 8 21:38:13 2019 (r350789) +++ stable/11/sys/cam/scsi/scsi_enc.c Thu Aug 8 21:38:53 2019 (r350790) @@ -80,6 +80,14 @@ static enctyp enc_type(struct ccb_getdev *); SYSCTL_NODE(_kern_cam, OID_AUTO, enc, CTLFLAG_RD, 0, "CAM Enclosure Services driver"); +#if defined(DEBUG) || defined(ENC_DEBUG) +int enc_verbose = 1; +#else +int enc_verbose = 0; +#endif +SYSCTL_INT(_kern_cam_enc, OID_AUTO, verbose, CTLFLAG_RWTUN, + &enc_verbose, 0, "Enable verbose logging"); + static struct periph_driver encdriver = { enc_init, "ses", TAILQ_HEAD_INITIALIZER(encdriver.units), /* generation */ 0 Modified: stable/11/sys/cam/scsi/scsi_enc_internal.h ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc_internal.h Thu Aug 8 21:38:13 2019 (r350789) +++ stable/11/sys/cam/scsi/scsi_enc_internal.h Thu Aug 8 21:38:53 2019 (r350790) @@ -34,6 +34,8 @@ #ifndef __SCSI_ENC_INTERNAL_H__ #define __SCSI_ENC_INTERNAL_H__ +#include + typedef struct enc_element { uint32_t enctype : 8, /* enclosure type */ @@ -199,6 +201,9 @@ enc_softc_init_t ses_softc_init; /* SAF-TE interface */ enc_softc_init_t safte_softc_init; +SYSCTL_DECL(_kern_cam_enc); +extern int enc_verbose; + /* Helper macros */ MALLOC_DECLARE(M_SCSIENC); #define ENC_CFLAGS CAM_RETRY_SELTO @@ -211,7 +216,7 @@ MALLOC_DECLARE(M_SCSIENC); #else #define ENC_DLOG if (0) enc_log #endif -#define ENC_VLOG if (bootverbose) enc_log +#define ENC_VLOG if (enc_verbose) enc_log #define ENC_MALLOC(amt) malloc(amt, M_SCSIENC, M_NOWAIT) #define ENC_MALLOCZ(amt) malloc(amt, M_SCSIENC, M_ZERO|M_NOWAIT) /* Cast away const avoiding GCC warnings. */ Modified: stable/11/sys/cam/scsi/scsi_enc_safte.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc_safte.c Thu Aug 8 21:38:13 2019 (r350789) +++ stable/11/sys/cam/scsi/scsi_enc_safte.c Thu Aug 8 21:38:53 2019 (r350790) @@ -225,7 +225,6 @@ static char *safte_2little = "Too Little Data Returned } int emulate_array_devices = 1; -SYSCTL_DECL(_kern_cam_enc); SYSCTL_INT(_kern_cam_enc, OID_AUTO, emulate_array_devices, CTLFLAG_RWTUN, &emulate_array_devices, 0, "Emulate Array Devices for SAF-TE"); From owner-svn-src-stable@freebsd.org Thu Aug 8 21:43:01 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 44D8FB40DD; Thu, 8 Aug 2019 21:43:01 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MLF14D8z3C1y; Thu, 8 Aug 2019 21:43:01 +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 E112D3AC2; Thu, 8 Aug 2019 21:43:00 +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 x78Lh0QV028993; Thu, 8 Aug 2019 21:43:00 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78Lh0VZ028992; Thu, 8 Aug 2019 21:43:00 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082143.x78Lh0VZ028992@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:43:00 +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: r350791 - stable/11/sys/dev/ahci X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/dev/ahci X-SVN-Commit-Revision: 350791 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:43:01 -0000 Author: mav Date: Thu Aug 8 21:43:00 2019 New Revision: 350791 URL: https://svnweb.freebsd.org/changeset/base/350791 Log: MFC r336760 (by luporl): Fixed endianess issue in AHCI driver There were some bits that were being set in cmd_flags (a field of AHCI's command list structure) after cmd_flags was converted to little endian. On a big endian host, such as PowerPC, this would set the wrong bits. This was preventing AHCI driver from working on these hosts. Modified: stable/11/sys/dev/ahci/ahci.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/ahci/ahci.c ============================================================================== --- stable/11/sys/dev/ahci/ahci.c Thu Aug 8 21:38:53 2019 (r350790) +++ stable/11/sys/dev/ahci/ahci.c Thu Aug 8 21:43:00 2019 (r350791) @@ -1528,6 +1528,7 @@ ahci_execute_transaction(struct ahci_slot *slot) int fis_size, i, softreset; uint8_t *fis = ch->dma.rfis + 0x40; uint8_t val; + uint16_t cmd_flags; /* Get a piece of the workspace for this request */ ctp = (struct ahci_cmd_tab *) @@ -1541,12 +1542,12 @@ ahci_execute_transaction(struct ahci_slot *slot) /* Setup the command list entry */ clp = (struct ahci_cmd_list *) (ch->dma.work + AHCI_CL_OFFSET + (AHCI_CL_SIZE * slot->slot)); - clp->cmd_flags = htole16( + cmd_flags = (ccb->ccb_h.flags & CAM_DIR_OUT ? AHCI_CMD_WRITE : 0) | (ccb->ccb_h.func_code == XPT_SCSI_IO ? (AHCI_CMD_ATAPI | AHCI_CMD_PREFETCH) : 0) | (fis_size / sizeof(u_int32_t)) | - (port << 12)); + (port << 12); clp->prd_length = htole16(slot->dma.nsegs); /* Special handling for Soft Reset command. */ if ((ccb->ccb_h.func_code == XPT_ATA_IO) && @@ -1557,7 +1558,7 @@ ahci_execute_transaction(struct ahci_slot *slot) ahci_stop(ch); ahci_clo(ch); ahci_start(ch, 0); - clp->cmd_flags |= AHCI_CMD_RESET | AHCI_CMD_CLR_BUSY; + cmd_flags |= AHCI_CMD_RESET | AHCI_CMD_CLR_BUSY; } else { softreset = 2; /* Prepare FIS receive area for check. */ @@ -1567,6 +1568,7 @@ ahci_execute_transaction(struct ahci_slot *slot) } else softreset = 0; clp->bytecount = 0; + clp->cmd_flags = htole16(cmd_flags); clp->cmd_table_phys = htole64(ch->dma.work_bus + AHCI_CT_OFFSET + (AHCI_CT_SIZE * slot->slot)); bus_dmamap_sync(ch->dma.work_tag, ch->dma.work_map, From owner-svn-src-stable@freebsd.org Thu Aug 8 21:44:38 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 34899B4170; Thu, 8 Aug 2019 21:44:38 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MN60KlXz3C9S; Thu, 8 Aug 2019 21:44:38 +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 E115B3AD4; Thu, 8 Aug 2019 21:44:37 +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 x78LiboX029149; Thu, 8 Aug 2019 21:44:37 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78Lib09029148; Thu, 8 Aug 2019 21:44:37 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082144.x78Lib09029148@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:44: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: r350792 - stable/11/sys/dev/ahci X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/dev/ahci X-SVN-Commit-Revision: 350792 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:44:38 -0000 Author: mav Date: Thu Aug 8 21:44:37 2019 New Revision: 350792 URL: https://svnweb.freebsd.org/changeset/base/350792 Log: MFC r340092 (by imp): Implement ability to turn on/off PHYs for AHCI devices. As part of Chuck's work on fixing kernel crashes caused by disk I/O errors, it is useful to be able to trigger various kinds of errors. This patch allows causing an AHCI-attached disk to disappear, by having the driver keep the PHY disabled when the driver would otherwise enable the PHY. It also allows making the disk reappear by having the driver go back to setting the PHY enable/disable state as it normal would and simulating the hardware event that causes a bus rescan. Modified: stable/11/sys/dev/ahci/ahci.c stable/11/sys/dev/ahci/ahci.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/ahci/ahci.c ============================================================================== --- stable/11/sys/dev/ahci/ahci.c Thu Aug 8 21:43:00 2019 (r350791) +++ stable/11/sys/dev/ahci/ahci.c Thu Aug 8 21:44:37 2019 (r350792) @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -78,6 +79,8 @@ static void ahci_stop(struct ahci_channel *ch); static void ahci_clo(struct ahci_channel *ch); static void ahci_start_fr(struct ahci_channel *ch); static void ahci_stop_fr(struct ahci_channel *ch); +static int ahci_phy_check_events(struct ahci_channel *ch, u_int32_t serr); +static uint32_t ahci_ch_detval(struct ahci_channel *ch, uint32_t val); static int ahci_sata_connect(struct ahci_channel *ch); static int ahci_sata_phy_reset(struct ahci_channel *ch); @@ -98,6 +101,13 @@ static MALLOC_DEFINE(M_AHCI, "AHCI driver", "AHCI driv #define RECOVERY_REQUEST_SENSE 2 #define recovery_slot spriv_field1 +static uint32_t +ahci_ch_detval(struct ahci_channel *ch, uint32_t val) +{ + + return ch->disablephy ? ATA_SC_DET_DISABLE : val; +} + int ahci_ctlr_setup(device_t dev) { @@ -662,11 +672,38 @@ ahci_ch_probe(device_t dev) } static int +ahci_ch_disablephy_proc(SYSCTL_HANDLER_ARGS) +{ + struct ahci_channel *ch; + int error, value; + + ch = arg1; + value = ch->disablephy; + error = sysctl_handle_int(oidp, &value, 0, req); + if (error != 0 || req->newptr == NULL || (value != 0 && value != 1)) + return (error); + + mtx_lock(&ch->mtx); + ch->disablephy = value; + if (value) { + ahci_ch_deinit(ch->dev); + } else { + ahci_ch_init(ch->dev); + ahci_phy_check_events(ch, ATA_SE_PHY_CHANGED | ATA_SE_EXCHANGED); + } + mtx_unlock(&ch->mtx); + + return (0); +} + +static int ahci_ch_attach(device_t dev) { struct ahci_controller *ctlr = device_get_softc(device_get_parent(dev)); struct ahci_channel *ch = device_get_softc(dev); struct cam_devq *devq; + struct sysctl_ctx_list *ctx; + struct sysctl_oid *tree; int rid, error, i, sata_rev = 0; u_int32_t version; @@ -784,6 +821,11 @@ ahci_ch_attach(device_t dev) ahci_ch_pm, ch); } mtx_unlock(&ch->mtx); + ctx = device_get_sysctl_ctx(dev); + tree = device_get_sysctl_tree(dev); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "disable_phy", + CTLFLAG_RW | CTLTYPE_UINT, ch, 0, ahci_ch_disablephy_proc, "IU", + "Disable PHY"); return (0); err3: @@ -2494,7 +2536,7 @@ static int ahci_sata_phy_reset(struct ahci_channel *ch) { int sata_rev; - uint32_t val; + uint32_t val, detval; if (ch->listening) { val = ATA_INL(ch->r_mem, AHCI_P_CMD); @@ -2511,12 +2553,14 @@ ahci_sata_phy_reset(struct ahci_channel *ch) val = ATA_SC_SPD_SPEED_GEN3; else val = 0; + detval = ahci_ch_detval(ch, ATA_SC_DET_RESET); ATA_OUTL(ch->r_mem, AHCI_P_SCTL, - ATA_SC_DET_RESET | val | + detval | val | ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER); DELAY(1000); + detval = ahci_ch_detval(ch, ATA_SC_DET_IDLE); ATA_OUTL(ch->r_mem, AHCI_P_SCTL, - ATA_SC_DET_IDLE | val | ((ch->pm_level > 0) ? 0 : + detval | val | ((ch->pm_level > 0) ? 0 : (ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER))); if (!ahci_sata_connect(ch)) { if (ch->caps & AHCI_CAP_SSS) { Modified: stable/11/sys/dev/ahci/ahci.h ============================================================================== --- stable/11/sys/dev/ahci/ahci.h Thu Aug 8 21:43:00 2019 (r350791) +++ stable/11/sys/dev/ahci/ahci.h Thu Aug 8 21:44:37 2019 (r350792) @@ -459,6 +459,8 @@ struct ahci_channel { struct mtx_padalign mtx; /* state lock */ STAILQ_HEAD(, ccb_hdr) doneq; /* queue of completed CCBs */ int batch; /* doneq is in use */ + + int disablephy; /* keep PHY disabled */ }; struct ahci_enclosure { From owner-svn-src-stable@freebsd.org Thu Aug 8 21:46:39 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 47999B422B; Thu, 8 Aug 2019 21:46:39 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MQR1sy8z3CJS; Thu, 8 Aug 2019 21:46:39 +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 071F13ADF; Thu, 8 Aug 2019 21:46:39 +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 x78LkdCs029316; Thu, 8 Aug 2019 21:46:39 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LkbUq029306; Thu, 8 Aug 2019 21:46:37 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082146.x78LkbUq029306@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:46: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: r350793 - in stable/11/sys: cam/scsi dev/ahci X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/11/sys: cam/scsi dev/ahci X-SVN-Commit-Revision: 350793 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:46:39 -0000 Author: mav Date: Thu Aug 8 21:46:36 2019 New Revision: 350793 URL: https://svnweb.freebsd.org/changeset/base/350793 Log: MFC r349321: Improve AHCI Enclosure Management and SES interoperation. Since SES specs do not define mechanism to map enclosure slots to SATA disks, AHCI EM code I written many years ago appeared quite useless, that always bugged me. I was thinking whether it was a good idea, but if LSI HBAs do that, why I shouldn't? This change introduces simple non-standard mechanism for the mapping into both AHCI EM and SES code, that makes AHCI EM on capable controllers (most of Intel's) a first-class SES citizen, allowing it to report disk physical path to GEOM, show devices inserted into each enclosure slot in `sesutil map` and `getencstat`, control locate and fault LEDs for specific devices with `sesutil locate adaX on` and `sesutil fault adaX on`, etc. I've successfully tested this on Supermicro X10DRH-i motherboard connected with sideband cable of its S-SATA Mini-SAS connector to SAS815TQ backplane. It can indicate with LEDs Locate, Fault and Rebuild/Remap SES statuses for each disk identical to real SES of Supermicro SAS2 backplanes. Modified: stable/11/sys/cam/scsi/scsi_all.c stable/11/sys/cam/scsi/scsi_enc.c stable/11/sys/cam/scsi/scsi_enc.h stable/11/sys/cam/scsi/scsi_enc_internal.h stable/11/sys/cam/scsi/scsi_enc_safte.c stable/11/sys/cam/scsi/scsi_enc_ses.c stable/11/sys/cam/scsi/scsi_ses.h stable/11/sys/dev/ahci/ahci.c stable/11/sys/dev/ahci/ahci.h stable/11/sys/dev/ahci/ahciem.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/scsi/scsi_all.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_all.c Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/cam/scsi/scsi_all.c Thu Aug 8 21:46:36 2019 (r350793) @@ -5559,6 +5559,7 @@ scsi_devid_is_naa_ieee_reg(uint8_t *bufp) { struct scsi_vpd_id_descriptor *descr; struct scsi_vpd_id_naa_basic *naa; + int n; descr = (struct scsi_vpd_id_descriptor *)bufp; naa = (struct scsi_vpd_id_naa_basic *)descr->identifier; @@ -5566,7 +5567,8 @@ scsi_devid_is_naa_ieee_reg(uint8_t *bufp) return 0; if (descr->length < sizeof(struct scsi_vpd_id_naa_ieee_reg)) return 0; - if ((naa->naa >> SVPD_ID_NAA_NAA_SHIFT) != SVPD_ID_NAA_IEEE_REG) + n = naa->naa >> SVPD_ID_NAA_NAA_SHIFT; + if (n != SVPD_ID_NAA_LOCAL_REG && n != SVPD_ID_NAA_IEEE_REG) return 0; return 1; } Modified: stable/11/sys/cam/scsi/scsi_enc.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc.c Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/cam/scsi/scsi_enc.c Thu Aug 8 21:46:36 2019 (r350793) @@ -88,6 +88,9 @@ int enc_verbose = 0; SYSCTL_INT(_kern_cam_enc, OID_AUTO, verbose, CTLFLAG_RWTUN, &enc_verbose, 0, "Enable verbose logging"); +const char *elm_type_names[] = ELM_TYPE_NAMES; +CTASSERT(nitems(elm_type_names) - 1 == ELMTYP_LAST); + static struct periph_driver encdriver = { enc_init, "ses", TAILQ_HEAD_INITIALIZER(encdriver.units), /* generation */ 0 @@ -239,13 +242,19 @@ enc_async(void *callback_arg, uint32_t code, struct ca struct enc_softc *softc; softc = (struct enc_softc *)periph->softc; - if (xpt_path_path_id(periph->path) != path_id - || softc == NULL - || (softc->enc_flags & ENC_FLAG_INITIALIZED) - == 0 - || softc->enc_vec.device_found == NULL) + + /* Check this SEP is ready. */ + if (softc == NULL || (softc->enc_flags & + ENC_FLAG_INITIALIZED) == 0 || + softc->enc_vec.device_found == NULL) continue; + /* Check this SEP may manage this device. */ + if (xpt_path_path_id(periph->path) != path_id && + (softc->enc_type != ENC_SEMB_SES || + cgd->protocol != PROTO_ATA)) + continue; + softc->enc_vec.device_found(softc); } xpt_unlock_buses(); @@ -439,7 +448,7 @@ enc_ioctl(struct cdev *dev, u_long cmd, caddr_t arg_ad encioc_element_t kelm; kelm.elm_idx = i; kelm.elm_subenc_id = cache->elm_map[i].subenclosure; - kelm.elm_type = cache->elm_map[i].enctype; + kelm.elm_type = cache->elm_map[i].elm_type; error = copyout(&kelm, &uelm[i], sizeof(kelm)); if (error) break; Modified: stable/11/sys/cam/scsi/scsi_enc.h ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc.h Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/cam/scsi/scsi_enc.h Thu Aug 8 21:46:36 2019 (r350793) @@ -118,9 +118,41 @@ typedef enum { ELMTYP_SCSI_INI = 0x15, ELMTYP_SUBENC = 0x16, ELMTYP_ARRAY_DEV = 0x17, - ELMTYP_SAS_EXP = 0x18, /* SAS expander */ - ELMTYP_SAS_CONN = 0x19 /* SAS connector */ + ELMTYP_SAS_EXP = 0x18, /* SAS Expander */ + ELMTYP_SAS_CONN = 0x19, /* SAS Connector */ + ELMTYP_LAST = ELMTYP_SAS_CONN } elm_type_t; + +#define ELM_TYPE_NAMES { \ + "Unspecified", \ + "Device Slot", \ + "Power Supply", \ + "Cooling", \ + "Temperature Sensors", \ + "Door", \ + "Audible alarm", \ + "Enclosure Services Controller Electronics", \ + "SCC Controller Electronics", \ + "Nonvolatile Cache", \ + "Invalid Operation Reason", \ + "Uninterruptible Power Supply", \ + "Display", \ + "Key Pad Entry", \ + "Enclosure", \ + "SCSI Port/Transceiver", \ + "Language", \ + "Communication Port", \ + "Voltage Sensor", \ + "Current Sensor", \ + "SCSI Target Port", \ + "SCSI Initiator Port", \ + "Simple Subenclosure", \ + "Array Device Slot", \ + "SAS Expander", \ + "SAS Connector" \ +} + +extern const char *elm_type_names[]; typedef struct encioc_element { /* Element Index */ Modified: stable/11/sys/cam/scsi/scsi_enc_internal.h ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc_internal.h Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/cam/scsi/scsi_enc_internal.h Thu Aug 8 21:46:36 2019 (r350793) @@ -37,16 +37,12 @@ #include typedef struct enc_element { - uint32_t - enctype : 8, /* enclosure type */ - subenclosure : 8, /* subenclosure id */ - svalid : 1, /* enclosure information valid */ - overall_status_elem: 1,/* - * This object represents generic - * status about all objects of this - * type. - */ - priv : 14; /* private data, per object */ + uint8_t elm_idx; /* index of element */ + uint8_t elm_type; /* element type */ + uint8_t subenclosure; /* subenclosure id */ + uint8_t type_elm_idx; /* index of element within type */ + uint8_t svalid; /* enclosure information valid */ + uint16_t priv; /* private data, per object */ uint8_t encstat[4]; /* state && stats */ uint8_t *physical_path; /* Device physical path data. */ u_int physical_path_len; /* Length of device path data. */ Modified: stable/11/sys/cam/scsi/scsi_enc_safte.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc_safte.c Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/cam/scsi/scsi_enc_safte.c Thu Aug 8 21:46:36 2019 (r350793) @@ -299,21 +299,21 @@ safte_process_config(enc_softc_t *enc, struct enc_fsm_ * in later fetches of status. */ for (i = 0; i < cfg->Nfans; i++) - enc->enc_cache.elm_map[r++].enctype = ELMTYP_FAN; + enc->enc_cache.elm_map[r++].elm_type = ELMTYP_FAN; cfg->pwroff = (uint8_t) r; for (i = 0; i < cfg->Npwr; i++) - enc->enc_cache.elm_map[r++].enctype = ELMTYP_POWER; + enc->enc_cache.elm_map[r++].elm_type = ELMTYP_POWER; for (i = 0; i < cfg->DoorLock; i++) - enc->enc_cache.elm_map[r++].enctype = ELMTYP_DOORLOCK; + enc->enc_cache.elm_map[r++].elm_type = ELMTYP_DOORLOCK; if (cfg->Nspkrs > 0) - enc->enc_cache.elm_map[r++].enctype = ELMTYP_ALARM; + enc->enc_cache.elm_map[r++].elm_type = ELMTYP_ALARM; for (i = 0; i < cfg->Ntherm; i++) - enc->enc_cache.elm_map[r++].enctype = ELMTYP_THERM; + enc->enc_cache.elm_map[r++].elm_type = ELMTYP_THERM; for (i = 0; i <= cfg->Ntstats; i++) - enc->enc_cache.elm_map[r++].enctype = ELMTYP_THERM; + enc->enc_cache.elm_map[r++].elm_type = ELMTYP_THERM; cfg->slotoff = (uint8_t) r; for (i = 0; i < cfg->Nslots; i++) - enc->enc_cache.elm_map[r++].enctype = + enc->enc_cache.elm_map[r++].elm_type = emulate_array_devices ? ELMTYP_ARRAY_DEV : ELMTYP_DEVICE; @@ -503,7 +503,7 @@ safte_process_status(enc_softc_t *enc, struct enc_fsm_ */ for (i = 0; i < cfg->Nslots; i++) { SAFT_BAIL(r, xfer_len); - if (cache->elm_map[cfg->slotoff + i].enctype == ELMTYP_DEVICE) + if (cache->elm_map[cfg->slotoff + i].elm_type == ELMTYP_DEVICE) cache->elm_map[cfg->slotoff + i].encstat[1] = buf[r]; r++; } @@ -676,7 +676,7 @@ safte_process_slotstatus(enc_softc_t *enc, struct enc_ oid = cfg->slotoff; for (r = i = 0; i < cfg->Nslots; i++, r += 4) { SAFT_BAIL(r+3, xfer_len); - if (cache->elm_map[oid].enctype == ELMTYP_ARRAY_DEV) + if (cache->elm_map[oid].elm_type == ELMTYP_ARRAY_DEV) cache->elm_map[oid].encstat[1] = 0; cache->elm_map[oid].encstat[2] &= SESCTL_RQSID; cache->elm_map[oid].encstat[3] = 0; @@ -703,7 +703,7 @@ safte_process_slotstatus(enc_softc_t *enc, struct enc_ cache->elm_map[oid].encstat[3] |= SESCTL_RQSFLT; if (buf[r+0] & 0x40) cache->elm_map[oid].encstat[0] |= SESCTL_PRDFAIL; - if (cache->elm_map[oid].enctype == ELMTYP_ARRAY_DEV) { + if (cache->elm_map[oid].elm_type == ELMTYP_ARRAY_DEV) { if (buf[r+0] & 0x01) cache->elm_map[oid].encstat[1] |= 0x80; if (buf[r+0] & 0x04) @@ -769,7 +769,7 @@ safte_fill_control_request(enc_softc_t *enc, struct en } else { ep = &enc->enc_cache.elm_map[idx]; - switch (ep->enctype) { + switch (ep->elm_type) { case ELMTYP_DEVICE: case ELMTYP_ARRAY_DEV: switch (cfg->current_request_stage) { @@ -779,7 +779,7 @@ safte_fill_control_request(enc_softc_t *enc, struct en ep->priv |= 0x40; if (req->elm_stat[3] & SESCTL_RQSFLT) ep->priv |= 0x02; - if (ep->enctype == ELMTYP_ARRAY_DEV) { + if (ep->elm_type == ELMTYP_ARRAY_DEV) { if (req->elm_stat[1] & 0x01) ep->priv |= 0x200; if (req->elm_stat[1] & 0x02) @@ -968,7 +968,7 @@ safte_process_control_request(enc_softc_t *enc, struct if (idx == SES_SETSTATUS_ENC_IDX) type = -1; else - type = enc->enc_cache.elm_map[idx].enctype; + type = enc->enc_cache.elm_map[idx].elm_type; if (type == ELMTYP_DEVICE || type == ELMTYP_ARRAY_DEV) enc_update_request(enc, SAFTE_UPDATE_READSLOTSTATUS); else Modified: stable/11/sys/cam/scsi/scsi_enc_ses.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_enc_ses.c Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/cam/scsi/scsi_enc_ses.c Thu Aug 8 21:46:36 2019 (r350793) @@ -100,6 +100,7 @@ typedef struct ses_addl_status { union { union ses_fcobj_hdr *fc; union ses_elm_sas_hdr *sas; + struct ses_elm_ata_hdr *ata; } proto_hdr; union ses_addl_data proto_data; /* array sizes stored in header */ } ses_add_status_t; @@ -823,14 +824,6 @@ ses_devids_iter(enc_softc_t *enc, enc_element_t *elm, elmpriv = elm->elm_private; addl = &(elmpriv->addl); - /* - * Don't assume this object has additional status information, or - * that it is a SAS device, or that it is a device slot device. - */ - if (addl->hdr == NULL || addl->proto_hdr.sas == NULL - || addl->proto_data.sasdev_phys == NULL) - return; - devid_record_size = SVPD_DEVICE_ID_DESC_HDR_LEN + sizeof(struct scsi_vpd_id_naa_ieee_reg); for (i = 0; i < addl->proto_hdr.sas->base_hdr.num_phys; i++) { @@ -948,11 +941,40 @@ static void ses_paths_iter(enc_softc_t *enc, enc_element_t *elm, ses_path_callback_t *callback, void *callback_arg) { - ses_path_iter_args_t args; + ses_element_t *elmpriv; + struct ses_addl_status *addl; - args.callback = callback; - args.callback_arg = callback_arg; - ses_devids_iter(enc, elm, ses_path_iter_devid_callback, &args); + elmpriv = elm->elm_private; + addl = &(elmpriv->addl); + + if (addl->hdr == NULL) + return; + + if (addl->proto_hdr.sas != NULL && + addl->proto_data.sasdev_phys != NULL) { + ses_path_iter_args_t args; + + args.callback = callback; + args.callback_arg = callback_arg; + ses_devids_iter(enc, elm, ses_path_iter_devid_callback, &args); + } else if (addl->proto_hdr.ata != NULL) { + struct cam_path *path; + struct ccb_getdev cgd; + + if (xpt_create_path(&path, /*periph*/NULL, + scsi_4btoul(addl->proto_hdr.ata->bus), + scsi_4btoul(addl->proto_hdr.ata->target), 0) + != CAM_REQ_CMP) + return; + + xpt_setup_ccb(&cgd.ccb_h, path, CAM_PRIORITY_NORMAL); + cgd.ccb_h.func_code = XPT_GDEV_TYPE; + xpt_action((union ccb *)&cgd); + if (cgd.ccb_h.status == CAM_REQ_CMP) + callback(enc, elm, path, callback_arg); + + xpt_free_path(path); + } } /** @@ -1057,6 +1079,10 @@ ses_set_physpath(enc_softc_t *enc, enc_element_t *elm, ret = EIO; devid = NULL; + elmpriv = elm->elm_private; + if (elmpriv->addl.hdr == NULL) + goto out; + /* * Assemble the components of the physical path starting with * the device ID of the enclosure itself. @@ -1089,7 +1115,6 @@ ses_set_physpath(enc_softc_t *enc, enc_element_t *elm, scsi_8btou64(idd->identifier), iter->type_index, iter->type_element_index); /* Append the element descriptor if one exists */ - elmpriv = elm->elm_private; if (elmpriv->descr != NULL && elmpriv->descr_len > 0) { sbuf_cat(&sb, "/elmdesc@"); for (i = 0, c = elmpriv->descr; i < elmpriv->descr_len; @@ -1455,9 +1480,10 @@ ses_process_config(enc_softc_t *enc, struct enc_fsm_st iter.global_element_index, iter.type_index, nelm, iter.type_element_index); thdr = ses_cache->ses_types[iter.type_index].hdr; + element->elm_idx = iter.global_element_index; + element->elm_type = thdr->etype_elm_type; element->subenclosure = thdr->etype_subenc; - element->enctype = thdr->etype_elm_type; - element->overall_status_elem = iter.type_element_index == 0; + element->type_elm_idx = iter.type_element_index; element->elm_private = malloc(sizeof(ses_element_t), M_SCSIENC, M_WAITOK|M_ZERO); ENC_DLOG(enc, "%s: creating elmpriv %d(%d,%d) subenc %d " @@ -1661,6 +1687,8 @@ static int ses_get_elm_addlstatus_fc(enc_softc_t *, en uint8_t *, int); static int ses_get_elm_addlstatus_sas(enc_softc_t *, enc_cache_t *, uint8_t *, int, int, int, int); +static int ses_get_elm_addlstatus_ata(enc_softc_t *, enc_cache_t *, uint8_t *, + int, int, int, int); /** * \brief Parse the additional status element data for each object. @@ -1816,7 +1844,6 @@ badindex: } } elmpriv = element->elm_private; - elmpriv->addl.hdr = elm_hdr; ENC_DLOG(enc, "%s: global element index=%d, type index=%d " "type element index=%d, offset=0x%x, " "byte0=0x%x, length=0x%x\n", __func__, @@ -1840,6 +1867,7 @@ badindex: offset += elm_hdr->length; continue; } + elmpriv->addl.hdr = elm_hdr; /* Advance to the protocol data, skipping eip bytes if needed */ offset += (eip * SES_EIP_HDR_EXTRA_LEN); @@ -1863,6 +1891,13 @@ badindex: eip, iter.type_index, iter.global_element_index); break; + case SPSP_PROTO_ATA: + ses_get_elm_addlstatus_ata(enc, enc_cache, + &buf[offset], + proto_info_len, + eip, iter.type_index, + iter.global_element_index); + break; default: ENC_VLOG(enc, "Element %d: Unknown Additional Element " "Protocol 0x%x\n", iter.global_element_index, @@ -2191,18 +2226,16 @@ ses_get_elm_addlstatus_fc(enc_softc_t *enc, enc_cache_ } #define SES_PRINT_PORTS(p, type) do { \ - sbuf_printf(sbp, " %s(", type); \ - if (((p) & SES_SASOBJ_DEV_PHY_PROTOMASK) == 0) \ - sbuf_printf(sbp, " None"); \ - else { \ + if (((p) & SES_SASOBJ_DEV_PHY_PROTOMASK) != 0) { \ + sbuf_printf(sbp, " %s (", type); \ if ((p) & SES_SASOBJ_DEV_PHY_SMP) \ sbuf_printf(sbp, " SMP"); \ if ((p) & SES_SASOBJ_DEV_PHY_STP) \ sbuf_printf(sbp, " STP"); \ if ((p) & SES_SASOBJ_DEV_PHY_SSP) \ sbuf_printf(sbp, " SSP"); \ + sbuf_printf(sbp, " )"); \ } \ - sbuf_printf(sbp, " )"); \ } while(0) /** @@ -2212,11 +2245,10 @@ ses_get_elm_addlstatus_fc(enc_softc_t *enc, enc_cache_ * \param sesname SES device name associated with the object. * \param sbp Sbuf to print to. * \param obj The object to print the data for. - * \param periph_name Peripheral string associated with the object. */ static void ses_print_addl_data_sas_type0(char *sesname, struct sbuf *sbp, - enc_element_t *obj, char *periph_name) + enc_element_t *obj) { int i; ses_element_t *elmpriv; @@ -2225,16 +2257,12 @@ ses_print_addl_data_sas_type0(char *sesname, struct sb elmpriv = obj->elm_private; addl = &(elmpriv->addl); - if (addl->proto_hdr.sas == NULL) - return; - sbuf_printf(sbp, "%s: %s: SAS Device Slot Element:", - sesname, periph_name); - sbuf_printf(sbp, " %d Phys", addl->proto_hdr.sas->base_hdr.num_phys); + sbuf_printf(sbp, ", SAS Slot: %d%s phys", + addl->proto_hdr.sas->base_hdr.num_phys, + ses_elm_sas_type0_not_all_phys(addl->proto_hdr.sas) ? "+" : ""); if (ses_elm_addlstatus_eip(addl->hdr)) - sbuf_printf(sbp, " at Slot %d", + sbuf_printf(sbp, " at slot %d", addl->proto_hdr.sas->type0_eip.dev_slot_num); - if (ses_elm_sas_type0_not_all_phys(addl->proto_hdr.sas)) - sbuf_printf(sbp, ", Not All Phys"); sbuf_printf(sbp, "\n"); if (addl->proto_data.sasdev_phys == NULL) return; @@ -2245,9 +2273,8 @@ ses_print_addl_data_sas_type0(char *sesname, struct sb /* Spec says all other fields are specific values */ sbuf_printf(sbp, " SATA device\n"); else { - sbuf_printf(sbp, " SAS device type %d id %d\n", + sbuf_printf(sbp, " SAS device type %d phy %d", ses_elm_sas_dev_phy_dev_type(phy), phy->phy_id); - sbuf_printf(sbp, "%s: phy %d: protocols:", sesname, i); SES_PRINT_PORTS(phy->initiator_ports, "Initiator"); SES_PRINT_PORTS(phy->target_ports, "Target"); sbuf_printf(sbp, "\n"); @@ -2261,32 +2288,16 @@ ses_print_addl_data_sas_type0(char *sesname, struct sb #undef SES_PRINT_PORTS /** - * \brief Report whether a given enclosure object is an expander. - * - * \param enc SES softc associated with object. - * \param obj Enclosure object to report for. - * - * \return 1 if true, 0 otherwise. - */ -static int -ses_obj_is_expander(enc_softc_t *enc, enc_element_t *obj) -{ - return (obj->enctype == ELMTYP_SAS_EXP); -} - -/** * \brief Print the additional element status data for this object, for SAS * type 1 objects. See SES2 r20 Sections 6.1.13.3.3 and 6.1.13.3.4. * - * \param enc SES enclosure, needed for type identification. * \param sesname SES device name associated with the object. * \param sbp Sbuf to print to. * \param obj The object to print the data for. - * \param periph_name Peripheral string associated with the object. */ static void -ses_print_addl_data_sas_type1(enc_softc_t *enc, char *sesname, - struct sbuf *sbp, enc_element_t *obj, char *periph_name) +ses_print_addl_data_sas_type1(char *sesname, struct sbuf *sbp, + enc_element_t *obj) { int i, num_phys; ses_element_t *elmpriv; @@ -2296,12 +2307,10 @@ ses_print_addl_data_sas_type1(enc_softc_t *enc, char * elmpriv = obj->elm_private; addl = &(elmpriv->addl); - if (addl->proto_hdr.sas == NULL) - return; - sbuf_printf(sbp, "%s: %s: SAS ", sesname, periph_name); - if (ses_obj_is_expander(enc, obj)) { + sbuf_printf(sbp, ", SAS "); + if (obj->elm_type == ELMTYP_SAS_EXP) { num_phys = addl->proto_hdr.sas->base_hdr.num_phys; - sbuf_printf(sbp, "Expander: %d Phys", num_phys); + sbuf_printf(sbp, "Expander: %d phys", num_phys); if (addl->proto_data.sasexp_phys == NULL) return; for (i = 0;i < num_phys;i++) { @@ -2312,7 +2321,7 @@ ses_print_addl_data_sas_type1(enc_softc_t *enc, char * } } else { num_phys = addl->proto_hdr.sas->base_hdr.num_phys; - sbuf_printf(sbp, "Port: %d Phys", num_phys); + sbuf_printf(sbp, "Port: %d phys", num_phys); if (addl->proto_data.sasport_phys == NULL) return; for (i = 0;i < num_phys;i++) { @@ -2328,6 +2337,24 @@ ses_print_addl_data_sas_type1(enc_softc_t *enc, char * } /** + * \brief Print the additional element status data for this object, for + * ATA objects. + * + * \param sbp Sbuf to print to. + * \param obj The object to print the data for. + */ +static void +ses_print_addl_data_ata(struct sbuf *sbp, enc_element_t *obj) +{ + ses_element_t *elmpriv = obj->elm_private; + struct ses_addl_status *addl = &elmpriv->addl; + struct ses_elm_ata_hdr *ata = addl->proto_hdr.ata; + + sbuf_printf(sbp, ", SATA Slot: scbus%d target %d\n", + scsi_4btoul(ata->bus), scsi_4btoul(ata->target)); +} + +/** * \brief Print the additional element status data for this object. * * \param enc SES softc associated with the object. @@ -2358,27 +2385,45 @@ ses_print_addl_data(enc_softc_t *enc, enc_element_t *o sbuf_printf(&sesname, "%s%d", enc->periph->periph_name, enc->periph->unit_number); sbuf_finish(&sesname); + sbuf_printf(&out, "%s: %s in ", sbuf_data(&sesname), sbuf_data(&name)); if (elmpriv->descr != NULL) - sbuf_printf(&out, "%s: %s: Element descriptor: '%s'\n", - sbuf_data(&sesname), sbuf_data(&name), elmpriv->descr); + sbuf_printf(&out, "'%s'", elmpriv->descr); + else { + if (obj->elm_type <= ELMTYP_LAST) + sbuf_cat(&out, elm_type_names[obj->elm_type]); + else + sbuf_printf(&out, "", obj->elm_type); + sbuf_printf(&out, " %d", obj->type_elm_idx); + if (obj->subenclosure != 0) + sbuf_printf(&out, " of subenc %d", obj->subenclosure); + } switch(ses_elm_addlstatus_proto(addl->hdr)) { + case SPSP_PROTO_FC: + goto noaddl; /* stubbed for now */ case SPSP_PROTO_SAS: + if (addl->proto_hdr.sas == NULL) + goto noaddl; switch(ses_elm_sas_descr_type(addl->proto_hdr.sas)) { case SES_SASOBJ_TYPE_SLOT: ses_print_addl_data_sas_type0(sbuf_data(&sesname), - &out, obj, sbuf_data(&name)); + &out, obj); break; case SES_SASOBJ_TYPE_OTHER: - ses_print_addl_data_sas_type1(enc, sbuf_data(&sesname), - &out, obj, sbuf_data(&name)); + ses_print_addl_data_sas_type1(sbuf_data(&sesname), + &out, obj); break; default: - break; + goto noaddl; } break; - case SPSP_PROTO_FC: /* stubbed for now */ + case SPSP_PROTO_ATA: + if (addl->proto_hdr.ata == NULL) + goto noaddl; + ses_print_addl_data_ata(&out, obj); break; default: +noaddl: + sbuf_cat(&out, "\n"); break; } sbuf_finish(&out); @@ -2483,7 +2528,7 @@ ses_get_elm_addlstatus_sas_type1(enc_softc_t *enc, enc goto out; /* Process expanders differently from other type1 cases */ - if (ses_obj_is_expander(enc, obj)) { + if (obj->elm_type == ELMTYP_SAS_EXP) { offset += sizeof(struct ses_elm_sas_type1_expander_hdr); physz = addl->proto_hdr.sas->base_hdr.num_phys * sizeof(struct ses_elm_sas_expander_phy); @@ -2586,6 +2631,53 @@ ses_get_elm_addlstatus_sas(enc_softc_t *enc, enc_cache err = ENODEV; break; } + +out: + return (err); +} + +/** + * \brief Update the softc with the additional element status data for this + * object, for ATA objects. + * + * \param enc SES softc to be updated. + * \param buf The additional element status response buffer. + * \param bufsiz Size of the response buffer. + * \param eip The EIP bit value. + * \param tidx Type index for this object. + * \param nobj Number of objects attached to the SES softc. + * + * \return 0 on success, errno otherwise. + */ +static int +ses_get_elm_addlstatus_ata(enc_softc_t *enc, enc_cache_t *enc_cache, + uint8_t *buf, int bufsiz, int eip, int tidx, + int nobj) +{ + int err; + ses_cache_t *ses_cache; + + if (bufsiz < sizeof(struct ses_elm_ata_hdr)) { + err = EIO; + goto out; + } + + ses_cache = enc_cache->private; + switch(ses_cache->ses_types[tidx].hdr->etype_elm_type) { + case ELMTYP_DEVICE: + case ELMTYP_ARRAY_DEV: + break; + default: + ENC_VLOG(enc, "Element %d has Additional Status, " + "invalid for SES element type 0x%x\n", nobj, + ses_cache->ses_types[tidx].hdr->etype_elm_type); + err = ENODEV; + goto out; + } + + ((ses_element_t *)enc_cache->elm_map[nobj].elm_private) + ->addl.proto_hdr.ata = (struct ses_elm_ata_hdr *)buf; + err = 0; out: return (err); Modified: stable/11/sys/cam/scsi/scsi_ses.h ============================================================================== --- stable/11/sys/cam/scsi/scsi_ses.h Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/cam/scsi/scsi_ses.h Thu Aug 8 21:46:36 2019 (r350793) @@ -2179,15 +2179,27 @@ struct ses_status_page_hdr { #define SESCTL_DISABLE 0x20 #define SESCTL_RSTSWAP 0x10 - -/* Control bits, Device Elements, byte 2 */ -#define SESCTL_DRVLCK 0x40 /* "DO NOT REMOVE" */ +/* Control bits, Array Device Slot Elements, byte 1 */ +#define SESCTL_RQSOK 0x80 /* RQST OK */ +#define SESCTL_RQSRSV 0x40 /* RQST RSVD DEVICE */ +#define SESCTL_RQSSPR 0x20 /* RQST HOT SPARE */ +#define SESCTL_RQSCCH 0x10 /* RQST CONS CHECK */ +#define SESCTL_RQSCRA 0x08 /* RQST IN CRIT ARRAY */ +#define SESCTL_RQSFAA 0x04 /* RQST IN FAILED ARRAY */ +#define SESCTL_RQSRR 0x02 /* RQST REBUI/REMAP */ +#define SESCTL_RQSRRA 0x01 /* RQST R/R ABORT */ +/* Control bits, [Array] Device Slot Elements, byte 2 */ +#define SESCTL_RQSACT 0x80 /* RQST ACTIVE */ +#define SESCTL_DRVLCK 0x40 /* DO NOT REMOVE */ +#define SESCTL_RQSMSN 0x10 /* RQST MISSING */ #define SESCTL_RQSINS 0x08 /* RQST INSERT */ #define SESCTL_RQSRMV 0x04 /* RQST REMOVE */ #define SESCTL_RQSID 0x02 /* RQST IDENT */ -/* Control bits, Device Elements, byte 3 */ +/* Control bits, [Array] Device Slot Elements, byte 3 */ #define SESCTL_RQSFLT 0x20 /* RQST FAULT */ #define SESCTL_DEVOFF 0x10 /* DEVICE OFF */ +#define SESCTL_ENBYPA 0x08 /* ENABLE BYP A */ +#define SESCTL_ENBYPB 0x04 /* ENABLE BYP B */ /* Control bits, Generic, byte 3 */ #define SESCTL_RQSTFAIL 0x40 @@ -2396,6 +2408,17 @@ union ses_elm_sas_hdr { }; int ses_elm_sas_type0_not_all_phys(union ses_elm_sas_hdr *); int ses_elm_sas_descr_type(union ses_elm_sas_hdr *); + +/* + * This structure for SPSP_PROTO_ATA is not defined by SES specs, + * but purely my own design to make AHCI EM interoperate with SES. + * Since no other software I know can talk to SEMB, and we do not + * expose this this outside, it should be safe to do what we want. + */ +struct ses_elm_ata_hdr { + uint8_t bus[4]; + uint8_t target[4]; +}; struct ses_elm_addlstatus_base_hdr { uint8_t byte0; Modified: stable/11/sys/dev/ahci/ahci.c ============================================================================== --- stable/11/sys/dev/ahci/ahci.c Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/dev/ahci/ahci.c Thu Aug 8 21:46:36 2019 (r350793) @@ -184,6 +184,7 @@ ahci_attach(device_t dev) ctlr->ccc = 0; resource_int_value(device_get_name(dev), device_get_unit(dev), "ccc", &ctlr->ccc); + mtx_init(&ctlr->ch_mtx, "AHCI channels lock", NULL, MTX_DEF); /* Setup our own memory management for channels. */ ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); @@ -376,6 +377,7 @@ ahci_detach(device_t dev) /* Free memory. */ rman_fini(&ctlr->sc_iomem); ahci_free_mem(dev); + mtx_destroy(&ctlr->ch_mtx); return (0); } @@ -663,6 +665,50 @@ ahci_get_dma_tag(device_t dev, device_t child) return (ctlr->dma_tag); } +void +ahci_attached(device_t dev, struct ahci_channel *ch) +{ + struct ahci_controller *ctlr = device_get_softc(dev); + + mtx_lock(&ctlr->ch_mtx); + ctlr->ch[ch->unit] = ch; + mtx_unlock(&ctlr->ch_mtx); +} + +void +ahci_detached(device_t dev, struct ahci_channel *ch) +{ + struct ahci_controller *ctlr = device_get_softc(dev); + + mtx_lock(&ctlr->ch_mtx); + mtx_lock(&ch->mtx); + ctlr->ch[ch->unit] = NULL; + mtx_unlock(&ch->mtx); + mtx_unlock(&ctlr->ch_mtx); +} + +struct ahci_channel * +ahci_getch(device_t dev, int n) +{ + struct ahci_controller *ctlr = device_get_softc(dev); + struct ahci_channel *ch; + + KASSERT(n >= 0 && n < AHCI_MAX_PORTS, ("Bad channel number %d", n)); + mtx_lock(&ctlr->ch_mtx); + ch = ctlr->ch[n]; + if (ch != NULL) + mtx_lock(&ch->mtx); + mtx_unlock(&ctlr->ch_mtx); + return (ch); +} + +void +ahci_putch(struct ahci_channel *ch) +{ + + mtx_unlock(&ch->mtx); +} + static int ahci_ch_probe(device_t dev) { @@ -821,6 +867,7 @@ ahci_ch_attach(device_t dev) ahci_ch_pm, ch); } mtx_unlock(&ch->mtx); + ahci_attached(device_get_parent(dev), ch); ctx = device_get_sysctl_ctx(dev); tree = device_get_sysctl_tree(dev); SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "disable_phy", @@ -846,6 +893,7 @@ ahci_ch_detach(device_t dev) { struct ahci_channel *ch = device_get_softc(dev); + ahci_detached(device_get_parent(dev), ch); mtx_lock(&ch->mtx); xpt_async(AC_LOST_DEVICE, ch->path, NULL); /* Forget about reset. */ Modified: stable/11/sys/dev/ahci/ahci.h ============================================================================== --- stable/11/sys/dev/ahci/ahci.h Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/dev/ahci/ahci.h Thu Aug 8 21:46:36 2019 (r350793) @@ -521,6 +521,8 @@ struct ahci_controller { void *argument; } interrupt[AHCI_MAX_PORTS]; void (*ch_start)(struct ahci_channel *); + struct mtx ch_mtx; /* Lock for attached channels */ + struct ahci_channel *ch[AHCI_MAX_PORTS]; /* Attached channels */ }; enum ahci_err_type { @@ -648,6 +650,12 @@ bus_dma_tag_t ahci_get_dma_tag(device_t dev, device_t int ahci_ctlr_reset(device_t dev); int ahci_ctlr_setup(device_t dev); void ahci_free_mem(device_t dev); + +/* Functions to allow AHCI EM to access other channels. */ +void ahci_attached(device_t dev, struct ahci_channel *ch); +void ahci_detached(device_t dev, struct ahci_channel *ch); +struct ahci_channel * ahci_getch(device_t dev, int n); +void ahci_putch(struct ahci_channel *ch); extern devclass_t ahci_devclass; Modified: stable/11/sys/dev/ahci/ahciem.c ============================================================================== --- stable/11/sys/dev/ahci/ahciem.c Thu Aug 8 21:44:37 2019 (r350792) +++ stable/11/sys/dev/ahci/ahciem.c Thu Aug 8 21:46:36 2019 (r350793) @@ -292,14 +292,14 @@ ahci_em_setleds(device_t dev, int c) enc = device_get_softc(dev); val = 0; - if (enc->status[c][2] & 0x80) /* Activity */ + if (enc->status[c][2] & SESCTL_RQSACT) /* Activity */ val |= (1 << 0); - if (enc->status[c][2] & SESCTL_RQSID) /* Identification */ + if (enc->status[c][1] & SESCTL_RQSRR) /* Rebuild */ + val |= (1 << 6) | (1 << 3); + else if (enc->status[c][2] & SESCTL_RQSID) /* Identification */ val |= (1 << 3); else if (enc->status[c][3] & SESCTL_RQSFLT) /* Fault */ val |= (1 << 6); - else if (enc->status[c][1] & 0x02) /* Rebuild */ - val |= (1 << 6) | (1 << 3); timeout = 10000; while (ATA_INL(enc->r_memc, 0) & (AHCI_EM_TM | AHCI_EM_RST) && @@ -364,9 +364,12 @@ static void ahci_em_emulate_ses_on_led(device_t dev, union ccb *ccb) { struct ahci_enclosure *enc; + struct ahci_channel *ch; struct ses_status_page *page; struct ses_status_array_dev_slot *ads, *ads0; struct ses_elm_desc_hdr *elmd; + struct ses_elm_addlstatus_eip_hdr *elma; + struct ses_elm_ata_hdr *elmb; uint8_t *buf; int i; @@ -389,7 +392,7 @@ ahci_em_emulate_ses_on_led(device_t dev, union ccb *cc strncpy(&buf[3], device_get_nameunit(dev), 7); strncpy(&buf[10], "AHCI ", SID_VENDOR_SIZE); strncpy(&buf[18], "SGPIO Enclosure ", SID_PRODUCT_SIZE); - strncpy(&buf[34], "1.00", SID_REVISION_SIZE); + strncpy(&buf[34], "2.00", SID_REVISION_SIZE); strncpy(&buf[39], "0001", 4); strncpy(&buf[43], "S-E-S ", 6); strncpy(&buf[49], "2.00", 4); @@ -401,14 +404,15 @@ ahci_em_emulate_ses_on_led(device_t dev, union ccb *cc page = (struct ses_status_page *)buf; if (ccb->ataio.cmd.lba_low == 0x02 && ccb->ataio.cmd.features == 0x00 && - ccb->ataio.cmd.sector_count >= 2) { + ccb->ataio.cmd.sector_count >= 3) { bzero(buf, ccb->ataio.dxfer_len); page->hdr.page_code = 0; - scsi_ulto2b(4, page->hdr.length); - buf[4] = 0; - buf[5] = 1; - buf[6] = 2; - buf[7] = 7; + scsi_ulto2b(5, page->hdr.length); + buf[4] = 0x00; + buf[5] = 0x01; + buf[6] = 0x02; + buf[7] = 0x07; + buf[8] = 0x0a; ccb->ccb_h.status = CAM_REQ_CMP; goto out; } @@ -416,26 +420,30 @@ ahci_em_emulate_ses_on_led(device_t dev, union ccb *cc /* SEMB RECEIVE DIAGNOSTIC RESULT (1) */ if (ccb->ataio.cmd.lba_low == 0x02 && ccb->ataio.cmd.features == 0x01 && - ccb->ataio.cmd.sector_count >= 13) { + ccb->ataio.cmd.sector_count >= 16) { struct ses_enc_desc *ed; struct ses_elm_type_desc *td; bzero(buf, ccb->ataio.dxfer_len); page->hdr.page_code = 0x01; - scsi_ulto2b(4 + 4 + 36 + 4, page->hdr.length); + scsi_ulto2b(4 + sizeof(*ed) + sizeof(*td) + 11, + page->hdr.length); ed = (struct ses_enc_desc *)&buf[8]; ed->byte0 = 0x11; ed->subenc_id = 0; ed->num_types = 1; ed->length = 36; + ed->logical_id[0] = 0x30; /* NAA Locally Assigned. */ + strncpy(&ed->logical_id[1], device_get_nameunit(dev), 7); strncpy(ed->vendor_id, "AHCI ", SID_VENDOR_SIZE); strncpy(ed->product_id, "SGPIO Enclosure ", SID_PRODUCT_SIZE); - strncpy(ed->product_rev, " ", SID_REVISION_SIZE); + strncpy(ed->product_rev, "2.00", SID_REVISION_SIZE); td = (struct ses_elm_type_desc *)ses_enc_desc_next(ed); td->etype_elm_type = 0x17; td->etype_maxelt = enc->channels; td->etype_subenc = 0; - td->etype_txt_len = 0; + td->etype_txt_len = 11; + snprintf((char *)(td + 1), 12, "Drive Slots"); ccb->ccb_h.status = CAM_REQ_CMP; goto out; } @@ -451,10 +459,22 @@ ahci_em_emulate_ses_on_led(device_t dev, union ccb *cc for (i = 0; i < enc->channels; i++) { ads = &page->elements[i + 1].array_dev_slot; memcpy(ads, enc->status[i], 4); - ads->common.bytes[0] |= - (enc->ichannels & (1 << i)) ? - SES_OBJSTAT_UNKNOWN : - SES_OBJSTAT_NOTINSTALLED; + ch = ahci_getch(device_get_parent(dev), i); + if (ch == NULL) { + ads->common.bytes[0] |= SES_OBJSTAT_UNKNOWN; + continue; + } + if (ch->pm_present) + ads->common.bytes[0] |= SES_OBJSTAT_UNKNOWN; + else if (ch->devices) + ads->common.bytes[0] |= SES_OBJSTAT_OK; + else if (ch->disablephy) + ads->common.bytes[0] |= SES_OBJSTAT_NOTAVAIL; + else + ads->common.bytes[0] |= SES_OBJSTAT_NOTINSTALLED; + if (ch->disablephy) + ads->common.bytes[3] |= SESCTL_DEVOFF; + ahci_putch(ch); } ccb->ccb_h.status = CAM_REQ_CMP; goto out; @@ -469,21 +489,21 @@ ahci_em_emulate_ses_on_led(device_t dev, union ccb *cc ads = &page->elements[i + 1].array_dev_slot; if (ads->common.bytes[0] & SESCTL_CSEL) { enc->status[i][0] = 0; - enc->status[i][1] = - ads->bytes[0] & 0x02; - enc->status[i][2] = - ads->bytes[1] & (0x80 | SESCTL_RQSID); - enc->status[i][3] = - ads->bytes[2] & SESCTL_RQSFLT; + enc->status[i][1] = ads->bytes[0] & + SESCTL_RQSRR; + enc->status[i][2] = ads->bytes[1] & + (SESCTL_RQSACT | SESCTL_RQSID); + enc->status[i][3] = ads->bytes[2] & + SESCTL_RQSFLT; ahci_em_setleds(dev, i); } else if (ads0->common.bytes[0] & SESCTL_CSEL) { enc->status[i][0] = 0; - enc->status[i][1] = - ads0->bytes[0] & 0x02; - enc->status[i][2] = - ads0->bytes[1] & (0x80 | SESCTL_RQSID); - enc->status[i][3] = - ads0->bytes[2] & SESCTL_RQSFLT; + enc->status[i][1] = ads0->bytes[0] & + SESCTL_RQSRR; + enc->status[i][2] = ads0->bytes[1] & + (SESCTL_RQSACT | SESCTL_RQSID); + enc->status[i][3] = ads0->bytes[2] & + SESCTL_RQSFLT; ahci_em_setleds(dev, i); } } @@ -494,15 +514,48 @@ ahci_em_emulate_ses_on_led(device_t dev, union ccb *cc /* SEMB RECEIVE DIAGNOSTIC RESULT (7) */ if (ccb->ataio.cmd.lba_low == 0x02 && ccb->ataio.cmd.features == 0x07 && - ccb->ataio.cmd.sector_count >= (3 + 3 * enc->channels)) { + ccb->ataio.cmd.sector_count >= (6 + 3 * enc->channels)) { bzero(buf, ccb->ataio.dxfer_len); page->hdr.page_code = 0x07; - scsi_ulto2b(4 + 4 + 12 * enc->channels, + scsi_ulto2b(4 + 15 + 11 * enc->channels, page->hdr.length); + elmd = (struct ses_elm_desc_hdr *)&buf[8]; + scsi_ulto2b(11, elmd->length); + snprintf((char *)(elmd + 1), 12, "Drive Slots"); + for (i = 0; i < enc->channels; i++) { + elmd = (struct ses_elm_desc_hdr *)&buf[8 + 15 + 11 * i]; + scsi_ulto2b(7, elmd->length); + snprintf((char *)(elmd + 1), 8, "Slot %02d", i); + } + ccb->ccb_h.status = CAM_REQ_CMP; + goto out; + } + + /* SEMB RECEIVE DIAGNOSTIC RESULT (a) */ + if (ccb->ataio.cmd.lba_low == 0x02 && + ccb->ataio.cmd.features == 0x0a && + ccb->ataio.cmd.sector_count >= (2 + 3 * enc->channels)) { + bzero(buf, ccb->ataio.dxfer_len); + page->hdr.page_code = 0x0a; + scsi_ulto2b(4 + (sizeof(*elma) + sizeof(*elmb)) * enc->channels, page->hdr.length); for (i = 0; i < enc->channels; i++) { - elmd = (struct ses_elm_desc_hdr *)&buf[8 + 4 + 12 * i]; - scsi_ulto2b(8, elmd->length); - snprintf((char *)(elmd + 1), 9, "SLOT %03d", i); + elma = (struct ses_elm_addlstatus_eip_hdr *)&buf[ + 8 + (sizeof(*elma) + sizeof(*elmb)) * i]; + elma->base.byte0 = 0x10 | SPSP_PROTO_ATA; + elma->base.length = 2 + sizeof(*elmb); + elma->byte2 = 0x01; + elma->element_index = 1 + i; + ch = ahci_getch(device_get_parent(dev), i); + if (ch == NULL) { + elma->base.byte0 |= 0x80; + continue; + } + if (ch->devices == 0 || ch->pm_present) + elma->base.byte0 |= 0x80; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Thu Aug 8 21:47:41 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3743DB4370; Thu, 8 Aug 2019 21:47:41 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MRd0gwYz3CWZ; Thu, 8 Aug 2019 21:47:41 +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 ED0D73AE2; Thu, 8 Aug 2019 21:47:40 +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 x78LledB029522; Thu, 8 Aug 2019 21:47:40 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78Lle42029521; Thu, 8 Aug 2019 21:47:40 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082147.x78Lle42029521@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:47:40 +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: r350794 - stable/11/sys/cam/ata X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/ata X-SVN-Commit-Revision: 350794 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:47:41 -0000 Author: mav Date: Thu Aug 8 21:47:40 2019 New Revision: 350794 URL: https://svnweb.freebsd.org/changeset/base/350794 Log: MFC r349339 (by imp): Go ahead and completely fix the ata_params before calling the veto function. This breaks nothing that uses it in the tree since ata_params is ignored in storvsc_ada_probe_veto which is the only in-tree consumer. Modified: stable/11/sys/cam/ata/ata_xpt.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/ata/ata_xpt.c ============================================================================== --- stable/11/sys/cam/ata/ata_xpt.c Thu Aug 8 21:46:36 2019 (r350793) +++ stable/11/sys/cam/ata/ata_xpt.c Thu Aug 8 21:47:40 2019 (r350794) @@ -884,22 +884,14 @@ noerror: int16_t *ptr; int veto = 0; + /* + * Convert to host byte order, and fix the strings. + */ ident_buf = &softc->ident_data; for (ptr = (int16_t *)ident_buf; ptr < (int16_t *)ident_buf + sizeof(struct ata_params)/2; ptr++) { *ptr = le16toh(*ptr); } - - /* - * Allow others to veto this ATA disk attachment. This - * is mainly used by VMs, whose disk controllers may - * share the disks with the simulated ATA controllers. - */ - EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto); - if (veto) { - goto device_fail; - } - if (strncmp(ident_buf->model, "FX", 2) && strncmp(ident_buf->model, "NEC", 3) && strncmp(ident_buf->model, "Pioneer", 7) && @@ -914,6 +906,17 @@ noerror: ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision)); ata_btrim(ident_buf->serial, sizeof(ident_buf->serial)); ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial)); + + /* + * Allow others to veto this ATA disk attachment. This + * is mainly used by VMs, whose disk controllers may + * share the disks with the simulated ATA controllers. + */ + EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto); + if (veto) { + goto device_fail; + } + /* Device may need spin-up before IDENTIFY become valid. */ if ((ident_buf->specconf == 0x37c8 || ident_buf->specconf == 0x738c) && From owner-svn-src-stable@freebsd.org Thu Aug 8 21:54:32 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 919F8B46C1; Thu, 8 Aug 2019 21:54:32 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MbX2mfzz3CyX; Thu, 8 Aug 2019 21:54:32 +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 3DF663CB4; Thu, 8 Aug 2019 21:54:32 +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 x78LsWK8035268; Thu, 8 Aug 2019 21:54:32 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LsVf6035267; Thu, 8 Aug 2019 21:54:31 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082154.x78LsVf6035267@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:54: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: r350795 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350795 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:54:32 -0000 Author: mav Date: Thu Aug 8 21:54:31 2019 New Revision: 350795 URL: https://svnweb.freebsd.org/changeset/base/350795 Log: MFC r349964 (by imp): Add device type NVME and device type MMCSD to get_device_type For completeness, add nvme and mmc/sd devices to the list of device types we know. Modified: stable/11/sbin/camcontrol/camcontrol.c stable/11/sbin/camcontrol/camcontrol.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 21:47:40 2019 (r350794) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 21:54:31 2019 (r350795) @@ -5193,6 +5193,10 @@ get_device_type(struct cam_device *dev, int retry_coun *devtype = CC_DT_ATA; goto bailout; break; /*NOTREACHED*/ + case PROTO_NVME: + *devtype = CC_DT_NVME; + goto bailout; + break; /*NOTREACHED*/ default: *devtype = CC_DT_UNKNOWN; goto bailout; Modified: stable/11/sbin/camcontrol/camcontrol.h ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.h Thu Aug 8 21:47:40 2019 (r350794) +++ stable/11/sbin/camcontrol/camcontrol.h Thu Aug 8 21:54:31 2019 (r350795) @@ -44,6 +44,8 @@ typedef enum { CC_DT_SCSI, CC_DT_ATA_BEHIND_SCSI, CC_DT_ATA, + CC_DT_NVME, + CC_DT_MMCSD, CC_DT_UNKNOWN } camcontrol_devtype; From owner-svn-src-stable@freebsd.org Thu Aug 8 21:55:50 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B47BAB4765; Thu, 8 Aug 2019 21:55:50 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464Md24PZnz3D5x; Thu, 8 Aug 2019 21:55:50 +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 7A1873CB5; Thu, 8 Aug 2019 21:55:50 +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 x78LtoDB035421; Thu, 8 Aug 2019 21:55:50 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78LtnGR035416; Thu, 8 Aug 2019 21:55:49 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082155.x78LtnGR035416@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 21:55:49 +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: r350796 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350796 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 21:55:50 -0000 Author: mav Date: Thu Aug 8 21:55:49 2019 New Revision: 350796 URL: https://svnweb.freebsd.org/changeset/base/350796 Log: MFC r350008 (by imp): Use the more proper term of SATL instead of ATA_BEHIND_SCSI. Most people know SAS attached SATA devices by the name SAT or SATL (with the latter being a little more common). Change the device type ATA_BEHIND_SCSI to SATL since it's more specific and meaningful. Modified: stable/11/sbin/camcontrol/camcontrol.c stable/11/sbin/camcontrol/camcontrol.h stable/11/sbin/camcontrol/epc.c stable/11/sbin/camcontrol/fwdownload.c stable/11/sbin/camcontrol/zone.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 21:54:31 2019 (r350795) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 21:55:49 2019 (r350796) @@ -5214,7 +5214,7 @@ get_device_type(struct cam_device *dev, int retry_coun retval = dev_has_vpd_page(dev, SVPD_ATA_INFORMATION, retry_count, timeout, verbosemode); if (retval == 1) - *devtype = CC_DT_ATA_BEHIND_SCSI; + *devtype = CC_DT_SATL; else *devtype = CC_DT_SCSI; Modified: stable/11/sbin/camcontrol/camcontrol.h ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.h Thu Aug 8 21:54:31 2019 (r350795) +++ stable/11/sbin/camcontrol/camcontrol.h Thu Aug 8 21:55:49 2019 (r350796) @@ -42,7 +42,7 @@ typedef enum { typedef enum { CC_DT_NONE, CC_DT_SCSI, - CC_DT_ATA_BEHIND_SCSI, + CC_DT_SATL, CC_DT_ATA, CC_DT_NVME, CC_DT_MMCSD, Modified: stable/11/sbin/camcontrol/epc.c ============================================================================== --- stable/11/sbin/camcontrol/epc.c Thu Aug 8 21:54:31 2019 (r350795) +++ stable/11/sbin/camcontrol/epc.c Thu Aug 8 21:55:49 2019 (r350796) @@ -767,7 +767,7 @@ epc(struct cam_device *device, int argc, char **argv, switch (devtype) { case CC_DT_ATA: - case CC_DT_ATA_BEHIND_SCSI: + case CC_DT_SATL: break; default: warnx("The epc subcommand only works with ATA protocol " Modified: stable/11/sbin/camcontrol/fwdownload.c ============================================================================== --- stable/11/sbin/camcontrol/fwdownload.c Thu Aug 8 21:54:31 2019 (r350795) +++ stable/11/sbin/camcontrol/fwdownload.c Thu Aug 8 21:55:49 2019 (r350796) @@ -694,7 +694,7 @@ fw_check_device_ready(struct cam_device *dev, camcontr /*sense_len*/ SSD_FULL_SIZE, /*timeout*/ 5000); break; - case CC_DT_ATA_BEHIND_SCSI: + case CC_DT_SATL: case CC_DT_ATA: { retval = build_ata_cmd(ccb, /*retries*/ 1, @@ -853,7 +853,7 @@ fw_download_img(struct cam_device *cam_dev, struct fw_ timeout ? timeout : WB_TIMEOUT); /* timeout*/ break; case CC_DT_ATA: - case CC_DT_ATA_BEHIND_SCSI: { + case CC_DT_SATL: { uint32_t off; off = (uint32_t)(pkt_ptr - buf); @@ -969,7 +969,7 @@ fwdownload(struct cam_device *device, int argc, char * errx(1, "Unable to determine device type"); if ((devtype == CC_DT_ATA) - || (devtype == CC_DT_ATA_BEHIND_SCSI)) { + || (devtype == CC_DT_SATL)) { ccb = cam_getccb(device); if (ccb == NULL) { warnx("couldn't allocate CCB"); Modified: stable/11/sbin/camcontrol/zone.c ============================================================================== --- stable/11/sbin/camcontrol/zone.c Thu Aug 8 21:54:31 2019 (r350795) +++ stable/11/sbin/camcontrol/zone.c Thu Aug 8 21:55:49 2019 (r350796) @@ -466,7 +466,7 @@ restart_report: /*timeout*/ timeout ? timeout : 60000); break; case CC_DT_ATA: - case CC_DT_ATA_BEHIND_SCSI: { + case CC_DT_SATL: { uint8_t command = 0; uint8_t protocol = 0; uint16_t features = 0, sector_count = 0; @@ -558,7 +558,7 @@ restart_report: /*timeout*/ timeout ? timeout : 60000); break; case CC_DT_ATA: - case CC_DT_ATA_BEHIND_SCSI: { + case CC_DT_SATL: { uint8_t command = 0; uint8_t protocol = 0; uint16_t features = 0, sector_count = 0; From owner-svn-src-stable@freebsd.org Thu Aug 8 22:03:02 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C60EEB4A53; Thu, 8 Aug 2019 22:03:02 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MnL4rQRz3DX9; Thu, 8 Aug 2019 22:03:02 +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 87C3D3E6C; Thu, 8 Aug 2019 22:03:02 +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 x78M32RN041132; Thu, 8 Aug 2019 22:03:02 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78M32EZ041130; Thu, 8 Aug 2019 22:03:02 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082203.x78M32EZ041130@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:03:02 +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: r350797 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350797 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:03:02 -0000 Author: mav Date: Thu Aug 8 22:03:01 2019 New Revision: 350797 URL: https://svnweb.freebsd.org/changeset/base/350797 Log: MFC r350018 (by imp): Implement a devtype command. List the device's protocol. The returned value is one of the following: ata direct attach ATA or SATA device satl a SATA device attached via SAS scsi A parallel SCSI or SAS nvme A direct attached NVMe device mmcsd A MMC or SD attached device Modified: stable/11/sbin/camcontrol/camcontrol.8 stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 21:55:49 2019 (r350796) +++ stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 22:03:01 2019 (r350797) @@ -353,6 +353,9 @@ .Op generic args .Ao Fl r Oo Ns Fl f Ar format | Fl m | Fl U Oc | Fl s Ao Fl f Ar format Fl T Ar time | Fl U Ac Ac .Nm +.Ic devtype +.Op device id +.Nm .Ic help .Sh DESCRIPTION The @@ -2515,6 +2518,26 @@ option. .It Fl U Set the timestamp to the host system's time in UTC. .El +.El +.It Ic devtype +Print out the device type for specified device. +.Bl -tag -width 10n +.It ata +An ATA device attached directly to an ATA controller +.It satl +An SATA device attached behind a SAS controller via SCSI-ATA Translation Layer (SATL) +.It scsi +A SCSI device +.It nvme +An directly attached NVMe device +.It mmcsd +An MMC or SD device attached via a mmcsd bus +.It none +No device type reported +.It unknown +Device type is unknown +.It illegal +A programming error occurred .El .It Ic help Print out verbose usage information. Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 21:55:49 2019 (r350796) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:03:01 2019 (r350797) @@ -106,6 +106,7 @@ typedef enum { CAM_CMD_EPC = 0x00000027, CAM_CMD_TIMESTAMP = 0x00000028, CAM_CMD_POWER_MODE = 0x0000002a, + CAM_CMD_DEVTYPE = 0x0000002b, } cam_cmdmask; typedef enum { @@ -219,6 +220,7 @@ static struct camcontrol_opts option_table[] = { {"defectlist", CAM_CMD_READ_DEFECTS, CAM_ARG_NONE, readdefect_opts}, #endif /* MINIMALISTIC */ {"devlist", CAM_CMD_DEVTREE, CAM_ARG_NONE, "-b"}, + {"devtype", CAM_CMD_DEVTYPE, CAM_ARG_NONE, ""}, #ifndef MINIMALISTIC {"periphlist", CAM_CMD_DEVLIST, CAM_ARG_NONE, NULL}, {"modepage", CAM_CMD_MODE_PAGE, CAM_ARG_NONE, "bdelm:P:"}, @@ -267,6 +269,16 @@ struct cam_devlist { static cam_cmdmask cmdlist; static cam_argmask arglist; +static const char *devtype_names[] = { + "none", + "scsi", + "satl", + "ata", + "nvme", + "mmcsd", + "unknown", +}; + camcontrol_optret getoption(struct camcontrol_opts *table, char *arg, uint32_t *cmdnum, cam_argmask *argnum, const char **subopt); @@ -274,6 +286,7 @@ camcontrol_optret getoption(struct camcontrol_opts *ta static int getdevlist(struct cam_device *device); #endif /* MINIMALISTIC */ static int getdevtree(int argc, char **argv, char *combinedopt); +static int getdevtype(struct cam_device *device); #ifndef MINIMALISTIC static int testunitready(struct cam_device *device, int task_attr, int retry_count, int timeout, int quiet); @@ -668,6 +681,24 @@ getdevtree(int argc, char **argv, char *combinedopt) return (error); } +static int +getdevtype(struct cam_device *cam_dev) +{ + camcontrol_devtype dt; + int error; + + /* + * Get the device type and report it, request no I/O be done to do this. + */ + error = get_device_type(cam_dev, -1, 0, 0, &dt); + if (error != 0 || dt < CC_DT_NONE || dt > CC_DT_UNKNOWN) { + fprintf(stdout, "illegal\n"); + return (1); + } + fprintf(stdout, "%s\n", devtype_names[dt]); + return (0); +} + #ifndef MINIMALISTIC static int testunitready(struct cam_device *device, int task_attr, int retry_count, @@ -5178,7 +5209,7 @@ get_device_type(struct cam_device *dev, int retry_coun int verbosemode, camcontrol_devtype *devtype) { struct ccb_getdev cgd; - int retval = 0; + int retval; retval = get_cgd(dev, &cgd); if (retval != 0) @@ -5203,21 +5234,34 @@ get_device_type(struct cam_device *dev, int retry_coun break; /*NOTREACHED*/ } - /* - * Check for the ATA Information VPD page (0x89). If this is an - * ATA device behind a SCSI to ATA translation layer, this VPD page - * should be present. - * - * If that VPD page isn't present, or we get an error back from the - * INQUIRY command, we'll just treat it as a normal SCSI device. - */ - retval = dev_has_vpd_page(dev, SVPD_ATA_INFORMATION, retry_count, - timeout, verbosemode); - if (retval == 1) - *devtype = CC_DT_SATL; - else - *devtype = CC_DT_SCSI; - + if (retry_count == -1) { + /* + * For a retry count of -1, used only the cached data to avoid + * I/O to the drive. Sending the identify command to the drive + * can cause issues for SATL attachaed drives since identify is + * not an NCQ command. + */ + if (cgd.ident_data.config != 0) + *devtype = CC_DT_SATL; + else + *devtype = CC_DT_SCSI; + } else { + /* + * Check for the ATA Information VPD page (0x89). If this is an + * ATA device behind a SCSI to ATA translation layer (SATL), + * this VPD page should be present. + * + * If that VPD page isn't present, or we get an error back from + * the INQUIRY command, we'll just treat it as a normal SCSI + * device. + */ + retval = dev_has_vpd_page(dev, SVPD_ATA_INFORMATION, retry_count, + timeout, verbosemode); + if (retval == 1) + *devtype = CC_DT_SATL; + else + *devtype = CC_DT_SCSI; + } retval = 0; bailout: @@ -9162,6 +9206,7 @@ usage(int printlong) " [-S power_src] [-T timer]\n" " camcontrol timestamp [dev_id][generic_args] <-r [-f format|-m|-U]>|\n" " <-s <-f format -T time | -U >>\n" +" camcontrol devtype [dev_id]\n" " \n" #endif /* MINIMALISTIC */ " camcontrol help\n"); @@ -9209,6 +9254,7 @@ usage(int printlong) "zone manage Zoned Block (Shingled) devices\n" "epc send ATA Extended Power Conditions commands\n" "timestamp report or set the device's timestamp\n" +"devtype report the type of device\n" "help this message\n" "Device Identifiers:\n" "bus:target specify the bus and target, lun defaults to 0\n" @@ -9680,6 +9726,9 @@ main(int argc, char **argv) #endif /* MINIMALISTIC */ case CAM_CMD_DEVTREE: error = getdevtree(argc, argv, combinedopt); + break; + case CAM_CMD_DEVTYPE: + error = getdevtype(cam_dev); break; #ifndef MINIMALISTIC case CAM_CMD_TUR: From owner-svn-src-stable@freebsd.org Thu Aug 8 22:03:36 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F36C9B4ACF; Thu, 8 Aug 2019 22:03:36 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464Mp067wCz3DfL; Thu, 8 Aug 2019 22:03:36 +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 B5A7D3E6D; Thu, 8 Aug 2019 22:03:36 +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 x78M3asG041213; Thu, 8 Aug 2019 22:03:36 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78M3ar9041212; Thu, 8 Aug 2019 22:03:36 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082203.x78M3ar9041212@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:03:36 +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: r350798 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350798 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:03:37 -0000 Author: mav Date: Thu Aug 8 22:03:36 2019 New Revision: 350798 URL: https://svnweb.freebsd.org/changeset/base/350798 Log: MFC r350020 (by imp): Use a different approach to range check. gcc hates dt < CC_DT_NONE since it can never be true when dt is an unsigned type. Since that's a compiler choice and may be affected by weird stuff, instead use (unsigned)dt > CC_DT_UNKNOWN to test for bounds error since that will work regardless of the signedness of dt. Modified: stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:03:01 2019 (r350797) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:03:36 2019 (r350798) @@ -691,7 +691,7 @@ getdevtype(struct cam_device *cam_dev) * Get the device type and report it, request no I/O be done to do this. */ error = get_device_type(cam_dev, -1, 0, 0, &dt); - if (error != 0 || dt < CC_DT_NONE || dt > CC_DT_UNKNOWN) { + if (error != 0 || (unsigned)dt > CC_DT_UNKNOWN) { fprintf(stdout, "illegal\n"); return (1); } From owner-svn-src-stable@freebsd.org Thu Aug 8 22:05:40 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0B315B4C09; Thu, 8 Aug 2019 22:05:40 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MrM5v5Vz3DpD; Thu, 8 Aug 2019 22:05:39 +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 A85773E85; Thu, 8 Aug 2019 22:05:39 +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 x78M5d8x041433; Thu, 8 Aug 2019 22:05:39 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78M5dhE041432; Thu, 8 Aug 2019 22:05:39 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082205.x78M5dhE041432@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:05: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: r350799 - stable/11/sys/sys X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/sys X-SVN-Commit-Revision: 350799 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:05:40 -0000 Author: mav Date: Thu Aug 8 22:05:39 2019 New Revision: 350799 URL: https://svnweb.freebsd.org/changeset/base/350799 Log: MFC r312212 (by cem): Fix a minor typo (Seiral) Modified: stable/11/sys/sys/ata.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/sys/ata.h ============================================================================== --- stable/11/sys/sys/ata.h Thu Aug 8 22:03:36 2019 (r350798) +++ stable/11/sys/sys/ata.h Thu Aug 8 22:05:39 2019 (r350799) @@ -693,7 +693,7 @@ struct atapi_sense { #define ATA_IDL_ATA_STRINGS 0x05 /* ATA Strings */ #define ATA_IDL_SECURITY 0x06 /* Security */ #define ATA_IDL_PARALLEL_ATA 0x07 /* Parallel ATA */ -#define ATA_IDL_SERIAL_ATA 0x08 /* Seiral ATA */ +#define ATA_IDL_SERIAL_ATA 0x08 /* Serial ATA */ #define ATA_IDL_ZDI 0x09 /* Zoned Device Information */ struct ata_gp_log_dir { From owner-svn-src-stable@freebsd.org Thu Aug 8 22:06:40 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AFB17B4EB6; Thu, 8 Aug 2019 22:06:40 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MsX4C7lz3F62; Thu, 8 Aug 2019 22:06:40 +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 7177F3E88; Thu, 8 Aug 2019 22:06:40 +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 x78M6ero041680; Thu, 8 Aug 2019 22:06:40 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78M6ek7041679; Thu, 8 Aug 2019 22:06:40 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082206.x78M6ek7041679@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:06:40 +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: r350800 - stable/11/sys/sys X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/sys X-SVN-Commit-Revision: 350800 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:06:40 -0000 Author: mav Date: Thu Aug 8 22:06:40 2019 New Revision: 350800 URL: https://svnweb.freebsd.org/changeset/base/350800 Log: MFC r348376 (by rpokala): Add bits related to SANITIZE, SED, and form-factor to (struct ata_params) Based on ATA-ACS-4, recognize several bit-fields related to the ATA SANITIZE feature-set, Self-Encrypting Drives, and form-factor identification. As part of this change, the name of word 48 of (struct ata_params) is being changed. The previous name, "usedmovsd" does not appear to be related to the previous definition of the word ("double-word IO supported"). The word was defined that way in ATA-1 (1994), but it was marked "Reserved" (meaning "unused, but might be used in the future") in ATA-2 (1996). It stayed that way until ATA-8 (2008), which re-defined it as implemented in this change. The field is not used in-tree. Modified: stable/11/sys/sys/ata.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/sys/ata.h ============================================================================== --- stable/11/sys/sys/ata.h Thu Aug 8 22:05:39 2019 (r350799) +++ stable/11/sys/sys/ata.h Thu Aug 8 22:06:40 2019 (r350800) @@ -64,7 +64,8 @@ struct ata_params { /*023*/ u_int8_t revision[8]; /* firmware revision */ /*027*/ u_int8_t model[40]; /* model name */ /*047*/ u_int16_t sectors_intr; /* sectors per interrupt */ -/*048*/ u_int16_t usedmovsd; /* double word read/write? */ +/*048*/ u_int16_t tcg; /* Trusted Computing Group */ +#define ATA_SUPPORT_TCG 0x0001 /*049*/ u_int16_t capabilities1; #define ATA_SUPPORT_DMA 0x0100 #define ATA_SUPPORT_LBA 0x0200 @@ -90,6 +91,10 @@ struct ata_params { /*057*/ u_int16_t current_size_1; /*058*/ u_int16_t current_size_2; /*059*/ u_int16_t multi; +#define ATA_SUPPORT_BLOCK_ERASE_EXT 0x8000 +#define ATA_SUPPORT_OVERWRITE_EXT 0x4000 +#define ATA_SUPPORT_CRYPTO_SCRAMBLE_EXT 0x2000 +#define ATA_SUPPORT_SANITIZE 0x1000 #define ATA_MULTI_VALID 0x0100 /*060*/ u_int16_t lba_size_1; @@ -105,6 +110,7 @@ struct ata_params { /*069*/ u_int16_t support3; #define ATA_SUPPORT_RZAT 0x0020 #define ATA_SUPPORT_DRAT 0x4000 +#define ATA_ENCRYPTS_ALL_USER_DATA 0x0010 /* Self-encrypting drive */ #define ATA_SUPPORT_ZONE_MASK 0x0003 #define ATA_SUPPORT_ZONE_NR 0x0000 #define ATA_SUPPORT_ZONE_HOST_AWARE 0x0001 @@ -257,7 +263,19 @@ struct ata_params { /*162*/ u_int16_t cfa_kms_support; /*163*/ u_int16_t cfa_trueide_modes; /*164*/ u_int16_t cfa_memory_modes; - u_int16_t reserved165[4]; + u_int16_t reserved165[3]; +/*168*/ u_int16_t form_factor; +#define ATA_FORM_FACTOR_MASK 0x000f +#define ATA_FORM_FACTOR_NOT_REPORTED 0x0000 +#define ATA_FORM_FACTOR_5_25 0x0001 +#define ATA_FORM_FACTOR_3_5 0x0002 +#define ATA_FORM_FACTOR_2_5 0x0003 +#define ATA_FORM_FACTOR_1_8 0x0004 +#define ATA_FORM_FACTOR_SUB_1_8 0x0005 +#define ATA_FORM_FACTOR_MSATA 0x0006 +#define ATA_FORM_FACTOR_M_2 0x0007 +#define ATA_FORM_FACTOR_MICRO_SSD 0x0008 +#define ATA_FORM_FACTOR_C_FAST 0x0009 /*169*/ u_int16_t support_dsm; #define ATA_SUPPORT_DSM_TRIM 0x0001 u_int16_t reserved170[6]; From owner-svn-src-stable@freebsd.org Thu Aug 8 22:08:56 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2A795B5054; Thu, 8 Aug 2019 22:08:56 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464Mw80tlzz3FFf; Thu, 8 Aug 2019 22:08:56 +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 14F2B3E89; Thu, 8 Aug 2019 22:08:56 +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 x78M8uYo041846; Thu, 8 Aug 2019 22:08:56 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78M8tZm041843; Thu, 8 Aug 2019 22:08:55 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082208.x78M8tZm041843@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:08:55 +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: r350801 - in stable/11: sbin/camcontrol sys/cam/ata sys/sys X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/11: sbin/camcontrol sys/cam/ata sys/sys X-SVN-Commit-Revision: 350801 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:08:56 -0000 Author: mav Date: Thu Aug 8 22:08:54 2019 New Revision: 350801 URL: https://svnweb.freebsd.org/changeset/base/350801 Log: MFC r350149: Add Accessible Max Address Configuration support to camcontrol. AMA replaced HPA in ACS-3 specification. It allows to limit size of the disk alike to HPA, but declares inaccessible data as indeterminate. One of its practical use cases is to under-provision SATA SSDs for better reliability and performance. While there, fix HPA Security detection/reporting. Relnotes: yes Modified: stable/11/sbin/camcontrol/camcontrol.8 stable/11/sbin/camcontrol/camcontrol.c stable/11/sys/cam/ata/ata_all.c stable/11/sys/sys/ata.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 22:06:40 2019 (r350800) +++ stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 22:08:54 2019 (r350801) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 22, 2019 +.Dd July 19, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -292,6 +292,13 @@ .Op Fl U Ar pwd .Op Fl y .Nm +.Ic ama +.Op device id +.Op generic args +.Op Fl f +.Op Fl q +.Op Fl s Ar max_sectors +.Nm .Ic persist .Op device id .Op generic args @@ -1599,6 +1606,40 @@ without prompting for confirmation .Pp The password for all HPA commands is limited to 32 characters, longer passwords will fail. +.It Ic ama +Update or report Accessible Max Address Configuration. +By default +.Nm +will print out the Accessible Max Address Configuration support and associated +settings of the device. +The +.Ic ama +command takes several optional arguments: +.Bl -tag -width 0n +.It Fl f +.Pp +Freeze the Accessible Max Address Configuration of the specified device. +.Pp +After command completion any other commands that update the configuration +shall be command aborted. +Frozen mode is disabled by power-off. +.It Fl q +.Pp +Be quiet, do not print any status messages. +.It Fl s Ar max_sectors +.Pp +Configures the maximum user accessible sectors of the device. +This will change the number of sectors the device reports. +.Pp +.Em WARNING! WARNING! WARNING! +.Pp +Changing the max sectors of a device using this option will make the data on +the device beyond the specified value indeterminate. +.Pp +Only one successful +.Fl s Ar max_sectors +call can be made without a power-on reset of the device. +.El .It Ic fwdownload Program firmware of the named .Tn SCSI Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:06:40 2019 (r350800) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:08:54 2019 (r350801) @@ -107,6 +107,7 @@ typedef enum { CAM_CMD_TIMESTAMP = 0x00000028, CAM_CMD_POWER_MODE = 0x0000002a, CAM_CMD_DEVTYPE = 0x0000002b, + CAM_CMD_AMA = 0x0000002c, } cam_cmdmask; typedef enum { @@ -239,6 +240,7 @@ static struct camcontrol_opts option_table[] = { {"fwdownload", CAM_CMD_DOWNLOAD_FW, CAM_ARG_NONE, "f:qsy"}, {"security", CAM_CMD_SECURITY, CAM_ARG_NONE, "d:e:fh:k:l:qs:T:U:y"}, {"hpa", CAM_CMD_HPA, CAM_ARG_NONE, "Pflp:qs:U:y"}, + {"ama", CAM_CMD_AMA, CAM_ARG_NONE, "fqs:"}, {"persist", CAM_CMD_PERSIST, CAM_ARG_NONE, "ai:I:k:K:o:ps:ST:U"}, {"attrib", CAM_CMD_ATTRIB, CAM_ARG_NONE, "a:ce:F:p:r:s:T:w:V:"}, {"opcodes", CAM_CMD_OPCODES, CAM_ARG_NONE, "No:s:T"}, @@ -358,6 +360,8 @@ static int atasecurity(struct cam_device *device, int int argc, char **argv, char *combinedopt); static int atahpa(struct cam_device *device, int retry_count, int timeout, int argc, char **argv, char *combinedopt); +static int ataama(struct cam_device *device, int retry_count, int timeout, + int argc, char **argv, char *combinedopt); static int scsiprintoneopcode(struct cam_device *device, int req_opcode, int sa_set, int req_sa, uint8_t *buf, uint32_t valid_len); @@ -1275,8 +1279,9 @@ atahpa_print(struct ata_params *parm, u_int64_t hpasiz lba, hpasize); printf("HPA - Security "); - if (parm->support.command1 & ATA_SUPPORT_MAXSECURITY) - printf("yes\n"); + if (parm->support.command2 & ATA_SUPPORT_MAXSECURITY) + printf("yes %s\n", (parm->enabled.command2 & + ATA_SUPPORT_MAXSECURITY) ? "yes" : "no "); else printf("no\n"); } else { @@ -1284,6 +1289,32 @@ atahpa_print(struct ata_params *parm, u_int64_t hpasiz } } +static void +ataama_print(struct ata_params *parm, u_int64_t nativesize, int header) +{ + u_int32_t lbasize = (u_int32_t)parm->lba_size_1 | + ((u_int32_t)parm->lba_size_2 << 16); + + u_int64_t lbasize48 = ((u_int64_t)parm->lba_size48_1) | + ((u_int64_t)parm->lba_size48_2 << 16) | + ((u_int64_t)parm->lba_size48_3 << 32) | + ((u_int64_t)parm->lba_size48_4 << 48); + + if (header) { + printf("\nFeature " + "Support Enabled Value\n"); + } + + printf("Accessible Max Address Config "); + if (parm->support2 & ATA_SUPPORT_AMAX_ADDR) { + u_int64_t lba = lbasize48 ? lbasize48 : lbasize; + printf("yes %s %ju/%ju\n", + (nativesize > lba) ? "yes" : "no ", lba, nativesize); + } else { + printf("no\n"); + } +} + static int atasata(struct ata_params *parm) { @@ -2110,7 +2141,95 @@ atahpa_freeze_lock(struct cam_device *device, int retr return atahpa_proc_resp(device, ccb, is48bit, NULL); } +static int +ata_get_native_max(struct cam_device *device, int retry_count, + u_int32_t timeout, union ccb *ccb, + u_int64_t *nativesize) +{ + int error; + error = ata_do_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_AMAX_ADDR, + /*features*/ATA_AMAX_ADDR_GET, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + timeout ? timeout : 30 * 1000, + /*force48bit*/1); + + if (error) + return (error); + + return atahpa_proc_resp(device, ccb, /*is48bit*/1, nativesize); +} + +static int +ataama_set(struct cam_device *device, int retry_count, + u_int32_t timeout, union ccb *ccb, u_int64_t maxsize) +{ + int error; + + /* lba's are zero indexed so the max lba is requested max - 1 */ + if (maxsize) + maxsize--; + + error = ata_do_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_AMAX_ADDR, + /*features*/ATA_AMAX_ADDR_SET, + /*lba*/maxsize, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + timeout ? timeout : 30 * 1000, + /*force48bit*/1); + + if (error) + return (error); + + return atahpa_proc_resp(device, ccb, /*is48bit*/1, NULL); +} + +static int +ataama_freeze(struct cam_device *device, int retry_count, + u_int32_t timeout, union ccb *ccb) +{ + int error; + + error = ata_do_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_AMAX_ADDR, + /*features*/ATA_AMAX_ADDR_FREEZE, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + timeout ? timeout : 30 * 1000, + /*force48bit*/1); + + if (error) + return (error); + + return atahpa_proc_resp(device, ccb, /*is48bit*/1, NULL); +} + int ata_do_identify(struct cam_device *device, int retry_count, int timeout, union ccb *ccb, struct ata_params** ident_bufp) @@ -2241,7 +2360,7 @@ ataidentify(struct cam_device *device, int retry_count { union ccb *ccb; struct ata_params *ident_buf; - u_int64_t hpasize; + u_int64_t hpasize, nativesize; if ((ccb = cam_getccb(device)) == NULL) { warnx("couldn't allocate CCB"); @@ -2262,12 +2381,22 @@ ataidentify(struct cam_device *device, int retry_count } else { hpasize = 0; } + if (ident_buf->support2 & ATA_SUPPORT_AMAX_ADDR) { + if (ata_get_native_max(device, retry_count, timeout, ccb, + &nativesize) != 0) { + cam_freeccb(ccb); + return (1); + } + } else { + nativesize = 0; + } printf("%s%d: ", device->device_name, device->dev_unit_num); ata_print_ident(ident_buf); camxferrate(device); atacapprint(ident_buf); atahpa_print(ident_buf, hpasize, 0); + ataama_print(ident_buf, nativesize, 0); free(ident_buf); cam_freeccb(ccb); @@ -2757,7 +2886,7 @@ atahpa(struct cam_device *device, int retry_count, int return (1); } - if (security && !(ident_buf->support.command1 & ATA_SUPPORT_MAXSECURITY)) { + if (security && !(ident_buf->support.command2 & ATA_SUPPORT_MAXSECURITY)) { warnx("HPA Security is not supported by this device"); cam_freeccb(ccb); free(ident_buf); @@ -2786,7 +2915,7 @@ atahpa(struct cam_device *device, int retry_count, int if (error == 0) { error = atahpa_set_max(device, retry_count, timeout, ccb, is48bit, maxsize, persist); - if (error == 0) { + if (error == 0 && quiet == 0) { /* redo identify to get new lba values */ error = ata_do_identify(device, retry_count, timeout, ccb, @@ -2799,28 +2928,28 @@ atahpa(struct cam_device *device, int retry_count, int case ATA_HPA_ACTION_SET_PWD: error = atahpa_password(device, retry_count, timeout, ccb, is48bit, &pwd); - if (error == 0) + if (error == 0 && quiet == 0) printf("HPA password has been set\n"); break; case ATA_HPA_ACTION_LOCK: error = atahpa_lock(device, retry_count, timeout, ccb, is48bit); - if (error == 0) + if (error == 0 && quiet == 0) printf("HPA has been locked\n"); break; case ATA_HPA_ACTION_UNLOCK: error = atahpa_unlock(device, retry_count, timeout, ccb, is48bit, &pwd); - if (error == 0) + if (error == 0 && quiet == 0) printf("HPA has been unlocked\n"); break; case ATA_HPA_ACTION_FREEZE_LOCK: error = atahpa_freeze_lock(device, retry_count, timeout, ccb, is48bit); - if (error == 0) + if (error == 0 && quiet == 0) printf("HPA has been frozen\n"); break; @@ -2834,7 +2963,128 @@ atahpa(struct cam_device *device, int retry_count, int return (error); } +enum { + ATA_AMA_ACTION_PRINT, + ATA_AMA_ACTION_SET_MAX, + ATA_AMA_ACTION_FREEZE_LOCK +}; + static int +ataama(struct cam_device *device, int retry_count, int timeout, + int argc, char **argv, char *combinedopt) +{ + union ccb *ccb; + struct ata_params *ident_buf; + struct ccb_getdev cgd; + int error, quiet, c, action, actions; + u_int64_t nativesize, maxsize; + + actions = 0; + quiet = 0; + maxsize = 0; + + /* default action is to print AMA information */ + action = ATA_AMA_ACTION_PRINT; + + while ((c = getopt(argc, argv, combinedopt)) != -1) { + switch(c){ + case 's': + action = ATA_AMA_ACTION_SET_MAX; + maxsize = strtoumax(optarg, NULL, 0); + actions++; + break; + + case 'f': + action = ATA_AMA_ACTION_FREEZE_LOCK; + actions++; + break; + + case 'q': + quiet++; + break; + } + } + + if (actions > 1) { + warnx("too many AMA actions specified"); + return (1); + } + + if (get_cgd(device, &cgd) != 0) { + warnx("couldn't get CGD"); + return (1); + } + + ccb = cam_getccb(device); + if (ccb == NULL) { + warnx("couldn't allocate CCB"); + return (1); + } + + error = ata_do_identify(device, retry_count, timeout, ccb, &ident_buf); + if (error != 0) { + cam_freeccb(ccb); + return (1); + } + + if (quiet == 0) { + printf("%s%d: ", device->device_name, device->dev_unit_num); + ata_print_ident(ident_buf); + camxferrate(device); + } + + if (action == ATA_AMA_ACTION_PRINT) { + error = ata_get_native_max(device, retry_count, timeout, ccb, + &nativesize); + if (error == 0) + ataama_print(ident_buf, nativesize, 1); + + cam_freeccb(ccb); + free(ident_buf); + return (error); + } + + if (!(ident_buf->support2 & ATA_SUPPORT_AMAX_ADDR)) { + warnx("Accessible Max Address is not supported by this device"); + cam_freeccb(ccb); + free(ident_buf); + return (1); + } + + switch(action) { + case ATA_AMA_ACTION_SET_MAX: + error = ata_get_native_max(device, retry_count, timeout, ccb, + &nativesize); + if (error == 0) { + error = ataama_set(device, retry_count, timeout, + ccb, maxsize); + if (error == 0 && quiet == 0) { + /* redo identify to get new lba values */ + error = ata_do_identify(device, retry_count, + timeout, ccb, &ident_buf); + ataama_print(ident_buf, nativesize, 1); + } + } + break; + + case ATA_AMA_ACTION_FREEZE_LOCK: + error = ataama_freeze(device, retry_count, timeout, + ccb); + if (error == 0 && quiet == 0) + printf("Accessible Max Address has been frozen\n"); + break; + + default: + errx(1, "Option currently not supported"); + } + + cam_freeccb(ccb); + free(ident_buf); + + return (error); +} + +static int atasecurity(struct cam_device *device, int retry_count, int timeout, int argc, char **argv, char *combinedopt) { @@ -9191,6 +9441,7 @@ usage(int printlong) " [-U ] [-y]\n" " camcontrol hpa [dev_id][generic args] [-f] [-l] [-P] [-p pwd]\n" " [-q] [-s max_sectors] [-U pwd] [-y]\n" +" camcontrol ama [dev_id][generic args] [-f] [-q] [-s max_sectors]\n" " camcontrol persist [dev_id][generic args] <-i action|-o action>\n" " [-a][-I tid][-k key][-K sa_key][-p][-R rtp]\n" " [-s scope][-S][-T type][-U]\n" @@ -9391,6 +9642,11 @@ usage(int printlong) " device\n" "-U pwd unlock the HPA configuration of the device\n" "-y don't ask any questions\n" +"ama arguments:\n" +"-f freeze the AMA configuration of the device\n" +"-q be quiet, do not print any status messages\n" +"-s sectors configures the maximum user accessible sectors of the\n" +" device\n" "persist arguments:\n" "-i action specify read_keys, read_reservation, report_cap, or\n" " read_full_status\n" @@ -9721,6 +9977,10 @@ main(int argc, char **argv) break; case CAM_CMD_HPA: error = atahpa(cam_dev, retry_count, timeout, + argc, argv, combinedopt); + break; + case CAM_CMD_AMA: + error = ataama(cam_dev, retry_count, timeout, argc, argv, combinedopt); break; #endif /* MINIMALISTIC */ Modified: stable/11/sys/cam/ata/ata_all.c ============================================================================== --- stable/11/sys/cam/ata/ata_all.c Thu Aug 8 22:06:40 2019 (r350800) +++ stable/11/sys/cam/ata/ata_all.c Thu Aug 8 22:08:54 2019 (r350801) @@ -182,7 +182,13 @@ ata_op_string(struct ata_cmd *cmd) return ("SEP_ATTN"); case 0x70: return ("SEEK"); case 0x77: return ("SET_DATE_TIME_EXT"); - case 0x78: return ("ACCESSIBLE_MAX_ADDRESS_CONFIGURATION"); + case 0x78: + switch (cmd->features) { + case 0x00: return ("GET_NATIVE_MAX_ADDRESS_EXT"); + case 0x01: return ("SET_ACCESSIBLE_MAX_ADDRESS_EXT"); + case 0x02: return ("FREEZE_ACCESSIBLE_MAX_ADDRESS_EXT"); + } + return ("ACCESSIBLE_MAX_ADDRESS_CONFIGURATION"); case 0x7C: return ("REMOVE_ELEMENT_AND_TRUNCATE"); case 0x87: return ("CFA_TRANSLATE_SECTOR"); case 0x90: return ("EXECUTE_DEVICE_DIAGNOSTIC"); Modified: stable/11/sys/sys/ata.h ============================================================================== --- stable/11/sys/sys/ata.h Thu Aug 8 22:06:40 2019 (r350800) +++ stable/11/sys/sys/ata.h Thu Aug 8 22:08:54 2019 (r350801) @@ -240,12 +240,15 @@ struct ata_params { #define ATA_SUPPORT_FREEFALL 0x0020 #define ATA_SUPPORT_SENSE_REPORT 0x0040 #define ATA_SUPPORT_EPC 0x0080 +#define ATA_SUPPORT_AMAX_ADDR 0x0100 +#define ATA_SUPPORT_DSN 0x0200 /*120*/ u_int16_t enabled2; #define ATA_ENABLED_WRITEREADVERIFY 0x0002 #define ATA_ENABLED_WRITEUNCORREXT 0x0004 #define ATA_ENABLED_FREEFALL 0x0020 #define ATA_ENABLED_SENSE_REPORT 0x0040 #define ATA_ENABLED_EPC 0x0080 +#define ATA_ENABLED_DSN 0x0200 u_int16_t reserved121[6]; /*127*/ u_int16_t removable_status; /*128*/ u_int16_t security_status; @@ -434,6 +437,10 @@ struct ata_params { #define ATA_RFPDMA_ZAC_MGMT_IN 0x02 /* NCQ ZAC mgmt in w/data */ #define ATA_SEP_ATTN 0x67 /* SEP request */ #define ATA_SEEK 0x70 /* seek */ +#define ATA_AMAX_ADDR 0x78 /* Accessible Max Address */ +#define ATA_AMAX_ADDR_GET 0x00 /* GET NATIVE MAX ADDRESS EXT */ +#define ATA_AMAX_ADDR_SET 0x01 /* SET ACCESSIBLE MAX ADDRESS EXT */ +#define ATA_AMAX_ADDR_FREEZE 0x02 /* FREEZE ACCESSIBLE MAX ADDRESS EXT */ #define ATA_ZAC_MANAGEMENT_OUT 0x9f /* ZAC management out */ #define ATA_ZM_CLOSE_ZONE 0x01 /* close zone */ #define ATA_ZM_FINISH_ZONE 0x02 /* finish zone */ From owner-svn-src-stable@freebsd.org Thu Aug 8 22:09:33 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 44E9EB5107; Thu, 8 Aug 2019 22:09:33 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464Mws16tzz3FRY; Thu, 8 Aug 2019 22:09:33 +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 0A0D33E94; Thu, 8 Aug 2019 22:09:33 +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 x78M9Wds041934; Thu, 8 Aug 2019 22:09:32 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78M9Wm2041933; Thu, 8 Aug 2019 22:09:32 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082209.x78M9Wm2041933@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:09: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: r350802 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350802 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:09:33 -0000 Author: mav Date: Thu Aug 8 22:09:32 2019 New Revision: 350802 URL: https://svnweb.freebsd.org/changeset/base/350802 Log: MFC r350150: Properly report ACS revisions alike to kernel. Modified: stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:08:54 2019 (r350801) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:09:32 2019 (r350802) @@ -1330,6 +1330,7 @@ atasata(struct ata_params *parm) static void atacapprint(struct ata_params *parm) { + const char *proto; u_int32_t lbasize = (u_int32_t)parm->lba_size_1 | ((u_int32_t)parm->lba_size_2 << 16); @@ -1340,7 +1341,19 @@ atacapprint(struct ata_params *parm) printf("\n"); printf("protocol "); - printf("ATA/ATAPI-%d", ata_version(parm->version_major)); + proto = (parm->config == ATA_PROTO_CFA) ? "CFA" : + (parm->config & ATA_PROTO_ATAPI) ? "ATAPI" : "ATA"; + if (ata_version(parm->version_major) == 0) { + printf("%s", proto); + } else if (ata_version(parm->version_major) <= 7) { + printf("%s-%d", proto, + ata_version(parm->version_major)); + } else if (ata_version(parm->version_major) == 8) { + printf("%s8-ACS", proto); + } else { + printf("ACS-%d %s", + ata_version(parm->version_major) - 7, proto); + } if (parm->satacapabilities && parm->satacapabilities != 0xffff) { if (parm->satacapabilities & ATA_SATA_GEN3) printf(" SATA 3.x\n"); From owner-svn-src-stable@freebsd.org Thu Aug 8 22:11:02 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AEBA3B5250; Thu, 8 Aug 2019 22:11:02 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464MyZ4D4qz3Fdf; Thu, 8 Aug 2019 22:11:02 +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 71DA83FF6; Thu, 8 Aug 2019 22:11:02 +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 x78MB2Zc042127; Thu, 8 Aug 2019 22:11:02 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78MB2Nl042125; Thu, 8 Aug 2019 22:11:02 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082211.x78MB2Nl042125@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:11:02 +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: r350803 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350803 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:11:02 -0000 Author: mav Date: Thu Aug 8 22:11:01 2019 New Revision: 350803 URL: https://svnweb.freebsd.org/changeset/base/350803 Log: MFC r350214: Unify BTL parsing for `camcontrol debug` and `reset`. This makes `camcontrol debug` also allow peripheral device specification. While there, make BTL parser more strict and switch from strtok() to strsep(). Modified: stable/11/sbin/camcontrol/camcontrol.8 stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 22:09:32 2019 (r350802) +++ stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 22:11:01 2019 (r350803) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 19, 2019 +.Dd July 22, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -185,7 +185,7 @@ .Op Fl X .Op Fl c .Op Fl p -.Aq all|off|bus Ns Op :target Ns Op :lun +.Aq all | off | device id | bus Ns Op :target Ns Op :lun .Nm .Ic tags .Op device id Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:09:32 2019 (r350802) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:11:01 2019 (r350803) @@ -3376,6 +3376,66 @@ atasecurity(struct cam_device *device, int retry_count #endif /* MINIMALISTIC */ /* + * Convert periph name into a bus, target and lun. + * + * Returns the number of parsed components, or 0. + */ +static int +parse_btl_name(char *tstr, path_id_t *bus, target_id_t *target, lun_id_t *lun, + cam_argmask *arglst) +{ + int fd; + union ccb ccb; + + bzero(&ccb, sizeof(ccb)); + ccb.ccb_h.func_code = XPT_GDEVLIST; + if (cam_get_device(tstr, ccb.cgdl.periph_name, + sizeof(ccb.cgdl.periph_name), &ccb.cgdl.unit_number) == -1) { + warnx("%s", cam_errbuf); + return (0); + } + + /* + * Attempt to get the passthrough device. This ioctl will + * fail if the device name is null, if the device doesn't + * exist, or if the passthrough driver isn't in the kernel. + */ + if ((fd = open(XPT_DEVICE, O_RDWR)) == -1) { + warn("Unable to open %s", XPT_DEVICE); + return (0); + } + if (ioctl(fd, CAMGETPASSTHRU, &ccb) == -1) { + warn("Unable to find bus:target:lun for device %s%d", + ccb.cgdl.periph_name, ccb.cgdl.unit_number); + close(fd); + return (0); + } + close(fd); + if ((ccb.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { + const struct cam_status_entry *entry; + + entry = cam_fetch_status_entry(ccb.ccb_h.status); + warnx("Unable to find bus:target_lun for device %s%d, " + "CAM status: %s (%#x)", + ccb.cgdl.periph_name, ccb.cgdl.unit_number, + entry ? entry->status_text : "Unknown", + ccb.ccb_h.status); + return (0); + } + + /* + * The kernel fills in the bus/target/lun. We don't + * need the passthrough device name and unit number since + * we aren't going to open it. + */ + *bus = ccb.ccb_h.path_id; + *target = ccb.ccb_h.target_id; + *lun = ccb.ccb_h.target_lun; + *arglst |= CAM_ARG_BUS | CAM_ARG_TARGET | CAM_ARG_LUN; + return (3); +} + +/* * Parse out a bus, or a bus, target and lun in the following * format: * bus @@ -3388,25 +3448,43 @@ static int parse_btl(char *tstr, path_id_t *bus, target_id_t *target, lun_id_t *lun, cam_argmask *arglst) { - char *tmpstr; + char *tmpstr, *end; int convs = 0; + *bus = CAM_BUS_WILDCARD; + *target = CAM_TARGET_WILDCARD; + *lun = CAM_LUN_WILDCARD; + while (isspace(*tstr) && (*tstr != '\0')) tstr++; - tmpstr = (char *)strtok(tstr, ":"); + if (strncasecmp(tstr, "all", strlen("all")) == 0) { + arglist |= CAM_ARG_BUS; + return (1); + } + + if (!isdigit(*tstr)) + return (parse_btl_name(tstr, bus, target, lun, arglst)); + + tmpstr = strsep(&tstr, ":"); if ((tmpstr != NULL) && (*tmpstr != '\0')) { - *bus = strtol(tmpstr, NULL, 0); + *bus = strtol(tmpstr, &end, 0); + if (*end != '\0') + return (0); *arglst |= CAM_ARG_BUS; convs++; - tmpstr = (char *)strtok(NULL, ":"); + tmpstr = strsep(&tstr, ":"); if ((tmpstr != NULL) && (*tmpstr != '\0')) { - *target = strtol(tmpstr, NULL, 0); + *target = strtol(tmpstr, &end, 0); + if (*end != '\0') + return (0); *arglst |= CAM_ARG_TARGET; convs++; - tmpstr = (char *)strtok(NULL, ":"); + tmpstr = strsep(&tstr, ":"); if ((tmpstr != NULL) && (*tmpstr != '\0')) { - *lun = strtol(tmpstr, NULL, 0); + *lun = strtoll(tmpstr, &end, 0); + if (*end != '\0') + return (0); *arglst |= CAM_ARG_LUN; convs++; } @@ -3420,7 +3498,7 @@ static int dorescan_or_reset(int argc, char **argv, int rescan) { static const char must[] = - "you must specify \"all\", a bus, or a bus:target:lun to %s"; + "you must specify \"all\", a bus, a bus:target:lun or periph to %s"; int rv, error = 0; path_id_t bus = CAM_BUS_WILDCARD; target_id_t target = CAM_TARGET_WILDCARD; @@ -3437,118 +3515,19 @@ dorescan_or_reset(int argc, char **argv, int rescan) tstr++; if (strncasecmp(tstr, "all", strlen("all")) == 0) arglist |= CAM_ARG_BUS; - else if (isdigit(*tstr)) { + else { rv = parse_btl(argv[optind], &bus, &target, &lun, &arglist); if (rv != 1 && rv != 3) { - warnx(must, rescan? "rescan" : "reset"); + warnx(must, rescan ? "rescan" : "reset"); return (1); } - } else { - char name[30]; - int unit; - int fd = -1; - union ccb ccb; - - /* - * Note that resetting or rescanning a device used to - * require a bus or bus:target:lun. This is because the - * device in question may not exist and you're trying to - * get the controller to rescan to find it. It may also be - * because the device is hung / unresponsive, and opening - * an unresponsive device is not desireable. - * - * It can be more convenient to reference a device by - * peripheral name and unit number, though, and it is - * possible to get the bus:target:lun for devices that - * currently exist in the EDT. So this can work for - * devices that we want to reset, or devices that exist - * that we want to rescan, but not devices that do not - * exist yet. - * - * So, we are careful here to look up the bus/target/lun - * for the device the user wants to operate on, specified - * by peripheral instance (e.g. da0, pass32) without - * actually opening that device. The process is similar to - * what cam_lookup_pass() does, except that we don't - * actually open the passthrough driver instance in the end. - */ - - if (cam_get_device(tstr, name, sizeof(name), &unit) == -1) { - warnx("%s", cam_errbuf); - error = 1; - goto bailout; - } - - if ((fd = open(XPT_DEVICE, O_RDWR)) == -1) { - warn("Unable to open %s", XPT_DEVICE); - error = 1; - goto bailout; - } - - bzero(&ccb, sizeof(ccb)); - - /* - * The function code isn't strictly necessary for the - * GETPASSTHRU ioctl. - */ - ccb.ccb_h.func_code = XPT_GDEVLIST; - - /* - * These two are necessary for the GETPASSTHRU ioctl to - * work. - */ - strlcpy(ccb.cgdl.periph_name, name, - sizeof(ccb.cgdl.periph_name)); - ccb.cgdl.unit_number = unit; - - /* - * Attempt to get the passthrough device. This ioctl will - * fail if the device name is null, if the device doesn't - * exist, or if the passthrough driver isn't in the kernel. - */ - if (ioctl(fd, CAMGETPASSTHRU, &ccb) == -1) { - warn("Unable to find bus:target:lun for device %s%d", - name, unit); - error = 1; - close(fd); - goto bailout; - } - if ((ccb.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { - const struct cam_status_entry *entry; - - entry = cam_fetch_status_entry(ccb.ccb_h.status); - warnx("Unable to find bus:target_lun for device %s%d, " - "CAM status: %s (%#x)", name, unit, - entry ? entry->status_text : "Unknown", - ccb.ccb_h.status); - error = 1; - close(fd); - goto bailout; - } - - /* - * The kernel fills in the bus/target/lun. We don't - * need the passthrough device name and unit number since - * we aren't going to open it. - */ - bus = ccb.ccb_h.path_id; - target = ccb.ccb_h.target_id; - lun = ccb.ccb_h.target_lun; - - arglist |= CAM_ARG_BUS | CAM_ARG_TARGET | CAM_ARG_LUN; - - close(fd); } - if ((arglist & CAM_ARG_BUS) - && (arglist & CAM_ARG_TARGET) - && (arglist & CAM_ARG_LUN)) + if (arglist & CAM_ARG_LUN) error = scanlun_or_reset_dev(bus, target, lun, rescan); else error = rescan_or_reset_bus(bus, rescan); -bailout: - return (error); } @@ -4935,9 +4914,9 @@ camdebug(int argc, char **argv, char *combinedopt) path_id_t bus = CAM_BUS_WILDCARD; target_id_t target = CAM_TARGET_WILDCARD; lun_id_t lun = CAM_LUN_WILDCARD; - char *tstr, *tmpstr = NULL; + char *tstr; union ccb ccb; - int error = 0; + int error = 0, rv; bzero(&ccb, sizeof(union ccb)); @@ -4976,23 +4955,16 @@ camdebug(int argc, char **argv, char *combinedopt) } } - if ((fd = open(XPT_DEVICE, O_RDWR)) < 0) { - warnx("error opening transport layer device %s", XPT_DEVICE); - warn("%s", XPT_DEVICE); - return (1); - } argc -= optind; argv += optind; if (argc <= 0) { warnx("you must specify \"off\", \"all\" or a bus,"); - warnx("bus:target, or bus:target:lun"); - close(fd); + warnx("bus:target, bus:target:lun or periph"); return (1); } tstr = *argv; - while (isspace(*tstr) && (*tstr != '\0')) tstr++; @@ -5001,66 +4973,54 @@ camdebug(int argc, char **argv, char *combinedopt) arglist &= ~(CAM_ARG_DEBUG_INFO|CAM_ARG_DEBUG_PERIPH| CAM_ARG_DEBUG_TRACE|CAM_ARG_DEBUG_SUBTRACE| CAM_ARG_DEBUG_XPT|CAM_ARG_DEBUG_PROBE); - } else if (strncmp(tstr, "all", 3) != 0) { - tmpstr = (char *)strtok(tstr, ":"); - if ((tmpstr != NULL) && (*tmpstr != '\0')){ - bus = strtol(tmpstr, NULL, 0); - arglist |= CAM_ARG_BUS; - tmpstr = (char *)strtok(NULL, ":"); - if ((tmpstr != NULL) && (*tmpstr != '\0')){ - target = strtol(tmpstr, NULL, 0); - arglist |= CAM_ARG_TARGET; - tmpstr = (char *)strtok(NULL, ":"); - if ((tmpstr != NULL) && (*tmpstr != '\0')){ - lun = strtol(tmpstr, NULL, 0); - arglist |= CAM_ARG_LUN; - } - } - } else { - error = 1; + } else { + rv = parse_btl(tstr, &bus, &target, &lun, &arglist); + if (rv < 1) { warnx("you must specify \"all\", \"off\", or a bus,"); - warnx("bus:target, or bus:target:lun to debug"); + warnx("bus:target, bus:target:lun or periph to debug"); + return (1); } } - if (error == 0) { + if ((fd = open(XPT_DEVICE, O_RDWR)) < 0) { + warnx("error opening transport layer device %s", XPT_DEVICE); + warn("%s", XPT_DEVICE); + return (1); + } - ccb.ccb_h.func_code = XPT_DEBUG; - ccb.ccb_h.path_id = bus; - ccb.ccb_h.target_id = target; - ccb.ccb_h.target_lun = lun; + ccb.ccb_h.func_code = XPT_DEBUG; + ccb.ccb_h.path_id = bus; + ccb.ccb_h.target_id = target; + ccb.ccb_h.target_lun = lun; - if (ioctl(fd, CAMIOCOMMAND, &ccb) == -1) { - warn("CAMIOCOMMAND ioctl failed"); + if (ioctl(fd, CAMIOCOMMAND, &ccb) == -1) { + warn("CAMIOCOMMAND ioctl failed"); + error = 1; + } else { + if ((ccb.ccb_h.status & CAM_STATUS_MASK) == + CAM_FUNC_NOTAVAIL) { + warnx("CAM debugging not available"); + warnx("you need to put options CAMDEBUG in" + " your kernel config file!"); error = 1; - } - - if (error == 0) { - if ((ccb.ccb_h.status & CAM_STATUS_MASK) == - CAM_FUNC_NOTAVAIL) { - warnx("CAM debugging not available"); - warnx("you need to put options CAMDEBUG in" - " your kernel config file!"); - error = 1; - } else if ((ccb.ccb_h.status & CAM_STATUS_MASK) != - CAM_REQ_CMP) { - warnx("XPT_DEBUG CCB failed with status %#x", - ccb.ccb_h.status); - error = 1; + } else if ((ccb.ccb_h.status & CAM_STATUS_MASK) != + CAM_REQ_CMP) { + warnx("XPT_DEBUG CCB failed with status %#x", + ccb.ccb_h.status); + error = 1; + } else { + if (ccb.cdbg.flags == CAM_DEBUG_NONE) { + fprintf(stderr, + "Debugging turned off\n"); } else { - if (ccb.cdbg.flags == CAM_DEBUG_NONE) { - fprintf(stderr, - "Debugging turned off\n"); - } else { - fprintf(stderr, - "Debugging enabled for " - "%d:%d:%jx\n", - bus, target, (uintmax_t)lun); - } + fprintf(stderr, + "Debugging enabled for " + "%d:%d:%jx\n", + bus, target, (uintmax_t)lun); } } - close(fd); } + close(fd); return (error); } @@ -9429,7 +9389,7 @@ usage(int printlong) " camcontrol smpphylist [dev_id][generic args][-l][-q]\n" " camcontrol smpmaninfo [dev_id][generic args][-l]\n" " camcontrol debug [-I][-P][-T][-S][-X][-c]\n" -" \n" +" \n" " camcontrol tags [dev_id][generic args] [-N tags] [-q] [-v]\n" " camcontrol negotiate [dev_id][generic args] [-a][-c]\n" " [-D ][-M mode][-O offset]\n" From owner-svn-src-stable@freebsd.org Thu Aug 8 22:16:24 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 47026B548A; Thu, 8 Aug 2019 22:16:24 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464N4m1sf7z3G18; Thu, 8 Aug 2019 22:16:24 +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 06EFE4085; Thu, 8 Aug 2019 22:16:24 +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 x78MGO79048031; Thu, 8 Aug 2019 22:16:24 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78MGKAk048013; Thu, 8 Aug 2019 22:16:20 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082216.x78MGKAk048013@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:16: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: r350804 - in stable/11/sys: cam cam/ata cam/nvme cam/scsi dev/hyperv/storvsc X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/11/sys: cam cam/ata cam/nvme cam/scsi dev/hyperv/storvsc X-SVN-Commit-Revision: 350804 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:16:24 -0000 Author: mav Date: Thu Aug 8 22:16:19 2019 New Revision: 350804 URL: https://svnweb.freebsd.org/changeset/base/350804 Log: MFC r326645 (by imp): Define xpt_path_inq. This provides a nice wrarpper around the XPT_PATH_INQ ccb creation and calling. Modified: stable/11/sys/cam/ata/ata_da.c stable/11/sys/cam/ata/ata_xpt.c stable/11/sys/cam/cam_periph.c stable/11/sys/cam/cam_xpt.c stable/11/sys/cam/cam_xpt.h stable/11/sys/cam/nvme/nvme_da.c stable/11/sys/cam/nvme/nvme_xpt.c stable/11/sys/cam/scsi/scsi_cd.c stable/11/sys/cam/scsi/scsi_ch.c stable/11/sys/cam/scsi/scsi_da.c stable/11/sys/cam/scsi/scsi_pass.c stable/11/sys/cam/scsi/scsi_pt.c stable/11/sys/cam/scsi/scsi_sa.c stable/11/sys/cam/scsi/scsi_sg.c stable/11/sys/cam/scsi/scsi_target.c stable/11/sys/cam/scsi/scsi_xpt.c stable/11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/ata/ata_da.c ============================================================================== --- stable/11/sys/cam/ata/ata_da.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/ata/ata_da.c Thu Aug 8 22:16:19 2019 (r350804) @@ -1751,10 +1751,7 @@ adaregister(struct cam_periph *periph, void *arg) else softc->quirks = ADA_Q_NONE; - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); TASK_INIT(&softc->sysctl_task, 0, adasysctlinit, periph); Modified: stable/11/sys/cam/ata/ata_xpt.c ============================================================================== --- stable/11/sys/cam/ata/ata_xpt.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/ata/ata_xpt.c Thu Aug 8 22:16:19 2019 (r350804) @@ -994,10 +994,7 @@ noerror: if (path->device->mintags != 0 && path->bus->sim->max_tagged_dev_openings != 0) { /* Check if the SIM does not want queued commands. */ - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); if (cpi.ccb_h.status == CAM_REQ_CMP && (cpi.hba_inquiry & PI_TAG_ABLE)) { /* Report SIM which tags are allowed. */ @@ -1400,10 +1397,7 @@ ata_scan_bus(struct cam_periph *periph, union ccb *req xpt_done(request_ccb); return; } - xpt_setup_ccb(&work_ccb->ccb_h, request_ccb->ccb_h.path, - request_ccb->ccb_h.pinfo.priority); - work_ccb->ccb_h.func_code = XPT_PATH_INQ; - xpt_action(work_ccb); + xpt_path_inq(&work_ccb->cpi, request_ccb->ccb_h.path); if (work_ccb->ccb_h.status != CAM_REQ_CMP) { request_ccb->ccb_h.status = work_ccb->ccb_h.status; xpt_free_ccb(work_ccb); @@ -1558,10 +1552,7 @@ ata_scan_lun(struct cam_periph *periph, struct cam_pat CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_scan_lun\n")); - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); - + xpt_path_inq(&cpi, path); if (cpi.ccb_h.status != CAM_REQ_CMP) { if (request_ccb != NULL) { request_ccb->ccb_h.status = cpi.ccb_h.status; @@ -1670,9 +1661,7 @@ ata_device_transport(struct cam_path *path) struct ata_params *ident_buf = NULL; /* Get transport information from the SIM */ - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); path->device->transport = cpi.transport; if ((path->device->flags & CAM_DEV_INQUIRY_DATA_VALID) != 0) @@ -1967,9 +1956,7 @@ ata_set_transfer_settings(struct ccb_trans_settings *c scsi = &cts->proto_specific.scsi; else scsi = NULL; - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); /* Sanity checking */ if ((cpi.hba_inquiry & PI_TAG_ABLE) == 0 @@ -2101,9 +2088,7 @@ ata_announce_periph(struct cam_periph *periph) if ((cts.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) return; /* Ask the SIM for its base transfer speed */ - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); /* Report connection speed */ speed = cpi.base_transfer_speed; if (cts.ccb_h.status == CAM_REQ_CMP && cts.transport == XPORT_ATA) { Modified: stable/11/sys/cam/cam_periph.c ============================================================================== --- stable/11/sys/cam/cam_periph.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/cam_periph.c Thu Aug 8 22:16:19 2019 (r350804) @@ -738,9 +738,7 @@ camperiphfree(struct cam_periph *periph) arg = &ccb; break; case AC_PATH_REGISTERED: - ccb.ccb_h.func_code = XPT_PATH_INQ; - xpt_setup_ccb(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL); - xpt_action(&ccb); + xpt_path_inq(&ccb.cpi, periph->path); arg = &ccb; break; default: Modified: stable/11/sys/cam/cam_xpt.c ============================================================================== --- stable/11/sys/cam/cam_xpt.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/cam_xpt.c Thu Aug 8 22:16:19 2019 (r350804) @@ -2491,9 +2491,7 @@ xptsetasyncbusfunc(struct cam_eb *bus, void *arg) CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); xpt_path_lock(&path); - xpt_setup_ccb(&cpi.ccb_h, &path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, &path); csa->callback(csa->callback_arg, AC_PATH_REGISTERED, &path, &cpi); @@ -3937,9 +3935,7 @@ xpt_bus_register(struct cam_sim *sim, device_t parent, return (CAM_RESRC_UNAVAIL); } - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); if (cpi.ccb_h.status == CAM_REQ_CMP) { struct xpt_xport **xpt; Modified: stable/11/sys/cam/cam_xpt.h ============================================================================== --- stable/11/sys/cam/cam_xpt.h Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/cam_xpt.h Thu Aug 8 22:16:19 2019 (r350804) @@ -32,6 +32,12 @@ #ifndef _CAM_CAM_XPT_H #define _CAM_CAM_XPT_H 1 +#ifdef _KERNEL +#include +#include +#endif + + /* Forward Declarations */ union ccb; struct cam_periph; @@ -134,6 +140,20 @@ void xpt_copy_path(struct cam_path *new_path, struct cam_path *path); void xpt_release_path(struct cam_path *path); + +/* + * Perform a path inquiry at the request priority. The bzero may be + * unnecessary. + */ +static inline void +xpt_path_inq(struct ccb_pathinq *cpi, struct cam_path *path) +{ + + bzero(cpi, sizeof(*cpi)); + xpt_setup_ccb(&cpi->ccb_h, path, CAM_PRIORITY_NORMAL); + cpi->ccb_h.func_code = XPT_PATH_INQ; + xpt_action((union ccb *)cpi); +} #endif /* _KERNEL */ Modified: stable/11/sys/cam/nvme/nvme_da.c ============================================================================== --- stable/11/sys/cam/nvme/nvme_da.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/nvme/nvme_da.c Thu Aug 8 22:16:19 2019 (r350804) @@ -716,10 +716,7 @@ ndaregister(struct cam_periph *periph, void *arg) softc->quirks = NDA_Q_NONE; - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); TASK_INIT(&softc->sysctl_task, 0, ndasysctlinit, periph); Modified: stable/11/sys/cam/nvme/nvme_xpt.c ============================================================================== --- stable/11/sys/cam/nvme/nvme_xpt.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/nvme/nvme_xpt.c Thu Aug 8 22:16:19 2019 (r350804) @@ -364,9 +364,7 @@ nvme_scan_lun(struct cam_periph *periph, struct cam_pa CAM_DEBUG(path, CAM_DEBUG_TRACE, ("nvme_scan_lun\n")); - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); if (cpi.ccb_h.status != CAM_REQ_CMP) { if (request_ccb != NULL) { @@ -457,9 +455,7 @@ nvme_device_transport(struct cam_path *path) /* XXX get data from nvme namespace and other info ??? */ /* Get transport information from the SIM */ - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); path->device->transport = cpi.transport; path->device->transport_version = cpi.transport_version; @@ -628,9 +624,7 @@ nvme_announce_periph(struct cam_periph *periph) if ((cts.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) return; /* Ask the SIM for its base transfer speed */ - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); /* XXX NVME STUFF HERE */ printf("\n"); } Modified: stable/11/sys/cam/scsi/scsi_cd.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_cd.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_cd.c Thu Aug 8 22:16:19 2019 (r350804) @@ -587,10 +587,7 @@ cdregister(struct cam_periph *periph, void *arg) softc->quirks = CD_Q_NONE; /* Check if the SIM does not want 6 byte commands */ - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); if (cpi.ccb_h.status == CAM_REQ_CMP && (cpi.hba_misc & PIM_NO_6_BYTE)) softc->quirks |= CD_Q_10_BYTE_ONLY; Modified: stable/11/sys/cam/scsi/scsi_ch.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_ch.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_ch.c Thu Aug 8 22:16:19 2019 (r350804) @@ -402,10 +402,7 @@ chregister(struct cam_periph *periph, void *arg) if (cgd->inq_data.version <= SCSI_REV_2) softc->quirks |= CH_Q_NO_DVCID; - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); /* * Changers don't have a blocksize, and obviously don't support Modified: stable/11/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_da.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_da.c Thu Aug 8 22:16:19 2019 (r350804) @@ -2517,10 +2517,7 @@ daregister(struct cam_periph *periph, void *arg) softc->quirks = DA_Q_NONE; /* Check if the SIM does not want 6 byte commands */ - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); if (cpi.ccb_h.status == CAM_REQ_CMP && (cpi.hba_misc & PIM_NO_6_BYTE)) softc->quirks |= DA_Q_NO_6_BYTE; Modified: stable/11/sys/cam/scsi/scsi_pass.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_pass.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_pass.c Thu Aug 8 22:16:19 2019 (r350804) @@ -589,10 +589,7 @@ passregister(struct cam_periph *periph, void *arg) softc->io_zone_size = MAXPHYS; knlist_init_mtx(&softc->read_select.si_note, cam_periph_mtx(periph)); - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); if (cpi.maxio == 0) softc->maxio = DFLTPHYS; /* traditional default */ Modified: stable/11/sys/cam/scsi/scsi_pt.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_pt.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_pt.c Thu Aug 8 22:16:19 2019 (r350804) @@ -275,10 +275,7 @@ ptctor(struct cam_periph *periph, void *arg) periph->softc = softc; - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); cam_periph_unlock(periph); Modified: stable/11/sys/cam/scsi/scsi_sa.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_sa.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_sa.c Thu Aug 8 22:16:19 2019 (r350804) @@ -2425,10 +2425,7 @@ saregister(struct cam_periph *periph, void *arg) softc->flags |= SA_FLAG_PROTECT_SUPP; } - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); /* * The SA driver supports a blocksize, but we don't know the Modified: stable/11/sys/cam/scsi/scsi_sg.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_sg.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_sg.c Thu Aug 8 22:16:19 2019 (r350804) @@ -322,10 +322,7 @@ sgregister(struct cam_periph *periph, void *arg) TAILQ_INIT(&softc->rdwr_done); periph->softc = softc; - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); if (cpi.maxio == 0) softc->maxio = DFLTPHYS; /* traditional default */ Modified: stable/11/sys/cam/scsi/scsi_target.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_target.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_target.c Thu Aug 8 22:16:19 2019 (r350804) @@ -391,9 +391,7 @@ targenable(struct targ_softc *softc, struct cam_path * return (CAM_LUN_ALRDY_ENA); /* Make sure SIM supports target mode */ - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NORMAL); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); status = cpi.ccb_h.status & CAM_STATUS_MASK; if (status != CAM_REQ_CMP) { printf("pathinq failed, status %#x\n", status); Modified: stable/11/sys/cam/scsi/scsi_xpt.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_xpt.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/cam/scsi/scsi_xpt.c Thu Aug 8 22:16:19 2019 (r350804) @@ -697,9 +697,7 @@ probeschedule(struct cam_periph *periph) softc = (probe_softc *)periph->softc; ccb = (union ccb *)TAILQ_FIRST(&softc->request_ccbs); - xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, periph->path); /* * If a device has gone away and another device, or the same one, Modified: stable/11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c ============================================================================== --- stable/11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Thu Aug 8 22:11:01 2019 (r350803) +++ stable/11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Thu Aug 8 22:16:19 2019 (r350804) @@ -2350,10 +2350,7 @@ storvsc_ada_probe_veto(void *arg __unused, struct cam_ if (path->device->protocol == PROTO_ATA) { struct ccb_pathinq cpi; - bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NONE); - cpi.ccb_h.func_code = XPT_PATH_INQ; - xpt_action((union ccb *)&cpi); + xpt_path_inq(&cpi, path); if (cpi.ccb_h.status == CAM_REQ_CMP && cpi.hba_vendor == PCI_VENDOR_INTEL && cpi.hba_device == PCI_PRODUCT_PIIX4) { From owner-svn-src-stable@freebsd.org Thu Aug 8 22:17:42 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1AC6EB5528; Thu, 8 Aug 2019 22:17:42 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464N6F6PD8z3G8t; Thu, 8 Aug 2019 22:17:41 +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 BCE194091; Thu, 8 Aug 2019 22:17:41 +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 x78MHfwl048144; Thu, 8 Aug 2019 22:17:41 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78MHfij048142; Thu, 8 Aug 2019 22:17:41 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082217.x78MHfij048142@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:17:41 +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: r350805 - stable/11/sys/cam/ata X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sys/cam/ata X-SVN-Commit-Revision: 350805 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:17:42 -0000 Author: mav Date: Thu Aug 8 22:17:41 2019 New Revision: 350805 URL: https://svnweb.freebsd.org/changeset/base/350805 Log: MFC r350233: Make CAM ATA stack handle disk resizes. While for ATA disks resize is even more rare situation than for SCSI, it may happen in case of HPA or AMA being used. Make ATA XPT report minor IDENTIFY DATA change to upper layers with AC_GETDEV_CHANGED, and ada(4) periph driver handle that event, recalculating all the disk properties and signalling resize to GEOM. Since ATA has no mechanism of UNIT ATTENTIONs, like SCSI, it has no way to detect that something has changed. That is why this functionality depends on explicit reprobe via XPT_REPROBE_LUN call. Relnotes: yes Modified: stable/11/sys/cam/ata/ata_da.c stable/11/sys/cam/ata/ata_xpt.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cam/ata/ata_da.c ============================================================================== --- stable/11/sys/cam/ata/ata_da.c Thu Aug 8 22:16:19 2019 (r350804) +++ stable/11/sys/cam/ata/ata_da.c Thu Aug 8 22:17:41 2019 (r350805) @@ -246,8 +246,9 @@ struct ada_softc { int periodic_read_error; int periodic_read_count; #endif - struct disk_params params; - struct disk *disk; + struct ccb_pathinq cpi; + struct disk_params params; + struct disk *disk; struct task sysctl_task; struct sysctl_ctx_list sysctl_ctx; struct sysctl_oid *sysctl_tree; @@ -798,6 +799,8 @@ static void adasysctlinit(void *context, int pending) static int adagetattr(struct bio *bp); static void adasetflags(struct ada_softc *softc, struct ccb_getdev *cgd); +static void adasetgeom(struct ada_softc *softc, + struct ccb_getdev *cgd); static periph_ctor_t adaregister; static void ada_dsmtrim(struct ada_softc *softc, struct bio *bp, struct ccb_ataio *ataio); @@ -813,8 +816,6 @@ static void adadone(struct cam_periph *periph, union ccb *done_ccb); static int adaerror(union ccb *ccb, u_int32_t cam_flags, u_int32_t sense_flags); -static void adagetparams(struct cam_periph *periph, - struct ccb_getdev *cgd); static timeout_t adasendorderedtag; static void adashutdown(void *arg, int howto); static void adasuspend(void *arg); @@ -1317,9 +1318,11 @@ adaasync(void *callback_arg, u_int32_t code, xpt_action((union ccb *)&cgd); /* - * Set/clear support flags based on the new Identify data. + * Update our information based on the new Identify data. */ adasetflags(softc, &cgd); + adasetgeom(softc, &cgd); + disk_resize(softc->disk, M_NOWAIT); cam_periph_async(periph, code, path, arg); break; @@ -1639,7 +1642,8 @@ adasetflags(struct ada_softc *softc, struct ccb_getdev softc->flags &= ~ADA_FLAG_CAN_NCQ; if ((cgd->ident_data.support_dsm & ATA_SUPPORT_DSM_TRIM) && - (cgd->inq_flags & SID_DMA)) { + (cgd->inq_flags & SID_DMA) && + (softc->quirks & ADA_Q_NO_TRIM) == 0) { softc->flags |= ADA_FLAG_CAN_TRIM; softc->trim_max_ranges = TRIM_MAX_RANGES; if (cgd->ident_data.max_dsm_blocks != 0) { @@ -1707,12 +1711,10 @@ static cam_status adaregister(struct cam_periph *periph, void *arg) { struct ada_softc *softc; - struct ccb_pathinq cpi; struct ccb_getdev *cgd; char announce_buf[80]; struct disk_params *dp; caddr_t match; - u_int maxio; int quirks; cgd = (struct ccb_getdev *)arg; @@ -1738,6 +1740,7 @@ adaregister(struct cam_periph *periph, void *arg) } periph->softc = softc; + xpt_path_inq(&softc->cpi, periph->path); /* * See if this device has any quirks. @@ -1751,8 +1754,6 @@ adaregister(struct cam_periph *periph, void *arg) else softc->quirks = ADA_Q_NONE; - xpt_path_inq(&cpi, periph->path); - TASK_INIT(&softc->sysctl_task, 0, adasysctlinit, periph); /* @@ -1778,6 +1779,8 @@ adaregister(struct cam_periph *periph, void *arg) * Set support flags based on the Identify data and quirks. */ adasetflags(softc, cgd); + if (softc->cpi.hba_misc & PIM_ATA_EXT) + softc->flags |= ADA_FLAG_PIM_ATA_EXT; /* Disable queue sorting for non-rotational media by default. */ if (cgd->ident_data.media_rotation_rate == ATA_RATE_NON_ROTATING) { @@ -1786,14 +1789,13 @@ adaregister(struct cam_periph *periph, void *arg) softc->rotating = 1; } cam_iosched_set_sort_queue(softc->cam_iosched, softc->rotating ? -1 : 0); - adagetparams(periph, cgd); softc->disk = disk_alloc(); - softc->disk->d_rotation_rate = cgd->ident_data.media_rotation_rate; + adasetgeom(softc, cgd); softc->disk->d_devstat = devstat_new_entry(periph->periph_name, periph->unit_number, softc->params.secsize, DEVSTAT_ALL_SUPPORTED, DEVSTAT_TYPE_DIRECT | - XPORT_DEVSTAT_TYPE(cpi.transport), + XPORT_DEVSTAT_TYPE(softc->cpi.transport), DEVSTAT_PRIORITY_DISK); softc->disk->d_open = adaopen; softc->disk->d_close = adaclose; @@ -1803,70 +1805,8 @@ adaregister(struct cam_periph *periph, void *arg) softc->disk->d_gone = adadiskgonecb; softc->disk->d_name = "ada"; softc->disk->d_drv1 = periph; - maxio = cpi.maxio; /* Honor max I/O size of SIM */ - if (maxio == 0) - maxio = DFLTPHYS; /* traditional default */ - else if (maxio > MAXPHYS) - maxio = MAXPHYS; /* for safety */ - if (softc->flags & ADA_FLAG_CAN_48BIT) - maxio = min(maxio, 65536 * softc->params.secsize); - else /* 28bit ATA command limit */ - maxio = min(maxio, 256 * softc->params.secsize); - if (softc->quirks & ADA_Q_128KB) - maxio = min(maxio, 128 * 1024); - softc->disk->d_maxsize = maxio; softc->disk->d_unit = periph->unit_number; - softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; - if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) - softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; - /* Device lies about TRIM capability. */ - if ((softc->quirks & ADA_Q_NO_TRIM) && - (softc->flags & ADA_FLAG_CAN_TRIM)) - softc->flags &= ~ADA_FLAG_CAN_TRIM; - if (softc->flags & ADA_FLAG_CAN_TRIM) { - softc->disk->d_flags |= DISKFLAG_CANDELETE; - softc->disk->d_delmaxsize = softc->params.secsize * - ATA_DSM_RANGE_MAX * - softc->trim_max_ranges; - } else if ((softc->flags & ADA_FLAG_CAN_CFA) && - !(softc->flags & ADA_FLAG_CAN_48BIT)) { - softc->disk->d_flags |= DISKFLAG_CANDELETE; - softc->disk->d_delmaxsize = 256 * softc->params.secsize; - } else - softc->disk->d_delmaxsize = maxio; - if ((cpi.hba_misc & PIM_UNMAPPED) != 0) { - softc->disk->d_flags |= DISKFLAG_UNMAPPED_BIO; - softc->unmappedio = 1; - } - if (cpi.hba_misc & PIM_ATA_EXT) - softc->flags |= ADA_FLAG_PIM_ATA_EXT; - strlcpy(softc->disk->d_descr, cgd->ident_data.model, - MIN(sizeof(softc->disk->d_descr), sizeof(cgd->ident_data.model))); - strlcpy(softc->disk->d_ident, cgd->ident_data.serial, - MIN(sizeof(softc->disk->d_ident), sizeof(cgd->ident_data.serial))); - softc->disk->d_hba_vendor = cpi.hba_vendor; - softc->disk->d_hba_device = cpi.hba_device; - softc->disk->d_hba_subvendor = cpi.hba_subvendor; - softc->disk->d_hba_subdevice = cpi.hba_subdevice; - softc->disk->d_sectorsize = softc->params.secsize; - softc->disk->d_mediasize = (off_t)softc->params.sectors * - softc->params.secsize; - if (ata_physical_sector_size(&cgd->ident_data) != - softc->params.secsize) { - softc->disk->d_stripesize = - ata_physical_sector_size(&cgd->ident_data); - softc->disk->d_stripeoffset = (softc->disk->d_stripesize - - ata_logical_sector_offset(&cgd->ident_data)) % - softc->disk->d_stripesize; - } else if (softc->quirks & ADA_Q_4K) { - softc->disk->d_stripesize = 4096; - softc->disk->d_stripeoffset = 0; - } - softc->disk->d_fwsectors = softc->params.secs_per_track; - softc->disk->d_fwheads = softc->params.heads; - ata_disk_firmware_geom_adjust(softc->disk); - /* * Acquire a reference to the periph before we register with GEOM. * We'll release this reference once GEOM calls us back (via @@ -3366,16 +3306,17 @@ adaerror(union ccb *ccb, u_int32_t cam_flags, u_int32_ } static void -adagetparams(struct cam_periph *periph, struct ccb_getdev *cgd) +adasetgeom(struct ada_softc *softc, struct ccb_getdev *cgd) { - struct ada_softc *softc = (struct ada_softc *)periph->softc; struct disk_params *dp = &softc->params; u_int64_t lbasize48; u_int32_t lbasize; + u_int maxio, d_flags; dp->secsize = ata_logical_sector_size(&cgd->ident_data); if ((cgd->ident_data.atavalid & ATA_FLAG_54_58) && - cgd->ident_data.current_heads && cgd->ident_data.current_sectors) { + cgd->ident_data.current_heads != 0 && + cgd->ident_data.current_sectors != 0) { dp->heads = cgd->ident_data.current_heads; dp->secs_per_track = cgd->ident_data.current_sectors; dp->cylinders = cgd->ident_data.cylinders; @@ -3403,6 +3344,60 @@ adagetparams(struct cam_periph *periph, struct ccb_get if ((cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) && lbasize48 > ATA_MAX_28BIT_LBA) dp->sectors = lbasize48; + + maxio = softc->cpi.maxio; /* Honor max I/O size of SIM */ + if (maxio == 0) + maxio = DFLTPHYS; /* traditional default */ + else if (maxio > MAXPHYS) + maxio = MAXPHYS; /* for safety */ + if (softc->flags & ADA_FLAG_CAN_48BIT) + maxio = min(maxio, 65536 * softc->params.secsize); + else /* 28bit ATA command limit */ + maxio = min(maxio, 256 * softc->params.secsize); + if (softc->quirks & ADA_Q_128KB) + maxio = min(maxio, 128 * 1024); + softc->disk->d_maxsize = maxio; + d_flags = DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZONE; + if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) + d_flags |= DISKFLAG_CANFLUSHCACHE; + if (softc->flags & ADA_FLAG_CAN_TRIM) { + d_flags |= DISKFLAG_CANDELETE; + softc->disk->d_delmaxsize = softc->params.secsize * + ATA_DSM_RANGE_MAX * softc->trim_max_ranges; + } else if ((softc->flags & ADA_FLAG_CAN_CFA) && + !(softc->flags & ADA_FLAG_CAN_48BIT)) { + d_flags |= DISKFLAG_CANDELETE; + softc->disk->d_delmaxsize = 256 * softc->params.secsize; + } else + softc->disk->d_delmaxsize = maxio; + if ((softc->cpi.hba_misc & PIM_UNMAPPED) != 0) { + d_flags |= DISKFLAG_UNMAPPED_BIO; + softc->unmappedio = 1; + } + softc->disk->d_flags = d_flags; + strlcpy(softc->disk->d_descr, cgd->ident_data.model, + MIN(sizeof(softc->disk->d_descr), sizeof(cgd->ident_data.model))); + strlcpy(softc->disk->d_ident, cgd->ident_data.serial, + MIN(sizeof(softc->disk->d_ident), sizeof(cgd->ident_data.serial))); + + softc->disk->d_sectorsize = softc->params.secsize; + softc->disk->d_mediasize = (off_t)softc->params.sectors * + softc->params.secsize; + if (ata_physical_sector_size(&cgd->ident_data) != + softc->params.secsize) { + softc->disk->d_stripesize = + ata_physical_sector_size(&cgd->ident_data); + softc->disk->d_stripeoffset = (softc->disk->d_stripesize - + ata_logical_sector_offset(&cgd->ident_data)) % + softc->disk->d_stripesize; + } else if (softc->quirks & ADA_Q_4K) { + softc->disk->d_stripesize = 4096; + softc->disk->d_stripeoffset = 0; + } + softc->disk->d_fwsectors = softc->params.secs_per_track; + softc->disk->d_fwheads = softc->params.heads; + ata_disk_firmware_geom_adjust(softc->disk); + softc->disk->d_rotation_rate = cgd->ident_data.media_rotation_rate; } static void Modified: stable/11/sys/cam/ata/ata_xpt.c ============================================================================== --- stable/11/sys/cam/ata/ata_xpt.c Thu Aug 8 22:16:19 2019 (r350804) +++ stable/11/sys/cam/ata/ata_xpt.c Thu Aug 8 22:17:41 2019 (r350805) @@ -332,6 +332,7 @@ probestart(struct cam_periph *periph, union ccb *start probe_softc *softc; struct cam_path *path; struct ata_params *ident_buf; + u_int oif; CAM_DEBUG(start_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("probestart\n")); @@ -371,7 +372,7 @@ probestart(struct cam_periph *periph, union ccb *start /*data_ptr*/(u_int8_t *)&softc->ident_data, /*dxfer_len*/sizeof(softc->ident_data), 30 * 1000); - if (periph->path->device->protocol == PROTO_ATA) + if (path->device->protocol == PROTO_ATA) ata_28bit_cmd(ataio, ATA_ATA_IDENTIFY, 0, 0, 0); else ata_28bit_cmd(ataio, ATA_ATAPI_IDENTIFY, 0, 0, 0); @@ -407,7 +408,7 @@ probestart(struct cam_periph *periph, union ccb *start if (cts.xport_specific.sata.valid & CTS_SATA_VALID_MODE) mode = cts.xport_specific.sata.mode; } - if (periph->path->device->protocol == PROTO_ATA) { + if (path->device->protocol == PROTO_ATA) { if (ata_dma == 0 && (mode == 0 || mode > ATA_PIO_MAX)) mode = ATA_PIO_MAX; } else { @@ -447,11 +448,13 @@ negotiate: if (mode != wantmode) goto negotiate; /* Remember what transport thinks about DMA. */ + oif = path->device->inq_flags; if (mode < ATA_DMA) path->device->inq_flags &= ~SID_DMA; else path->device->inq_flags |= SID_DMA; - xpt_async(AC_GETDEV_CHANGED, path, NULL); + if (path->device->inq_flags != oif) + xpt_async(AC_GETDEV_CHANGED, path, NULL); cam_fill_ataio(ataio, 1, probedone, @@ -504,11 +507,13 @@ negotiate: break; case PROBE_SETAN: /* Remember what transport thinks about AEN. */ + oif = path->device->inq_flags; if (softc->caps & CTS_SATA_CAPS_H_AN) path->device->inq_flags |= SID_AEN; else path->device->inq_flags &= ~SID_AEN; - xpt_async(AC_GETDEV_CHANGED, path, NULL); + if (path->device->inq_flags != oif) + xpt_async(AC_GETDEV_CHANGED, path, NULL); cam_fill_ataio(ataio, 1, probedone, @@ -627,7 +632,7 @@ negotiate: { u_int inquiry_len; struct scsi_inquiry_data *inq_buf = - &periph->path->device->inq_data; + &path->device->inq_data; if (softc->action == PROBE_INQUIRY) inquiry_len = SHORT_INQUIRY_LENGTH; @@ -732,8 +737,8 @@ probedone(struct cam_periph *periph, union ccb *done_c struct cam_path *path; cam_status status; u_int32_t priority; - u_int caps; - int changed = 1, found = 1; + u_int caps, oif; + int changed, found = 1; static const uint8_t fake_device_id_hdr[8] = {0, SVPD_DEVICE_ID, 0, 12, SVPD_ID_CODESET_BINARY, SVPD_ID_TYPE_NAA, 0, 8}; @@ -928,23 +933,32 @@ noerror: goto out; } ident_buf = &path->device->ident_data; + + /* Check that it is the same device as we know. */ if ((periph->path->device->flags & CAM_DEV_UNCONFIGURED) == 0) { - /* Check that it is the same device. */ if (bcmp(softc->ident_data.model, ident_buf->model, sizeof(ident_buf->model)) || - bcmp(softc->ident_data.revision, ident_buf->revision, - sizeof(ident_buf->revision)) || bcmp(softc->ident_data.serial, ident_buf->serial, sizeof(ident_buf->serial))) { - /* Device changed. */ + /* The device was replaced. */ + changed = 2; xpt_async(AC_LOST_DEVICE, path, NULL); + } else if (bcmp(&softc->ident_data, ident_buf, + sizeof(*ident_buf))) { + /* The device is the same, but has changed. */ + changed = 1; } else { - bcopy(&softc->ident_data, ident_buf, sizeof(struct ata_params)); + /* Nothing has changed. */ changed = 0; } + } else { + /* This is a new device. */ + changed = 2; } - if (changed) { + + if (changed != 0) bcopy(&softc->ident_data, ident_buf, sizeof(struct ata_params)); + if (changed == 2) { /* Clean up from previous instance of this device */ if (path->device->serial_num != NULL) { free(path->device->serial_num, M_CAMXPT); @@ -981,10 +995,10 @@ noerror: ata_bswap(path->device->device_id + 8, 8); } } - path->device->flags |= CAM_DEV_IDENTIFY_DATA_VALID; - xpt_async(AC_GETDEV_CHANGED, path, NULL); } + if (changed == 1) + xpt_async(AC_GETDEV_CHANGED, path, NULL); if (ident_buf->satacapabilities & ATA_SUPPORT_NCQ) { path->device->mintags = 2; path->device->maxtags = @@ -1008,7 +1022,7 @@ noerror: } } ata_device_transport(path); - if (changed) + if (changed == 2) proberequestdefaultnegotiation(periph); PROBE_SET_ACTION(softc, PROBE_SETMODE); xpt_release_ccb(done_ccb); @@ -1064,6 +1078,7 @@ noerror: * capability information is not provided or transport is * SATA, we take support for granted. */ + oif = path->device->inq_flags; if (!(path->device->inq_flags & SID_DMA) || (path->device->transport == XPORT_ATA && (cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS) && @@ -1071,6 +1086,8 @@ noerror: path->device->inq_flags &= ~SID_DMA48; else path->device->inq_flags |= SID_DMA48; + if (path->device->inq_flags != oif) + xpt_async(AC_GETDEV_CHANGED, path, NULL); /* Store result to SIM. */ bzero(&cts, sizeof(cts)); xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE); @@ -1241,6 +1258,7 @@ notsata: else caps = 0; /* Remember what transport thinks about AEN. */ + oif = path->device->inq_flags; if ((caps & CTS_SATA_CAPS_H_AN) && path->device->protocol != PROTO_ATA) path->device->inq_flags |= SID_AEN; else @@ -1254,7 +1272,6 @@ notsata: cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS; xpt_action((union ccb *)&cts); softc->caps = caps; - xpt_async(AC_GETDEV_CHANGED, path, NULL); if (periph->path->device->flags & CAM_DEV_UNCONFIGURED) { path->device->flags &= ~CAM_DEV_UNCONFIGURED; xpt_acquire_device(path->device); @@ -1262,6 +1279,8 @@ notsata: xpt_action(done_ccb); xpt_async(AC_FOUND_DEVICE, path, done_ccb); } else { + if (path->device->inq_flags != oif) + xpt_async(AC_GETDEV_CHANGED, path, NULL); done_ccb->ccb_h.func_code = XPT_GDEV_TYPE; xpt_action(done_ccb); xpt_async(AC_SCSI_AEN, path, done_ccb); @@ -1274,12 +1293,14 @@ notsata: /* Check that it is the same device. */ if (bcmp(&softc->ident_data, ident_buf, 53)) { /* Device changed. */ + changed = 2; xpt_async(AC_LOST_DEVICE, path, NULL); } else { bcopy(&softc->ident_data, ident_buf, sizeof(struct ata_params)); changed = 0; } - } + } else + changed = 2; if (changed) { bcopy(&softc->ident_data, ident_buf, sizeof(struct ata_params)); /* Clean up from previous instance of this device */ From owner-svn-src-stable@freebsd.org Thu Aug 8 22:19:44 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 94E1CB55B5; Thu, 8 Aug 2019 22:19:44 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464N8c386vz3GHB; Thu, 8 Aug 2019 22:19:44 +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 3069A4092; Thu, 8 Aug 2019 22:19:44 +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 x78MJiUh048288; Thu, 8 Aug 2019 22:19:44 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78MJhnV048287; Thu, 8 Aug 2019 22:19:43 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082219.x78MJhnV048287@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:19:43 +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: r350806 - stable/11/sbin/camcontrol X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/11/sbin/camcontrol X-SVN-Commit-Revision: 350806 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:19:44 -0000 Author: mav Date: Thu Aug 8 22:19:43 2019 New Revision: 350806 URL: https://svnweb.freebsd.org/changeset/base/350806 Log: MFC r350257: Make `camcontrol hpa` and `camcontrol ama` trigger reprobe. This makes OS automatically see the disk's new disk size. Modified: stable/11/sbin/camcontrol/camcontrol.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:17:41 2019 (r350805) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:19:43 2019 (r350806) @@ -301,6 +301,7 @@ static int scsiserial(struct cam_device *device, int t #endif /* MINIMALISTIC */ static int parse_btl(char *tstr, path_id_t *bus, target_id_t *target, lun_id_t *lun, cam_argmask *arglst); +static int reprobe(struct cam_device *device); static int dorescan_or_reset(int argc, char **argv, int rescan); static int rescan_or_reset_bus(path_id_t bus, int rescan); static int scanlun_or_reset_dev(path_id_t bus, target_id_t target, @@ -370,7 +371,6 @@ static int scsiprintopcodes(struct cam_device *device, static int scsiopcodes(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout, int verbose); -static int scsireprobe(struct cam_device *device); #endif /* MINIMALISTIC */ #ifndef min @@ -2934,6 +2934,8 @@ atahpa(struct cam_device *device, int retry_count, int timeout, ccb, &ident_buf); atahpa_print(ident_buf, hpasize, 1); + /* Hint CAM to reprobe the device. */ + reprobe(device); } } break; @@ -3076,6 +3078,8 @@ ataama(struct cam_device *device, int retry_count, int error = ata_do_identify(device, retry_count, timeout, ccb, &ident_buf); ataama_print(ident_buf, nativesize, 1); + /* Hint CAM to reprobe the device. */ + reprobe(device); } } break; @@ -9313,7 +9317,7 @@ bailout: #endif /* MINIMALISTIC */ static int -scsireprobe(struct cam_device *device) +reprobe(struct cam_device *device) { union ccb *ccb; int retval = 0; @@ -9325,7 +9329,7 @@ scsireprobe(struct cam_device *device) return (1); } - CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); + CCB_CLEAR_ALL_EXCEPT_HDR(ccb); ccb->ccb_h.func_code = XPT_REPROBE_LUN; @@ -10090,7 +10094,7 @@ main(int argc, char **argv) arglist & CAM_ARG_VERBOSE); break; case CAM_CMD_REPROBE: - error = scsireprobe(cam_dev); + error = reprobe(cam_dev); break; case CAM_CMD_ZONE: error = zone(cam_dev, argc, argv, combinedopt, From owner-svn-src-stable@freebsd.org Thu Aug 8 22:20:16 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 552E2B563F; Thu, 8 Aug 2019 22:20:16 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464N9D2H2bz3GSP; Thu, 8 Aug 2019 22:20:16 +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 2F9A94096; Thu, 8 Aug 2019 22:20:16 +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 x78MKGk8048413; Thu, 8 Aug 2019 22:20:16 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x78MKFut048407; Thu, 8 Aug 2019 22:20:15 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908082220.x78MKFut048407@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 8 Aug 2019 22:20:15 +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: r350807 - in stable/11: sbin/camcontrol sys/cam/ata sys/cam/scsi sys/sys X-SVN-Group: stable-11 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/11: sbin/camcontrol sys/cam/ata sys/cam/scsi sys/sys X-SVN-Commit-Revision: 350807 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2019 22:20:16 -0000 Author: mav Date: Thu Aug 8 22:20:15 2019 New Revision: 350807 URL: https://svnweb.freebsd.org/changeset/base/350807 Log: MFC r350331: Make `camcontrol sanitize` support also ATA devices. ATA sanitize is functionally identical to SCSI, just uses different initiation commands and status reporting mechanism. While there, make kernel better handle sanitize commands and statuses. Modified: stable/11/sbin/camcontrol/camcontrol.8 stable/11/sbin/camcontrol/camcontrol.c stable/11/sys/cam/ata/ata_all.c stable/11/sys/cam/scsi/scsi_all.c stable/11/sys/sys/ata.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/camcontrol/camcontrol.8 ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 22:19:43 2019 (r350806) +++ stable/11/sbin/camcontrol/camcontrol.8 Thu Aug 8 22:20:15 2019 (r350807) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 22, 2019 +.Dd July 25, 2019 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -1276,13 +1276,11 @@ will not be asked about the timeout if a timeout is sp command line. .El .It Ic sanitize -Issue the -.Tn SCSI -SANITIZE command to the named device. +Issue the SANITIZE command to the named device. .Pp .Em WARNING! WARNING! WARNING! .Pp -ALL data in the cache and on the disk will be destroyed or made inaccessible. +ALL data on the disk will be destroyed or made inaccessible. Recovery of the data is not possible. Use extreme caution when issuing this command. .Pp Modified: stable/11/sbin/camcontrol/camcontrol.c ============================================================================== --- stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:19:43 2019 (r350806) +++ stable/11/sbin/camcontrol/camcontrol.c Thu Aug 8 22:20:15 2019 (r350807) @@ -346,7 +346,7 @@ static int ratecontrol(struct cam_device *device, int static int scsiformat(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout); -static int scsisanitize(struct cam_device *device, int argc, char **argv, +static int sanitize(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout); static int scsireportluns(struct cam_device *device, int argc, char **argv, @@ -1595,6 +1595,19 @@ atacapprint(struct ata_params *parm) } else { printf("no\n"); } + printf("Sanitize "); + if (parm->multi & ATA_SUPPORT_SANITIZE) { + printf("yes\t\t%s%s%s\n", + parm->multi & ATA_SUPPORT_BLOCK_ERASE_EXT ? "block, " : "", + parm->multi & ATA_SUPPORT_OVERWRITE_EXT ? "overwrite, " : "", + parm->multi & ATA_SUPPORT_CRYPTO_SCRAMBLE_EXT ? "crypto" : ""); + printf("Sanitize - commands allowed %s\n", + parm->multi & ATA_SUPPORT_SANITIZE_ALLOWED ? "yes" : "no"); + printf("Sanitize - antifreeze lock %s\n", + parm->multi & ATA_SUPPORT_ANTIFREEZE_LOCK_EXT ? "yes" : "no"); + } else { + printf("no\n"); + } } static int @@ -1841,6 +1854,11 @@ ata_do_cmd(struct cam_device *device, union ccb *ccb, res->lba_high_exp = res_pass16->lba_high_exp; res->sector_count = res_pass16->sector_count; res->sector_count_exp = res_pass16->sector_count_exp; + ccb->ccb_h.status &= ~CAM_STATUS_MASK; + if (res->status & ATA_STATUS_ERROR) + ccb->ccb_h.status |= CAM_ATA_STATUS_ERROR; + else + ccb->ccb_h.status |= CAM_REQ_CMP; } return (error); @@ -2329,12 +2347,6 @@ ata_do_identify(struct cam_device *device, int retry_c error = 0; } - if (arglist & CAM_ARG_VERBOSE) { - fprintf(stdout, "%s%d: Raw identify data:\n", - device->device_name, device->dev_unit_num); - dump_data(ptr, sizeof(struct ata_params)); - } - /* check for invalid (all zero) response */ if (error != 0) { warnx("Invalid identify response detected"); @@ -2385,6 +2397,12 @@ ataidentify(struct cam_device *device, int retry_count return (1); } + if (arglist & CAM_ARG_VERBOSE) { + printf("%s%d: Raw identify data:\n", + device->device_name, device->dev_unit_num); + dump_data((void*)ident_buf, sizeof(struct ata_params)); + } + if (ident_buf->support.command1 & ATA_SUPPORT_PROTECTED) { if (ata_read_native_max(device, retry_count, timeout, ccb, ident_buf, &hpasize) != 0) { @@ -6567,15 +6585,184 @@ scsiformat_bailout: } static int -scsisanitize(struct cam_device *device, int argc, char **argv, +sanitize_wait_ata(struct cam_device *device, union ccb *ccb, int quiet) +{ + struct ata_res *res; + int retval; + cam_status status; + u_int val, perc; + + do { + retval = ata_do_cmd(device, + ccb, + /*retries*/1, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SANITIZE, + /*features*/0x00, /* SANITIZE STATUS EXT */ + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + /*timeout*/10000, + /*is48bit*/1); + if (retval < 0) { + warn("error sending CAMIOCOMMAND ioctl"); + if (arglist & CAM_ARG_VERBOSE) { + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + } + return (1); + } + + status = ccb->ccb_h.status & CAM_STATUS_MASK; + if (status == CAM_REQ_CMP) { + res = &ccb->ataio.res; + if (res->sector_count_exp & 0x40) { + if (quiet == 0) { + val = (res->lba_mid << 8) + res->lba_low; + perc = 10000 * val; + fprintf(stdout, + "Sanitizing: %u.%02u%% (%d/%d)\r", + (perc / (0x10000 * 100)), + ((perc / 0x10000) % 100), + val, 0x10000); + fflush(stdout); + } + sleep(1); + } else if ((res->sector_count_exp & 0x80) == 0) { + warnx("Sanitize complete with an error. "); + return (1); + } else + break; + + } else if (status != CAM_REQ_CMP && status != CAM_REQUEUE_REQ) { + warnx("Unexpected CAM status %#x", status); + if (arglist & CAM_ARG_VERBOSE) + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + return (1); + } + } while (1); + return (0); +} + +static int +sanitize_wait_scsi(struct cam_device *device, union ccb *ccb, int task_attr, int quiet) +{ + int warnings = 0, retval; + cam_status status; + u_int val, perc; + + do { + CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); + + /* + * There's really no need to do error recovery or + * retries here, since we're just going to sit in a + * loop and wait for the device to finish sanitizing. + */ + scsi_test_unit_ready(&ccb->csio, + /* retries */ 0, + /* cbfcnp */ NULL, + /* tag_action */ task_attr, + /* sense_len */ SSD_FULL_SIZE, + /* timeout */ 5000); + + /* Disable freezing the device queue */ + ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; + + retval = cam_send_ccb(device, ccb); + + /* + * If we get an error from the ioctl, bail out. SCSI + * errors are expected. + */ + if (retval < 0) { + warn("error sending CAMIOCOMMAND ioctl"); + if (arglist & CAM_ARG_VERBOSE) { + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + } + return (1); + } + + status = ccb->ccb_h.status & CAM_STATUS_MASK; + if ((status == CAM_SCSI_STATUS_ERROR) && + ((ccb->ccb_h.status & CAM_AUTOSNS_VALID) != 0)) { + struct scsi_sense_data *sense; + int error_code, sense_key, asc, ascq; + + sense = &ccb->csio.sense_data; + scsi_extract_sense_len(sense, ccb->csio.sense_len - + ccb->csio.sense_resid, &error_code, &sense_key, + &asc, &ascq, /*show_errors*/ 1); + + /* + * According to the SCSI-3 spec, a drive that is in the + * middle of a sanitize should return NOT READY with an + * ASC of "logical unit not ready, sanitize in + * progress". The sense key specific bytes will then + * be a progress indicator. + */ + if ((sense_key == SSD_KEY_NOT_READY) + && (asc == 0x04) && (ascq == 0x1b)) { + uint8_t sks[3]; + + if ((scsi_get_sks(sense, ccb->csio.sense_len - + ccb->csio.sense_resid, sks) == 0) + && (quiet == 0)) { + val = scsi_2btoul(&sks[1]); + perc = 10000 * val; + fprintf(stdout, + "Sanitizing: %u.%02u%% (%d/%d)\r", + (perc / (0x10000 * 100)), + ((perc / 0x10000) % 100), + val, 0x10000); + fflush(stdout); + } else if ((quiet == 0) && (++warnings <= 1)) { + warnx("Unexpected SCSI Sense Key " + "Specific value returned " + "during sanitize:"); + scsi_sense_print(device, &ccb->csio, + stderr); + warnx("Unable to print status " + "information, but sanitze will " + "proceed."); + warnx("will exit when sanitize is " + "complete"); + } + sleep(1); + } else { + warnx("Unexpected SCSI error during sanitize"); + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + return (1); + } + + } else if (status != CAM_REQ_CMP && status != CAM_REQUEUE_REQ) { + warnx("Unexpected CAM status %#x", status); + if (arglist & CAM_ARG_VERBOSE) + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + return (1); + } + } while ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP); + return (0); +} + +static int +sanitize(struct cam_device *device, int argc, char **argv, char *combinedopt, int task_attr, int retry_count, int timeout) { union ccb *ccb; u_int8_t action = 0; int c; int ycount = 0, quiet = 0; - int error = 0, retval = 0; - int use_timeout = 10800 * 1000; + int error = 0; + int use_timeout; int immediate = 1; int invert = 0; int passes = 0; @@ -6584,14 +6771,25 @@ scsisanitize(struct cam_device *device, int argc, char const char *pattern = NULL; u_int8_t *data_ptr = NULL; u_int32_t dxfer_len = 0; - u_int8_t byte2 = 0; - int num_warnings = 0; + uint8_t byte2; + uint16_t feature, count; + uint64_t lba; int reportonly = 0; + camcontrol_devtype dt; + /* + * Get the device type, request no I/O be done to do this. + */ + error = get_device_type(device, -1, 0, 0, &dt); + if (error != 0 || (unsigned)dt > CC_DT_UNKNOWN) { + warnx("sanitize: can't get device type"); + return (1); + } + ccb = cam_getccb(device); if (ccb == NULL) { - warnx("scsisanitize: error allocating ccb"); + warnx("sanitize: error allocating ccb"); return (1); } @@ -6612,7 +6810,7 @@ scsisanitize(struct cam_device *device, int argc, char warnx("invalid service operation \"%s\"", optarg); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } break; case 'c': @@ -6620,7 +6818,7 @@ scsisanitize(struct cam_device *device, int argc, char if (passes < 1 || passes > 31) { warnx("invalid passes value %d", passes); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } break; case 'I': @@ -6639,7 +6837,9 @@ scsisanitize(struct cam_device *device, int argc, char reportonly = 1; break; case 'w': - immediate = 0; + /* ATA supports only immediate commands. */ + if (dt == CC_DT_SCSI) + immediate = 0; break; case 'y': ycount++; @@ -6653,7 +6853,7 @@ scsisanitize(struct cam_device *device, int argc, char if (action == 0) { warnx("an action is required"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } else if (action == SSZ_SERVICE_ACTION_OVERWRITE) { struct scsi_sanitize_parameter_list *pl; struct stat sb; @@ -6662,43 +6862,43 @@ scsisanitize(struct cam_device *device, int argc, char if (pattern == NULL) { warnx("overwrite action requires -P argument"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } fd = open(pattern, O_RDONLY); if (fd < 0) { warn("cannot open pattern file %s", pattern); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } if (fstat(fd, &sb) < 0) { warn("cannot stat pattern file %s", pattern); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } sz = sb.st_size; if (sz > SSZPL_MAX_PATTERN_LENGTH) { warnx("pattern file size exceeds maximum value %d", SSZPL_MAX_PATTERN_LENGTH); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } dxfer_len = sizeof(*pl) + sz; data_ptr = calloc(1, dxfer_len); if (data_ptr == NULL) { warnx("cannot allocate parameter list buffer"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } amt = read(fd, data_ptr + sizeof(*pl), sz); if (amt < 0) { warn("cannot read pattern file"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } else if (amt != sz) { warnx("short pattern file read"); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } pl = (struct scsi_sanitize_parameter_list *)data_ptr; @@ -6724,7 +6924,7 @@ scsisanitize(struct cam_device *device, int argc, char warnx("%s argument only valid with overwrite " "operation", arg); error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } } @@ -6732,26 +6932,41 @@ scsisanitize(struct cam_device *device, int argc, char fprintf(stdout, "You are about to REMOVE ALL DATA from the " "following device:\n"); - error = scsidoinquiry(device, argc, argv, combinedopt, - task_attr, retry_count, timeout); + if (dt == CC_DT_SCSI) { + error = scsidoinquiry(device, argc, argv, combinedopt, + task_attr, retry_count, timeout); + } else if (dt == CC_DT_ATA || dt == CC_DT_SATL) { + struct ata_params *ident_buf; + error = ata_do_identify(device, retry_count, timeout, + ccb, &ident_buf); + if (error == 0) { + printf("%s%d: ", device->device_name, + device->dev_unit_num); + ata_print_ident(ident_buf); + free(ident_buf); + } + } else + error = 1; if (error != 0) { - warnx("scsisanitize: error sending inquiry"); - goto scsisanitize_bailout; + warnx("sanitize: error sending inquiry"); + goto sanitize_bailout; } } if (ycount == 0) { if (!get_confirmation()) { error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } } if (timeout != 0) use_timeout = timeout; + else + use_timeout = (immediate ? 10 : 10800) * 1000; - if (quiet == 0) { + if (immediate == 0 && quiet == 0) { fprintf(stdout, "Current sanitize timeout is %d seconds\n", use_timeout / 1000); } @@ -6761,8 +6976,7 @@ scsisanitize(struct cam_device *device, int argc, char * timeout on the command line, ask them if they want the current * timeout. */ - if ((ycount == 0) - && (timeout == 0)) { + if (immediate == 0 && ycount == 0 && timeout == 0) { char str[1024]; int new_timeout = 0; @@ -6782,33 +6996,76 @@ scsisanitize(struct cam_device *device, int argc, char } } - byte2 = action; - if (ause != 0) - byte2 |= SSZ_UNRESTRICTED_EXIT; - if (immediate != 0) - byte2 |= SSZ_IMMED; + if (dt == CC_DT_SCSI) { + byte2 = action; + if (ause != 0) + byte2 |= SSZ_UNRESTRICTED_EXIT; + if (immediate != 0) + byte2 |= SSZ_IMMED; + scsi_sanitize(&ccb->csio, + /* retries */ retry_count, + /* cbfcnp */ NULL, + /* tag_action */ task_attr, + /* byte2 */ byte2, + /* control */ 0, + /* data_ptr */ data_ptr, + /* dxfer_len */ dxfer_len, + /* sense_len */ SSD_FULL_SIZE, + /* timeout */ use_timeout); - scsi_sanitize(&ccb->csio, - /* retries */ retry_count, - /* cbfcnp */ NULL, - /* tag_action */ task_attr, - /* byte2 */ byte2, - /* control */ 0, - /* data_ptr */ data_ptr, - /* dxfer_len */ dxfer_len, - /* sense_len */ SSD_FULL_SIZE, - /* timeout */ use_timeout); + ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; + if (arglist & CAM_ARG_ERR_RECOVER) + ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER; + if (cam_send_ccb(device, ccb) < 0) { + warn("error sending sanitize command"); + error = 1; + goto sanitize_bailout; + } + } else if (dt == CC_DT_ATA || dt == CC_DT_SATL) { + if (action == SSZ_SERVICE_ACTION_OVERWRITE) { + feature = 0x14; /* OVERWRITE EXT */ + lba = 0x4F5700000000 | scsi_4btoul(data_ptr + 4); + count = (passes == 0) ? 1 : (passes >= 16) ? 0 : passes; + if (invert) + count |= 0x80; /* INVERT PATTERN */ + if (ause) + count |= 0x10; /* FAILURE MODE */ + } else if (action == SSZ_SERVICE_ACTION_BLOCK_ERASE) { + feature = 0x12; /* BLOCK ERASE EXT */ + lba = 0x0000426B4572; + count = 0; + if (ause) + count |= 0x10; /* FAILURE MODE */ + } else if (action == SSZ_SERVICE_ACTION_CRYPTO_ERASE) { + feature = 0x11; /* CRYPTO SCRAMBLE EXT */ + lba = 0x000043727970; + count = 0; + if (ause) + count |= 0x10; /* FAILURE MODE */ + } else if (action == SSZ_SERVICE_ACTION_EXIT_MODE_FAILURE) { + feature = 0x00; /* SANITIZE STATUS EXT */ + lba = 0; + count = 1; /* CLEAR SANITIZE OPERATION FAILED */ + } else { + error = 1; + goto sanitize_bailout; + } - /* Disable freezing the device queue */ - ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; - - if (arglist & CAM_ARG_ERR_RECOVER) - ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER; - - if (cam_send_ccb(device, ccb) < 0) { - warn("error sending sanitize command"); - error = 1; - goto scsisanitize_bailout; + error = ata_do_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA | AP_EXTEND, + /*ata_flags*/AP_FLAG_CHK_COND, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SANITIZE, + /*features*/feature, + /*lba*/lba, + /*sector_count*/count, + /*data_ptr*/NULL, + /*dxfer_len*/0, + /*timeout*/ use_timeout, + /*is48bit*/1); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { @@ -6836,7 +7093,7 @@ scsisanitize(struct cam_device *device, int argc, char CAM_EPF_ALL, stderr); } error = 1; - goto scsisanitize_bailout; + goto sanitize_bailout; } /* @@ -6849,124 +7106,20 @@ scsisanitize(struct cam_device *device, int argc, char if (quiet == 0) { fprintf(stdout, "Sanitize Complete\n"); } - goto scsisanitize_bailout; + goto sanitize_bailout; } doreport: - do { - cam_status status; + if (dt == CC_DT_SCSI) { + error = sanitize_wait_scsi(device, ccb, task_attr, quiet); + } else if (dt == CC_DT_ATA || dt == CC_DT_SATL) { + error = sanitize_wait_ata(device, ccb, quiet); + } else + error = 1; + if (error == 0 && quiet == 0) + fprintf(stdout, "Sanitize Complete \n"); - CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio); - - /* - * There's really no need to do error recovery or - * retries here, since we're just going to sit in a - * loop and wait for the device to finish sanitizing. - */ - scsi_test_unit_ready(&ccb->csio, - /* retries */ 0, - /* cbfcnp */ NULL, - /* tag_action */ task_attr, - /* sense_len */ SSD_FULL_SIZE, - /* timeout */ 5000); - - /* Disable freezing the device queue */ - ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; - - retval = cam_send_ccb(device, ccb); - - /* - * If we get an error from the ioctl, bail out. SCSI - * errors are expected. - */ - if (retval < 0) { - warn("error sending CAMIOCOMMAND ioctl"); - if (arglist & CAM_ARG_VERBOSE) { - cam_error_print(device, ccb, CAM_ESF_ALL, - CAM_EPF_ALL, stderr); - } - error = 1; - goto scsisanitize_bailout; - } - - status = ccb->ccb_h.status & CAM_STATUS_MASK; - - if ((status != CAM_REQ_CMP) - && (status == CAM_SCSI_STATUS_ERROR) - && ((ccb->ccb_h.status & CAM_AUTOSNS_VALID) != 0)) { - struct scsi_sense_data *sense; - int error_code, sense_key, asc, ascq; - - sense = &ccb->csio.sense_data; - scsi_extract_sense_len(sense, ccb->csio.sense_len - - ccb->csio.sense_resid, &error_code, &sense_key, - &asc, &ascq, /*show_errors*/ 1); - - /* - * According to the SCSI-3 spec, a drive that is in the - * middle of a sanitize should return NOT READY with an - * ASC of "logical unit not ready, sanitize in - * progress". The sense key specific bytes will then - * be a progress indicator. - */ - if ((sense_key == SSD_KEY_NOT_READY) - && (asc == 0x04) && (ascq == 0x1b)) { - uint8_t sks[3]; - - if ((scsi_get_sks(sense, ccb->csio.sense_len - - ccb->csio.sense_resid, sks) == 0) - && (quiet == 0)) { - int val; - u_int64_t percentage; - - val = scsi_2btoul(&sks[1]); - percentage = 10000 * val; - - fprintf(stdout, - "\rSanitizing: %ju.%02u %% " - "(%d/%d) done", - (uintmax_t)(percentage / - (0x10000 * 100)), - (unsigned)((percentage / - 0x10000) % 100), - val, 0x10000); - fflush(stdout); - } else if ((quiet == 0) - && (++num_warnings <= 1)) { - warnx("Unexpected SCSI Sense Key " - "Specific value returned " - "during sanitize:"); - scsi_sense_print(device, &ccb->csio, - stderr); - warnx("Unable to print status " - "information, but sanitze will " - "proceed."); - warnx("will exit when sanitize is " - "complete"); - } - sleep(1); - } else { - warnx("Unexpected SCSI error during sanitize"); - cam_error_print(device, ccb, CAM_ESF_ALL, - CAM_EPF_ALL, stderr); - error = 1; - goto scsisanitize_bailout; - } - - } else if (status != CAM_REQ_CMP) { - warnx("Unexpected CAM status %#x", status); - if (arglist & CAM_ARG_VERBOSE) - cam_error_print(device, ccb, CAM_ESF_ALL, - CAM_EPF_ALL, stderr); - error = 1; - goto scsisanitize_bailout; - } - } while((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP); - - if (quiet == 0) - fprintf(stdout, "\nSanitize Complete\n"); - -scsisanitize_bailout: +sanitize_bailout: if (fd >= 0) close(fd); if (data_ptr != NULL) @@ -10072,9 +10225,8 @@ main(int argc, char **argv) timeout); break; case CAM_CMD_SANITIZE: - error = scsisanitize(cam_dev, argc, argv, - combinedopt, task_attr, - retry_count, timeout); + error = sanitize(cam_dev, argc, argv, combinedopt, task_attr, + retry_count, timeout); break; case CAM_CMD_PERSIST: error = scsipersist(cam_dev, argc, argv, combinedopt, Modified: stable/11/sys/cam/ata/ata_all.c ============================================================================== --- stable/11/sys/cam/ata/ata_all.c Thu Aug 8 22:19:43 2019 (r350806) +++ stable/11/sys/cam/ata/ata_all.c Thu Aug 8 22:20:15 2019 (r350807) @@ -213,7 +213,16 @@ ata_op_string(struct ata_cmd *cmd) return ("SMART"); case 0xb1: return ("DEVICE CONFIGURATION"); case 0xb2: return ("SET_SECTOR_CONFIGURATION_EXT"); - case 0xb4: return ("SANITIZE_DEVICE"); + case 0xb4: + switch(cmd->features) { + case 0x00: return ("SANITIZE_STATUS_EXT"); + case 0x11: return ("CRYPTO_SCRAMBLE_EXT"); + case 0x12: return ("BLOCK_ERASE_EXT"); + case 0x14: return ("OVERWRITE_EXT"); + case 0x20: return ("SANITIZE_FREEZE_LOCK_EXT"); + case 0x40: return ("SANITIZE_ANTIFREEZE_LOCK_EXT"); + } + return ("SANITIZE_DEVICE"); case 0xc0: return ("CFA_ERASE"); case 0xc4: return ("READ_MUL"); case 0xc5: return ("WRITE_MUL"); Modified: stable/11/sys/cam/scsi/scsi_all.c ============================================================================== --- stable/11/sys/cam/scsi/scsi_all.c Thu Aug 8 22:19:43 2019 (r350806) +++ stable/11/sys/cam/scsi/scsi_all.c Thu Aug 8 22:20:15 2019 (r350807) @@ -377,7 +377,7 @@ static struct op_table_entry scsi_op_codes[] = { { 0x40, D | T | L | P | W | R | O | M | S | C, "CHANGE DEFINITION" }, /* 41 O WRITE SAME(10) */ { 0x41, D, "WRITE SAME(10)" }, - /* 42 O UNMAP */ + /* 42 O UNMAP */ { 0x42, D, "UNMAP" }, /* 42 O READ SUB-CHANNEL */ { 0x42, R, "READ SUB-CHANNEL" }, @@ -392,7 +392,8 @@ static struct op_table_entry scsi_op_codes[] = { { 0x46, R, "GET CONFIGURATION" }, /* 47 O PLAY AUDIO MSF */ { 0x47, R, "PLAY AUDIO MSF" }, - /* 48 */ + /* 48 O SANITIZE */ + { 0x48, D, "SANITIZE" }, /* 49 */ /* 4A M GET EVENT STATUS NOTIFICATION */ { 0x4A, R, "GET EVENT STATUS NOTIFICATION" }, @@ -1160,7 +1161,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x04, 0x1A, SS_RDEF, /* XXX TBD */ "Logical unit not ready, START/STOP UNIT command in progress") }, /* D B */ - { SST(0x04, 0x1B, SS_RDEF, /* XXX TBD */ + { SST(0x04, 0x1B, SS_WAIT | EBUSY, "Logical unit not ready, sanitize in progress") }, /* DT MAEB */ { SST(0x04, 0x1C, SS_RDEF, /* XXX TBD */ @@ -1451,7 +1452,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x11, 0x14, SS_RDEF, /* XXX TBD */ "Read error - LBA marked bad by application client") }, /* D */ - { SST(0x11, 0x15, SS_RDEF, /* XXX TBD */ + { SST(0x11, 0x15, SS_FATAL | EIO, "Write after sanitize required") }, /* D W O BK */ { SST(0x12, 0x00, SS_RDEF, @@ -2062,7 +2063,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x31, 0x02, SS_RDEF, /* XXX TBD */ "Zoned formatting failed due to spare linking") }, /* D B */ - { SST(0x31, 0x03, SS_RDEF, /* XXX TBD */ + { SST(0x31, 0x03, SS_FATAL | EIO, "SANITIZE command failed") }, /* D W O BK */ { SST(0x32, 0x00, SS_RDEF, Modified: stable/11/sys/sys/ata.h ============================================================================== --- stable/11/sys/sys/ata.h Thu Aug 8 22:19:43 2019 (r350806) +++ stable/11/sys/sys/ata.h Thu Aug 8 22:20:15 2019 (r350807) @@ -95,6 +95,8 @@ struct ata_params { #define ATA_SUPPORT_OVERWRITE_EXT 0x4000 #define ATA_SUPPORT_CRYPTO_SCRAMBLE_EXT 0x2000 #define ATA_SUPPORT_SANITIZE 0x1000 +#define ATA_SUPPORT_SANITIZE_ALLOWED 0x0800 +#define ATA_SUPPORT_ANTIFREEZE_LOCK_EXT 0x0400 #define ATA_MULTI_VALID 0x0100 /*060*/ u_int16_t lba_size_1; @@ -452,6 +454,7 @@ struct ata_params { #define ATA_ATAPI_IDENTIFY 0xa1 /* get ATAPI params*/ #define ATA_SERVICE 0xa2 /* service command */ #define ATA_SMART_CMD 0xb0 /* SMART command */ +#define ATA_SANITIZE 0xb4 /* sanitize device */ #define ATA_CFA_ERASE 0xc0 /* CFA erase */ #define ATA_READ_MUL 0xc4 /* read multi */ #define ATA_WRITE_MUL 0xc5 /* write multi */ From owner-svn-src-stable@freebsd.org Fri Aug 9 00:47:28 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9D559B832F; Fri, 9 Aug 2019 00:47:28 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464RR43W5jz3MrT; Fri, 9 Aug 2019 00:47:28 +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 557005B88; Fri, 9 Aug 2019 00:47:28 +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 x790lSgJ036172; Fri, 9 Aug 2019 00:47:28 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x790lRN2036170; Fri, 9 Aug 2019 00:47:27 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908090047.x790lRN2036170@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 9 Aug 2019 00:47: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: r350808 - in stable/12/sys/cam: ctl scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys/cam: ctl scsi X-SVN-Commit-Revision: 350808 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 00:47:28 -0000 Author: mav Date: Fri Aug 9 00:47:27 2019 New Revision: 350808 URL: https://svnweb.freebsd.org/changeset/base/350808 Log: MFC r350343: Add reporting of SCSI Feature Sets VPD page from SPC-5. CTL implements all defined feature sets except Drive Maintenance 2016, which is not very applicable to such a virtual device, and implemented only partially now. But may be it could be fixed later at least for completeness. Modified: stable/12/sys/cam/ctl/ctl.c stable/12/sys/cam/scsi/scsi_all.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ctl/ctl.c ============================================================================== --- stable/12/sys/cam/ctl/ctl.c Thu Aug 8 22:20:15 2019 (r350807) +++ stable/12/sys/cam/ctl/ctl.c Fri Aug 9 00:47:27 2019 (r350808) @@ -448,10 +448,11 @@ SYSCTL_INT(_kern_cam_ctl, OID_AUTO, max_ports, CTLFLAG /* * Supported pages (0x00), Serial number (0x80), Device ID (0x83), * Extended INQUIRY Data (0x86), Mode Page Policy (0x87), - * SCSI Ports (0x88), Third-party Copy (0x8F), Block limits (0xB0), - * Block Device Characteristics (0xB1) and Logical Block Provisioning (0xB2) + * SCSI Ports (0x88), Third-party Copy (0x8F), SCSI Feature Sets (0x92), + * Block limits (0xB0), Block Device Characteristics (0xB1) and + * Logical Block Provisioning (0xB2) */ -#define SCSI_EVPD_NUM_SUPPORTED_PAGES 10 +#define SCSI_EVPD_NUM_SUPPORTED_PAGES 11 static void ctl_isc_event_handler(ctl_ha_channel chanel, ctl_ha_event event, int param); @@ -489,6 +490,7 @@ static int ctl_inquiry_evpd_eid(struct ctl_scsiio *cts static int ctl_inquiry_evpd_mpp(struct ctl_scsiio *ctsio, int alloc_len); static int ctl_inquiry_evpd_scsi_ports(struct ctl_scsiio *ctsio, int alloc_len); +static int ctl_inquiry_evpd_sfs(struct ctl_scsiio *ctsio, int alloc_len); static int ctl_inquiry_evpd_block_limits(struct ctl_scsiio *ctsio, int alloc_len); static int ctl_inquiry_evpd_bdc(struct ctl_scsiio *ctsio, int alloc_len); @@ -9318,6 +9320,8 @@ ctl_inquiry_evpd_supported(struct ctl_scsiio *ctsio, i pages->page_list[p++] = SVPD_SCSI_PORTS; /* Third-party Copy */ pages->page_list[p++] = SVPD_SCSI_TPC; + /* SCSI Feature Sets */ + pages->page_list[p++] = SVPD_SCSI_SFS; if (lun != NULL && lun->be_lun->lun_type == T_DIRECT) { /* Block limits */ pages->page_list[p++] = SVPD_BLOCK_LIMITS; @@ -9699,6 +9703,58 @@ ctl_inquiry_evpd_scsi_ports(struct ctl_scsiio *ctsio, } static int +ctl_inquiry_evpd_sfs(struct ctl_scsiio *ctsio, int alloc_len) +{ + struct ctl_lun *lun = CTL_LUN(ctsio); + struct scsi_vpd_sfs *sfs_ptr; + int sfs_page_size, n; + + sfs_page_size = sizeof(*sfs_ptr) + 5 * 2; + ctsio->kern_data_ptr = malloc(sfs_page_size, M_CTL, M_WAITOK | M_ZERO); + sfs_ptr = (struct scsi_vpd_sfs *)ctsio->kern_data_ptr; + ctsio->kern_sg_entries = 0; + ctsio->kern_rel_offset = 0; + ctsio->kern_sg_entries = 0; + ctsio->kern_data_len = min(sfs_page_size, alloc_len); + ctsio->kern_total_len = ctsio->kern_data_len; + + /* + * The control device is always connected. The disk device, on the + * other hand, may not be online all the time. Need to change this + * to figure out whether the disk device is actually online or not. + */ + if (lun != NULL) + sfs_ptr->device = (SID_QUAL_LU_CONNECTED << 5) | + lun->be_lun->lun_type; + else + sfs_ptr->device = (SID_QUAL_LU_OFFLINE << 5) | T_DIRECT; + + sfs_ptr->page_code = SVPD_SCSI_SFS; + n = 0; + /* Discovery 2016 */ + scsi_ulto2b(0x0001, &sfs_ptr->codes[2 * n++]); + if (lun != NULL && lun->be_lun->lun_type == T_DIRECT) { + /* SBC Base 2016 */ + scsi_ulto2b(0x0101, &sfs_ptr->codes[2 * n++]); + /* SBC Base 2010 */ + scsi_ulto2b(0x0102, &sfs_ptr->codes[2 * n++]); + if (lun->be_lun->flags & CTL_LUN_FLAG_UNMAP) { + /* Basic Provisioning 2016 */ + scsi_ulto2b(0x0103, &sfs_ptr->codes[2 * n++]); + } + /* Drive Maintenance 2016 */ + //scsi_ulto2b(0x0104, &sfs_ptr->codes[2 * n++]); + } + scsi_ulto2b(4 + 2 * n, sfs_ptr->page_length); + + ctl_set_success(ctsio); + ctsio->io_hdr.flags |= CTL_FLAG_ALLOCATED; + ctsio->be_move_done = ctl_config_move_done; + ctl_datamove((union ctl_io *)ctsio); + return (CTL_RETVAL_COMPLETE); +} + +static int ctl_inquiry_evpd_block_limits(struct ctl_scsiio *ctsio, int alloc_len) { struct ctl_lun *lun = CTL_LUN(ctsio); @@ -9811,7 +9867,7 @@ ctl_inquiry_evpd_bdc(struct ctl_scsiio *ctsio, int all else i = 0; bdc_ptr->wab_wac_ff = (i & 0x0f); - bdc_ptr->flags = SVPD_FUAB | SVPD_VBULS; + bdc_ptr->flags = SVPD_RBWZ | SVPD_FUAB | SVPD_VBULS; ctl_set_success(ctsio); ctsio->io_hdr.flags |= CTL_FLAG_ALLOCATED; @@ -9903,6 +9959,9 @@ ctl_inquiry_evpd(struct ctl_scsiio *ctsio) break; case SVPD_SCSI_TPC: retval = ctl_inquiry_evpd_tpc(ctsio, alloc_len); + break; + case SVPD_SCSI_SFS: + retval = ctl_inquiry_evpd_sfs(ctsio, alloc_len); break; case SVPD_BLOCK_LIMITS: if (lun == NULL || lun->be_lun->lun_type != T_DIRECT) Modified: stable/12/sys/cam/scsi/scsi_all.h ============================================================================== --- stable/12/sys/cam/scsi/scsi_all.h Thu Aug 8 22:20:15 2019 (r350807) +++ stable/12/sys/cam/scsi/scsi_all.h Fri Aug 9 00:47:27 2019 (r350808) @@ -2763,6 +2763,19 @@ struct scsi_vpd_tpc }; /* + * SCSI Feature Sets VPD Page + */ +struct scsi_vpd_sfs +{ + uint8_t device; + uint8_t page_code; +#define SVPD_SCSI_SFS 0x92 + uint8_t page_length[2]; + uint8_t reserved[4]; + uint8_t codes[]; +}; + +/* * Block Device Characteristics VPD Page based on * T10/1799-D Revision 31 */ @@ -2803,11 +2816,15 @@ struct scsi_vpd_block_device_characteristics uint8_t flags; #define SVPD_VBULS 0x01 #define SVPD_FUAB 0x02 +#define SVPD_BOCS 0x04 +#define SVPD_RBWZ 0x08 #define SVPD_ZBC_NR 0x00 /* Not Reported */ #define SVPD_HAW_ZBC 0x10 /* Host Aware */ #define SVPD_DM_ZBC 0x20 /* Drive Managed */ #define SVPD_ZBC_MASK 0x30 /* Zoned mask */ - uint8_t reserved[55]; + uint8_t reserved[3]; + uint8_t depopulation_time[4]; + uint8_t reserved2[48]; }; #define SBDC_IS_PRESENT(bdc, length, field) \ From owner-svn-src-stable@freebsd.org Fri Aug 9 00:48:33 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1E6A5B83DB; Fri, 9 Aug 2019 00:48:33 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464RSJ73rwz3Myk; Fri, 9 Aug 2019 00:48:32 +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 D41855B89; Fri, 9 Aug 2019 00:48:32 +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 x790mWwB036275; Fri, 9 Aug 2019 00:48:32 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x790mVsS036270; Fri, 9 Aug 2019 00:48:31 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908090048.x790mVsS036270@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 9 Aug 2019 00:48: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: r350809 - in stable/12: sys/cam/ctl sys/cam/scsi usr.sbin/ctladm X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12: sys/cam/ctl sys/cam/scsi usr.sbin/ctladm X-SVN-Commit-Revision: 350809 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 00:48:33 -0000 Author: mav Date: Fri Aug 9 00:48:31 2019 New Revision: 350809 URL: https://svnweb.freebsd.org/changeset/base/350809 Log: MFC r350346: Add device temperature reporting into CTL. The values to report can be set via LUN options. It can be useful for testing, and also required for Drive Maintenance 2016 feature set. Modified: stable/12/sys/cam/ctl/ctl.c stable/12/sys/cam/ctl/ctl.h stable/12/sys/cam/ctl/ctl_private.h stable/12/sys/cam/scsi/scsi_all.h stable/12/usr.sbin/ctladm/ctladm.8 Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ctl/ctl.c ============================================================================== --- stable/12/sys/cam/ctl/ctl.c Fri Aug 9 00:47:27 2019 (r350808) +++ stable/12/sys/cam/ctl/ctl.c Fri Aug 9 00:48:31 2019 (r350809) @@ -4450,12 +4450,14 @@ ctl_init_log_page_index(struct ctl_lun *lun) lun->log_pages.index[0].page_len = j; lun->log_pages.index[1].page_data = &lun->log_pages.subpages_page[0]; lun->log_pages.index[1].page_len = k * 2; - lun->log_pages.index[2].page_data = &lun->log_pages.lbp_page[0]; - lun->log_pages.index[2].page_len = 12*CTL_NUM_LBP_PARAMS; - lun->log_pages.index[3].page_data = (uint8_t *)&lun->log_pages.stat_page; - lun->log_pages.index[3].page_len = sizeof(lun->log_pages.stat_page); - lun->log_pages.index[4].page_data = (uint8_t *)&lun->log_pages.ie_page; - lun->log_pages.index[4].page_len = sizeof(lun->log_pages.ie_page); + lun->log_pages.index[2].page_data = (uint8_t *)&lun->log_pages.temp_page; + lun->log_pages.index[2].page_len = sizeof(lun->log_pages.temp_page); + lun->log_pages.index[3].page_data = &lun->log_pages.lbp_page[0]; + lun->log_pages.index[3].page_len = 12*CTL_NUM_LBP_PARAMS; + lun->log_pages.index[4].page_data = (uint8_t *)&lun->log_pages.stat_page; + lun->log_pages.index[4].page_len = sizeof(lun->log_pages.stat_page); + lun->log_pages.index[5].page_data = (uint8_t *)&lun->log_pages.ie_page; + lun->log_pages.index[5].page_len = sizeof(lun->log_pages.ie_page); return (CTL_RETVAL_COMPLETE); } @@ -6679,6 +6681,40 @@ ctl_mode_sense(struct ctl_scsiio *ctsio) } int +ctl_temp_log_sense_handler(struct ctl_scsiio *ctsio, + struct ctl_page_index *page_index, + int pc) +{ + struct ctl_lun *lun = CTL_LUN(ctsio); + struct scsi_log_temperature *data; + const char *value; + + data = (struct scsi_log_temperature *)page_index->page_data; + + scsi_ulto2b(SLP_TEMPERATURE, data->hdr.param_code); + data->hdr.param_control = SLP_LBIN; + data->hdr.param_len = sizeof(struct scsi_log_temperature) - + sizeof(struct scsi_log_param_header); + if ((value = dnvlist_get_string(lun->be_lun->options, "temperature", + NULL)) != NULL) + data->temperature = strtol(value, NULL, 0); + else + data->temperature = 0xff; + data++; + + scsi_ulto2b(SLP_REFTEMPERATURE, data->hdr.param_code); + data->hdr.param_control = SLP_LBIN; + data->hdr.param_len = sizeof(struct scsi_log_temperature) - + sizeof(struct scsi_log_param_header); + if ((value = dnvlist_get_string(lun->be_lun->options, "reftemperature", + NULL)) != NULL) + data->temperature = strtol(value, NULL, 0); + else + data->temperature = 0xff; + return (0); +} + +int ctl_lbp_log_sense_handler(struct ctl_scsiio *ctsio, struct ctl_page_index *page_index, int pc) @@ -6802,6 +6838,7 @@ ctl_ie_log_sense_handler(struct ctl_scsiio *ctsio, { struct ctl_lun *lun = CTL_LUN(ctsio); struct scsi_log_informational_exceptions *data; + const char *value; data = (struct scsi_log_informational_exceptions *)page_index->page_data; @@ -6811,7 +6848,11 @@ ctl_ie_log_sense_handler(struct ctl_scsiio *ctsio, sizeof(struct scsi_log_param_header); data->ie_asc = lun->ie_asc; data->ie_ascq = lun->ie_ascq; - data->temperature = 0xff; + if ((value = dnvlist_get_string(lun->be_lun->options, "temperature", + NULL)) != NULL) + data->temperature = strtol(value, NULL, 0); + else + data->temperature = 0xff; return (0); } Modified: stable/12/sys/cam/ctl/ctl.h ============================================================================== --- stable/12/sys/cam/ctl/ctl.h Fri Aug 9 00:47:27 2019 (r350808) +++ stable/12/sys/cam/ctl/ctl.h Fri Aug 9 00:48:31 2019 (r350809) @@ -158,6 +158,9 @@ int ctl_default_page_handler(struct ctl_scsiio *ctsio, int ctl_ie_page_handler(struct ctl_scsiio *ctsio, struct ctl_page_index *page_index, uint8_t *page_ptr); +int ctl_temp_log_sense_handler(struct ctl_scsiio *ctsio, + struct ctl_page_index *page_index, + int pc); int ctl_lbp_log_sense_handler(struct ctl_scsiio *ctsio, struct ctl_page_index *page_index, int pc); Modified: stable/12/sys/cam/ctl/ctl_private.h ============================================================================== --- stable/12/sys/cam/ctl/ctl_private.h Fri Aug 9 00:47:27 2019 (r350808) +++ stable/12/sys/cam/ctl/ctl_private.h Fri Aug 9 00:48:31 2019 (r350809) @@ -331,6 +331,8 @@ static const struct ctl_page_index log_page_index_temp CTL_PAGE_FLAG_ALL, NULL, NULL}, {SLS_SUPPORTED_PAGES_PAGE, SLS_SUPPORTED_SUBPAGES_SUBPAGE, 0, NULL, CTL_PAGE_FLAG_ALL, NULL, NULL}, + {SLS_TEMPERATURE, 0, 0, NULL, + CTL_PAGE_FLAG_DIRECT, ctl_temp_log_sense_handler, NULL}, {SLS_LOGICAL_BLOCK_PROVISIONING, 0, 0, NULL, CTL_PAGE_FLAG_DIRECT, ctl_lbp_log_sense_handler, NULL}, {SLS_STAT_AND_PERF, 0, 0, NULL, @@ -351,6 +353,7 @@ struct ctl_log_pages { struct scsi_log_idle_time it; struct scsi_log_time_interval ti; } stat_page; + struct scsi_log_temperature temp_page[2]; struct scsi_log_informational_exceptions ie_page; struct ctl_page_index index[CTL_NUM_LOG_PAGES]; }; Modified: stable/12/sys/cam/scsi/scsi_all.h ============================================================================== --- stable/12/sys/cam/scsi/scsi_all.h Fri Aug 9 00:47:27 2019 (r350808) +++ stable/12/sys/cam/scsi/scsi_all.h Fri Aug 9 00:48:31 2019 (r350809) @@ -568,6 +568,7 @@ struct scsi_log_sense #define SLS_ERROR_NONMEDIUM_PAGE 0x06 #define SLS_ERROR_LASTN_PAGE 0x07 #define SLS_LOGICAL_BLOCK_PROVISIONING 0x0c +#define SLS_TEMPERATURE 0x0d #define SLS_SELF_TEST_PAGE 0x10 #define SLS_SOLID_STATE_MEDIA 0x11 #define SLS_STAT_AND_PERF 0x19 @@ -680,6 +681,14 @@ struct scsi_log_informational_exceptions { #define SLP_IE_GEN 0x0000 uint8_t ie_asc; uint8_t ie_ascq; + uint8_t temperature; +}; + +struct scsi_log_temperature { + struct scsi_log_param_header hdr; +#define SLP_TEMPERATURE 0x0000 +#define SLP_REFTEMPERATURE 0x0001 + uint8_t reserved; uint8_t temperature; }; Modified: stable/12/usr.sbin/ctladm/ctladm.8 ============================================================================== --- stable/12/usr.sbin/ctladm/ctladm.8 Fri Aug 9 00:47:27 2019 (r350808) +++ stable/12/usr.sbin/ctladm/ctladm.8 Fri Aug 9 00:48:31 2019 (r350809) @@ -36,7 +36,7 @@ .\" $Id: //depot/users/kenm/FreeBSD-test2/usr.sbin/ctladm/ctladm.8#3 $ .\" $FreeBSD$ .\" -.Dd May 10, 2018 +.Dd July 25, 2019 .Dt CTLADM 8 .Os .Sh NAME @@ -918,6 +918,9 @@ Specifies medium rotation rate of the device: 0 -- not .It Va formfactor Specifies nominal form factor of the device: 0 -- not reported, 1 -- 5.25", 2 -- 3.5", 3 -- 2.5", 4 -- 1.8", 5 -- less then 1.8". +.It Va temperature +.It Va reftemperature +Specify current and reference (maximum) temperatures of the device. .It Va provisioning_type When UNMAP support is enabled, this option specifies provisioning type: "resource", "thin" or "unknown". From owner-svn-src-stable@freebsd.org Fri Aug 9 00:49:02 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E79B0B8455; Fri, 9 Aug 2019 00:49:02 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464RSt5mNtz3N5p; Fri, 9 Aug 2019 00:49:02 +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 A91645B8A; Fri, 9 Aug 2019 00:49:02 +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 x790n2T0036359; Fri, 9 Aug 2019 00:49:02 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x790n2ws036358; Fri, 9 Aug 2019 00:49:02 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908090049.x790n2ws036358@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 9 Aug 2019 00:49:02 +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: r350810 - in stable/12/sys/cam: ctl scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys/cam: ctl scsi X-SVN-Commit-Revision: 350810 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 00:49:03 -0000 Author: mav Date: Fri Aug 9 00:49:02 2019 New Revision: 350810 URL: https://svnweb.freebsd.org/changeset/base/350810 Log: MFC r350363: Add support for Long LBA mode parameter block descriptor. It is formally required for SBC Base 2016 feature set. Modified: stable/12/sys/cam/ctl/ctl.c stable/12/sys/cam/scsi/scsi_all.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ctl/ctl.c ============================================================================== --- stable/12/sys/cam/ctl/ctl.c Fri Aug 9 00:48:31 2019 (r350809) +++ stable/12/sys/cam/ctl/ctl.c Fri Aug 9 00:49:02 2019 (r350810) @@ -6365,13 +6365,12 @@ int ctl_mode_sense(struct ctl_scsiio *ctsio) { struct ctl_lun *lun = CTL_LUN(ctsio); - int pc, page_code, dbd, subpage; - int alloc_len, page_len, header_len, total_len; - struct scsi_mode_block_descr *block_desc; + int pc, page_code, llba, subpage; + int alloc_len, page_len, header_len, bd_len, total_len; + void *block_desc; struct ctl_page_index *page_index; - dbd = 0; - block_desc = NULL; + llba = 0; CTL_DEBUG_PRINT(("ctl_mode_sense\n")); @@ -6383,9 +6382,10 @@ ctl_mode_sense(struct ctl_scsiio *ctsio) header_len = sizeof(struct scsi_mode_hdr_6); if (cdb->byte2 & SMS_DBD) - dbd = 1; + bd_len = 0; else - header_len += sizeof(struct scsi_mode_block_descr); + bd_len = sizeof(struct scsi_mode_block_descr); + header_len += bd_len; pc = (cdb->page & SMS_PAGE_CTRL_MASK) >> 6; page_code = cdb->page & SMS_PAGE_CODE; @@ -6399,11 +6399,18 @@ ctl_mode_sense(struct ctl_scsiio *ctsio) cdb = (struct scsi_mode_sense_10 *)ctsio->cdb; header_len = sizeof(struct scsi_mode_hdr_10); + if (cdb->byte2 & SMS_DBD) { + bd_len = 0; + } else if (lun->be_lun->lun_type == T_DIRECT) { + if (cdb->byte2 & SMS10_LLBAA) { + llba = 1; + bd_len = sizeof(struct scsi_mode_block_descr_dlong); + } else + bd_len = sizeof(struct scsi_mode_block_descr_dshort); + } else + bd_len = sizeof(struct scsi_mode_block_descr); + header_len += bd_len; - if (cdb->byte2 & SMS_DBD) - dbd = 1; - else - header_len += sizeof(struct scsi_mode_block_descr); pc = (cdb->page & SMS_PAGE_CTRL_MASK) >> 6; page_code = cdb->page & SMS_PAGE_CODE; subpage = cdb->subpage; @@ -6536,12 +6543,8 @@ ctl_mode_sense(struct ctl_scsiio *ctsio) (lun->MODE_CTRL.eca_and_aen & SCP_SWP) != 0) header->dev_specific |= 0x80; /* WP */ } - if (dbd) - header->block_descr_len = 0; - else - header->block_descr_len = - sizeof(struct scsi_mode_block_descr); - block_desc = (struct scsi_mode_block_descr *)&header[1]; + header->block_descr_len = bd_len; + block_desc = &header[1]; break; } case MODE_SENSE_10: { @@ -6558,12 +6561,10 @@ ctl_mode_sense(struct ctl_scsiio *ctsio) (lun->MODE_CTRL.eca_and_aen & SCP_SWP) != 0) header->dev_specific |= 0x80; /* WP */ } - if (dbd) - scsi_ulto2b(0, header->block_descr_len); - else - scsi_ulto2b(sizeof(struct scsi_mode_block_descr), - header->block_descr_len); - block_desc = (struct scsi_mode_block_descr *)&header[1]; + if (llba) + header->flags |= SMH_LONGLBA; + scsi_ulto2b(bd_len, header->block_descr_len); + block_desc = &header[1]; break; } default: @@ -6574,12 +6575,27 @@ ctl_mode_sense(struct ctl_scsiio *ctsio) * If we've got a disk, use its blocksize in the block * descriptor. Otherwise, just set it to 0. */ - if (dbd == 0) { - if (lun->be_lun->lun_type == T_DIRECT) - scsi_ulto3b(lun->be_lun->blocksize, - block_desc->block_len); - else - scsi_ulto3b(0, block_desc->block_len); + if (bd_len > 0) { + if (lun->be_lun->lun_type == T_DIRECT) { + if (llba) { + struct scsi_mode_block_descr_dlong *bd = block_desc; + if (lun->be_lun->maxlba != 0) + scsi_u64to8b(lun->be_lun->maxlba + 1, + bd->num_blocks); + scsi_ulto4b(lun->be_lun->blocksize, + bd->block_len); + } else { + struct scsi_mode_block_descr_dshort *bd = block_desc; + if (lun->be_lun->maxlba != 0) + scsi_ulto4b(MIN(lun->be_lun->maxlba+1, + UINT32_MAX), bd->num_blocks); + scsi_ulto3b(lun->be_lun->blocksize, + bd->block_len); + } + } else { + struct scsi_mode_block_descr *bd = block_desc; + scsi_ulto3b(0, bd->block_len); + } } switch (page_code) { Modified: stable/12/sys/cam/scsi/scsi_all.h ============================================================================== --- stable/12/sys/cam/scsi/scsi_all.h Fri Aug 9 00:48:31 2019 (r350809) +++ stable/12/sys/cam/scsi/scsi_all.h Fri Aug 9 00:49:02 2019 (r350810) @@ -264,7 +264,9 @@ struct scsi_mode_hdr_10 u_int8_t datalen[2]; u_int8_t medium_type; u_int8_t dev_specific; - u_int8_t reserved[2]; + u_int8_t flags; +#define SMH_LONGLBA 0x01 + u_int8_t reserved; u_int8_t block_descr_len[2]; }; @@ -274,6 +276,20 @@ struct scsi_mode_block_descr u_int8_t num_blocks[3]; u_int8_t reserved; u_int8_t block_len[3]; +}; + +struct scsi_mode_block_descr_dshort +{ + u_int8_t num_blocks[4]; + u_int8_t reserved; + u_int8_t block_len[3]; +}; + +struct scsi_mode_block_descr_dlong +{ + u_int8_t num_blocks[8]; + u_int8_t reserved[4]; + u_int8_t block_len[4]; }; struct scsi_per_res_in From owner-svn-src-stable@freebsd.org Fri Aug 9 00:49:33 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F40B0B84C7; Fri, 9 Aug 2019 00:49:32 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464RTS6Bz8z3NCv; Fri, 9 Aug 2019 00:49:32 +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 9CCDD5B8B; Fri, 9 Aug 2019 00:49:32 +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 x790nWM1036437; Fri, 9 Aug 2019 00:49:32 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x790nWnZ036434; Fri, 9 Aug 2019 00:49:32 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908090049.x790nWnZ036434@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 9 Aug 2019 00:49: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: r350811 - in stable/12/sys/cam: ctl scsi X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in stable/12/sys/cam: ctl scsi X-SVN-Commit-Revision: 350811 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 00:49:33 -0000 Author: mav Date: Fri Aug 9 00:49:31 2019 New Revision: 350811 URL: https://svnweb.freebsd.org/changeset/base/350811 Log: MFC r350378: Allow WRITE SAME handle more then 2^^32 blocks. If not limited by write_same_max_lba option, split operation into several 2^^31 blocks chunks in a loop. For large disks it may take a while, so setting write_same_max_lba may be useful to avoid timeouts. While there, fix build with CAM_CTL_DEBUG. Modified: stable/12/sys/cam/ctl/ctl.c stable/12/sys/cam/scsi/scsi_all.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ctl/ctl.c ============================================================================== --- stable/12/sys/cam/ctl/ctl.c Fri Aug 9 00:49:02 2019 (r350810) +++ stable/12/sys/cam/ctl/ctl.c Fri Aug 9 00:49:31 2019 (r350811) @@ -1438,7 +1438,7 @@ ctl_isc_event_handler(ctl_ha_channel channel, ctl_ha_e return; } - CTL_DEBUG_PRINT(("CTL: msg_type %d\n", msg->msg_type)); + CTL_DEBUG_PRINT(("CTL: msg_type %d\n", msg->hdr.msg_type)); switch (msg->hdr.msg_type) { case CTL_MSG_SERIALIZE: io = ctl_alloc_io(softc->othersc_pool); @@ -5685,12 +5685,36 @@ ctl_write_buffer(struct ctl_scsiio *ctsio) return (CTL_RETVAL_COMPLETE); } +static int +ctl_write_same_cont(union ctl_io *io) +{ + struct ctl_lun *lun = CTL_LUN(io); + struct ctl_scsiio *ctsio; + struct ctl_lba_len_flags *lbalen; + int retval; + + ctsio = &io->scsiio; + ctsio->io_hdr.status = CTL_STATUS_NONE; + lbalen = (struct ctl_lba_len_flags *) + &ctsio->io_hdr.ctl_private[CTL_PRIV_LBA_LEN]; + lbalen->lba += lbalen->len; + if ((lun->be_lun->maxlba + 1) - lbalen->lba <= UINT32_MAX) { + ctsio->io_hdr.flags &= ~CTL_FLAG_IO_CONT; + lbalen->len = (lun->be_lun->maxlba + 1) - lbalen->lba; + } + + CTL_DEBUG_PRINT(("ctl_write_same_cont: calling config_write()\n")); + retval = lun->backend->config_write((union ctl_io *)ctsio); + return (retval); +} + int ctl_write_same(struct ctl_scsiio *ctsio) { struct ctl_lun *lun = CTL_LUN(ctsio); struct ctl_lba_len_flags *lbalen; - uint64_t lba; + const char *val; + uint64_t lba, ival; uint32_t num_blocks; int len, retval; uint8_t byte2; @@ -5754,17 +5778,25 @@ ctl_write_same(struct ctl_scsiio *ctsio) /* Zero number of blocks means "to the last logical block" */ if (num_blocks == 0) { - if ((lun->be_lun->maxlba + 1) - lba > UINT32_MAX) { + ival = UINT64_MAX; + val = dnvlist_get_string(lun->be_lun->options, + "write_same_max_lba", NULL); + if (val != NULL) + ctl_expand_number(val, &ival); + if ((lun->be_lun->maxlba + 1) - lba > ival) { ctl_set_invalid_field(ctsio, - /*sks_valid*/ 0, - /*command*/ 1, - /*field*/ 0, - /*bit_valid*/ 0, - /*bit*/ 0); + /*sks_valid*/ 1, /*command*/ 1, + /*field*/ ctsio->cdb[0] == WRITE_SAME_10 ? 7 : 10, + /*bit_valid*/ 0, /*bit*/ 0); ctl_done((union ctl_io *)ctsio); return (CTL_RETVAL_COMPLETE); } - num_blocks = (lun->be_lun->maxlba + 1) - lba; + if ((lun->be_lun->maxlba + 1) - lba > UINT32_MAX) { + ctsio->io_hdr.flags |= CTL_FLAG_IO_CONT; + ctsio->io_cont = ctl_write_same_cont; + num_blocks = 1 << 31; + } else + num_blocks = (lun->be_lun->maxlba + 1) - lba; } len = lun->be_lun->blocksize; @@ -9876,6 +9908,8 @@ ctl_inquiry_evpd_block_limits(struct ctl_scsiio *ctsio if (val != NULL) ctl_expand_number(val, &ival); scsi_u64to8b(ival, bl_ptr->max_write_same_length); + if (lun->be_lun->maxlba + 1 > ival) + bl_ptr->flags |= SVPD_BL_WSNZ; } ctl_set_success(ctsio); @@ -11322,7 +11356,7 @@ ctl_failover_lun(union ctl_io *rio) uint32_t targ_lun; targ_lun = rio->io_hdr.nexus.targ_mapped_lun; - CTL_DEBUG_PRINT(("FAILOVER for lun %ju\n", targ_lun)); + CTL_DEBUG_PRINT(("FAILOVER for lun %u\n", targ_lun)); /* Find and lock the LUN. */ mtx_lock(&softc->ctl_lock); Modified: stable/12/sys/cam/scsi/scsi_all.h ============================================================================== --- stable/12/sys/cam/scsi/scsi_all.h Fri Aug 9 00:49:02 2019 (r350810) +++ stable/12/sys/cam/scsi/scsi_all.h Fri Aug 9 00:49:31 2019 (r350811) @@ -2886,7 +2886,7 @@ struct scsi_vpd_logical_block_prov }; /* - * Block Limits VDP Page based on SBC-4 Revision 2 + * Block Limits VDP Page based on SBC-4 Revision 17 */ struct scsi_vpd_block_limits { @@ -2896,7 +2896,8 @@ struct scsi_vpd_block_limits u_int8_t page_length[2]; #define SVPD_BL_PL_BASIC 0x10 #define SVPD_BL_PL_TP 0x3C - u_int8_t reserved1; + u_int8_t flags; +#define SVPD_BL_WSNZ 0x01 u_int8_t max_cmp_write_len; u_int8_t opt_txfer_len_grain[2]; u_int8_t max_txfer_len[4]; From owner-svn-src-stable@freebsd.org Fri Aug 9 00:50:02 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B46F1B854D; Fri, 9 Aug 2019 00:50:02 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464RV24Hdbz3NL6; Fri, 9 Aug 2019 00:50:02 +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 75F555B8F; Fri, 9 Aug 2019 00:50:02 +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 x790o2Ir036552; Fri, 9 Aug 2019 00:50:02 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x790o23A036551; Fri, 9 Aug 2019 00:50:02 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201908090050.x790o23A036551@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 9 Aug 2019 00:50:02 +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: r350812 - stable/12/sys/cam/ctl X-SVN-Group: stable-12 X-SVN-Commit-Author: mav X-SVN-Commit-Paths: stable/12/sys/cam/ctl X-SVN-Commit-Revision: 350812 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 00:50:02 -0000 Author: mav Date: Fri Aug 9 00:50:02 2019 New Revision: 350812 URL: https://svnweb.freebsd.org/changeset/base/350812 Log: MFC r350383: Reenable UNMAP support on ramdisks by default. For some reason, I guess just mechanical editing, it was disable in r333446. Modified: stable/12/sys/cam/ctl/ctl_backend_ramdisk.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/cam/ctl/ctl_backend_ramdisk.c ============================================================================== --- stable/12/sys/cam/ctl/ctl_backend_ramdisk.c Fri Aug 9 00:49:31 2019 (r350811) +++ stable/12/sys/cam/ctl/ctl_backend_ramdisk.c Fri Aug 9 00:50:02 2019 (r350812) @@ -1073,7 +1073,7 @@ ctl_backend_ramdisk_create(struct ctl_be_ramdisk_softc params->lun_size_bytes = be_lun->size_bytes; value = dnvlist_get_string(cbe_lun->options, "unmap", NULL); - if (value != NULL && strcmp(value, "off") != 0) + if (value == NULL || strcmp(value, "off") != 0) cbe_lun->flags |= CTL_LUN_FLAG_UNMAP; value = dnvlist_get_string(cbe_lun->options, "readonly", NULL); if (value != NULL) { From owner-svn-src-stable@freebsd.org Fri Aug 9 09:57:05 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 07299C4281; Fri, 9 Aug 2019 09:57:05 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464gdD6QMtz4KbN; Fri, 9 Aug 2019 09:57:04 +0000 (UTC) (envelope-from mmel@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 BDC5DBFB7; Fri, 9 Aug 2019 09:57:04 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x799v4Se063518; Fri, 9 Aug 2019 09:57:04 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x799v4be063517; Fri, 9 Aug 2019 09:57:04 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201908090957.x799v4be063517@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Fri, 9 Aug 2019 09:57:04 +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: r350817 - stable/12/sys/dev/extres/phy X-SVN-Group: stable-12 X-SVN-Commit-Author: mmel X-SVN-Commit-Paths: stable/12/sys/dev/extres/phy X-SVN-Commit-Revision: 350817 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 09:57:05 -0000 Author: mmel Date: Fri Aug 9 09:57:04 2019 New Revision: 350817 URL: https://svnweb.freebsd.org/changeset/base/350817 Log: MFC r343498: Properly define and declare phynode_topo_lock, it should be single global variable. Modified: stable/12/sys/dev/extres/phy/phy.c stable/12/sys/dev/extres/phy/phy_internal.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/extres/phy/phy.c ============================================================================== --- stable/12/sys/dev/extres/phy/phy.c Fri Aug 9 08:58:09 2019 (r350816) +++ stable/12/sys/dev/extres/phy/phy.c Fri Aug 9 09:57:04 2019 (r350817) @@ -68,7 +68,7 @@ static phynode_method_t phynode_methods[] = { DEFINE_CLASS_0(phynode, phynode_class, phynode_methods, 0); static phynode_list_t phynode_list = TAILQ_HEAD_INITIALIZER(phynode_list); - +struct sx phynode_topo_lock; SX_SYSINIT(phy_topology, &phynode_topo_lock, "Phy topology lock"); /* ---------------------------------------------------------------------------- Modified: stable/12/sys/dev/extres/phy/phy_internal.h ============================================================================== --- stable/12/sys/dev/extres/phy/phy_internal.h Fri Aug 9 08:58:09 2019 (r350816) +++ stable/12/sys/dev/extres/phy/phy_internal.h Fri Aug 9 09:57:04 2019 (r350817) @@ -78,6 +78,6 @@ struct phy { #define PHYNODE_XLOCK(_sc) sx_xlock(&((_sc)->lock)) #define PHYNODE_UNLOCK(_sc) sx_unlock(&((_sc)->lock)) -struct sx phynode_topo_lock; +extern struct sx phynode_topo_lock; #endif /* DEV_EXTRES_PHY_INTERNAL_H */ From owner-svn-src-stable@freebsd.org Fri Aug 9 10:00:12 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1F061C4399; Fri, 9 Aug 2019 10:00:12 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464ghr002Kz4KpD; Fri, 9 Aug 2019 10:00:11 +0000 (UTC) (envelope-from mmel@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 D5A9DBFC0; Fri, 9 Aug 2019 10:00:11 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x79A0BQV063792; Fri, 9 Aug 2019 10:00:11 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x79A0B9s063791; Fri, 9 Aug 2019 10:00:11 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201908091000.x79A0B9s063791@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Fri, 9 Aug 2019 10:00:11 +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: r350818 - stable/12/sys/dts/arm X-SVN-Group: stable-12 X-SVN-Commit-Author: mmel X-SVN-Commit-Paths: stable/12/sys/dts/arm X-SVN-Commit-Revision: 350818 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 10:00:12 -0000 Author: mmel Date: Fri Aug 9 10:00:11 2019 New Revision: 350818 URL: https://svnweb.freebsd.org/changeset/base/350818 Log: MFC r343828: Adapt FreeBSD specific DT stub for Jetson TK1 board to be consistent with update of devicetree to 4.19 in r340337. Our build system doesn't provide dependencies for included DTS files, so nobody noticed this issue for long time. Modified: stable/12/sys/dts/arm/tegra124-jetson-tk1-fbsd.dts Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dts/arm/tegra124-jetson-tk1-fbsd.dts ============================================================================== --- stable/12/sys/dts/arm/tegra124-jetson-tk1-fbsd.dts Fri Aug 9 09:57:04 2019 (r350817) +++ stable/12/sys/dts/arm/tegra124-jetson-tk1-fbsd.dts Fri Aug 9 10:00:11 2019 (r350818) @@ -38,7 +38,7 @@ stdout = &uartd; }; - memory { + memory@80000000 { /* reg = <0x0 0x80000000 0x0 0x80000000>; */ reg = <0x0 0x80000000 0x0 0x70000000>; }; From owner-svn-src-stable@freebsd.org Fri Aug 9 10:28:21 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 66A35C4CBE; Fri, 9 Aug 2019 10:28:21 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464hKK25QFz4MKJ; Fri, 9 Aug 2019 10:28:21 +0000 (UTC) (envelope-from mmel@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 29746C4FC; Fri, 9 Aug 2019 10:28:21 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x79ASLh4081617; Fri, 9 Aug 2019 10:28:21 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x79ASLAV081616; Fri, 9 Aug 2019 10:28:21 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201908091028.x79ASLAV081616@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Fri, 9 Aug 2019 10:28:21 +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: r350819 - stable/12/sys/arm/arm X-SVN-Group: stable-12 X-SVN-Commit-Author: mmel X-SVN-Commit-Paths: stable/12/sys/arm/arm X-SVN-Commit-Revision: 350819 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 10:28:21 -0000 Author: mmel Date: Fri Aug 9 10:28:20 2019 New Revision: 350819 URL: https://svnweb.freebsd.org/changeset/base/350819 Log: MFC r343962,r343965: r343962: Properly handle alignment requests bigger that page size. - for now, alignments bigger that page size is allowed only for buffers allocated by bus_dmamem_alloc(), cover this fact by KASSERT. - never bounce buffers allocated by bus_dmamem_alloc(), these always comply with the required rules (alignment, boundary, address range). r343965: Fix bug introduced by r343962. DMAMAP_DMAMEM_ALLOC is property of dmamap, not dmatag. Modified: stable/12/sys/arm/arm/busdma_machdep-v6.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/arm/busdma_machdep-v6.c ============================================================================== --- stable/12/sys/arm/arm/busdma_machdep-v6.c Fri Aug 9 10:00:11 2019 (r350818) +++ stable/12/sys/arm/arm/busdma_machdep-v6.c Fri Aug 9 10:28:20 2019 (r350819) @@ -339,16 +339,27 @@ cacheline_bounce(bus_dmamap_t map, bus_addr_t addr, bu * * Note that the addr argument might be either virtual or physical. It doesn't * matter because we only look at the low-order bits, which are the same in both - * address spaces. + * address spaces and maximum alignment of generic buffer is limited up to page + * size. + * Bouncing of buffers allocated by bus_dmamem_alloc()is not necessary, these + * always comply with the required rules (alignment, boundary, and address + * range). */ static __inline int might_bounce(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t addr, bus_size_t size) { - return ((dmat->flags & BUS_DMA_EXCL_BOUNCE) || + KASSERT(map->flags & DMAMAP_DMAMEM_ALLOC || + dmat->alignment <= PAGE_SIZE, + ("%s: unsupported alignment (0x%08lx) for buffer not " + "allocated by bus_dmamem_alloc()", + __func__, dmat->alignment)); + + return (!(map->flags & DMAMAP_DMAMEM_ALLOC) && + ((dmat->flags & BUS_DMA_EXCL_BOUNCE) || alignment_bounce(dmat, addr) || - cacheline_bounce(map, addr, size)); + cacheline_bounce(map, addr, size))); } /* From owner-svn-src-stable@freebsd.org Fri Aug 9 10:31:54 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 95EC1C4EE0; Fri, 9 Aug 2019 10:31:54 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464hPQ3Pqdz4MY4; Fri, 9 Aug 2019 10:31:54 +0000 (UTC) (envelope-from mmel@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 57322C562; Fri, 9 Aug 2019 10:31:54 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x79AVsnV085593; Fri, 9 Aug 2019 10:31:54 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x79AVsge085592; Fri, 9 Aug 2019 10:31:54 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201908091031.x79AVsge085592@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Fri, 9 Aug 2019 10:31:54 +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: r350820 - stable/12/sys/arm/nvidia X-SVN-Group: stable-12 X-SVN-Commit-Author: mmel X-SVN-Commit-Paths: stable/12/sys/arm/nvidia X-SVN-Commit-Revision: 350820 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 10:31:54 -0000 Author: mmel Date: Fri Aug 9 10:31:53 2019 New Revision: 350820 URL: https://svnweb.freebsd.org/changeset/base/350820 Log: MFC r343963: Don't allocate same clock twice.. Modified: stable/12/sys/arm/nvidia/tegra_sdhci.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/nvidia/tegra_sdhci.c ============================================================================== --- stable/12/sys/arm/nvidia/tegra_sdhci.c Fri Aug 9 10:28:20 2019 (r350819) +++ stable/12/sys/arm/nvidia/tegra_sdhci.c Fri Aug 9 10:31:53 2019 (r350820) @@ -313,13 +313,6 @@ tegra_sdhci_attach(device_t dev) rv = clk_get_by_ofw_index(dev, 0, 0, &sc->clk); if (rv != 0) { - - device_printf(dev, "Cannot get clock\n"); - goto fail; - } - - rv = clk_get_by_ofw_index(dev, 0, 0, &sc->clk); - if (rv != 0) { device_printf(dev, "Cannot get clock\n"); goto fail; } From owner-svn-src-stable@freebsd.org Fri Aug 9 10:33:24 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DFCD1C4F98; Fri, 9 Aug 2019 10:33:24 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464hR85ddSz4MwD; Fri, 9 Aug 2019 10:33:24 +0000 (UTC) (envelope-from mmel@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 A33C5C6BB; Fri, 9 Aug 2019 10:33:24 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x79AXOo4087559; Fri, 9 Aug 2019 10:33:24 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x79AXOdZ087556; Fri, 9 Aug 2019 10:33:24 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201908091033.x79AXOdZ087556@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Fri, 9 Aug 2019 10:33: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: r350821 - in stable/12/sys/dev/extres: phy regulator syscon X-SVN-Group: stable-12 X-SVN-Commit-Author: mmel X-SVN-Commit-Paths: in stable/12/sys/dev/extres: phy regulator syscon X-SVN-Commit-Revision: 350821 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 10:33:24 -0000 Author: mmel Date: Fri Aug 9 10:33:23 2019 New Revision: 350821 URL: https://svnweb.freebsd.org/changeset/base/350821 Log: MFC r345295: extres: Unify error codes for _get_by_ofw_property() methods. Return: - ENOENT if requested property doesn't exist - ENODEV if producer device is not (yet) attached - ENXIO otherwise Modified: stable/12/sys/dev/extres/phy/phy.c stable/12/sys/dev/extres/regulator/regulator.c stable/12/sys/dev/extres/syscon/syscon.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/extres/phy/phy.c ============================================================================== --- stable/12/sys/dev/extres/phy/phy.c Fri Aug 9 10:31:53 2019 (r350820) +++ stable/12/sys/dev/extres/phy/phy.c Fri Aug 9 10:33:23 2019 (r350821) @@ -517,7 +517,7 @@ phy_get_by_ofw_property(device_t consumer_dev, phandle ncells = OF_getencprop_alloc_multi(cnode, name, sizeof(pcell_t), (void **)&cells); if (ncells < 1) - return (ENXIO); + return (ENOENT); /* Tranlate provider to device. */ phydev = OF_device_from_xref(cells[0]); Modified: stable/12/sys/dev/extres/regulator/regulator.c ============================================================================== --- stable/12/sys/dev/extres/regulator/regulator.c Fri Aug 9 10:31:53 2019 (r350820) +++ stable/12/sys/dev/extres/regulator/regulator.c Fri Aug 9 10:33:23 2019 (r350821) @@ -1091,7 +1091,7 @@ regulator_get_by_ofw_property(device_t cdev, phandle_t ncells = OF_getencprop_alloc_multi(cnode, name, sizeof(*cells), (void **)&cells); if (ncells <= 0) - return (ENXIO); + return (ENOENT); /* Translate xref to device */ regdev = OF_device_from_xref(cells[0]); Modified: stable/12/sys/dev/extres/syscon/syscon.c ============================================================================== --- stable/12/sys/dev/extres/syscon/syscon.c Fri Aug 9 10:31:53 2019 (r350820) +++ stable/12/sys/dev/extres/syscon/syscon.c Fri Aug 9 10:33:23 2019 (r350821) @@ -238,7 +238,7 @@ syscon_get_by_ofw_property(device_t cdev, phandle_t cn ncells = OF_getencprop_alloc_multi(cnode, name, sizeof(pcell_t), (void **)&cells); if (ncells < 1) - return (ENXIO); + return (ENOENT); /* Translate to syscon node. */ SYSCON_TOPO_SLOCK(); From owner-svn-src-stable@freebsd.org Fri Aug 9 11:20:06 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 604DDC5F3D; Fri, 9 Aug 2019 11:20:06 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464jT21xZkz4QKJ; Fri, 9 Aug 2019 11:20:06 +0000 (UTC) (envelope-from mmel@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 2475DCE12; Fri, 9 Aug 2019 11:20:06 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x79BK6Sa011818; Fri, 9 Aug 2019 11:20:06 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x79BK66h011817; Fri, 9 Aug 2019 11:20:06 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201908091120.x79BK66h011817@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Fri, 9 Aug 2019 11:20:06 +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: r350822 - stable/12/sys/arm/include X-SVN-Group: stable-12 X-SVN-Commit-Author: mmel X-SVN-Commit-Paths: stable/12/sys/arm/include X-SVN-Commit-Revision: 350822 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 11:20:06 -0000 Author: mmel Date: Fri Aug 9 11:20:05 2019 New Revision: 350822 URL: https://svnweb.freebsd.org/changeset/base/350822 Log: MFC r345296: Use named field's initializer when constructing _platform structure. In current code, the delay argument in FDT_PLATFORM_DEF(2) improperly initialize refs field from kobj_class structure instead of delay_count field. This causes not working DELAY() function (due to never initialized delay_count) in earlier boot stages, until the first timer was attached. Modified: stable/12/sys/arm/include/platformvar.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/include/platformvar.h ============================================================================== --- stable/12/sys/arm/include/platformvar.h Fri Aug 9 10:33:23 2019 (r350821) +++ stable/12/sys/arm/include/platformvar.h Fri Aug 9 11:20:05 2019 (r350822) @@ -90,22 +90,22 @@ typedef struct fdt_platform_class fdt_platform_def_t; extern platform_method_t fdt_platform_methods[]; -#define FDT_PLATFORM_DEF2(NAME, VAR_NAME, NAME_STR, size, compatible, \ - delay) \ -CTASSERT(delay > 0); \ +#define FDT_PLATFORM_DEF2(NAME, VAR_NAME, NAME_STR, _size, _compatible, \ + _delay) \ +CTASSERT(_delay > 0); \ static fdt_platform_def_t VAR_NAME ## _fdt_platform = { \ .name = NAME_STR, \ .methods = fdt_platform_methods, \ - .fdt_compatible = compatible, \ + .fdt_compatible = _compatible, \ }; \ static kobj_class_t VAR_NAME ## _baseclasses[] = \ { (kobj_class_t)&VAR_NAME ## _fdt_platform, NULL }; \ static platform_def_t VAR_NAME ## _platform = { \ - NAME_STR, \ - NAME ## _methods, \ - size, \ - VAR_NAME ## _baseclasses, \ - delay, \ + .name = NAME_STR, \ + .methods = NAME ## _methods, \ + .size = _size, \ + .baseclasses = VAR_NAME ## _baseclasses, \ + .delay_count = _delay, \ }; \ DATA_SET(platform_set, VAR_NAME ## _platform) From owner-svn-src-stable@freebsd.org Fri Aug 9 11:21:43 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1DB06C6008; Fri, 9 Aug 2019 11:21:43 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464jVt75f5z4QfC; Fri, 9 Aug 2019 11:21:42 +0000 (UTC) (envelope-from mmel@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 D6D99CF77; Fri, 9 Aug 2019 11:21:42 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x79BLg2Y013321; Fri, 9 Aug 2019 11:21:42 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x79BLgVq013320; Fri, 9 Aug 2019 11:21:42 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201908091121.x79BLgVq013320@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Fri, 9 Aug 2019 11:21: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: r350823 - stable/12/sys/dev/cpufreq X-SVN-Group: stable-12 X-SVN-Commit-Author: mmel X-SVN-Commit-Paths: stable/12/sys/dev/cpufreq X-SVN-Commit-Revision: 350823 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 11:21:43 -0000 Author: mmel Date: Fri Aug 9 11:21:42 2019 New Revision: 350823 URL: https://svnweb.freebsd.org/changeset/base/350823 Log: MFC r345297: Improve cpufreq_dt. - older DT can use 'cpu0-supply' property for power supply binding. - don't expect that actual CPU frequency is contained in CPU operational point table, but read current CPU voltage directly from reguator. Typically, u-boot can set starting CPU frequency to any value. Modified: stable/12/sys/dev/cpufreq/cpufreq_dt.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/cpufreq/cpufreq_dt.c ============================================================================== --- stable/12/sys/dev/cpufreq/cpufreq_dt.c Fri Aug 9 11:20:05 2019 (r350822) +++ stable/12/sys/dev/cpufreq/cpufreq_dt.c Fri Aug 9 11:21:42 2019 (r350823) @@ -166,7 +166,7 @@ cpufreq_dt_set(device_t dev, const struct cf_setting * struct cpufreq_dt_softc *sc; const struct cpufreq_dt_opp *opp, *copp; uint64_t freq; - int error = 0; + int uvolt, error; sc = device_get_softc(dev); @@ -174,23 +174,38 @@ cpufreq_dt_set(device_t dev, const struct cf_setting * device_printf(dev, "Can't get current clk freq\n"); return (ENXIO); } + /* Try to get current valtage by using regulator first. */ + error = regulator_get_voltage(sc->reg, &uvolt); + if (error != 0) { + /* + * Try oppoints table as backup way. However, + * this is insufficient because the actual processor + * frequency may not be in the table. PLL frequency + * granularity can be different that granularity of + * oppoint table. + */ + copp = cpufreq_dt_find_opp(sc->dev, freq); + if (copp == NULL) { + device_printf(dev, + "Can't find the current freq in opp\n"); + return (ENOENT); + } + uvolt = copp->uvolt_target; - DEBUG(sc->dev, "Current freq %ju\n", freq); - DEBUG(sc->dev, "Target freq %ju\n", (uint64_t)set->freq * 1000000); - copp = cpufreq_dt_find_opp(sc->dev, freq); - if (copp == NULL) { - device_printf(dev, "Can't find the current freq in opp\n"); - return (ENOENT); } + opp = cpufreq_dt_find_opp(sc->dev, set->freq * 1000000); if (opp == NULL) { device_printf(dev, "Couldn't find an opp for this freq\n"); return (EINVAL); } + DEBUG(sc->dev, "Current freq %ju, uvolt: %d\n", freq, uvolt); + DEBUG(sc->dev, "Target freq %ju, , uvolt: %d\n", + opp->freq, opp->uvolt_target); - if (copp->uvolt_target < opp->uvolt_target) { + if (uvolt < opp->uvolt_target) { DEBUG(dev, "Changing regulator from %u to %u\n", - copp->uvolt_target, opp->uvolt_target); + uvolt, opp->uvolt_target); error = regulator_set_voltage(sc->reg, opp->uvolt_min, opp->uvolt_max); @@ -201,7 +216,7 @@ cpufreq_dt_set(device_t dev, const struct cf_setting * } DEBUG(dev, "Setting clk to %ju\n", opp->freq); - error = clk_set_freq(sc->clk, opp->freq, 0); + error = clk_set_freq(sc->clk, opp->freq, CLK_SET_ROUND_DOWN); if (error != 0) { DEBUG(dev, "Failed, backout\n"); /* Restore previous voltage (best effort) */ @@ -211,7 +226,9 @@ cpufreq_dt_set(device_t dev, const struct cf_setting * return (ENXIO); } - if (copp->uvolt_target > opp->uvolt_target) { + if (uvolt > opp->uvolt_target) { + DEBUG(dev, "Changing regulator from %u to %u\n", + uvolt, opp->uvolt_target); error = regulator_set_voltage(sc->reg, opp->uvolt_min, opp->uvolt_max); @@ -219,8 +236,7 @@ cpufreq_dt_set(device_t dev, const struct cf_setting * DEBUG(dev, "Failed to switch regulator to %d\n", opp->uvolt_target); /* Restore previous CPU frequency (best effort) */ - (void)clk_set_freq(sc->clk, - copp->freq, 0); + (void)clk_set_freq(sc->clk, copp->freq, 0); return (ENXIO); } } @@ -277,7 +293,8 @@ cpufreq_dt_identify(driver_t *driver, device_t parent) /* The cpu@0 node must have the following properties */ if (!OF_hasprop(node, "clocks") || - !OF_hasprop(node, "cpu-supply")) + (!OF_hasprop(node, "cpu-supply") && + !OF_hasprop(node, "cpu0-supply"))) return; if (!OF_hasprop(node, "operating-points") && @@ -299,7 +316,9 @@ cpufreq_dt_probe(device_t dev) node = ofw_bus_get_node(device_get_parent(dev)); if (!OF_hasprop(node, "clocks") || - !OF_hasprop(node, "cpu-supply")) + (!OF_hasprop(node, "cpu-supply") && + !OF_hasprop(node, "cpu0-supply"))) + return (ENXIO); if (!OF_hasprop(node, "operating-points") && @@ -439,9 +458,12 @@ cpufreq_dt_attach(device_t dev) if (regulator_get_by_ofw_property(dev, node, "cpu-supply", &sc->reg) != 0) { - device_printf(dev, "no regulator for %s\n", - ofw_bus_get_name(device_get_parent(dev))); - return (ENXIO); + if (regulator_get_by_ofw_property(dev, node, + "cpu0-supply", &sc->reg) != 0) { + device_printf(dev, "no regulator for %s\n", + ofw_bus_get_name(device_get_parent(dev))); + return (ENXIO); + } } if (clk_get_by_ofw_index(dev, node, 0, &sc->clk) != 0) { From owner-svn-src-stable@freebsd.org Fri Aug 9 12:15:24 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D2C52C81E9; Fri, 9 Aug 2019 12:15:24 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 464khr49fdz4VS0; Fri, 9 Aug 2019 12:15:24 +0000 (UTC) (envelope-from mmel@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 70DF2D8BE; Fri, 9 Aug 2019 12:15:24 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x79CFOAH048380; Fri, 9 Aug 2019 12:15:24 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x79CFOSO048378; Fri, 9 Aug 2019 12:15:24 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201908091215.x79CFOSO048378@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Fri, 9 Aug 2019 12:15: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: r350824 - stable/12/sys/dev/psci X-SVN-Group: stable-12 X-SVN-Commit-Author: mmel X-SVN-Commit-Paths: stable/12/sys/dev/psci X-SVN-Commit-Revision: 350824 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Aug 2019 12:15:24 -0000 Author: mmel Date: Fri Aug 9 12:15:23 2019 New Revision: 350824 URL: https://svnweb.freebsd.org/changeset/base/350824 Log: MFC r345299: PSCI: Don't take missing implementation of psci get_version() as fatal. Minimalistic PSCI implementation in U-Boot doesn't implement get_version() method for some SoC. In this case, use PSCI version declared by 'psci' node in DT as fallback. Modified: stable/12/sys/dev/psci/psci.c stable/12/sys/dev/psci/psci.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/psci/psci.c ============================================================================== --- stable/12/sys/dev/psci/psci.c Fri Aug 9 11:21:42 2019 (r350823) +++ stable/12/sys/dev/psci/psci.c Fri Aug 9 12:15:23 2019 (r350824) @@ -79,9 +79,9 @@ struct psci_softc { }; #ifdef FDT -static int psci_v0_1_init(device_t dev); +static int psci_v0_1_init(device_t dev, int default_version); #endif -static int psci_v0_2_init(device_t dev); +static int psci_v0_2_init(device_t dev, int default_version); struct psci_softc *psci_softc = NULL; @@ -96,15 +96,35 @@ struct psci_softc *psci_softc = NULL; #endif #ifdef FDT +struct psci_init_def { + int default_version; + psci_initfn_t psci_init; +}; + +static struct psci_init_def psci_v1_0_init_def = { + .default_version = (1 << 16) | 0, + .psci_init = psci_v0_2_init +}; + +static struct psci_init_def psci_v0_2_init_def = { + .default_version = (0 << 16) | 2, + .psci_init = psci_v0_2_init +}; + +static struct psci_init_def psci_v0_1_init_def = { + .default_version = (0 << 16) | 1, + .psci_init = psci_v0_1_init +}; + static struct ofw_compat_data compat_data[] = { - {"arm,psci-1.0", (uintptr_t)psci_v0_2_init}, - {"arm,psci-0.2", (uintptr_t)psci_v0_2_init}, - {"arm,psci", (uintptr_t)psci_v0_1_init}, + {"arm,psci-1.0", (uintptr_t)&psci_v1_0_init_def}, + {"arm,psci-0.2", (uintptr_t)&psci_v0_2_init_def}, + {"arm,psci", (uintptr_t)&psci_v0_1_init_def}, {NULL, 0} }; #endif -static int psci_attach(device_t, psci_initfn_t); +static int psci_attach(device_t, psci_initfn_t, int); static void psci_shutdown(void *, int); static int psci_find_callfn(psci_callfn_t *); @@ -198,12 +218,13 @@ static int psci_fdt_attach(device_t dev) { const struct ofw_compat_data *ocd; - psci_initfn_t psci_init; + struct psci_init_def *psci_init_def; ocd = ofw_bus_search_compatible(dev, compat_data); - psci_init = (psci_initfn_t)ocd->ocd_data; + psci_init_def = (struct psci_init_def *)ocd->ocd_data; - return (psci_attach(dev, psci_init)); + return (psci_attach(dev, psci_init_def->psci_init, + psci_init_def->default_version)); } #endif @@ -304,12 +325,12 @@ static int psci_acpi_attach(device_t dev) { - return (psci_attach(dev, psci_v0_2_init)); + return (psci_attach(dev, psci_v0_2_init, PSCI_RETVAL_NOT_SUPPORTED)); } #endif static int -psci_attach(device_t dev, psci_initfn_t psci_init) +psci_attach(device_t dev, psci_initfn_t psci_init, int default_version) { struct psci_softc *sc = device_get_softc(dev); @@ -317,7 +338,7 @@ psci_attach(device_t dev, psci_initfn_t psci_init) return (ENXIO); KASSERT(psci_init != NULL, ("PSCI init function cannot be NULL")); - if (psci_init(dev)) + if (psci_init(dev, default_version)) return (ENXIO); psci_softc = sc; @@ -464,7 +485,7 @@ psci_reset(void) #ifdef FDT /* Only support PSCI 0.1 on FDT */ static int -psci_v0_1_init(device_t dev) +psci_v0_1_init(device_t dev, int default_version __unused) { struct psci_softc *sc = device_get_softc(dev); int psci_fn; @@ -510,7 +531,7 @@ psci_v0_1_init(device_t dev) #endif static int -psci_v0_2_init(device_t dev) +psci_v0_2_init(device_t dev, int default_version) { struct psci_softc *sc = device_get_softc(dev); int version; @@ -529,8 +550,20 @@ psci_v0_2_init(device_t dev) version = _psci_get_version(sc); - if (version == PSCI_RETVAL_NOT_SUPPORTED) - return (1); + /* + * U-Boot PSCI implementation doesn't have psci_get_version() + * method implemented for many boards. In this case, use the version + * readed from FDT as fallback. No fallback method for ACPI. + */ + if (version == PSCI_RETVAL_NOT_SUPPORTED) { + if (default_version == PSCI_RETVAL_NOT_SUPPORTED) + return (1); + + version = default_version; + printf("PSCI get_version() function is not implemented, " + " assuming v%d.%d\n", PSCI_VER_MAJOR(version), + PSCI_VER_MINOR(version)); + } sc->psci_version = version; if ((PSCI_VER_MAJOR(version) == 0 && PSCI_VER_MINOR(version) == 2) || Modified: stable/12/sys/dev/psci/psci.h ============================================================================== --- stable/12/sys/dev/psci/psci.h Fri Aug 9 11:21:42 2019 (r350823) +++ stable/12/sys/dev/psci/psci.h Fri Aug 9 12:15:23 2019 (r350824) @@ -31,7 +31,7 @@ #include -typedef int (*psci_initfn_t)(device_t dev); +typedef int (*psci_initfn_t)(device_t dev, int default_version); typedef int (*psci_callfn_t)(register_t, register_t, register_t, register_t); extern int psci_present; From owner-svn-src-stable@freebsd.org Sat Aug 10 00:01:26 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8C06DAD959; Sat, 10 Aug 2019 00:01:26 +0000 (UTC) (envelope-from jtl@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4652MV3Ckhz4CMV; Sat, 10 Aug 2019 00:01:26 +0000 (UTC) (envelope-from jtl@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 506361D6DC; Sat, 10 Aug 2019 00:01:26 +0000 (UTC) (envelope-from jtl@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x7A01QIC066511; Sat, 10 Aug 2019 00:01:26 GMT (envelope-from jtl@FreeBSD.org) Received: (from jtl@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7A01QmQ066510; Sat, 10 Aug 2019 00:01:26 GMT (envelope-from jtl@FreeBSD.org) Message-Id: <201908100001.x7A01QmQ066510@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jtl set sender to jtl@FreeBSD.org using -f From: "Jonathan T. Looney" Date: Sat, 10 Aug 2019 00:01: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: r350828 - stable/12/sys/kern X-SVN-Group: stable-12 X-SVN-Commit-Author: jtl X-SVN-Commit-Paths: stable/12/sys/kern X-SVN-Commit-Revision: 350828 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 00:01:26 -0000 Author: jtl Date: Sat Aug 10 00:01:25 2019 New Revision: 350828 URL: https://svnweb.freebsd.org/changeset/base/350828 Log: MFC r350815: In m_pulldown(), before trying to prepend bytes to the subsequent mbuf, ensure that the subsequent mbuf contains the remainder of the bytes the caller sought. If this is not the case, fall through to the code which gathers the bytes in a new mbuf. This fixes a bug where m_pulldown() could fail to gather all the desired bytes into consecutive memory. PR: 238787 Approved by: so (emaste) Modified: stable/12/sys/kern/uipc_mbuf2.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/kern/uipc_mbuf2.c ============================================================================== --- stable/12/sys/kern/uipc_mbuf2.c Fri Aug 9 23:50:57 2019 (r350827) +++ stable/12/sys/kern/uipc_mbuf2.c Sat Aug 10 00:01:25 2019 (r350828) @@ -216,7 +216,7 @@ m_pulldown(struct mbuf *m, int off, int len, int *offp goto ok; } if ((off == 0 || offp) && M_LEADINGSPACE(n->m_next) >= hlen - && writable) { + && writable && n->m_next->m_len >= tlen) { n->m_next->m_data -= hlen; n->m_next->m_len += hlen; bcopy(mtod(n, caddr_t) + off, mtod(n->m_next, caddr_t), hlen); From owner-svn-src-stable@freebsd.org Sat Aug 10 00:02:46 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7FD71ADBCD; Sat, 10 Aug 2019 00:02:46 +0000 (UTC) (envelope-from jtl@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4652P22ZXrz4CYh; Sat, 10 Aug 2019 00:02:46 +0000 (UTC) (envelope-from jtl@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 38E2F1D843; Sat, 10 Aug 2019 00:02:46 +0000 (UTC) (envelope-from jtl@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x7A02kcr069069; Sat, 10 Aug 2019 00:02:46 GMT (envelope-from jtl@FreeBSD.org) Received: (from jtl@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7A02k0x069068; Sat, 10 Aug 2019 00:02:46 GMT (envelope-from jtl@FreeBSD.org) Message-Id: <201908100002.x7A02k0x069068@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jtl set sender to jtl@FreeBSD.org using -f From: "Jonathan T. Looney" Date: Sat, 10 Aug 2019 00:02:46 +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: r350829 - stable/11/sys/kern X-SVN-Group: stable-11 X-SVN-Commit-Author: jtl X-SVN-Commit-Paths: stable/11/sys/kern X-SVN-Commit-Revision: 350829 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 00:02:46 -0000 Author: jtl Date: Sat Aug 10 00:02:45 2019 New Revision: 350829 URL: https://svnweb.freebsd.org/changeset/base/350829 Log: MFC r350815: In m_pulldown(), before trying to prepend bytes to the subsequent mbuf, ensure that the subsequent mbuf contains the remainder of the bytes the caller sought. If this is not the case, fall through to the code which gathers the bytes in a new mbuf. This fixes a bug where m_pulldown() could fail to gather all the desired bytes into consecutive memory. PR: 238787 Approved by: so (emaste) Modified: stable/11/sys/kern/uipc_mbuf2.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/kern/uipc_mbuf2.c ============================================================================== --- stable/11/sys/kern/uipc_mbuf2.c Sat Aug 10 00:01:25 2019 (r350828) +++ stable/11/sys/kern/uipc_mbuf2.c Sat Aug 10 00:02:45 2019 (r350829) @@ -214,7 +214,7 @@ m_pulldown(struct mbuf *m, int off, int len, int *offp goto ok; } if ((off == 0 || offp) && M_LEADINGSPACE(n->m_next) >= hlen - && writable) { + && writable && n->m_next->m_len >= tlen) { n->m_next->m_data -= hlen; n->m_next->m_len += hlen; bcopy(mtod(n, caddr_t) + off, mtod(n->m_next, caddr_t), hlen); From owner-svn-src-stable@freebsd.org Sat Aug 10 08:26:11 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7E530B6545; Sat, 10 Aug 2019 08:26:11 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465FYv2fJ1z4XHl; Sat, 10 Aug 2019 08:26:11 +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 518DC231AD; Sat, 10 Aug 2019 08:26:11 +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 x7A8QBFC065036; Sat, 10 Aug 2019 08:26:11 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7A8QBot065035; Sat, 10 Aug 2019 08:26:11 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201908100826.x7A8QBot065035@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sat, 10 Aug 2019 08:26:11 +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: r350831 - stable/12/sys/amd64/vmm/io X-SVN-Group: stable-12 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/12/sys/amd64/vmm/io X-SVN-Commit-Revision: 350831 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 08:26:11 -0000 Author: kib Date: Sat Aug 10 08:26:10 2019 New Revision: 350831 URL: https://svnweb.freebsd.org/changeset/base/350831 Log: MFC r350560: bhyve: Ignore MSI/MSI-X interrupts sent to non-active vCPUs in physical destination mode. Modified: stable/12/sys/amd64/vmm/io/vlapic.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/amd64/vmm/io/vlapic.c ============================================================================== --- stable/12/sys/amd64/vmm/io/vlapic.c Sat Aug 10 04:15:36 2019 (r350830) +++ stable/12/sys/amd64/vmm/io/vlapic.c Sat Aug 10 08:26:10 2019 (r350831) @@ -838,7 +838,8 @@ vlapic_calcdest(struct vm *vm, cpuset_t *dmask, uint32 */ CPU_ZERO(dmask); vcpuid = vm_apicid2vcpuid(vm, dest); - if (vcpuid < vm_get_maxcpus(vm)) + amask = vm_active_cpus(vm); + if (vcpuid < vm_get_maxcpus(vm) && CPU_ISSET(vcpuid, &amask)) CPU_SET(vcpuid, dmask); } else { /* From owner-svn-src-stable@freebsd.org Sat Aug 10 08:27:37 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3A81AB6606; Sat, 10 Aug 2019 08:27:37 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465FbY0ny2z4XQZ; Sat, 10 Aug 2019 08:27:37 +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 F1B48231B0; Sat, 10 Aug 2019 08:27: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 x7A8Ratf065153; Sat, 10 Aug 2019 08:27:36 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7A8Radu065152; Sat, 10 Aug 2019 08:27:36 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201908100827.x7A8Radu065152@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sat, 10 Aug 2019 08:27:36 +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: r350832 - in stable/12/sys/amd64: amd64 include X-SVN-Group: stable-12 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in stable/12/sys/amd64: amd64 include X-SVN-Commit-Revision: 350832 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 08:27:37 -0000 Author: kib Date: Sat Aug 10 08:27:36 2019 New Revision: 350832 URL: https://svnweb.freebsd.org/changeset/base/350832 Log: MFC r350561: amd64: Streamline exceptions and interrupts handlers. Modified: stable/12/sys/amd64/amd64/exception.S stable/12/sys/amd64/include/asmacros.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/amd64/amd64/exception.S ============================================================================== --- stable/12/sys/amd64/amd64/exception.S Sat Aug 10 08:26:10 2019 (r350831) +++ stable/12/sys/amd64/amd64/exception.S Sat Aug 10 08:27:36 2019 (r350832) @@ -105,14 +105,31 @@ MCOUNT_LABEL(btrap) /* Traps that we leave interrupts disabled for. */ .macro TRAP_NOEN l, trapno - PTI_ENTRY \l,X\l + PTI_ENTRY \l,\l\()_pti_k,\l\()_pti_u +\l\()_pti_k: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + jmp alltraps_noen_k +\l\()_pti_u: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + jmp alltraps_noen_u + .globl X\l .type X\l,@function -X\l: subq $TF_RIP,%rsp - movl $\trapno,TF_TRAPNO(%rsp) - movq $0,TF_ADDR(%rsp) - movq $0,TF_ERR(%rsp) - jmp alltraps_noen +X\l: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + testb $SEL_RPL_MASK,TF_CS(%rsp) + jz alltraps_noen_k + swapgs + jmp alltraps_noen_u .endm TRAP_NOEN bpt, T_BPTFLT @@ -122,15 +139,31 @@ X\l: subq $TF_RIP,%rsp /* Regular traps; The cpu does not supply tf_err for these. */ .macro TRAP l, trapno - PTI_ENTRY \l,X\l + PTI_ENTRY \l,\l\()_pti_k,\l\()_pti_u +\l\()_pti_k: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + jmp alltraps_k +\l\()_pti_u: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + jmp alltraps_u + .globl X\l .type X\l,@function X\l: - subq $TF_RIP,%rsp - movl $\trapno,TF_TRAPNO(%rsp) - movq $0,TF_ADDR(%rsp) - movq $0,TF_ERR(%rsp) - jmp alltraps + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + testb $SEL_RPL_MASK,TF_CS(%rsp) + jz alltraps_k + swapgs + jmp alltraps_u .endm TRAP div, T_DIVIDE @@ -145,42 +178,62 @@ X\l: /* This group of traps have tf_err already pushed by the cpu. */ .macro TRAP_ERR l, trapno - PTI_ENTRY \l,X\l,has_err=1 + PTI_ENTRY \l,\l\()_pti_k,\l\()_pti_u,has_err=1 +\l\()_pti_k: + subq $TF_ERR,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + jmp alltraps_k +\l\()_pti_u: + subq $TF_ERR,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + jmp alltraps_u .globl X\l .type X\l,@function X\l: - subq $TF_ERR,%rsp - movl $\trapno,TF_TRAPNO(%rsp) - movq $0,TF_ADDR(%rsp) - jmp alltraps + subq $TF_ERR,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + testb $SEL_RPL_MASK,TF_CS(%rsp) + jz alltraps_k + swapgs + jmp alltraps_u .endm TRAP_ERR tss, T_TSSFLT TRAP_ERR align, T_ALIGNFLT /* - * alltraps entry point. Use swapgs if this is the first time in the - * kernel from userland. Reenable interrupts if they were enabled - * before the trap. This approximates SDT_SYS386TGT on the i386 port. + * alltraps_u/k entry points. + * SWAPGS must be already performed by prologue, + * if this is the first time in the kernel from userland. + * Reenable interrupts if they were enabled before the trap. + * This approximates SDT_SYS386TGT on the i386 port. */ SUPERALIGN_TEXT - .globl alltraps - .type alltraps,@function -alltraps: + .globl alltraps_u + .type alltraps_u,@function +alltraps_u: movq %rdi,TF_RDI(%rsp) - testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ - jz 1f /* already running with kernel GS.base */ - swapgs + movq %rdx,TF_RDX(%rsp) + movq %rax,TF_RAX(%rsp) + movq %rcx,TF_RCX(%rsp) movq PCPU(CURPCB),%rdi andl $~PCB_FULL_IRET,PCB_FLAGS(%rdi) -1: SAVE_SEGS + call handle_ibrs_entry + jmp alltraps_save_segs + SUPERALIGN_TEXT + .globl alltraps_k + .type alltraps_k,@function +alltraps_k: + movq %rdi,TF_RDI(%rsp) movq %rdx,TF_RDX(%rsp) movq %rax,TF_RAX(%rsp) movq %rcx,TF_RCX(%rsp) - testb $SEL_RPL_MASK,TF_CS(%rsp) - jz 2f - call handle_ibrs_entry -2: testl $PSL_I,TF_RFLAGS(%rsp) +alltraps_save_segs: + SAVE_SEGS + testl $PSL_I,TF_RFLAGS(%rsp) jz alltraps_pushregs_no_rax sti alltraps_pushregs_no_rax: @@ -234,21 +287,26 @@ calltrap: jmp doreti /* Handle any pending ASTs */ /* - * alltraps_noen entry point. Unlike alltraps above, we want to - * leave the interrupts disabled. This corresponds to - * SDT_SYS386IGT on the i386 port. + * alltraps_noen_u/k entry points. + * Again, SWAPGS must be already performed by prologue, if needed. + * Unlike alltraps above, we want to leave the interrupts disabled. + * This corresponds to SDT_SYS386IGT on the i386 port. */ SUPERALIGN_TEXT - .globl alltraps_noen - .type alltraps_noen,@function -alltraps_noen: + .globl alltraps_noen_u + .type alltraps_noen_u,@function +alltraps_noen_u: movq %rdi,TF_RDI(%rsp) - testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ - jz 1f /* already running with kernel GS.base */ - swapgs movq PCPU(CURPCB),%rdi andl $~PCB_FULL_IRET,PCB_FLAGS(%rdi) -1: SAVE_SEGS + jmp alltraps_noen_save_segs + SUPERALIGN_TEXT + .globl alltraps_noen_k + .type alltraps_noen_k,@function +alltraps_noen_k: + movq %rdi,TF_RDI(%rsp) +alltraps_noen_save_segs: + SAVE_SEGS movq %rdx,TF_RDX(%rsp) movq %rax,TF_RAX(%rsp) movq %rcx,TF_RCX(%rsp) @@ -297,8 +355,8 @@ IDTVEC(dblfault) ALIGN_TEXT IDTVEC(page_pti) - testb $SEL_RPL_MASK,PTI_CS-2*8(%rsp) - jz Xpage + testb $SEL_RPL_MASK,PTI_CS-PTI_ERR(%rsp) + jz page_k swapgs pushq %rax movq %cr3,%rax @@ -306,25 +364,31 @@ IDTVEC(page_pti) cmpq $~0,PCPU(UCR3) jne 1f popq %rax - jmp 2f + jmp page_u 1: pushq %rdx PTI_UUENTRY has_err=1 -2: subq $TF_ERR,%rsp - movq %rdi,TF_RDI(%rsp) - movq %rax,TF_RAX(%rsp) - movq %rdx,TF_RDX(%rsp) - movq %rcx,TF_RCX(%rsp) jmp page_u + ALIGN_TEXT IDTVEC(page) + testb $SEL_RPL_MASK,TF_CS-TF_ERR(%rsp) /* Did we come from kernel? */ + jnz page_u_swapgs /* already running with kernel GS.base */ +page_k: subq $TF_ERR,%rsp movq %rdi,TF_RDI(%rsp) /* free up GP registers */ movq %rax,TF_RAX(%rsp) movq %rdx,TF_RDX(%rsp) movq %rcx,TF_RCX(%rsp) - testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ - jz page_cr2 /* already running with kernel GS.base */ + jmp page_cr2 + ALIGN_TEXT +page_u_swapgs: swapgs -page_u: movq PCPU(CURPCB),%rdi +page_u: + subq $TF_ERR,%rsp + movq %rdi,TF_RDI(%rsp) + movq %rax,TF_RAX(%rsp) + movq %rdx,TF_RDX(%rsp) + movq %rcx,TF_RCX(%rsp) + movq PCPU(CURPCB),%rdi andl $~PCB_FULL_IRET,PCB_FLAGS(%rdi) movq PCPU(SAVED_UCR3),%rax movq %rax,PCB_SAVED_UCR3(%rdi) Modified: stable/12/sys/amd64/include/asmacros.h ============================================================================== --- stable/12/sys/amd64/include/asmacros.h Sat Aug 10 08:26:10 2019 (r350831) +++ stable/12/sys/amd64/include/asmacros.h Sat Aug 10 08:27:36 2019 (r350832) @@ -204,17 +204,16 @@ 1: .endm - .macro PTI_ENTRY name, cont, has_err=0 + .macro PTI_ENTRY name, contk, contu, has_err=0 ALIGN_TEXT .globl X\name\()_pti .type X\name\()_pti,@function X\name\()_pti: - /* %rax, %rdx and possibly err not yet pushed */ - testb $SEL_RPL_MASK,PTI_CS-(2+1-\has_err)*8(%rsp) - jz \cont + /* %rax, %rdx, and possibly err are not yet pushed */ + testb $SEL_RPL_MASK,PTI_CS-PTI_ERR-((1-\has_err)*8)(%rsp) + jz \contk PTI_UENTRY \has_err - swapgs - jmp \cont + jmp \contu .endm .macro PTI_INTRENTRY vec_name From owner-svn-src-stable@freebsd.org Sat Aug 10 08:29:25 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 68D85B66B6; Sat, 10 Aug 2019 08:29: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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465Fdd25H9z4XXt; Sat, 10 Aug 2019 08:29: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 3DE43231B1; Sat, 10 Aug 2019 08:29: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 x7A8TPAM065290; Sat, 10 Aug 2019 08:29:25 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7A8TO4P065285; Sat, 10 Aug 2019 08:29:24 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201908100829.x7A8TO4P065285@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sat, 10 Aug 2019 08:29: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: r350833 - stable/12/share/man/man3 X-SVN-Group: stable-12 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/12/share/man/man3 X-SVN-Commit-Revision: 350833 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 08:29:25 -0000 Author: kib Date: Sat Aug 10 08:29:23 2019 New Revision: 350833 URL: https://svnweb.freebsd.org/changeset/base/350833 Log: MFC r350683, r350684: Clarify the robustness guarantees. Modified: stable/12/share/man/man3/pthread_cond_wait.3 stable/12/share/man/man3/pthread_mutex_consistent.3 stable/12/share/man/man3/pthread_mutex_lock.3 stable/12/share/man/man3/pthread_mutex_timedlock.3 stable/12/share/man/man3/pthread_mutex_trylock.3 Directory Properties: stable/12/ (props changed) Modified: stable/12/share/man/man3/pthread_cond_wait.3 ============================================================================== --- stable/12/share/man/man3/pthread_cond_wait.3 Sat Aug 10 08:27:36 2019 (r350832) +++ stable/12/share/man/man3/pthread_cond_wait.3 Sat Aug 10 08:29:23 2019 (r350833) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 17, 2018 +.Dd August 7, 2019 .Dt PTHREAD_COND_WAIT 3 .Os .Sh NAME @@ -78,8 +78,8 @@ was not locked by the calling thread. .It Bq Er EOWNERDEAD The argument .Fa mutex -points to a robust mutex and the previous owning thread terminated -while holding the mutex lock. +points to a robust mutex and the process containing the previous owning +thread terminated while holding the mutex lock. The lock was granted to the caller and it is up to the new owner to make the state consistent. .It Bq Er ENOTRECOVERABLE Modified: stable/12/share/man/man3/pthread_mutex_consistent.3 ============================================================================== --- stable/12/share/man/man3/pthread_mutex_consistent.3 Sat Aug 10 08:27:36 2019 (r350832) +++ stable/12/share/man/man3/pthread_mutex_consistent.3 Sat Aug 10 08:29:23 2019 (r350833) @@ -41,9 +41,9 @@ .Ft int .Fn pthread_mutex_consistent "pthread_mutex_t *mutex" .Sh DESCRIPTION -If the thread owning a robust mutex terminates while holding the -mutex, the mutex becomes inconsistent and the next thread that -acquires the mutex lock is notified of the state by the return value +If the process containing the thread owning a robust mutex terminates +while holding the mutex, the mutex becomes inconsistent and the next thread +that acquires the mutex lock is notified of the state by the return value .Er EOWNERDEAD . In this case, the mutex does not become normally usable again until the state is marked consistent. Modified: stable/12/share/man/man3/pthread_mutex_lock.3 ============================================================================== --- stable/12/share/man/man3/pthread_mutex_lock.3 Sat Aug 10 08:27:36 2019 (r350832) +++ stable/12/share/man/man3/pthread_mutex_lock.3 Sat Aug 10 08:29:23 2019 (r350833) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 29, 2016 +.Dd August 7, 2019 .Dt PTHREAD_MUTEX_LOCK 3 .Os .Sh NAME @@ -66,8 +66,8 @@ A deadlock would occur if the thread blocked waiting f .It Bq Er EOWNERDEAD The argument .Fa mutex -points to a robust mutex and the previous owning thread terminated -while holding the mutex lock. +points to a robust mutex and the process containing the previous owning +thread terminated while holding the mutex lock. The lock was granted to the caller and it is up to the new owner to make the state consistent. .It Bq Er ENOTRECOVERABLE Modified: stable/12/share/man/man3/pthread_mutex_timedlock.3 ============================================================================== --- stable/12/share/man/man3/pthread_mutex_timedlock.3 Sat Aug 10 08:27:36 2019 (r350832) +++ stable/12/share/man/man3/pthread_mutex_timedlock.3 Sat Aug 10 08:29:23 2019 (r350833) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 17, 2018 +.Dd August 7, 2019 .Dt PTHREAD_MUTEX_TIMEDLOCK 3 .Os .Sh NAME @@ -92,8 +92,8 @@ The current thread already owns the .It Bq Er EOWNERDEAD The argument .Fa mutex -points to a robust mutex and the previous owning thread terminated -while holding the mutex lock. +points to a robust mutex and the process containing the previous owning +thread terminated while holding the mutex lock. The lock was granted to the caller and it is up to the new owner to make the state consistent. .It Bq Er ENOTRECOVERABLE Modified: stable/12/share/man/man3/pthread_mutex_trylock.3 ============================================================================== --- stable/12/share/man/man3/pthread_mutex_trylock.3 Sat Aug 10 08:27:36 2019 (r350832) +++ stable/12/share/man/man3/pthread_mutex_trylock.3 Sat Aug 10 08:29:23 2019 (r350833) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 29, 2016 +.Dd August 7, 2019 .Dt PTHREAD_MUTEX_TRYLOCK 3 .Os .Sh NAME @@ -67,8 +67,8 @@ is already locked. .It Bq Er EOWNERDEAD The argument .Fa mutex -points to a robust mutex and the previous owning thread terminated -while holding the mutex lock. +points to a robust mutex and the process containing the previous owning +thread terminated while holding the mutex lock. The lock was granted to the caller and it is up to the new owner to make the state consistent. .It Bq Er ENOTRECOVERABLE From owner-svn-src-stable@freebsd.org Sat Aug 10 08:34:03 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 76329B6A3E; Sat, 10 Aug 2019 08:34:03 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465Fkz2Z1Gz4Y0K; Sat, 10 Aug 2019 08:34:03 +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 39B8123380; Sat, 10 Aug 2019 08:34:03 +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 x7A8Y32l070842; Sat, 10 Aug 2019 08:34:03 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7A8Y27i070841; Sat, 10 Aug 2019 08:34:02 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201908100834.x7A8Y27i070841@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sat, 10 Aug 2019 08:34:02 +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: r350834 - stable/11/sys/amd64/vmm/io X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/amd64/vmm/io X-SVN-Commit-Revision: 350834 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 08:34:03 -0000 Author: kib Date: Sat Aug 10 08:34:02 2019 New Revision: 350834 URL: https://svnweb.freebsd.org/changeset/base/350834 Log: MFC r350560: bhyve: Ignore MSI/MSI-X interrupts sent to non-active vCPUs in physical destination mode. Modified: stable/11/sys/amd64/vmm/io/vlapic.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/amd64/vmm/io/vlapic.c ============================================================================== --- stable/11/sys/amd64/vmm/io/vlapic.c Sat Aug 10 08:29:23 2019 (r350833) +++ stable/11/sys/amd64/vmm/io/vlapic.c Sat Aug 10 08:34:02 2019 (r350834) @@ -836,7 +836,8 @@ vlapic_calcdest(struct vm *vm, cpuset_t *dmask, uint32 */ CPU_ZERO(dmask); vcpuid = vm_apicid2vcpuid(vm, dest); - if (vcpuid < vm_get_maxcpus(vm)) + amask = vm_active_cpus(vm); + if (vcpuid < vm_get_maxcpus(vm) && CPU_ISSET(vcpuid, &amask)) CPU_SET(vcpuid, dmask); } else { /* From owner-svn-src-stable@freebsd.org Sat Aug 10 08:34:57 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B31C7B6AC8; Sat, 10 Aug 2019 08:34:57 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465Fm14Q6Fz4Y6M; Sat, 10 Aug 2019 08:34:57 +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 79A2823381; Sat, 10 Aug 2019 08:34:57 +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 x7A8YvG7070935; Sat, 10 Aug 2019 08:34:57 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7A8YuNA070930; Sat, 10 Aug 2019 08:34:56 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201908100834.x7A8YuNA070930@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sat, 10 Aug 2019 08:34:56 +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: r350835 - stable/11/share/man/man3 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/share/man/man3 X-SVN-Commit-Revision: 350835 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 08:34:57 -0000 Author: kib Date: Sat Aug 10 08:34:56 2019 New Revision: 350835 URL: https://svnweb.freebsd.org/changeset/base/350835 Log: MFC r350683, r350684: Clarify the robustness guarantees. Modified: stable/11/share/man/man3/pthread_cond_wait.3 stable/11/share/man/man3/pthread_mutex_consistent.3 stable/11/share/man/man3/pthread_mutex_lock.3 stable/11/share/man/man3/pthread_mutex_timedlock.3 stable/11/share/man/man3/pthread_mutex_trylock.3 Directory Properties: stable/11/ (props changed) Modified: stable/11/share/man/man3/pthread_cond_wait.3 ============================================================================== --- stable/11/share/man/man3/pthread_cond_wait.3 Sat Aug 10 08:34:02 2019 (r350834) +++ stable/11/share/man/man3/pthread_cond_wait.3 Sat Aug 10 08:34:56 2019 (r350835) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 17, 2018 +.Dd August 7, 2019 .Dt PTHREAD_COND_WAIT 3 .Os .Sh NAME @@ -78,8 +78,8 @@ was not locked by the calling thread. .It Bq Er EOWNERDEAD The argument .Fa mutex -points to a robust mutex and the previous owning thread terminated -while holding the mutex lock. +points to a robust mutex and the process containing the previous owning +thread terminated while holding the mutex lock. The lock was granted to the caller and it is up to the new owner to make the state consistent. .It Bq Er ENOTRECOVERABLE Modified: stable/11/share/man/man3/pthread_mutex_consistent.3 ============================================================================== --- stable/11/share/man/man3/pthread_mutex_consistent.3 Sat Aug 10 08:34:02 2019 (r350834) +++ stable/11/share/man/man3/pthread_mutex_consistent.3 Sat Aug 10 08:34:56 2019 (r350835) @@ -41,9 +41,9 @@ .Ft int .Fn pthread_mutex_consistent "pthread_mutex_t *mutex" .Sh DESCRIPTION -If the thread owning a robust mutex terminates while holding the -mutex, the mutex becomes inconsistent and the next thread that -acquires the mutex lock is notified of the state by the return value +If the process containing the thread owning a robust mutex terminates +while holding the mutex, the mutex becomes inconsistent and the next thread +that acquires the mutex lock is notified of the state by the return value .Er EOWNERDEAD . In this case, the mutex does not become normally usable again until the state is marked consistent. Modified: stable/11/share/man/man3/pthread_mutex_lock.3 ============================================================================== --- stable/11/share/man/man3/pthread_mutex_lock.3 Sat Aug 10 08:34:02 2019 (r350834) +++ stable/11/share/man/man3/pthread_mutex_lock.3 Sat Aug 10 08:34:56 2019 (r350835) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 29, 2016 +.Dd August 7, 2019 .Dt PTHREAD_MUTEX_LOCK 3 .Os .Sh NAME @@ -66,8 +66,8 @@ A deadlock would occur if the thread blocked waiting f .It Bq Er EOWNERDEAD The argument .Fa mutex -points to a robust mutex and the previous owning thread terminated -while holding the mutex lock. +points to a robust mutex and the process containing the previous owning +thread terminated while holding the mutex lock. The lock was granted to the caller and it is up to the new owner to make the state consistent. .It Bq Er ENOTRECOVERABLE Modified: stable/11/share/man/man3/pthread_mutex_timedlock.3 ============================================================================== --- stable/11/share/man/man3/pthread_mutex_timedlock.3 Sat Aug 10 08:34:02 2019 (r350834) +++ stable/11/share/man/man3/pthread_mutex_timedlock.3 Sat Aug 10 08:34:56 2019 (r350835) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 17, 2018 +.Dd August 7, 2019 .Dt PTHREAD_MUTEX_TIMEDLOCK 3 .Os .Sh NAME @@ -92,8 +92,8 @@ The current thread already owns the .It Bq Er EOWNERDEAD The argument .Fa mutex -points to a robust mutex and the previous owning thread terminated -while holding the mutex lock. +points to a robust mutex and the process containing the previous owning +thread terminated while holding the mutex lock. The lock was granted to the caller and it is up to the new owner to make the state consistent. .It Bq Er ENOTRECOVERABLE Modified: stable/11/share/man/man3/pthread_mutex_trylock.3 ============================================================================== --- stable/11/share/man/man3/pthread_mutex_trylock.3 Sat Aug 10 08:34:02 2019 (r350834) +++ stable/11/share/man/man3/pthread_mutex_trylock.3 Sat Aug 10 08:34:56 2019 (r350835) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 29, 2016 +.Dd August 7, 2019 .Dt PTHREAD_MUTEX_TRYLOCK 3 .Os .Sh NAME @@ -67,8 +67,8 @@ is already locked. .It Bq Er EOWNERDEAD The argument .Fa mutex -points to a robust mutex and the previous owning thread terminated -while holding the mutex lock. +points to a robust mutex and the process containing the previous owning +thread terminated while holding the mutex lock. The lock was granted to the caller and it is up to the new owner to make the state consistent. .It Bq Er ENOTRECOVERABLE From owner-svn-src-stable@freebsd.org Sat Aug 10 13:50:17 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B343CBD112; Sat, 10 Aug 2019 13:50:17 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465Nls4JTNz3HKl; Sat, 10 Aug 2019 13:50:17 +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 7548C26A7C; Sat, 10 Aug 2019 13:50:17 +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 x7ADoH6Q053486; Sat, 10 Aug 2019 13:50:17 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7ADoGIv053477; Sat, 10 Aug 2019 13:50:16 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201908101350.x7ADoGIv053477@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Sat, 10 Aug 2019 13:50:16 +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: r350836 - in stable/12/sys: arm/ti arm/ti/cpsw dev/ofw gnu/dts/arm X-SVN-Group: stable-12 X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in stable/12/sys: arm/ti arm/ti/cpsw dev/ofw gnu/dts/arm X-SVN-Commit-Revision: 350836 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 13:50:17 -0000 Author: manu Date: Sat Aug 10 13:50:15 2019 New Revision: 350836 URL: https://svnweb.freebsd.org/changeset/base/350836 Log: MFC r350229-r350230, r350408, r350410, r350673-r350674 r350229: arm: ti: Get the hwmods property from the parent node Since the Linux 5.0 dts the ti,hwmods property is on the parent ti.sysc node. r350230: arm: ti: Add a driver for ti,sysc bus ti,sysc is a simple-bus like driver. Add a driver for it so child nodes can attach. r350408: arm: ti: Get the hwmods property either from the node or the parent r350229 changed the code to lookup the ti,hwmods property in the parent as it's now like that in the DTS from >= Linux 5.0, allow the property to be also in the node itself so we can boot with an older DTB. Reported by: "Dr. Rolf Jansen" r350410: arm: ti: cpsw: Check the new slave node address Since DTS from >= Linux 5.0 the slave address are relative to the parent node address and aren't the full ones. Check both so the cpsw driver can find the phy id. r350673: arm: dts: am33xx: Fix the region for uart0 The region for uart0 is declared to be 0x2000 in size but the parent node only declare 0x1000. As the parent only declare a size of 0x1000 in the ranges for it's children this cause the device to not be mappable. https://patchwork.kernel.org/patch/11056769/ r350674: ofw: ofw_reg_to_paddr: Use a 256 static array for the cell Some hardware needs more than 32, bump this value. We cannot use the _alloc for of getencprop as this function is called too early in the boot before pmap is initialized and we only have 2k of stack when cninit is called. Discussed with: ian Added: stable/12/sys/arm/ti/ti_sysc.c - copied unchanged from r350230, head/sys/arm/ti/ti_sysc.c Modified: stable/12/sys/arm/ti/cpsw/if_cpsw.c stable/12/sys/arm/ti/files.ti stable/12/sys/arm/ti/ti_hwmods.c stable/12/sys/dev/ofw/ofw_subr.c stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/arm/ti/cpsw/if_cpsw.c ============================================================================== --- stable/12/sys/arm/ti/cpsw/if_cpsw.c Sat Aug 10 08:34:56 2019 (r350835) +++ stable/12/sys/arm/ti/cpsw/if_cpsw.c Sat Aug 10 13:50:15 2019 (r350836) @@ -755,7 +755,9 @@ cpsw_get_fdt_data(struct cpsw_softc *sc, int port) continue; } OF_prop_free(name); - if (mdio_child_addr != slave_mdio_addr[port]) + + if (mdio_child_addr != slave_mdio_addr[port] && + mdio_child_addr != (slave_mdio_addr[port] & 0xFFF)) continue; if (fdt_get_phyaddr(child, NULL, &phy, NULL) != 0){ Modified: stable/12/sys/arm/ti/files.ti ============================================================================== --- stable/12/sys/arm/ti/files.ti Sat Aug 10 08:34:56 2019 (r350835) +++ stable/12/sys/arm/ti/files.ti Sat Aug 10 13:50:15 2019 (r350836) @@ -16,6 +16,7 @@ arm/ti/ti_gpio_if.m optional gpio arm/ti/ti_i2c.c optional ti_i2c arm/ti/ti_sdhci.c optional sdhci arm/ti/ti_spi.c optional ti_spi +arm/ti/ti_sysc.c standard dev/uart/uart_dev_ti8250.c optional uart dev/uart/uart_dev_ns8250.c optional uart Modified: stable/12/sys/arm/ti/ti_hwmods.c ============================================================================== --- stable/12/sys/arm/ti/ti_hwmods.c Sat Aug 10 08:34:56 2019 (r350835) +++ stable/12/sys/arm/ti/ti_hwmods.c Sat Aug 10 13:50:15 2019 (r350836) @@ -97,6 +97,16 @@ struct hwmod ti_hwmods[] = { {NULL, 0} }; +static inline int +ti_get_hwmods_prop(phandle_t node, void **name) +{ + int len; + + if ((len = OF_getprop_alloc(node, "ti,hwmods", name)) > 0) + return (len); + return (OF_getprop_alloc(OF_parent(node), "ti,hwmods", name)); +} + clk_ident_t ti_hwmods_get_clock(device_t dev) { @@ -110,7 +120,7 @@ ti_hwmods_get_clock(device_t dev) if ((node = ofw_bus_get_node(dev)) == 0) return (INVALID_CLK_IDENT); - if ((len = OF_getprop_alloc(node, "ti,hwmods", (void**)&name)) <= 0) + if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0) return (INVALID_CLK_IDENT); buf = name; @@ -148,7 +158,7 @@ int ti_hwmods_contains(device_t dev, const char *hwmod if ((node = ofw_bus_get_node(dev)) == 0) return (0); - if ((len = OF_getprop_alloc(node, "ti,hwmods", (void**)&name)) <= 0) + if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0) return (0); buf = name; @@ -182,7 +192,7 @@ ti_hwmods_get_unit(device_t dev, const char *hwmod) if ((node = ofw_bus_get_node(dev)) == 0) return (0); - if ((len = OF_getprop_alloc(node, "ti,hwmods", (void**)&name)) <= 0) + if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0) return (0); buf = name; Copied: stable/12/sys/arm/ti/ti_sysc.c (from r350230, head/sys/arm/ti/ti_sysc.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/sys/arm/ti/ti_sysc.c Sat Aug 10 13:50:15 2019 (r350836, copy of r350230, head/sys/arm/ti/ti_sysc.c) @@ -0,0 +1,125 @@ +/*- + * Copyright (c) 2019 Emmanuel Vadot + * + * 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. + * + * $FreeBSD$ + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +static struct ofw_compat_data compat_data[] = { + { "ti,sysc", 1 }, + { NULL, 0 } +}; + +struct ti_sysc_softc { + struct simplebus_softc sc; + device_t dev; +}; + +static int ti_sysc_probe(device_t dev); +static int ti_sysc_attach(device_t dev); +static int ti_sysc_detach(device_t dev); + +static int +ti_sysc_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, "TI SYSC Interconnect"); + return (BUS_PROBE_DEFAULT); +} + +static int +ti_sysc_attach(device_t dev) +{ + struct ti_sysc_softc *sc; + device_t cdev; + phandle_t node, child; + + sc = device_get_softc(dev); + sc->dev = dev; + node = ofw_bus_get_node(dev); + + simplebus_init(dev, node); + if (simplebus_fill_ranges(node, &sc->sc) < 0) { + device_printf(dev, "could not get ranges\n"); + return (ENXIO); + } + + for (child = OF_child(node); child > 0; child = OF_peer(child)) { + cdev = simplebus_add_device(dev, child, 0, NULL, -1, NULL); + if (cdev != NULL) + device_probe_and_attach(cdev); + } + + return (bus_generic_attach(dev)); +} + +static int +ti_sysc_detach(device_t dev) +{ + + return (EBUSY); +} + +static device_method_t ti_sysc_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ti_sysc_probe), + DEVMETHOD(device_attach, ti_sysc_attach), + DEVMETHOD(device_detach, ti_sysc_detach), + + DEVMETHOD_END +}; + +DEFINE_CLASS_1(ti_sysc, ti_sysc_driver, ti_sysc_methods, + sizeof(struct ti_sysc_softc), simplebus_driver); + +static devclass_t ti_sysc_devclass; + +EARLY_DRIVER_MODULE(ti_sysc, simplebus, ti_sysc_driver, +ti_sysc_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_FIRST); Modified: stable/12/sys/dev/ofw/ofw_subr.c ============================================================================== --- stable/12/sys/dev/ofw/ofw_subr.c Sat Aug 10 08:34:56 2019 (r350835) +++ stable/12/sys/dev/ofw/ofw_subr.c Sat Aug 10 13:50:15 2019 (r350836) @@ -79,7 +79,8 @@ int ofw_reg_to_paddr(phandle_t dev, int regno, bus_addr_t *paddr, bus_size_t *psize, pcell_t *ppci_hi) { - pcell_t cell[32], pci_hi; + static pcell_t cell[256]; + pcell_t pci_hi; uint64_t addr, raddr, baddr; uint64_t size, rsize; uint32_t c, nbridge, naddr, nsize; Modified: stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi ============================================================================== --- stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi Sat Aug 10 08:34:56 2019 (r350835) +++ stable/12/sys/gnu/dts/arm/am33xx-l4.dtsi Sat Aug 10 13:50:15 2019 (r350836) @@ -185,7 +185,7 @@ uart0: serial@0 { compatible = "ti,am3352-uart", "ti,omap3-uart"; clock-frequency = <48000000>; - reg = <0x0 0x2000>; + reg = <0x0 0x1000>; interrupts = <72>; status = "disabled"; dmas = <&edma 26 0>, <&edma 27 0>; From owner-svn-src-stable@freebsd.org Sat Aug 10 17:17:37 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C72E6C111E; Sat, 10 Aug 2019 17:17:37 +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) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465TM54yKnz3x2H; Sat, 10 Aug 2019 17:17:37 +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 8BA6C10C5; Sat, 10 Aug 2019 17:17:37 +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 x7AHHbD2076923; Sat, 10 Aug 2019 17:17:37 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7AHHblA076921; Sat, 10 Aug 2019 17:17:37 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201908101717.x7AHHblA076921@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sat, 10 Aug 2019 17:17: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: r350839 - in stable/11/sys/amd64: amd64 include X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in stable/11/sys/amd64: amd64 include X-SVN-Commit-Revision: 350839 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 17:17:37 -0000 Author: kib Date: Sat Aug 10 17:17:36 2019 New Revision: 350839 URL: https://svnweb.freebsd.org/changeset/base/350839 Log: MFC r350561: amd64: Streamline exceptions and interrupts handlers. Modified: stable/11/sys/amd64/amd64/exception.S stable/11/sys/amd64/include/asmacros.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/amd64/amd64/exception.S ============================================================================== --- stable/11/sys/amd64/amd64/exception.S Sat Aug 10 17:14:35 2019 (r350838) +++ stable/11/sys/amd64/amd64/exception.S Sat Aug 10 17:17:36 2019 (r350839) @@ -106,14 +106,31 @@ MCOUNT_LABEL(btrap) /* Traps that we leave interrupts disabled for. */ .macro TRAP_NOEN l, trapno - PTI_ENTRY \l,X\l + PTI_ENTRY \l,\l\()_pti_k,\l\()_pti_u +\l\()_pti_k: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + jmp alltraps_noen_k +\l\()_pti_u: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + jmp alltraps_noen_u + .globl X\l .type X\l,@function -X\l: subq $TF_RIP,%rsp - movl $\trapno,TF_TRAPNO(%rsp) - movq $0,TF_ADDR(%rsp) - movq $0,TF_ERR(%rsp) - jmp alltraps_noen +X\l: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + testb $SEL_RPL_MASK,TF_CS(%rsp) + jz alltraps_noen_k + swapgs + jmp alltraps_noen_u .endm TRAP_NOEN bpt, T_BPTFLT @@ -123,15 +140,31 @@ X\l: subq $TF_RIP,%rsp /* Regular traps; The cpu does not supply tf_err for these. */ .macro TRAP l, trapno - PTI_ENTRY \l,X\l + PTI_ENTRY \l,\l\()_pti_k,\l\()_pti_u +\l\()_pti_k: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + jmp alltraps_k +\l\()_pti_u: + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + jmp alltraps_u + .globl X\l .type X\l,@function X\l: - subq $TF_RIP,%rsp - movl $\trapno,TF_TRAPNO(%rsp) - movq $0,TF_ADDR(%rsp) - movq $0,TF_ERR(%rsp) - jmp alltraps + subq $TF_RIP,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + movq $0,TF_ERR(%rsp) + testb $SEL_RPL_MASK,TF_CS(%rsp) + jz alltraps_k + swapgs + jmp alltraps_u .endm TRAP div, T_DIVIDE @@ -146,42 +179,62 @@ X\l: /* This group of traps have tf_err already pushed by the cpu. */ .macro TRAP_ERR l, trapno - PTI_ENTRY \l,X\l,has_err=1 + PTI_ENTRY \l,\l\()_pti_k,\l\()_pti_u,has_err=1 +\l\()_pti_k: + subq $TF_ERR,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + jmp alltraps_k +\l\()_pti_u: + subq $TF_ERR,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + jmp alltraps_u .globl X\l .type X\l,@function X\l: - subq $TF_ERR,%rsp - movl $\trapno,TF_TRAPNO(%rsp) - movq $0,TF_ADDR(%rsp) - jmp alltraps + subq $TF_ERR,%rsp + movl $\trapno,TF_TRAPNO(%rsp) + movq $0,TF_ADDR(%rsp) + testb $SEL_RPL_MASK,TF_CS(%rsp) + jz alltraps_k + swapgs + jmp alltraps_u .endm TRAP_ERR tss, T_TSSFLT TRAP_ERR align, T_ALIGNFLT /* - * alltraps entry point. Use swapgs if this is the first time in the - * kernel from userland. Reenable interrupts if they were enabled - * before the trap. This approximates SDT_SYS386TGT on the i386 port. + * alltraps_u/k entry points. + * SWAPGS must be already performed by prologue, + * if this is the first time in the kernel from userland. + * Reenable interrupts if they were enabled before the trap. + * This approximates SDT_SYS386TGT on the i386 port. */ SUPERALIGN_TEXT - .globl alltraps - .type alltraps,@function -alltraps: + .globl alltraps_u + .type alltraps_u,@function +alltraps_u: movq %rdi,TF_RDI(%rsp) - testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ - jz 1f /* already running with kernel GS.base */ - swapgs + movq %rdx,TF_RDX(%rsp) + movq %rax,TF_RAX(%rsp) + movq %rcx,TF_RCX(%rsp) movq PCPU(CURPCB),%rdi andl $~PCB_FULL_IRET,PCB_FLAGS(%rdi) -1: SAVE_SEGS + call handle_ibrs_entry + jmp alltraps_save_segs + SUPERALIGN_TEXT + .globl alltraps_k + .type alltraps_k,@function +alltraps_k: + movq %rdi,TF_RDI(%rsp) movq %rdx,TF_RDX(%rsp) movq %rax,TF_RAX(%rsp) movq %rcx,TF_RCX(%rsp) - testb $SEL_RPL_MASK,TF_CS(%rsp) - jz 2f - call handle_ibrs_entry -2: testl $PSL_I,TF_RFLAGS(%rsp) +alltraps_save_segs: + SAVE_SEGS + testl $PSL_I,TF_RFLAGS(%rsp) jz alltraps_pushregs_no_rax sti alltraps_pushregs_no_rax: @@ -233,21 +286,26 @@ calltrap: jmp doreti /* Handle any pending ASTs */ /* - * alltraps_noen entry point. Unlike alltraps above, we want to - * leave the interrupts disabled. This corresponds to - * SDT_SYS386IGT on the i386 port. + * alltraps_noen_u/k entry points. + * Again, SWAPGS must be already performed by prologue, if needed. + * Unlike alltraps above, we want to leave the interrupts disabled. + * This corresponds to SDT_SYS386IGT on the i386 port. */ SUPERALIGN_TEXT - .globl alltraps_noen - .type alltraps_noen,@function -alltraps_noen: + .globl alltraps_noen_u + .type alltraps_noen_u,@function +alltraps_noen_u: movq %rdi,TF_RDI(%rsp) - testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ - jz 1f /* already running with kernel GS.base */ - swapgs movq PCPU(CURPCB),%rdi andl $~PCB_FULL_IRET,PCB_FLAGS(%rdi) -1: SAVE_SEGS + jmp alltraps_noen_save_segs + SUPERALIGN_TEXT + .globl alltraps_noen_k + .type alltraps_noen_k,@function +alltraps_noen_k: + movq %rdi,TF_RDI(%rsp) +alltraps_noen_save_segs: + SAVE_SEGS movq %rdx,TF_RDX(%rsp) movq %rax,TF_RAX(%rsp) movq %rcx,TF_RCX(%rsp) @@ -294,8 +352,8 @@ IDTVEC(dblfault) ALIGN_TEXT IDTVEC(page_pti) - testb $SEL_RPL_MASK,PTI_CS-2*8(%rsp) - jz Xpage + testb $SEL_RPL_MASK,PTI_CS-PTI_ERR(%rsp) + jz page_k swapgs pushq %rax movq %cr3,%rax @@ -303,25 +361,31 @@ IDTVEC(page_pti) cmpq $~0,PCPU(UCR3) jne 1f popq %rax - jmp 2f + jmp page_u 1: pushq %rdx PTI_UUENTRY has_err=1 -2: subq $TF_ERR,%rsp - movq %rdi,TF_RDI(%rsp) - movq %rax,TF_RAX(%rsp) - movq %rdx,TF_RDX(%rsp) - movq %rcx,TF_RCX(%rsp) jmp page_u + ALIGN_TEXT IDTVEC(page) + testb $SEL_RPL_MASK,TF_CS-TF_ERR(%rsp) /* Did we come from kernel? */ + jnz page_u_swapgs /* already running with kernel GS.base */ +page_k: subq $TF_ERR,%rsp movq %rdi,TF_RDI(%rsp) /* free up GP registers */ movq %rax,TF_RAX(%rsp) movq %rdx,TF_RDX(%rsp) movq %rcx,TF_RCX(%rsp) - testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ - jz page_cr2 /* already running with kernel GS.base */ + jmp page_cr2 + ALIGN_TEXT +page_u_swapgs: swapgs -page_u: movq PCPU(CURPCB),%rdi +page_u: + subq $TF_ERR,%rsp + movq %rdi,TF_RDI(%rsp) + movq %rax,TF_RAX(%rsp) + movq %rdx,TF_RDX(%rsp) + movq %rcx,TF_RCX(%rsp) + movq PCPU(CURPCB),%rdi andl $~PCB_FULL_IRET,PCB_FLAGS(%rdi) movq PCPU(SAVED_UCR3),%rax movq %rax,PCB_SAVED_UCR3(%rdi) Modified: stable/11/sys/amd64/include/asmacros.h ============================================================================== --- stable/11/sys/amd64/include/asmacros.h Sat Aug 10 17:14:35 2019 (r350838) +++ stable/11/sys/amd64/include/asmacros.h Sat Aug 10 17:17:36 2019 (r350839) @@ -202,17 +202,16 @@ 1: .endm - .macro PTI_ENTRY name, cont, has_err=0 + .macro PTI_ENTRY name, contk, contu, has_err=0 ALIGN_TEXT .globl X\name\()_pti .type X\name\()_pti,@function X\name\()_pti: - /* %rax, %rdx and possibly err not yet pushed */ - testb $SEL_RPL_MASK,PTI_CS-(2+1-\has_err)*8(%rsp) - jz \cont + /* %rax, %rdx, and possibly err are not yet pushed */ + testb $SEL_RPL_MASK,PTI_CS-PTI_ERR-((1-\has_err)*8)(%rsp) + jz \contk PTI_UENTRY \has_err - swapgs - jmp \cont + jmp \contu .endm .macro PTI_INTRENTRY vec_name From owner-svn-src-stable@freebsd.org Sat Aug 10 23:03:25 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 38D9EA85E1; Sat, 10 Aug 2019 23:03:25 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465d2509v6z4K76; Sat, 10 Aug 2019 23:03:25 +0000 (UTC) (envelope-from mckusick@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 DB8B9529E; Sat, 10 Aug 2019 23:03:24 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x7AN3OY6091312; Sat, 10 Aug 2019 23:03:24 GMT (envelope-from mckusick@FreeBSD.org) Received: (from mckusick@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7AN3OmM091308; Sat, 10 Aug 2019 23:03:24 GMT (envelope-from mckusick@FreeBSD.org) Message-Id: <201908102303.x7AN3OmM091308@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mckusick set sender to mckusick@FreeBSD.org using -f From: Kirk McKusick Date: Sat, 10 Aug 2019 23:03: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: r350850 - in stable/12/sys/ufs: ffs ufs X-SVN-Group: stable-12 X-SVN-Commit-Author: mckusick X-SVN-Commit-Paths: in stable/12/sys/ufs: ffs ufs X-SVN-Commit-Revision: 350850 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 23:03:25 -0000 Author: mckusick Date: Sat Aug 10 23:03:23 2019 New Revision: 350850 URL: https://svnweb.freebsd.org/changeset/base/350850 Log: MFC of 350490 Set FORCE in chk[id]q when returning inodes and blocks. Modified: stable/12/sys/ufs/ffs/ffs_inode.c stable/12/sys/ufs/ffs/ffs_softdep.c stable/12/sys/ufs/ufs/ufs_quota.c stable/12/sys/ufs/ufs/ufs_vnops.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/ufs/ffs/ffs_inode.c ============================================================================== --- stable/12/sys/ufs/ffs/ffs_inode.c Sat Aug 10 20:08:37 2019 (r350849) +++ stable/12/sys/ufs/ffs/ffs_inode.c Sat Aug 10 23:03:23 2019 (r350850) @@ -256,7 +256,7 @@ ffs_truncate(vp, length, flags, cred) if ((error = ffs_syncvnode(vp, MNT_WAIT, 0)) != 0) return (error); #ifdef QUOTA - (void) chkdq(ip, -extblocks, NOCRED, 0); + (void) chkdq(ip, -extblocks, NOCRED, FORCE); #endif vinvalbuf(vp, V_ALT, 0, 0); vn_pages_remove(vp, @@ -609,7 +609,7 @@ done: DIP_SET(ip, i_blocks, 0); ip->i_flag |= IN_CHANGE; #ifdef QUOTA - (void) chkdq(ip, -blocksreleased, NOCRED, 0); + (void) chkdq(ip, -blocksreleased, NOCRED, FORCE); #endif return (allerror); Modified: stable/12/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- stable/12/sys/ufs/ffs/ffs_softdep.c Sat Aug 10 20:08:37 2019 (r350849) +++ stable/12/sys/ufs/ffs/ffs_softdep.c Sat Aug 10 23:03:23 2019 (r350850) @@ -6670,7 +6670,7 @@ softdep_journal_freeblocks(ip, cred, length, flags) #ifdef QUOTA /* Reference the quotas in case the block count is wrong in the end. */ quotaref(vp, freeblks->fb_quota); - (void) chkdq(ip, -datablocks, NOCRED, 0); + (void) chkdq(ip, -datablocks, NOCRED, FORCE); #endif freeblks->fb_chkcnt = -datablocks; UFS_LOCK(ump); @@ -6932,7 +6932,7 @@ softdep_setup_freeblocks(ip, length, flags) #ifdef QUOTA /* Reference the quotas in case the block count is wrong in the end. */ quotaref(ITOV(ip), freeblks->fb_quota); - (void) chkdq(ip, -datablocks, NOCRED, 0); + (void) chkdq(ip, -datablocks, NOCRED, FORCE); #endif freeblks->fb_chkcnt = -datablocks; UFS_LOCK(ump); Modified: stable/12/sys/ufs/ufs/ufs_quota.c ============================================================================== --- stable/12/sys/ufs/ufs/ufs_quota.c Sat Aug 10 20:08:37 2019 (r350849) +++ stable/12/sys/ufs/ufs/ufs_quota.c Sat Aug 10 23:03:23 2019 (r350850) @@ -159,6 +159,7 @@ chkdq(struct inode *ip, ufs2_daddr_t change, struct uc struct vnode *vp = ITOV(ip); int i, error, warn, do_check; + MPASS(cred != NOCRED || (flags & FORCE) != 0); /* * Disk quotas must be turned off for system files. Currently * snapshot and quota files. @@ -311,6 +312,7 @@ chkiq(struct inode *ip, int change, struct ucred *cred struct dquot *dq; int i, error, warn, do_check; + MPASS(cred != NOCRED || (flags & FORCE) != 0); #ifdef DIAGNOSTIC if ((flags & CHOWN) == 0) chkdquot(ip); Modified: stable/12/sys/ufs/ufs/ufs_vnops.c ============================================================================== --- stable/12/sys/ufs/ufs/ufs_vnops.c Sat Aug 10 20:08:37 2019 (r350849) +++ stable/12/sys/ufs/ufs/ufs_vnops.c Sat Aug 10 23:03:23 2019 (r350850) @@ -811,8 +811,8 @@ ufs_chown(vp, uid, gid, cred, td) ip->i_dquot[GRPQUOTA] = NODQUOT; } change = DIP(ip, i_blocks); - (void) chkdq(ip, -change, cred, CHOWN); - (void) chkiq(ip, -1, cred, CHOWN); + (void) chkdq(ip, -change, cred, CHOWN|FORCE); + (void) chkiq(ip, -1, cred, CHOWN|FORCE); for (i = 0; i < MAXQUOTAS; i++) { dqrele(vp, ip->i_dquot[i]); ip->i_dquot[i] = NODQUOT; From owner-svn-src-stable@freebsd.org Sat Aug 10 23:06:53 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1581DA86CF; Sat, 10 Aug 2019 23:06:53 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465d646XQ2z4KFk; Sat, 10 Aug 2019 23:06:52 +0000 (UTC) (envelope-from mckusick@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 D6F4252A0; Sat, 10 Aug 2019 23:06:52 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x7AN6qYl091521; Sat, 10 Aug 2019 23:06:52 GMT (envelope-from mckusick@FreeBSD.org) Received: (from mckusick@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7AN6qD4091519; Sat, 10 Aug 2019 23:06:52 GMT (envelope-from mckusick@FreeBSD.org) Message-Id: <201908102306.x7AN6qD4091519@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mckusick set sender to mckusick@FreeBSD.org using -f From: Kirk McKusick Date: Sat, 10 Aug 2019 23:06: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: r350851 - in stable/12/sbin: fsck_ffs newfs X-SVN-Group: stable-12 X-SVN-Commit-Author: mckusick X-SVN-Commit-Paths: in stable/12/sbin: fsck_ffs newfs X-SVN-Commit-Revision: 350851 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 23:06:53 -0000 Author: mckusick Date: Sat Aug 10 23:06:52 2019 New Revision: 350851 URL: https://svnweb.freebsd.org/changeset/base/350851 Log: MFC of 350682 Correct first superblock backup location in fsck_ffs.8. Modified: stable/12/sbin/fsck_ffs/fsck_ffs.8 stable/12/sbin/newfs/newfs.8 Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/fsck_ffs/fsck_ffs.8 ============================================================================== --- stable/12/sbin/fsck_ffs/fsck_ffs.8 Sat Aug 10 23:03:23 2019 (r350850) +++ stable/12/sbin/fsck_ffs/fsck_ffs.8 Sat Aug 10 23:06:52 2019 (r350851) @@ -29,7 +29,7 @@ .\" @(#)fsck.8 8.4 (Berkeley) 5/9/95 .\" $FreeBSD$ .\" -.Dd May 3, 2019 +.Dd August 10, 2019 .Dt FSCK_FFS 8 .Os .Sh NAME @@ -153,7 +153,7 @@ exits without attempting any further cleaning. Use the block specified immediately after the flag as the super block for the file system. An alternate super block is usually located at block 32 for UFS1, -and block 160 for UFS2. +and block 192 for UFS2. .Pp See the .Fl N Modified: stable/12/sbin/newfs/newfs.8 ============================================================================== --- stable/12/sbin/newfs/newfs.8 Sat Aug 10 23:03:23 2019 (r350850) +++ stable/12/sbin/newfs/newfs.8 Sat Aug 10 23:06:52 2019 (r350851) @@ -111,6 +111,9 @@ for more details on how to set this option. .It Fl b Ar block-size The block size of the file system, in bytes. It must be a power of 2. +.\" If changing the default block size and it causes the default +.\" fragment size to change, be sure to update the location of +.\" the first backup superblock on the fsck_ffs.8 manual page. The default size is 32768 bytes, and the smallest allowable size is 4096 bytes. The optimal block:fragment ratio is 8:1. @@ -143,6 +146,9 @@ ranging in value between .Ar blocksize Ns /8 and .Ar blocksize . +.\" If changing the default fragment size or it changes because of a +.\" change to the default block size, be sure to update the location +.\" of the first backup superblock on the fsck_ffs.8 manual page. The default is 4096 bytes. .It Fl g Ar avgfilesize The expected average file size for the file system. From owner-svn-src-stable@freebsd.org Sat Aug 10 23:08:36 2019 Return-Path: Delivered-To: svn-src-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A5F79A8793; Sat, 10 Aug 2019 23:08:36 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 465d843mW5z4KN5; Sat, 10 Aug 2019 23:08:36 +0000 (UTC) (envelope-from mckusick@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 62BF352A2; Sat, 10 Aug 2019 23:08:36 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x7AN8aPZ091684; Sat, 10 Aug 2019 23:08:36 GMT (envelope-from mckusick@FreeBSD.org) Received: (from mckusick@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7AN8aXK091682; Sat, 10 Aug 2019 23:08:36 GMT (envelope-from mckusick@FreeBSD.org) Message-Id: <201908102308.x7AN8aXK091682@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mckusick set sender to mckusick@FreeBSD.org using -f From: Kirk McKusick Date: Sat, 10 Aug 2019 23:08:36 +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: r350852 - in stable/11/sbin: fsck_ffs newfs X-SVN-Group: stable-11 X-SVN-Commit-Author: mckusick X-SVN-Commit-Paths: in stable/11/sbin: fsck_ffs newfs X-SVN-Commit-Revision: 350852 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Aug 2019 23:08:36 -0000 Author: mckusick Date: Sat Aug 10 23:08:35 2019 New Revision: 350852 URL: https://svnweb.freebsd.org/changeset/base/350852 Log: MFC of 350682 Correct first superblock backup location in fsck_ffs.8. Modified: stable/11/sbin/fsck_ffs/fsck_ffs.8 stable/11/sbin/newfs/newfs.8 Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/fsck_ffs/fsck_ffs.8 ============================================================================== --- stable/11/sbin/fsck_ffs/fsck_ffs.8 Sat Aug 10 23:06:52 2019 (r350851) +++ stable/11/sbin/fsck_ffs/fsck_ffs.8 Sat Aug 10 23:08:35 2019 (r350852) @@ -29,7 +29,7 @@ .\" @(#)fsck.8 8.4 (Berkeley) 5/9/95 .\" $FreeBSD$ .\" -.Dd May 3, 2019 +.Dd August 10, 2019 .Dt FSCK_FFS 8 .Os .Sh NAME @@ -153,7 +153,7 @@ exits without attempting any further cleaning. Use the block specified immediately after the flag as the super block for the file system. An alternate super block is usually located at block 32 for UFS1, -and block 160 for UFS2. +and block 192 for UFS2. .Pp See the .Fl N Modified: stable/11/sbin/newfs/newfs.8 ============================================================================== --- stable/11/sbin/newfs/newfs.8 Sat Aug 10 23:06:52 2019 (r350851) +++ stable/11/sbin/newfs/newfs.8 Sat Aug 10 23:08:35 2019 (r350852) @@ -113,6 +113,9 @@ for more details on how to set this option. .It Fl b Ar block-size The block size of the file system, in bytes. It must be a power of 2. +.\" If changing the default block size and it causes the default +.\" fragment size to change, be sure to update the location of +.\" the first backup superblock on the fsck_ffs.8 manual page. The default size is 32768 bytes, and the smallest allowable size is 4096 bytes. The optimal block:fragment ratio is 8:1. @@ -145,6 +148,9 @@ ranging in value between .Ar blocksize Ns /8 and .Ar blocksize . +.\" If changing the default fragment size or it changes because of a +.\" change to the default block size, be sure to update the location +.\" of the first backup superblock on the fsck_ffs.8 manual page. The default is 4096 bytes. .It Fl g Ar avgfilesize The expected average file size for the file system.