From owner-freebsd-hackers@freebsd.org Sun Dec 8 10:13:15 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F01771DF629 for ; Sun, 8 Dec 2019 10:13:15 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: from puchar.net (puchar.net [194.1.144.90]) (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 47W2G24c8nz3P2W for ; Sun, 8 Dec 2019 10:13:13 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: Received: from 127.0.0.1 (localhost [127.0.0.1]) by puchar.net (8.15.2/8.15.2) with ESMTPS id xB8ADVpZ040312 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Sun, 8 Dec 2019 11:13:32 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=puchar.net; s=default; t=1575800012; bh=fqJ2MXgz38YPUgPLlP372hUtM4xLdvoCImlEJ3eZ2VI=; h=Date:From:To:Subject; b=R26D4PbliR3234HK6wZQoQwcm0PmL604FWV84ehuhBOWOGwdVFP2lSGNpgO6Y7kFM zS4mTd27C8wWG5xQfy17N7CTs6yzMFUX70sHcMRrlpyQ3Ri6Xqq4tKYxHj4kuNp1xN 6EifaYPzXmuBFqPYU/VxuFUlE6/6ys2ZDfm7IGZk= Received: from localhost (puchar-wojtek@localhost) by puchar.net (8.15.2/8.15.2/Submit) with ESMTP id xB8ADV5l040309 for ; Sun, 8 Dec 2019 11:13:31 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) Date: Sun, 8 Dec 2019 11:13:31 +0100 (CET) From: Wojciech Puchar To: freebsd-hackers@freebsd.org Subject: first time using NVMe SSD Message-ID: User-Agent: Alpine 2.20 (BSF 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-Rspamd-Queue-Id: 47W2G24c8nz3P2W X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; dkim=fail (rsa verify failed) header.d=puchar.net header.s=default header.b=R26D4Pbl; dmarc=none; spf=pass (mx1.freebsd.org: domain of wojtek@puchar.net designates 194.1.144.90 as permitted sender) smtp.mailfrom=wojtek@puchar.net X-Spamd-Result: default: False [-4.55 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+mx]; R_DKIM_REJECT(1.00)[puchar.net:s=default]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; DMARC_NA(0.00)[puchar.net]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DKIM_TRACE(0.00)[puchar.net:-]; RCVD_IN_DNSWL_NONE(0.00)[90.144.1.194.list.dnswl.org : 127.0.10.0]; IP_SCORE(-3.25)[ip: (-8.60), ipnet: 194.1.144.0/24(-4.30), asn: 43476(-3.44), country: PL(0.07)]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:43476, ipnet:194.1.144.0/24, country:PL]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Dec 2019 10:13:16 -0000 what is an equivalent (if exist) to SMART (smartctl/smartd) for NVMe drives? From owner-freebsd-hackers@freebsd.org Sun Dec 8 10:34:49 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C820E1DFE5A for ; Sun, 8 Dec 2019 10:34:49 +0000 (UTC) (envelope-from trond.endrestol@ximalas.info) Received: from enterprise.ximalas.info (enterprise.ximalas.info [IPv6:2001:700:1100:1::8]) (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 "ximalas.info", Issuer "Hostmaster ximalas.info" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 47W2kw0gw9z3Q42 for ; Sun, 8 Dec 2019 10:34:47 +0000 (UTC) (envelope-from trond.endrestol@ximalas.info) Received: from enterprise.ximalas.info (Ximalas@localhost [127.0.0.1]) by enterprise.ximalas.info (8.15.2/8.15.2) with ESMTPS id xB8AYeqa032199 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO) for ; Sun, 8 Dec 2019 11:34:40 +0100 (CET) (envelope-from trond.endrestol@ximalas.info) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ximalas.info; s=default; t=1575801281; bh=X56ywyK92dibNsTDgh6QQn9iRC+rBukgfhOsIkYojII=; h=Date:From:To:Subject:In-Reply-To:References; b=rm/XkeqkwHklBUMLMV0v+Z3MDMax1WeqVKsLkfDqGUBbXOzpIxGEJmONNQuJhmA0M b0eJssq9FE5ytiQBaJpNiCNlUcrSQAXHBKjvXkYN+ETwpoL8HOeF5NW+7h7uxi02M6 +YykoOXKu5PP6axeRhOBbeZ3kK8lgcqOteGdlLcRLnp2Z8Z9vC0tSYMpllRLJO3CZO QX0WCKx7owM2KHg/zf7xFKKsRm3q4cl5GCs+rYiMbx1k+B4oWXHnilS7y8I1V+ecmQ rNhpCQf8es7XeyDwXbhEN5mMYMxfYgbgMNiR6OiKLw+38tOe9955XyT9Kz0PqnILRm 2Fs5xOybP9kTQ== Received: from localhost (trond@localhost) by enterprise.ximalas.info (8.15.2/8.15.2/Submit) with ESMTP id xB8AYeCN032196 for ; Sun, 8 Dec 2019 11:34:40 +0100 (CET) (envelope-from trond.endrestol@ximalas.info) X-Authentication-Warning: enterprise.ximalas.info: trond owned process doing -bs Date: Sun, 8 Dec 2019 11:34:40 +0100 (CET) From: =?UTF-8?Q?Trond_Endrest=C3=B8l?= Sender: Trond.Endrestol@ximalas.info To: freebsd-hackers@freebsd.org Subject: Re: first time using NVMe SSD In-Reply-To: Message-ID: References: User-Agent: Alpine 2.21.99999 (BSF 352 2019-06-22) OpenPGP: url=http://ximalas.info/about/tronds-openpgp-public-key MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on enterprise.ximalas.info X-Rspamd-Queue-Id: 47W2kw0gw9z3Q42 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=ximalas.info header.s=default header.b=rm/Xkeqk; dmarc=pass (policy=none) header.from=ximalas.info; spf=pass (mx1.freebsd.org: domain of trond.endrestol@ximalas.info designates 2001:700:1100:1::8 as permitted sender) smtp.mailfrom=trond.endrestol@ximalas.info X-Spamd-Result: default: False [-4.94 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[ximalas.info:s=default]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+a:c]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; RCVD_COUNT_THREE(0.00)[3]; HAS_XAW(0.00)[]; DKIM_TRACE(0.00)[ximalas.info:+]; DMARC_POLICY_ALLOW(-0.50)[ximalas.info,none]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:224, ipnet:2001:700::/32, country:NO]; IP_SCORE(-1.94)[ip: (-7.81), ipnet: 2001:700::/32(-1.20), asn: 224(-0.68), country: NO(-0.01)] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Dec 2019 10:34:49 -0000 On Sun, 8 Dec 2019 11:13+0100, Wojciech Puchar wrote: > what is an equivalent (if exist) to SMART (smartctl/smartd) for NVMe drives? sysutils/smartmontools has no problems detecting mine: Dec 6 20:43:58 E590T smartd[1307]: smartd 7.0 2018-12-30 r4883 [FreeBSD 13.0-CURRENT amd64] (local build) Dec 6 20:43:58 E590T smartd[1307]: Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org Dec 6 20:43:58 E590T smartd[1307]: Opened configuration file /usr/local/etc/smartd.conf Dec 6 20:43:58 E590T smartd[1307]: Drive: DEVICESCAN, implied '-a' Directive on line 23 of file /usr/local/etc/smartd.conf Dec 6 20:43:58 E590T smartd[1307]: Configuration file /usr/local/etc/smartd.conf was parsed, found DEVICESCAN, scanning devices Dec 6 20:43:58 E590T smartd[1307]: Device: /dev/nvme0, opened Dec 6 20:43:58 E590T smartd[1307]: Device: /dev/nvme0, Samsung SSD 970 EVO Plus 2TB, S/N:XXXXXXXXXXXXXXX, FW:2B2QEXM7, 2.00 TB Dec 6 20:43:58 E590T smartd[1307]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. Dec 6 20:43:58 E590T smartd[1307]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices -- Trond. From owner-freebsd-hackers@freebsd.org Sun Dec 8 11:27:45 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8A1711E0F56 for ; Sun, 8 Dec 2019 11:27:45 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: from puchar.net (puchar.net [194.1.144.90]) (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 47W3w05rwZz3xNr for ; Sun, 8 Dec 2019 11:27:44 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: Received: from 127.0.0.1 (localhost [127.0.0.1]) by puchar.net (8.15.2/8.15.2) with ESMTPS id xB8BS1f7075643 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sun, 8 Dec 2019 12:28:02 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=puchar.net; s=default; t=1575804482; bh=ZSYOaxQC2ERxReKG2+856SzgvaxhibhQ50h9ggv7rPw=; h=Date:From:To:cc:Subject:In-Reply-To:References; b=GM3sxr2Id4SyTeo9/uJMKb6pOcdsTPWZyZfOyNIltE8UAcHxw/K6bQivff31HUL0t 7Ev/d/tA5U46uBVxyFNqtgYuF481ngH1Of06oVKhuALeKAKFbzBddMpyWAk/inkgL8 Pg3R1WXTO0Ud/RhLwnEKdUHzRalcOUAuuj1Azq9o= Received: from localhost (puchar-wojtek@localhost) by puchar.net (8.15.2/8.15.2/Submit) with ESMTP id xB8BS18b075639; Sun, 8 Dec 2019 12:28:01 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) Date: Sun, 8 Dec 2019 12:28:01 +0100 (CET) From: Wojciech Puchar To: =?ISO-8859-15?Q?Trond_Endrest=F8l?= cc: freebsd-hackers@freebsd.org Subject: Re: first time using NVMe SSD In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (BSF 67 2015-01-07) MIME-Version: 1.0 X-Rspamd-Queue-Id: 47W3w05rwZz3xNr X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=fail (rsa verify failed) header.d=puchar.net header.s=default header.b=GM3sxr2I; dmarc=none; spf=pass (mx1.freebsd.org: domain of wojtek@puchar.net designates 194.1.144.90 as permitted sender) smtp.mailfrom=wojtek@puchar.net X-Spamd-Result: default: False [-3.54 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+mx:c]; R_DKIM_REJECT(1.00)[puchar.net:s=default]; MIME_GOOD(-0.10)[multipart/mixed,text/plain]; DMARC_NA(0.00)[puchar.net]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[puchar.net:-]; CTYPE_MIXED_BOGUS(1.00)[]; RCPT_COUNT_TWO(0.00)[2]; RCVD_IN_DNSWL_NONE(0.00)[90.144.1.194.list.dnswl.org : 127.0.10.0]; IP_SCORE(-3.24)[ip: (-8.57), ipnet: 194.1.144.0/24(-4.28), asn: 43476(-3.43), country: PL(0.07)]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:43476, ipnet:194.1.144.0/24, country:PL]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2] Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 8BIT X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Dec 2019 11:27:45 -0000 thank you. i tried /dev/nvd0 instead of /dev/nvme0 and assumed different tool is needed for NVMe. now all works. On Sun, 8 Dec 2019, Trond Endrestøl wrote: > On Sun, 8 Dec 2019 11:13+0100, Wojciech Puchar wrote: > >> what is an equivalent (if exist) to SMART (smartctl/smartd) for NVMe drives? > > sysutils/smartmontools has no problems detecting mine: > > Dec 6 20:43:58 E590T smartd[1307]: smartd 7.0 2018-12-30 r4883 [FreeBSD 13.0-CURRENT amd64] (local build) > Dec 6 20:43:58 E590T smartd[1307]: Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org > Dec 6 20:43:58 E590T smartd[1307]: Opened configuration file /usr/local/etc/smartd.conf > Dec 6 20:43:58 E590T smartd[1307]: Drive: DEVICESCAN, implied '-a' Directive on line 23 of file /usr/local/etc/smartd.conf > Dec 6 20:43:58 E590T smartd[1307]: Configuration file /usr/local/etc/smartd.conf was parsed, found DEVICESCAN, scanning devices > Dec 6 20:43:58 E590T smartd[1307]: Device: /dev/nvme0, opened > Dec 6 20:43:58 E590T smartd[1307]: Device: /dev/nvme0, Samsung SSD 970 EVO Plus 2TB, S/N:XXXXXXXXXXXXXXX, FW:2B2QEXM7, 2.00 TB > Dec 6 20:43:58 E590T smartd[1307]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. > Dec 6 20:43:58 E590T smartd[1307]: Monitoring 0 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices > > -- > Trond. > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > From owner-freebsd-hackers@freebsd.org Sun Dec 8 22:47:17 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 67F521BCBAE for ; Sun, 8 Dec 2019 22:47:17 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from mailman.nyi.freebsd.org (mailman.nyi.freebsd.org [IPv6:2610:1c1:1:606c::50:13]) by mx1.freebsd.org (Postfix) with ESMTP id 47WM046jDyz3xnm for ; Sun, 8 Dec 2019 22:47:16 +0000 (UTC) (envelope-from david@catwhisker.org) Received: by mailman.nyi.freebsd.org (Postfix) id E46221BCBAD; Sun, 8 Dec 2019 22:47:16 +0000 (UTC) Delivered-To: hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E42721BCBAC for ; Sun, 8 Dec 2019 22:47:16 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from mx.catwhisker.org (107-204-234-170.lightspeed.sntcca.sbcglobal.net [107.204.234.170]) (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 47WM032sbWz3xnl for ; Sun, 8 Dec 2019 22:47:14 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from albert.catwhisker.org (localhost [127.0.0.1]) by albert.catwhisker.org (8.15.2/8.15.2) with ESMTP id xB8MlCN8003420 for ; Sun, 8 Dec 2019 22:47:12 GMT (envelope-from david@albert.catwhisker.org) Received: (from david@localhost) by albert.catwhisker.org (8.15.2/8.15.2/Submit) id xB8MlCOV003419 for hackers@freebsd.org; Sun, 8 Dec 2019 14:47:12 -0800 (PST) (envelope-from david) Date: Sun, 8 Dec 2019 14:47:12 -0800 From: David Wolfskill To: hackers@freebsd.org Subject: I seem to be getting mixed messages from savecore(8) Message-ID: <20191208224712.GC1227@albert.catwhisker.org> Reply-To: hackers@freebsd.org MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="DKU6Jbt7q3WqK7+M" Content-Disposition: inline User-Agent: Mutt/1.12.2 (2019-09-21) X-Rspamd-Queue-Id: 47WM032sbWz3xnl X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of david@catwhisker.org designates 107.204.234.170 as permitted sender) smtp.mailfrom=david@catwhisker.org X-Spamd-Result: default: False [-2.36 / 15.00]; ARC_NA(0.00)[]; HAS_REPLYTO(0.00)[hackers@freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:107.204.234.170]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.20)[multipart/signed,text/plain]; PREVIOUSLY_DELIVERED(0.00)[hackers@freebsd.org]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; RCVD_TLS_LAST(0.00)[]; DMARC_NA(0.00)[catwhisker.org]; SIGNED_PGP(-2.00)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:7018, ipnet:107.192.0.0/12, country:US]; RCVD_COUNT_TWO(0.00)[2]; IP_SCORE(-2.96)[ip: (-9.86), ipnet: 107.192.0.0/12(-4.93), asn: 7018(0.04), country: US(-0.05)]; REPLYTO_EQ_TO_ADDR(5.00)[] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Dec 2019 22:47:17 -0000 --DKU6Jbt7q3WqK7+M Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable This is running a system based on head at r354689. (I realize that it claims r354207; there was an "issue" with respect to git notes & refs....) Evidence: test_host# savecore -v -v -C /dev/nda0p5 checking for kernel dump on device /dev/nda0p5 mediasize =3D 17179869184 bytes sectorsize =3D 512 bytes First dump headers: Dump header from device: /dev/nda0p5 Architecture: amd64 Architecture Version: 2 Dump Length: 247502187 Blocksize: 512 Compression: gzip Dumptime: Sun Dec 8 22:05:20 2019 Hostname: test_host.ix.nflxvideo.net Magic: FreeBSD Kernel Dump Version String: FreeBSD 13.0-CURRENT #0 r354207+6722509e5333-c729675(rele= ase-2 019Q4.3.1): Wed Dec 4 11:43:57 PST 2019 root@build_host:/mem/.obj/nano.nflx/mem/FreeBSD/amd64.amd64 /sys/RE Panic String: kdb_sysctl_panic Dump Parity: 3584057358 Bounds: 0 Dump Status: unknown Last dump headers: Dump header from device: /dev/nda0p5 Architecture: amd64 Architecture Version: 2 Dump Length: 247502187 Blocksize: 512 Compression: gzip Dumptime: Sun Dec 8 22:05:20 2019 Hostname: test_host.ix.nflxvideo.net Magic: FreeBSD Kernel Dump Version String: FreeBSD 13.0-CURRENT #0 r354207+6722509e5333-c729675(rele= ase-2 019Q4.3.1): Wed Dec 4 11:43:57 PST 2019 root@build_host:/mem/.obj/nano.nflx/mem/FreeBSD/amd64.amd64 /sys/RE Panic String: kdb_sysctl_panic Dump Parity: 3584057358 Bounds: 0 Dump Status: unknown A dump exists on /dev/nda0p5 test_host# savecore -v -v -m3 --libxo json /var/log/coredumps /dev/nda0p5 unable to open bounds file, using 0 checking for kernel dump on device /dev/nda0p5 test_host# echo $? 0 test_host# So: If I understand correctly, "savecore -C" detacts that a dump exists on the cited device, but invoking savecore to actually ... save ... the dump does not actually do that. Any suggestions for expressing my request in a way that savecore is a bit more likely to accept? Thanks! Peace, david --=20 David H. Wolfskill david@catwhisker.org With respect to Trump's impeachment and his willful delaying of that proces= s: "Justice delayed is justice denied" See http://www.catwhisker.org/~david/publickey.gpg for my public key. --DKU6Jbt7q3WqK7+M Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQGTBAEBCgB9FiEE4owz2QxMJyaxAefyQLJg+bY2PckFAl3tfXBfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEUy OEMzM0Q5MEM0QzI3MjZCMTAxRTdGMjQwQjI2MEY5QjYzNjNEQzkACgkQQLJg+bY2 Pcmf6ggAqUCZcYx6Wu1dOClqnA4C5fJeim3WekyUlo/doqUTVQCHYcZ+0ntKqYkf +Q3ej9EXV1rYuJwaHTehDwG7p/zP5EmdWZlYOvxLGD9ONgHwJVZ91F+fuwVjlEYC FWcCIBe4QqjEGEXUxRVIIkgp2EymPCNCmcozmYNUqS9cRyfFDmCe530wlC9sc57i VKtyY6M4+3ZTBsROK04WWPtlPvvz2djeAh+aDgVquHdPUY8GpEkd/RMfHxrm5on0 7TH578IhU+/86YeezDp9m2CaVidNdBFK5F4wkea2fZKTsVGdbILbK3YIMDLxbS3E Y7bPeN5LGEqFWc6phK2yf/RJA2SD+g== =hLvf -----END PGP SIGNATURE----- --DKU6Jbt7q3WqK7+M-- From owner-freebsd-hackers@freebsd.org Mon Dec 9 19:27:10 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id ABDF51DD7CB for ; Mon, 9 Dec 2019 19:27:10 +0000 (UTC) (envelope-from lobo@bsd.com.br) Received: from mail-il1-x144.google.com (mail-il1-x144.google.com [IPv6:2607:f8b0:4864:20::144]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47WtVg4jnVz3ysf for ; Mon, 9 Dec 2019 19:27:07 +0000 (UTC) (envelope-from lobo@bsd.com.br) Received: by mail-il1-x144.google.com with SMTP id z90so13768375ilc.8 for ; Mon, 09 Dec 2019 11:27:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsd.com.br; s=capeta; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=gM8w24lw6SqL1nck2qjE/4je/Ku7OQyUR5igHQ2CRGk=; b=AwSvCNsgmHxHNr/u9clH2wRA9/CvU2DCI19CeO+CjU1/wW8DloYpNlXiqBz1zXyHo3 4Cq0umUPmqNCq5V6Uu6gWs679lntWKfqTL4x/uzsyhVJ02BdC/c93C6WIaFenOwRH/yx sLq/mWh4MnjZM1Tkpx0AqHkvLvOc7o27bxu1Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=gM8w24lw6SqL1nck2qjE/4je/Ku7OQyUR5igHQ2CRGk=; b=ZkwsoGKw1rea6A1DIcZpP/BDiUG4JWUIeI8Xytk9isLgFHNAtVpiLX3GU9SR6m55Ve pXN+zdhNNBhwXBcx2t6Yr996Z49U0egOtls44wvrDMk9ER2CAaJ/Yu+/BtopCxT76kat j8CVbxn7oDYiJID4DoCry9sZ432A8+mzmUu1ewlyZ42Fr6u0ML8i0rOkqGKAyX5kYg+8 aP6KXwqjDb5lI5Q455Fa1pk4DfagvcbDSxOeWeeVHsdLH5j08/UOUIMm9EacyJpGixwp vYJSiubaXP+koG3XV7MJuKb+XtTF73zH75SE7zWUoU4WhxDAlrsXdhuezP5aqg3SZHMn BqwQ== X-Gm-Message-State: APjAAAWH//8AwwTeSf9B1/X7RM1aCkYI9LeiDIajG4DVyQoNPAs9uL+3 AXYOFY2q82xAnllt/q7d+LXiam/31GBW4dcLpPolrqgw X-Google-Smtp-Source: APXvYqykp7NvV6tOHzfptKgAEm0e0Z9jecQ4ZEJ2bvsbk+AxbO/Zunc3yOEJ2TNq77nnA8kVeNkfmMHwWHsMdMYGDd0= X-Received: by 2002:a92:860f:: with SMTP id g15mr29036092ild.297.1575919626101; Mon, 09 Dec 2019 11:27:06 -0800 (PST) MIME-Version: 1.0 References: <9C97A802-A542-44B3-A295-79CCF70BF8D2@webweaving.org> <20191102082641.52f64cc8@ernst.home> <20191111172543.74f95d07@ernst.home> <20191119153152.26a725cf@ernst.home> In-Reply-To: <20191119153152.26a725cf@ernst.home> From: Mario Lobo Date: Mon, 9 Dec 2019 16:24:45 -0300 Message-ID: Subject: Re: A bounty of 450 (was $100) for rtsx SD card reader driver. To: freebsd-hackers X-Rspamd-Queue-Id: 47WtVg4jnVz3ysf X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=bsd.com.br header.s=capeta header.b=AwSvCNsg; dmarc=none; spf=pass (mx1.freebsd.org: domain of lobo@bsd.com.br designates 2607:f8b0:4864:20::144 as permitted sender) smtp.mailfrom=lobo@bsd.com.br X-Spamd-Result: default: False [-2.02 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[bsd.com.br:s=capeta]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; SUBJECT_HAS_CURRENCY(1.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; DMARC_NA(0.00)[bsd.com.br]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[bsd.com.br:+]; RCVD_IN_DNSWL_NONE(0.00)[4.4.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; IP_SCORE(-0.52)[ip: (1.59), ipnet: 2607:f8b0::/32(-2.22), asn: 15169(-1.92), country: US(-0.05)]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Dec 2019 19:27:10 -0000 On Tue, Nov 19, 2019 at 11:31 AM Gary Jennejohn wrote: > On Tue, 19 Nov 2019 11:02:43 -0300 > Mario Lobo wrote: > > > On Mon, Nov 11, 2019 at 1:26 PM Gary Jennejohn > wrote: > > > > > On Sat, 2 Nov 2019 08:26:41 +0100 > > > Gary Jennejohn wrote: > > > > > > > On Fri, 1 Nov 2019 12:00:01 +0100 > > > > Dirk-Willem van Gulik wrote: > > > > > > > > > On 1 Nov 2019, at 11:48, Gleb Popov wrote: > > > > > > On Wed, Jun 19, 2019 at 10:22 AM Gleb Popov > > > > wrote: > > > > > > > > > > >> I've posted a bounty for this bug: > > > > > >> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204521 > > > > > > > > > > > > In case anyone is interested, the bounty is $375 already. > > > > > > > > > > It is 450$ now. > > > > > > > > > > > > > This raises several questions: > > > > 1) which version(s) of FreeBSD? > > > > 2) how does a developer get his/her hands on a device which uses this > > > > controller? It is not reasonable to expect a developer will to buy > a > > > > laptop or PCI card just to develop a driver. > > > > 3) what is the target environment? Laptop? PCI card? Some other > > > > device with an embedded controller? > > > > > > > > > > So, thanks to the generosity of a FreeBSD user I now have a laptop > > > on loan with one of the Realtek SD card reader controllers. > > > > > > I started working on porting the NetBSD code (basically the same as > > > the OpenBSD code), but the FreeBSD bus and mmc code is radically > > > different, so it will take quite a while to get a working driver. > > > > > > So far only the pci bus probe code works, but that's a start. > > > > > > > I Have an Acer with this chip and FBSD 11-3 stable to test this on. > > > > Thanks, but the port is being done in FreeBSD13. It might be > backported to 11/12, but at the moment that is not guaranteed. > Depends on how much the bus, pci and mmc code varies. I > haven't looked at the code in older versions. > > -- > Gary Jennejohn > Whenever the code is done, please let us know. I'll take a look and see what I can do for 11-STABLE. Thanks, Gary! -- Mario Lobo http://www.mallavoodoo.com.br FreeBSD since version 2.2.8 [not Pro-Audio.... YET!!] From owner-freebsd-hackers@freebsd.org Tue Dec 10 23:51:11 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BDA6B1E748B for ; Tue, 10 Dec 2019 23:51:11 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from mailman.nyi.freebsd.org (unknown [127.0.1.3]) by mx1.freebsd.org (Postfix) with ESMTP id 47XcJv251Wz4S1r for ; Tue, 10 Dec 2019 23:51:11 +0000 (UTC) (envelope-from david@catwhisker.org) Received: by mailman.nyi.freebsd.org (Postfix) id 478F41E7486; Tue, 10 Dec 2019 23:51:11 +0000 (UTC) Delivered-To: hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4752C1E7485 for ; Tue, 10 Dec 2019 23:51:11 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from mx.catwhisker.org (107-204-234-170.lightspeed.sntcca.sbcglobal.net [107.204.234.170]) (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 47XcJs5KQbz4S1m for ; Tue, 10 Dec 2019 23:51:08 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from albert.catwhisker.org (localhost [127.0.0.1]) by albert.catwhisker.org (8.15.2/8.15.2) with ESMTP id xBANp2rw031146 for ; Tue, 10 Dec 2019 23:51:02 GMT (envelope-from david@albert.catwhisker.org) Received: (from david@localhost) by albert.catwhisker.org (8.15.2/8.15.2/Submit) id xBANp1DM031145 for hackers@freebsd.org; Tue, 10 Dec 2019 15:51:01 -0800 (PST) (envelope-from david) Date: Tue, 10 Dec 2019 15:51:01 -0800 From: David Wolfskill To: hackers@freebsd.org Subject: Re: I seem to be getting mixed messages from savecore(8) Message-ID: <20191210235101.GG27431@albert.catwhisker.org> Reply-To: hackers@freebsd.org References: <20191208224712.GC1227@albert.catwhisker.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="qoTlaiD+Y2fIM3Ll" Content-Disposition: inline In-Reply-To: <20191208224712.GC1227@albert.catwhisker.org> User-Agent: Mutt/1.12.2 (2019-09-21) X-Rspamd-Queue-Id: 47XcJs5KQbz4S1m X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of david@catwhisker.org designates 107.204.234.170 as permitted sender) smtp.mailfrom=david@catwhisker.org X-Spamd-Result: default: False [-2.35 / 15.00]; ARC_NA(0.00)[]; HAS_REPLYTO(0.00)[hackers@freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:107.204.234.170]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.20)[multipart/signed,text/plain]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[hackers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; RCVD_TLS_LAST(0.00)[]; DMARC_NA(0.00)[catwhisker.org]; SIGNED_PGP(-2.00)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:7018, ipnet:107.192.0.0/12, country:US]; RCVD_COUNT_TWO(0.00)[2]; IP_SCORE(-2.95)[ip: (-9.80), ipnet: 107.192.0.0/12(-4.90), asn: 7018(0.01), country: US(-0.05)]; REPLYTO_EQ_TO_ADDR(5.00)[] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Dec 2019 23:51:11 -0000 --qoTlaiD+Y2fIM3Ll Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In case anyone is interested, for the archives: On Sun, Dec 08, 2019 at 02:47:12PM -0800, David Wolfskill wrote: > ... > So: If I understand correctly, "savecore -C" detacts that a dump exists > on the cited device, but invoking savecore to actually ... save ... the > dump does not actually do that. The observed behavior is a result of attempting to implement encrypted swap: I had successfully arranged to swap to /dev/nda0p5.eli; apparently performing a read-only open of /dev/nda0p5: =2E.. 1062 int 1063 main(int argc, char **argv) 1064 { =2E.. 1027 /* 1028 * The fileargs capability does not currently provide a way= to limit 1029 * ioctls. 1030 */ 1031 (void)cap_rights_init(&rights, CAP_PREAD, CAP_WRITE, CAP_IO= CTL); 1032 capfa =3D fileargs_init(argc, argv, checkfor || keep ? O_RD= ONLY : O_RDWR, 1033 0, &rights, FA_OPEN); 1034 if (capfa =3D=3D NULL) { 1035 logmsg(LOG_ERR, "fileargs_init(): %m"); 1036 exit(1); 1037 } =2E.. 578 static void 579 DoFile(const char *savedir, int savedirfd, const char *device) 580 { =2E.. 618 if (verbose) 619 printf("checking for kernel dump on device %s\n", d= evice); 620=20 621 fddev =3D fileargs_open(capfa, device); 622 if (fddev < 0) { 623 logmsg(LOG_ERR, "%s: %m", device); 624 return; 625 } =2E... is OK, but read/write ... is not. (Which is not unreasonable.) > Any suggestions for expressing my request in a way that savecore is a > bit more likely to accept? My revised appraoch is to run savecore before starting swapping on the device (via swapon). That appears to work, though I don't know if that may cause a problem later on. (In this environment, swapon is being invoked explicitly in an /etc/rc.d script, rather than by virtue of /etc/fstab entrues (for example).) Peace, david --=20 David H. Wolfskill david@catwhisker.org Some might think an oath of office is as meaningful as a marriage vow. See http://www.catwhisker.org/~david/publickey.gpg for my public key. --qoTlaiD+Y2fIM3Ll Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQGTBAEBCgB9FiEE4owz2QxMJyaxAefyQLJg+bY2PckFAl3wL2VfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEUy OEMzM0Q5MEM0QzI3MjZCMTAxRTdGMjQwQjI2MEY5QjYzNjNEQzkACgkQQLJg+bY2 PcmvRQgApHs2fa2dKETczr0xjUzBPpc52fRladE8RoU2LYk+kx+K1fZBT7fS9fHC 94RAZoOiR68bvaMW98OZ6pMFk19edCd59tfSbalvDPD1UMmy+Nq5eLFT2duGJDWI GoEhY5/RUy9EsWnljpS6k7SHzK+8NRq38PGh2ih2FlgIdGyhMonO5W2mc1RSKgpA +LagxvY/AmBS823nH1c+1cWI7nNdZILIj7gggScILUHueWeGnZWy9mp7HopdtB88 BoiBB8FWMK3hQ+sMjv5fpe26eH/8UP2HUC85dVizQxq6Dzuvk+jgJdvm9qLiAWAy SrqJeNbtRKjvPZHVf8myqRWN7G5srA== =3wTZ -----END PGP SIGNATURE----- --qoTlaiD+Y2fIM3Ll-- From owner-freebsd-hackers@freebsd.org Wed Dec 11 18:17:29 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5D4751DD2B2 for ; Wed, 11 Dec 2019 18:17:29 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: from puchar.net (puchar.net [194.1.144.90]) (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 47Y4sM2kmWz4SBq for ; Wed, 11 Dec 2019 18:17:26 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: Received: from 127.0.0.1 (localhost [127.0.0.1]) by puchar.net (8.15.2/8.15.2) with ESMTPS id xBBIHhQw004057 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Wed, 11 Dec 2019 19:17:44 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=puchar.net; s=default; t=1576088264; bh=AUwyTYnDaGlXHpI+R7whdQ35GONmIDYQjJHpf2e5MrA=; h=Date:From:To:Subject; b=aw7yi0tLLQbpN1Idn6CC/GyRSA5OxFa2k5S8w3CPs5velEbpyPNvQjGd/nFyrd/Q+ Tkq5YI643/Ayoc5Q6E0Z7ZbpIy9j8inngIRFsp4FgQtn3w/zryXReCDHSyK18zn+Uk lXfdgpnDqRdgWHOWz4c7dQHch2b+n48AZ835FPdM= Received: from localhost (puchar-wojtek@localhost) by puchar.net (8.15.2/8.15.2/Submit) with ESMTP id xBBIHhIS004054 for ; Wed, 11 Dec 2019 19:17:43 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) Date: Wed, 11 Dec 2019 19:17:43 +0100 (CET) From: Wojciech Puchar To: freebsd-hackers@freebsd.org Subject: bhyve+PCIe passthrough = UEFI fail to boot Message-ID: User-Agent: Alpine 2.20 (BSF 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="1968328438-828518114-1576088263=:1013" X-Rspamd-Queue-Id: 47Y4sM2kmWz4SBq X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=fail (rsa verify failed) header.d=puchar.net header.s=default header.b=aw7yi0tL; dmarc=none; spf=pass (mx1.freebsd.org: domain of wojtek@puchar.net designates 194.1.144.90 as permitted sender) smtp.mailfrom=wojtek@puchar.net X-Spamd-Result: default: False [-2.93 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+mx]; R_DKIM_REJECT(1.00)[puchar.net:s=default]; HAS_ATTACHMENT(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; TO_DN_NONE(0.00)[]; MIME_GOOD(-0.10)[multipart/mixed,text/plain]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-0.999,0]; MIME_BAD_ATTACHMENT(1.60)[png]; DMARC_NA(0.00)[puchar.net]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DKIM_TRACE(0.00)[puchar.net:-]; RCVD_IN_DNSWL_NONE(0.00)[90.144.1.194.list.dnswl.org : 127.0.10.0]; IP_SCORE(-3.23)[ip: (-8.54), ipnet: 194.1.144.0/24(-4.27), asn: 43476(-3.41), country: PL(0.07)]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:43476, ipnet:194.1.144.0/24, country:PL]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Dec 2019 18:17:29 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1968328438-828518114-1576088263=:1013 Content-Type: text/plain; format=flowed; charset=US-ASCII i added PCIe USB controller card to server to be used in windows virtual machine, so i can have USB key (copy protection software for one app) visible directly in windows. USB key is pendrive compatible (actually you can use it as pendrive) + some propertiary functions. shouldn't matter IMHO as windows would handle it. i installed it. and as with instruction here https://wiki.freebsd.org/bhyve/pci_passthru i first booted freebsd, checked if it's detected (it was, as xhci1), then used pciconf -lv and got ppt0@pci0:2:0:0: class=0x0c0330 card=0xffffffff chip=0x01941033 rev=0x03 hdr=0x00 vendor = 'NEC Corporation' device = 'uPD720200 USB 3.0 Host Controller' class = serial bus subclass = USB so i put pptdevs="2/0/0" in loader.conf and rebooted. xhci1 doesn't show up again so everything seemed fine. then i modified my bhyve startup /usr/sbin/bhyve -s 0,hostbridge -m 22528M -H -S -c cpus=12,sockets=1,cores=12,threads=1 \ -s 7,fbuf,rfb=10.10.10.1:5900,password=passwordhere \ -s 3,ahci,hd:/dev/ada2p5.eli,hd:/dev/ada2p6.eli,hd:/dev/ada2p127.eli \ -s 5,virtio-net,tap0,mac=08:00:27:b7:ca:16 \ -s 30,virtio-rnd -s 31,lpc -U 0072c755-0e33-11ea-a92a-3c52820d28a6 \ -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -w windows by adding -s 8,passthru,2/0/0 \ this resulted in UEFI boot failed. in uefi shell i was unable to display directory of disk drive (attached screen shot). i've tried to change -s 8 to other numbers like 2,10,20 - no difference. What i'm doing wrong? 11.3-STABLE --1968328438-828518114-1576088263=:1013 Content-Type: application/octet-stream; name=1.png Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=1.png 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 --1968328438-828518114-1576088263=:1013-- From owner-freebsd-hackers@freebsd.org Wed Dec 11 18:59:14 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DD82C1DE201 for ; Wed, 11 Dec 2019 18:59:14 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: from puchar.net (puchar.net [194.1.144.90]) (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 47Y5nZ0hVFz4Vrp for ; Wed, 11 Dec 2019 18:59:13 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: Received: from 127.0.0.1 (localhost [127.0.0.1]) by puchar.net (8.15.2/8.15.2) with ESMTPS id xBBIxTd6017901 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 11 Dec 2019 19:59:29 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=puchar.net; s=default; t=1576090769; bh=DgXa7QlxeaczY6VygoTVZuk5lfg4XQEUFjgCi9iGM/k=; h=Date:From:To:cc:Subject:In-Reply-To:References; b=nyCPGvFb4DtthzNMCPI7TE+hshn6bOTVWLqUo/87KzxY6aTjr6hD9INbcAi8zMQsK exdPRYH+m3ED6i/XQwRDz0td4KwRni0H6P98Rj4S8hJVrpC2xCiHF2UvX611mTNTmF jywdNaWfSG9YF7OaHjL9CAW53CJ+NtUU6l9VQpW8= Received: from localhost (puchar-wojtek@localhost) by puchar.net (8.15.2/8.15.2/Submit) with ESMTP id xBBIxTOF017898; Wed, 11 Dec 2019 19:59:29 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) Date: Wed, 11 Dec 2019 19:59:29 +0100 (CET) From: Wojciech Puchar To: Wojciech Puchar cc: freebsd-hackers@freebsd.org Subject: bhyve+PCIe passthrough = UEFI fail to boot, part2 In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (BSF 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="1968328438-119168118-1576090769=:16243" X-Rspamd-Queue-Id: 47Y5nZ0hVFz4Vrp X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=fail (rsa verify failed) header.d=puchar.net header.s=default header.b=nyCPGvFb; dmarc=none; spf=pass (mx1.freebsd.org: domain of wojtek@puchar.net designates 194.1.144.90 as permitted sender) smtp.mailfrom=wojtek@puchar.net X-Spamd-Result: default: False [-2.91 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+mx:c]; R_DKIM_REJECT(1.00)[puchar.net:s=default]; HAS_ATTACHMENT(0.00)[]; MIME_GOOD(-0.10)[multipart/mixed,text/plain]; DMARC_NA(0.00)[puchar.net]; MIME_BAD_ATTACHMENT(1.60)[png]; NEURAL_HAM_LONG(-1.00)[-0.999,0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[puchar.net:-]; RCPT_COUNT_TWO(0.00)[2]; RCVD_IN_DNSWL_NONE(0.00)[90.144.1.194.list.dnswl.org : 127.0.10.0]; IP_SCORE(-3.22)[ip: (-8.50), ipnet: 194.1.144.0/24(-4.25), asn: 43476(-3.40), country: PL(0.07)]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:43476, ipnet:194.1.144.0/24, country:PL]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Dec 2019 18:59:14 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1968328438-119168118-1576090769=:16243 Content-Type: text/plain; format=flowed; charset=US-ASCII found this https://forums.freebsd.org/threads/pci-passthrough-bhyve-usb-xhci.65235/ applied this patch https://bugs.freebsd.org/bugzilla/attachment.cgi?id=195225 patch worked without problems all hunks succeeded reloaded vmm.ko after starting bhyve again system crashed (screen attached) what's to check next? On Wed, 11 Dec 2019, Wojciech Puchar wrote: > i added PCIe USB controller card to server to be used in windows virtual > machine, so i can have USB key (copy protection software for one app) visible > directly in windows. USB key is pendrive compatible (actually you can use it > as pendrive) + some propertiary functions. shouldn't matter IMHO as windows > would handle it. > > i installed it. and as with instruction here > > https://wiki.freebsd.org/bhyve/pci_passthru > > i first booted freebsd, checked if it's detected (it was, as xhci1), then > used pciconf -lv and got > > ppt0@pci0:2:0:0: class=0x0c0330 card=0xffffffff chip=0x01941033 > rev=0x03 hdr=0x00 > vendor = 'NEC Corporation' > device = 'uPD720200 USB 3.0 Host Controller' > class = serial bus > subclass = USB > > > so i put > pptdevs="2/0/0" > > in loader.conf and rebooted. xhci1 doesn't show up again so everything seemed > fine. > > then i modified my bhyve startup > > /usr/sbin/bhyve -s 0,hostbridge -m 22528M -H -S -c > cpus=12,sockets=1,cores=12,threads=1 \ > -s 7,fbuf,rfb=10.10.10.1:5900,password=passwordhere \ > -s 3,ahci,hd:/dev/ada2p5.eli,hd:/dev/ada2p6.eli,hd:/dev/ada2p127.eli \ > -s 5,virtio-net,tap0,mac=08:00:27:b7:ca:16 \ > -s 30,virtio-rnd -s 31,lpc -U 0072c755-0e33-11ea-a92a-3c52820d28a6 \ > -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -w windows > > > by adding -s 8,passthru,2/0/0 \ > > this resulted in UEFI boot failed. in uefi shell i was unable to display > directory of disk drive (attached screen shot). > > i've tried to change -s 8 to other numbers like 2,10,20 - no difference. > > What i'm doing wrong? > > 11.3-STABLE --1968328438-119168118-1576090769=:16243 Content-Type: application/octet-stream; name=1.png Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=1.png 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 Z/9WlQH6MuM2sl47JzWzUYDOPmcGdMLFUbU3zT7PD9Bj78PQH1wBAABLcLAE BwAAAN5agI5WzAjlP3w78lCEcYBWynK+8/aXqEF/lGtAr/1lqRdyAWi97uh1 Wx6EsN6dCi3X4ogWgJYzoFkAmgDdH6Af6rN3U7Qru9bFngzQTSHjXmUSZkCn D9AJMTp5bnL6JT7SZO6JWjazngEAIEBzEEIAAAC8lwDt/wiCqECLE3HejGY3 G003e+DEATpeAFpcNJuOrM81u3RpCeJMteV2F4BudwO00/FYAJoAHfOuC736 7LUL3QBdl+nZvdoTsnX3mTOgk9fimGuATtnECdAAALyBAL0ybMwpQA8ux0GA BgAAwJIH6GjRDPEPX98PBPvGj1Oy1vDUC6dUcYpnTvFCJmmpbmuXVo8u50Hb 8RrQ9k3k2mEJDgL0rwD9UJ/dVt6+3LUudp36Xlyfhb1zx2mkDdAJ61okHIQw zfIXYw9COLhDyonYky4DAgAA3kaAHjXSrAE9dp41ARoAAABLGKA9OW3Z83z/ hwzQgtORrGtPznFuOVI001mrWOq5Wbowe/XZqFnxYQnjbG23bffW5UklQMsA 3c736rPbzMkAff4oQMup0M0CP9wCAIC3tATHpCmZAA0AAIA3HqCDIHBuXffW tZuW60X1+S4SNWjz2ovnPsfrcqhn1dK5rM9aRQZos+kYDdtsOfZNVJ+vXfva ca55UgnQUYC+Ud1m1rnKOg0hDtB7Tj3zsCVLfQYAAAseoNPvHAfoifaf7rMQ oAEAALBkAVqo1kzn2qlWqmZTLuss9GZAx5OgjbpdbXt6zVbLMkCXogDdPfbg w+rPcgHoW9du284NTyoB+hG3pdiVPauS4+dYAACwRGTbnafpPgsBGgAAAMsX oLWyVq2Z1VpVP9O1S7NUsY3mr6wsA3S0+nPx1OhffyMO0PHcZzkVum7ZbVu/ MHhGCdAAAACYKwI0AAAAlilAmw2zdFzSz3S7bVfrpmzQMjHLlZ0FuQz0tVs8 0gpfleKJXnpYf8NoOHLWc8c3m456oqnHJfVQFTfCM0qABgAAAAEaAAAABOhH k6CNC8NuWoLZMI1KVb809Zod1WfPqFmK+JfuoSpPj7TeDOhqw9bOjeKBquwr 6nGpdFyy2zbP6DsP0AAAAHgZBGgAAAAsTYAW/3g1LgyhdKrpZ7o4I071C0M7 N4y6XTrVtbJerVSrNVPuc1wqHqiyO38vKvuKONXKmtkw5b+AeUaZAc2kJAAA gDkfHZEADQAAgOUL0PIghA3TblrWlSXOxxm6W6LF+Uo1Pq+VNWVfyf2by/6T 3ftzT5wWvhTEdnEVcYankwAd/1DEYDAYDAaDwZjHIEADAABgKQN0XJzjJTjs tu3cOO6t6/u++Net53niotkwtbKW/5zf+3Nv94/dWByglX0lnhbNc0mA7gVo /iQWAABgTstuEKABAACwfAE6ZlwYzo3T43leEAS9AF06LhW+FDJ/Z3YfGrQ4 n/s3F/8lIE8kAZoADQAAQIAGAAAAAXpMg65WqnbTcm/dIAjEv2593xfnxRat rMUBeu/PvZ7cvzn1UOVZJEAToAEAAAjQAAAAIEBPFqN76z6XjkvKvpL/nI+J 8zxzmDpAW1dmtWIYl+LVpellTZyK84JZq4oP2S1rih/GxLWshlmtVeObkjcr nOvivNhoNS1+XgUAAARoAAAAEKCBtxug27ZZq8oofKGLM0bFLJaN3KGe2dfE qThv1Ey5/UIX+1QvDbPe7dFPkrTdlrnZblpmXJwvjPg29TNNPVSV/aL0vRif UY9UvayJjxrnurhBfmoFAAAEaAAAABCggbcWoK2mJSvwpWE2TOXEKJxUjaZj 33rOne96vjgV58UWsV18VOwjJzKfyxKdzIjmOGtlTfle1M8NuXTMjyD8GcbE ebFFvzDkR0+jedYX8mCbz/mRDwCwmJ7814cHBIv8QpUHAD83JiWuRYAGAAAA ARoE6CEBOg7KZt3ULqpKuSq7c8ezblyz7Zotp6vtii1iu/ho8UzuadXNOBmP JD5aqRYPiuLnseBHIMePYaJRrcV7ygU6rCtz6gAtv1jfCDw1uHvQUf3bYteN 4t8UmZwFANMR38+rl1VjEmL/uMoNBmgZ5oBFEr9Q4/rs/wjd+9D1HtwN4/0i 9pcNWvx7hgANAAAAAjQI0I/mPjfkis9WNPG52nTsG7d6Zet1SatZ/eKN4qNy n6Yj9o+vGy/r/ITYLohP5955UWj2A196MuKN8qM/Au/OE/tXo+tOtyp0HKAD Tw2DavjTD+614K7otpQwMMOfVldQpUEDwBTiXyu6Pzzr3pY8u3tGcizPkadd vz4k9pcZumIMDdAhg7FII/4nk36m+/dhtREYlcCoBdV6pBGp912MzogdpIrc Iq4lrkuABgAAAAEaBOhfCcBuWtVKtOzGsWG2HKNhly7N0oWpCufDXMiPli4t safYX14ratBDRDOA/PsoM9+nE+0pG3RN/hHrFEc7fBSghWh47bxzpURJ2pIl Oqh67QIhCQAmpZ/prvgOe6MXr7WuplaoqYI4o17rPcUuuY/Y3/3hiesSoBlL FKCdm0C/DPSL6FSoRDE6Ujpz1BNLPbFLZVdc1GPRbvJaBGgAAAAQoEGA7k8A 1VrVrFe1C1POd5ZHHZRLcCin45SrYk+xvyGudWmKWxC3009sUQ9U99b1xLiT J75wP5rnxXuKM27HLR6o4hbMWvW5ATpq0G4r51wp3k2xu8U3CNAAME2ALuum ZyvtUlerlDtSSme6fmkoZVVploptrdemlbbW3e26JK4lrkuAZixLgNbKun0d aOdB6czXzoVAu5DUE6fwTdfPLevKMRuOdmYqB1X11JUfPZfktcoEaAAAABCg QYB+OG81LbNeFafKiaFdmIVjPX8UM6RDvXhUcjte4UCVF48j8Yei3cT+pQtT Oa3Gt2PWHtSrxrlerVS9qCZ7wp33aNx5dssS/2+3be/O7W0Ue8r9Pa9aM/Vz XdzOpAckHB6gm1mnUfDaSuAbga8HnibnRNOSJreysjKT7el3eOYVp759vPxL iydrKWhRgC601UJLzbfU3KWiHKvyvym3brFcUhpRgG7/Ss/xnoV2ybyT1yVA M5YmQJ9qVjsolX311FfLvjhTOveLx45yYLgdv3csZcG58Qr7evHEiXez24G4 LgEaAAAAyxqgxQ/nQ88DUwdos2FaDbN4apQuzPyBlt2PfNeyB7qgnurxD2O+ 78uNh0b2UI8/lP2uyy37mrhW1KDlYtDmA3mbB6rbcZ0bR5BN+e4R99aRc6Kj Ie7Gr+19VxG3YEU3NU2AvusP0IFzlbXrea9diOpzSZhJgO7vZfNoZ3PtcSt9 Y+kC9JNrJX8tz3kYp3uUXuzZmfm9GnxgX+bLmfdbCbMM0Kda9c7KNZXslZKp FXIninvn2R1n+1t2+zy318jvXRX2mvm9ZiHTLGSbSq6rKK4lrruwAVq88Ja0 lsbvLKrxPAJ09covHHj575F9L/vV3f2rZLe9IAisllv4Xi0ems6NvGheuZmP hthN7G82fQI0AAAA3kKApj5jJgHabsvDD9otO3egFw61zBd1T/ha2vum7e1r yrHW+2HM932xZe+73rWvy4tit6+lzFdVXFfcgt20414sD0tYk8eOd24cW3zG G0fm5nge9AOxsRugo3WfxT2JJ0qLPaNryVPjQq4iLe9he/oAHfwwwp++U890 A/Sd6ndU/7botfN+R59VrZtTMpt3gJ7iEy1ggJ7fJOtXDKMpP+9SBOg0N0KA XiKlE0271ddr22uV7c3j3eJ5Sfw3onhRWj/aWrlYj2ysnW6tfd9aL4t9ttZr u8JGfVfvGOK66QN0/+8tFiRAJ+zz5EOzus9jH4T+7WTo2QZo8XLVr/zND87G n9L67/baf6rZz4b4R4t55a79n7r6f1Vh/T+qcyP/PbP9l7bxhyX2F9cS1yVA AwAAYLkD9JP63PvJZOiW/h9deCIJ0E8DdMuyriyzaRWO9cwXdfdTcfuTuv2l tP1VKxyW+n8YU8vG9jd9e1+Xp7Gvmtzzs7yWuK64BfNK3lpM/uFqUwbuuB27 t457K2c3/3LriA9FBx704sMPijsT7SbuqhNf0WrJqXbi1iY6FOFDgC7G9VlO ef5hyQBdybrNvH9b9K8Lgnedd5u5mZS1UbNxBy8O3T60YvfvP/SmRn32Z6bG oR3wyZeQXCpHfVFjv4qxj8ZEsXJWIXXok5Lw5Qx+Lcn7J7w8Uj68CRfn96oY +nyNenGOmpae/DiMer2lfDu8yrz15WL1fcd+YkyAPi4Vb9S1483Vr5vrn7bc OzcIglJFW/+8ufZ1Y+1IEtvNpilOV482Vs7WVs7XVi7X1JuSuO5EAfol0+oz P8U8AvSkTZwAPeMAfVzS6t763/ba7/bqf+3V/1ir/6erJ6b4F0vuq7H6/wQr ohePuhvX/mOI/cW15NuEAA0AAIDlDdCD9Tk5T7NkB8YE6KZVOq/mj/TdT8Wt fwV183Mp9/1xfT7VNz+VNr9o0mdNnv8cXfxc2vqkimuJ64pbUM/lStAx9VC1 247dEp+iF6DlpOboDsRnosrcsuLDD8bHIbSbVhSg5bUscd22I25H3JrYzWyY xcPSoGrNHBWgu/XZ0/y7klPbiwJ0Tqbndt5r53zfHxugVx6PNKvWjuqVg2cS 9kzOwU8i4HPufMrUOLa5j716wh2Y9GufbYCe6FFKzsTJrXbsby+Sf6+Q5gGf 1dc7uE/K5yLhq07zu5bk5zfhrw3SPC9TPBTvIUCvDBtjA7R6VCpeF7e+7jq3 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 ym7IXc/d9Jz4IVX2m7n22QjL243aeqO+KXt0/VibRYA2zgw572mtUNmq5FZz 5kVneklQlq0rK3hWHCBeml3JljZK7o1rX9nzDNCNLb13B3R9Q6uu9Ffm5rbu efJHtH7ijdugIx4ivBuv9LGUTCaL74vyw3Ji5v/JFN/LAfHejSv/MfkyJEN7 vnvtyrEbe7q6rcoAvaeLp8ahYZ6Y0w3QEXoDdITpBOjNIQG6tO5rR4zgAAAA APDyA3SQnsufK9XFanNdya9ncoep3HEq267P+V0Zjit7pfRKsrAS+htWcrmc XqqIXzOHjuCoX2aqp/J23BtvYbma+BI6A1r8DttYa5hHhrgzMl4vV7v7qIKx G+qWqu2o+oGe+ys3zwAtp8t69+pzcKFv92R0gBb3349c4oBXGKAz75WF92rm i5X5GgRoWZ8Lq54M0Ft+eduv7I4K0PVNfeGDkvmiZpa03KpR3DTNY711WWxd Ftr1eaF1lGrtpLRd5SkHaP/W/dmdLbn3+c6WQzluzXZ9dkcMfb6qdyY+99Xn 87K4cjo7oE96A3Q+/+b+Dui1RnVJ/hlFoPKtIpQ+lcJK9IwCdNCU1W0j93cj oj6La4ofms11PajV89gBvd4+A+HAAGh5EsIdO9gBXT6R3bneNt3vtNqWVdkw s9+03KKW+6ZW1nS5/dmTVcu6lPVZPZK7nus7dlUc2Rugb/qlPycX/i7lvijt aR5TDtCt04p/qTkXtn1m2Se6f5B1drPJ1V/pObFcTiyWK7vN7Ga9sFkvfS6L r0mhstmoHc0kQJvnpnFm1LZr8pvUdbQTLfgmqu/Wy5vlxl6jG6CDn3/i4MpW xbl2ph6gS3ul4sbwHw/NbcM6dwT9yNKP7dqaWllu9h2jHVrBnwV4t2M36KgA 7XnWqSUeB8TDgvwDpUtbfMuLB4Tkv5K171XxoNFu0Hb/bmh5pDzVg7aryR/q u1oQoI0DPWz684sI0K2hm6Br226ckxAanIQQAAAAwLMN0NXFaulTufy5Ip5W l2rNdSW7kQ42PsvJG7vJ5nHDvrYz66n0SnLhUyrsxlM/KokvJeXIaJ9psHMS wvJuurKbrp7+PAnhnfhFyUx8Lae+lCKzUqLwtqBsKdXFSulj0ffl0Gfx26u2 p4krhcZaI2JU7+wCtLZnlj42u/W58lXp2/4c3azyb/Lm8agAfWyKw15bgK5s GtX9Vna1Vd4yJwzQ1RWlslRvbjSVLbW2ppRWdeuo0bpIy43Pp6nWYaq1nXA2 MuaR0ReOB88fGHESwpFjOh4SoO3DnwH6zvLvXPXcrBw6+pVXPnA8vyWelvbt 4GnHnmAVd63gaXGno7BtlnYM5bDpXcj6LAP0ZXXKAfptT4D+3AnQla+V7p+u d9VX6uqOKr5jxWvNJ0AHUzi8Gy/173pofW61jCP56u61GzZ/Y/o7oNfbA6AH AnTyu14Qn9kgPZ/LyRulI3fq32mVDbO8ZmS/yvqc/aqWV3U5fOPGt68849zT TtzSYiP/oZp7X8m+a3tb6QbonHtP+nMy256/UfhuTDdAt07rrc2F1m6mtZ9t HeZa12rrxjR3C+30XA7Sc+JrKfGpVNluZDZqlbV6UJ+F0lq9cjiduzEYoIMd 0Pm1vHKguDdBw/UWVhbE5YUfC+KBuzdAixcF6XnqAbq4Uch9Gf7jqr6uCbU1 tbaqigdD7dC0L53m9r1BFsqeaZ078vN+7Zvnvjiy9K3x8AAdcC4d40D3XFcG 6D87AVo26B+19jBlT2bo4BSF7QwdDH1Wt1VlU5Hbn3faO6APdHFl/NT7/AL0 sPocsC7lvwYVVofUZ3Gl3P58GVqfCdAAAAAAnn6AlhOf35VKn8pCMIIjuybT c/2sUtjLZrZSzo1TP6ilV5Op5UT6Q3iAXqkkvpYzKzX5O7jfUk+bxfVUkKFL mxnzUhdXit86s6s1cVi8uJSoLVbFr7Til1bzSPc9T9/TgqIVJz33BujurOfe AN13ZczGJX51Lrxt2BdO8X3TuXLF5TEC9D/xAvQ/rytANzeU6n7L/ztZPclm V1vi8xtmxEkI+4KpuVdr7Sel3WRrK9FaT2irxfa5rcz5fLM9IEC7+qVl3/pO +zR6nt+yb1v6jR/G8PpZt7527TWP1CBAexeVqQXov3Ld+Rv5N3l1R02n0zI2 JZO5v3Pimj5yFsefWXGh9r2m7WrzCdDi29IXj0HbRjAJerA+y0eiP+vNDflv YsG/Kc1pBvTy4BkItYU1s3LiVo7d4oGT3bET24Iz9S/I8ppRWtGzX2R9zn5R yiua6/0avqEeOdk3xURqIfFvIROICND5r3L7swzQy1MN0GeKDNA7Gdmgjwst z25dqe5O1tyvGLvl6kox+bmY+FBMvCtUthvp9Vp1qym+j2R9/lTKbNTK+7MK 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 TkSuQmCC --1968328438-119168118-1576090769=:16243-- From owner-freebsd-hackers@freebsd.org Wed Dec 11 22:35:39 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A6AAA1E1F83 for ; Wed, 11 Dec 2019 22:35:39 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from mailman.nyi.freebsd.org (mailman.nyi.freebsd.org [IPv6:2610:1c1:1:606c::50:13]) by mx1.freebsd.org (Postfix) with ESMTP id 47YBbH1QrRz3F0Z for ; Wed, 11 Dec 2019 22:35:39 +0000 (UTC) (envelope-from david@catwhisker.org) Received: by mailman.nyi.freebsd.org (Postfix) id 2E9B31E1F82; Wed, 11 Dec 2019 22:35:39 +0000 (UTC) Delivered-To: hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2E6061E1F81 for ; Wed, 11 Dec 2019 22:35:39 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from mx.catwhisker.org (107-204-234-170.lightspeed.sntcca.sbcglobal.net [107.204.234.170]) (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 47YBbF6LhKz3F0Y for ; Wed, 11 Dec 2019 22:35:37 +0000 (UTC) (envelope-from david@catwhisker.org) Received: from albert.catwhisker.org (localhost [127.0.0.1]) by albert.catwhisker.org (8.15.2/8.15.2) with ESMTP id xBBMZY97044298 for ; Wed, 11 Dec 2019 22:35:34 GMT (envelope-from david@albert.catwhisker.org) Received: (from david@localhost) by albert.catwhisker.org (8.15.2/8.15.2/Submit) id xBBMZYg1044297 for hackers@freebsd.org; Wed, 11 Dec 2019 14:35:34 -0800 (PST) (envelope-from david) Date: Wed, 11 Dec 2019 14:35:34 -0800 From: David Wolfskill To: hackers@freebsd.org Subject: Setting up encrypted swap: "swapon" vs. "swapctl -a" Message-ID: <20191211223534.GU27431@albert.catwhisker.org> Reply-To: hackers@freebsd.org MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="kSOhxpxUsM1s2qz/" Content-Disposition: inline User-Agent: Mutt/1.12.2 (2019-09-21) X-Rspamd-Queue-Id: 47YBbF6LhKz3F0Y X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of david@catwhisker.org designates 107.204.234.170 as permitted sender) smtp.mailfrom=david@catwhisker.org X-Spamd-Result: default: False [-2.33 / 15.00]; ARC_NA(0.00)[]; HAS_REPLYTO(0.00)[hackers@freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:107.204.234.170]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.20)[multipart/signed,text/plain]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[hackers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; RCVD_TLS_LAST(0.00)[]; DMARC_NA(0.00)[catwhisker.org]; SIGNED_PGP(-2.00)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:7018, ipnet:107.192.0.0/12, country:US]; RCVD_COUNT_TWO(0.00)[2]; IP_SCORE(-2.93)[ip: (-9.72), ipnet: 107.192.0.0/12(-4.86), asn: 7018(0.01), country: US(-0.05)]; REPLYTO_EQ_TO_ADDR(5.00)[] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Dec 2019 22:35:39 -0000 --kSOhxpxUsM1s2qz/ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I find that swapon(8) allows a -E flag: | The swapon utility adds the specified swap devices to the system... | The -E option causes each of following devices to receive a BIO_DELETE | command.... While "swapctl -a" is (otherwise) similar to "swapon,": | swapctl -E -a /dev/nda11p5.eli | usage: swapctl [-AghklmsU] [-a file ... | -d file ...] | swapctl -a /dev/nda11p5.eli | swapctl: adding /dev/nda11p5.eli as swap device | swapoff /dev/nda11p5.eli | swapon -E /dev/nda11p5.eli That said, I also note: | The swapctl utility exists primarily for those familiar with other | BSDs and may be used to add, remove, or list swap devices.... Should "swapctl -a" also accept & make use of -E? Peace, david --=20 David H. Wolfskill david@catwhisker.org Some might think an oath of office is as meaningful as a marriage vow. See http://www.catwhisker.org/~david/publickey.gpg for my public key. --kSOhxpxUsM1s2qz/ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQGTBAEBCgB9FiEE4owz2QxMJyaxAefyQLJg+bY2PckFAl3xbzZfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEUy OEMzM0Q5MEM0QzI3MjZCMTAxRTdGMjQwQjI2MEY5QjYzNjNEQzkACgkQQLJg+bY2 PcmO+ggApvDQ1AwQiqCY+wy4LmsMloYmFp5JOpb2g7icXFxw/K8vLOjuBo578bV3 vc/aF2CDVXrAEPQjej0/yCPoxPtmztPULnT/72g5bXaYaEvfJGo2xxBCA0Xkz7ZY khlcUBPiJNqa+eKJWtHN7iIo5yiZUhBoCJ72xcijWlM89g/fClcgFUqaYU80I4YH Eflw6gjaWsuMS6qkJx/wtqCQOC7xds/7cX8b/Gs/JePqb38NAjSMI8R1a9ADKZXp 6qKpvICa6KDGF4EmXShwTthVYftkJ94Bg66qXFt+yf9vRyHhw5/RUAWchqbpb4fv qZvRtztfYv9WK53G+/LDa+mjaCxnjQ== =vEOv -----END PGP SIGNATURE----- --kSOhxpxUsM1s2qz/-- From owner-freebsd-hackers@freebsd.org Thu Dec 12 12:19:52 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 02B8D1CF8CD for ; Thu, 12 Dec 2019 12:19:52 +0000 (UTC) (envelope-from jhs@berklix.com) Received: from slim.berklix.org (slim.berklix.org [94.185.90.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "slim.berklix.org", Issuer "slim.berklix.org" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 47YXtH0GQfz4T6Z; Thu, 12 Dec 2019 12:19:50 +0000 (UTC) (envelope-from jhs@berklix.com) Received: from mart.js.berklix.net (p2E52CDCB.dip0.t-ipconnect.de [46.82.205.203]) (authenticated bits=128) by slim.berklix.org (8.15.2/8.15.2) with ESMTPSA id xBCBJEdZ043083 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 12 Dec 2019 12:19:18 +0100 (CET) (envelope-from jhs@berklix.com) Received: from fire.js.berklix.net (fire.js.berklix.net [192.168.91.41]) by mart.js.berklix.net (8.14.3/8.14.3) with ESMTP id xBCBJE4k034104; Thu, 12 Dec 2019 12:19:14 +0100 (CET) (envelope-from jhs@berklix.com) Received: from fire.js.berklix.net (localhost [127.0.0.1]) by fire.js.berklix.net (8.14.7/8.14.7) with ESMTP id xBCBJ2Jo017249; Thu, 12 Dec 2019 12:19:14 +0100 (CET) (envelope-from jhs@berklix.com) Message-Id: <201912121119.xBCBJ2Jo017249@fire.js.berklix.net> To: freebsd-hackers@freebsd.org cc: Devin Teske Subject: Re: [FreeBSD-Announce] BSD-Licensed Combinatorics library/utility From: "Julian H. Stacey" Organization: http://berklix.com/jhs http://stolenvotes.uk User-agent: EXMH on FreeBSD http://berklix.com/free/ X-From: http://www.berklix.org/~jhs/ In-reply-to: Your message "Thu, 05 Dec 2019 16:09:26 -0800." <51AD9B50-9488-45CE-878F-EE97F6914E49@freebsd.org> Date: Thu, 12 Dec 2019 12:19:01 +0100 X-Rspamd-Queue-Id: 47YXtH0GQfz4T6Z X-Spamd-Bar: +++++++++ Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of jhs@berklix.com has no SPF policy when checking 94.185.90.68) smtp.mailfrom=jhs@berklix.com X-Spamd-Result: default: False [9.00 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; MISSING_MIME_VERSION(2.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; AUTH_NA(1.00)[]; DMARC_NA(0.00)[berklix.com]; HAS_ORG_HEADER(0.00)[]; RCVD_COUNT_THREE(0.00)[4]; IP_SCORE(0.01)[ip: (0.04), ipnet: 94.185.88.0/22(0.02), asn: 33824(-0.01), country: DE(-0.02)]; NEURAL_SPAM_MEDIUM(1.00)[0.997,0]; RCPT_COUNT_TWO(0.00)[2]; RCVD_IN_DNSWL_NONE(0.00)[68.90.185.94.list.dnswl.org : 127.0.10.0]; NEURAL_SPAM_LONG(1.00)[0.999,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:33824, ipnet:94.185.88.0/22, country:DE]; RCVD_TLS_LAST(0.00)[]; GREYLIST(0.00)[pass,body]; RECEIVED_SPAMHAUS_PBL(0.00)[203.205.82.46.khpj7ygk5idzvmvt5x4ziurxhy.zen.dq.spamhaus.net : 127.0.0.10] X-Spam: Yes X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Dec 2019 12:19:52 -0000 Devin Teske wrote: > I’d like to announce a new utility/library for FreeBSD base available for review. > > https://reviews.freebsd.org/D16132 > > Preview HTML-formatted manuals: > https://fraubsd.org/doc/cmb.1.html > https://fraubsd.org/doc/cmb.3.html ... etc. It cost pain & disputes forcing other code from src/ to ports/ , despite which src/ has bloated. No more bloat please. First prove its popular in ports/, then consider promoting it to src/ More BSD usage stats support is not necessary to working systems, just an interest of a subset. It was premature to announce@ without URLs to committed code, best discuss on a normal list eg hackers@, or current@, arch@. Cheers -- Julian Stacey, Consultant Systems Engineer, BSD Linux http://berklix.com/jhs/ Shun liar right & looney left. http://tactical-vote.uk Brexit lies paid by super rich. http://stolenvotes.uk/#snouts_in_trough Referendum stole votes of 700,000 Brits in EU. 2,600,000 in UK then under 18. From owner-freebsd-hackers@freebsd.org Thu Dec 12 13:08:35 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DBADA1D0EBA for ; Thu, 12 Dec 2019 13:08:35 +0000 (UTC) (envelope-from lars@e.0x20.net) Received: from mail.0x20.net (mail.0x20.net [46.251.251.56]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 47YYyV5jBKz4WP5; Thu, 12 Dec 2019 13:08:34 +0000 (UTC) (envelope-from lars@e.0x20.net) Received: from e.0x20.net (mail.0x20.net [46.251.251.56]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3096 bits) server-digest SHA256) (No client certificate requested) by mail.0x20.net (Postfix) with ESMTPS id F2B44B8E72; Thu, 12 Dec 2019 14:08:25 +0100 (CET) Received: (from lars@localhost) by e.0x20.net (8.15.2/8.15.2/Submit) id xBCD8PQg062965; Thu, 12 Dec 2019 14:08:25 +0100 (CET) (envelope-from lars) Date: Thu, 12 Dec 2019 14:08:25 +0100 From: Lars Engels To: "Julian H. Stacey" Cc: freebsd-hackers@freebsd.org, Devin Teske Subject: Re: [FreeBSD-Announce] BSD-Licensed Combinatorics library/utility Message-ID: <20191212130825.GJ5400@e.0x20.net> References: <51AD9B50-9488-45CE-878F-EE97F6914E49@freebsd.org> <201912121119.xBCBJ2Jo017249@fire.js.berklix.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <201912121119.xBCBJ2Jo017249@fire.js.berklix.net> X-Editor: VIM - Vi IMproved 8.0 User-Agent: Mutt/1.12.2 (2019-09-21) X-Rspamd-Queue-Id: 47YYyV5jBKz4WP5 X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of lars@e.0x20.net has no SPF policy when checking 46.251.251.56) smtp.mailfrom=lars@e.0x20.net X-Spamd-Result: default: False [-0.49 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.88)[-0.883,0]; RCPT_COUNT_THREE(0.00)[3]; TO_DN_SOME(0.00)[]; FROM_HAS_DN(0.00)[]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[freebsd.org]; AUTH_NA(1.00)[]; NEURAL_HAM_LONG(-0.60)[-0.603,0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; IP_SCORE(-0.20)[ip: (-0.98), ipnet: 46.251.251.0/24(-0.49), asn: 31400(0.47), country: DE(-0.02)]; R_SPF_NA(0.00)[]; FORGED_SENDER(0.30)[lme@freebsd.org,lars@e.0x20.net]; RCVD_COUNT_ONE(0.00)[1]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:31400, ipnet:46.251.251.0/24, country:DE]; FROM_NEQ_ENVFROM(0.00)[lme@freebsd.org,lars@e.0x20.net]; RCVD_TLS_ALL(0.00)[] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Dec 2019 13:08:35 -0000 On Thu, Dec 12, 2019 at 12:19:01PM +0100, Julian H. Stacey wrote: > Devin Teske wrote: > > I???d like to announce a new utility/library for FreeBSD base available for review. > > > > https://reviews.freebsd.org/D16132 > > > > Preview HTML-formatted manuals: > > https://fraubsd.org/doc/cmb.1.html > > https://fraubsd.org/doc/cmb.3.html > > ... etc. > > It cost pain & disputes forcing other code from src/ to ports/ , > despite which src/ has bloated. No more bloat please. It's no bloat: -r-xr-xr-x 1 root wheel 23K Dec 12 14:04 /usr/bin/cmp -r--r--r-- 1 root wheel 29K Dec 12 14:04 /usr/lib/debug/usr/bin/cmp.debug -r--r--r-- 1 root wheel 1.9K Dec 12 14:04 /usr/share/man/man1/cmp.1.gz -r--r--r-- 1 root wheel 151B Dec 12 14:04 /usr/tests/usr.bin/cmp/Kyuafile -r-xr-xr-x 1 root wheel 2.3K Dec 12 14:04 /usr/tests/usr.bin/cmp/cmp_test -r-xr-xr-x 1 root wheel 2.6K Dec 12 14:04 /usr/tests/usr.bin/cmp/cmp_test2 Given that on embedded systems debug, kyua and man pages are usually not installed, cmp(1) adds just 23 kB to the image. From owner-freebsd-hackers@freebsd.org Thu Dec 12 14:39:19 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 96E351D39A0 for ; Thu, 12 Dec 2019 14:39:19 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-qt1-x82d.google.com (mail-qt1-x82d.google.com [IPv6:2607:f8b0:4864:20::82d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47YbzB5FF1z3Dlw for ; Thu, 12 Dec 2019 14:39:18 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-qt1-x82d.google.com with SMTP id k40so747008qtk.8 for ; Thu, 12 Dec 2019 06:39:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7NYJGzqkdHZ9mC2doomSqQ+RvDN/ymmX1c/t4jzNppE=; b=J8hACpm8L2u0QQ8qRgPaoDVhfs3lm0J/XqDngHHfIHRRKq573Sr+7VMBVUj50aYrYG rpbsPP56AFo6MHGS3s6rNIGkMbUdq/4IzUDIdrxq7eZAo4bp2gkbw2w8h+BCJGobPFFV gph6xqJEDn6T9FkyZ0pIWP0MS8Aprvx3Kt7UdoWZyCZauw99EwT0+TMEX324ZJE43mcN qwPBJ7VBX/DnxtnG9GUyp7r36bY+Dn8AYPnwtYKFq0YLCiBKorlOvUp1rtWDbsFvGOvn DURRGHHhqqxxc2VQhP6eCvDIkyFl03+/atkRzE0h7gjNt5ZIA8DZh4dFKJr4ogKxL/8n f0Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7NYJGzqkdHZ9mC2doomSqQ+RvDN/ymmX1c/t4jzNppE=; b=XSuDKSxYTED+5wLANiaUK4vHXQsCE8n9Jfb1o14OdJpecayQZkhysHDUxaMCI4Rszc A3UEZ9jXyZ36d2b6+VohoB1YcIhWbQfSgESFVO5RF6VdMzqI7rHGjZlFZW8T5Llfr9kd FMi8M4EeH8WITsXa/13xN0Ja281LL5J//2NQruevDdYm+MSaft2NozmzNVp3JhLt/y35 DnGFOwbaY9M7jf6qwMtOV2KNsHoRSK5lU3Pok1zrSndxu5Zwm3c2hzQx/dP42JwLAD1a fiID6BGdB2xx5EK7l8X0nVpDwak5GKzLKXwnWqYVp/m/vCopNGMJi4jkWsU2FY5fa2me CPrg== X-Gm-Message-State: APjAAAVP4MPZuxYwArvMjKKamrSy44PTli/H08i3Rsgtb+Z7h/zjBhoh +KWf/wpJryyuLwR0Cicr0PXR0qsv28pk/7HQL9lMGg== X-Google-Smtp-Source: APXvYqwxNQut5KBuY83RaWsZP9UbB207Qu+FZzLDR8cMVqC4yxOraaXTZ46vdJf5qV+9cxS875sNi6bzXDsF67RIeqw= X-Received: by 2002:ac8:74cb:: with SMTP id j11mr7313525qtr.32.1576161557275; Thu, 12 Dec 2019 06:39:17 -0800 (PST) MIME-Version: 1.0 References: <51AD9B50-9488-45CE-878F-EE97F6914E49@freebsd.org> <201912121119.xBCBJ2Jo017249@fire.js.berklix.net> <20191212130825.GJ5400@e.0x20.net> In-Reply-To: <20191212130825.GJ5400@e.0x20.net> From: Warner Losh Date: Thu, 12 Dec 2019 07:39:05 -0700 Message-ID: Subject: Re: [FreeBSD-Announce] BSD-Licensed Combinatorics library/utility To: Lars Engels Cc: "Julian H. Stacey" , FreeBSD Hackers , Devin Teske X-Rspamd-Queue-Id: 47YbzB5FF1z3Dlw X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=bsdimp-com.20150623.gappssmtp.com header.s=20150623 header.b=J8hACpm8; dmarc=none; spf=none (mx1.freebsd.org: domain of wlosh@bsdimp.com has no SPF policy when checking 2607:f8b0:4864:20::82d) smtp.mailfrom=wlosh@bsdimp.com X-Spamd-Result: default: False [-3.70 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[bsdimp-com.20150623.gappssmtp.com:s=20150623]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; NEURAL_HAM_LONG(-1.00)[-0.999,0]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; DMARC_NA(0.00)[bsdimp.com]; URI_COUNT_ODD(1.00)[21]; TO_MATCH_ENVRCPT_SOME(0.00)[]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[bsdimp-com.20150623.gappssmtp.com:+]; RCVD_IN_DNSWL_NONE(0.00)[d.2.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; R_SPF_NA(0.00)[]; FORGED_SENDER(0.30)[imp@bsdimp.com,wlosh@bsdimp.com]; MIME_TRACE(0.00)[0:+,1:+,2:~]; IP_SCORE(-2.71)[ip: (-9.35), ipnet: 2607:f8b0::/32(-2.21), asn: 15169(-1.91), country: US(-0.05)]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; FROM_NEQ_ENVFROM(0.00)[imp@bsdimp.com,wlosh@bsdimp.com]; RCVD_TLS_ALL(0.00)[]; RCVD_COUNT_TWO(0.00)[2] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Dec 2019 14:39:19 -0000 On Thu, Dec 12, 2019, 6:08 AM Lars Engels wrote: > On Thu, Dec 12, 2019 at 12:19:01PM +0100, Julian H. Stacey wrote: > > Devin Teske wrote: > > > I???d like to announce a new utility/library for FreeBSD base > available for review. > > > > > > https://reviews.freebsd.org/D16132 > > > > > > > Preview HTML-formatted manuals: > > > https://fraubsd.org/doc/cmb.1.html > > > > https://fraubsd.org/doc/cmb.3.html > > > > > ... etc. > > > > It cost pain & disputes forcing other code from src/ to ports/ , > > despite which src/ has bloated. No more bloat please. > > It's no bloat: > > -r-xr-xr-x 1 root wheel 23K Dec 12 14:04 /usr/bin/cmp > -r--r--r-- 1 root wheel 29K Dec 12 14:04 > /usr/lib/debug/usr/bin/cmp.debug > -r--r--r-- 1 root wheel 1.9K Dec 12 14:04 /usr/share/man/man1/cmp.1.gz > -r--r--r-- 1 root wheel 151B Dec 12 14:04 > /usr/tests/usr.bin/cmp/Kyuafile > -r-xr-xr-x 1 root wheel 2.3K Dec 12 14:04 > /usr/tests/usr.bin/cmp/cmp_test > -r-xr-xr-x 1 root wheel 2.6K Dec 12 14:04 > /usr/tests/usr.bin/cmp/cmp_test2 > > > Given that on embedded systems debug, kyua and man pages are usually not > installed, cmp(1) adds just 23 kB to the image. > Cmb and cmp are different things. Cmb is not yet in the system. But I'm with Julian on this one: this hasn't been socialized, seems auxiliary to our needs and could better be served as a port. There might be good arguments to include it, but I've not yet seen them clearly articulated yet. Warner _______________________________________________ > freebsd-hackers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > From owner-freebsd-hackers@freebsd.org Thu Dec 12 14:43:45 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id ED3331D3C8F for ; Thu, 12 Dec 2019 14:43:45 +0000 (UTC) (envelope-from lars@e.0x20.net) Received: from mailman.nyi.freebsd.org (unknown [127.0.1.3]) by mx1.freebsd.org (Postfix) with ESMTP id 47Yc4K4r3hz3F9M for ; Thu, 12 Dec 2019 14:43:45 +0000 (UTC) (envelope-from lars@e.0x20.net) Received: by mailman.nyi.freebsd.org (Postfix) id A5FC71D3C8E; Thu, 12 Dec 2019 14:43:45 +0000 (UTC) Delivered-To: hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A5C4D1D3C8D for ; Thu, 12 Dec 2019 14:43:45 +0000 (UTC) (envelope-from lars@e.0x20.net) Received: from mail.0x20.net (mail.0x20.net [46.251.251.56]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 47Yc4J4G9Nz3F9L for ; Thu, 12 Dec 2019 14:43:44 +0000 (UTC) (envelope-from lars@e.0x20.net) Received: from e.0x20.net (mail.0x20.net [46.251.251.56]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3096 bits) server-digest SHA256) (No client certificate requested) by mail.0x20.net (Postfix) with ESMTPS id 228F4B9848; Thu, 12 Dec 2019 15:43:42 +0100 (CET) Received: (from lars@localhost) by e.0x20.net (8.15.2/8.15.2/Submit) id xBCEhg10015018; Thu, 12 Dec 2019 15:43:42 +0100 (CET) (envelope-from lars) Date: Thu, 12 Dec 2019 15:43:42 +0100 From: Lars Engels To: Mark Millard ;, hackers@freebsd.org Subject: Re: [FreeBSD-Announce] BSD-Licensed Combinatorics library/utility Message-ID: <20191212144342.GK5400@e.0x20.net> References: <51AD9B50-9488-45CE-878F-EE97F6914E49@freebsd.org> <201912121119.xBCBJ2Jo017249@fire.js.berklix.net> <20191212130825.GJ5400@e.0x20.net> <17665081-A748-4C0B-B9AE-3FC2148E1EC5@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <17665081-A748-4C0B-B9AE-3FC2148E1EC5@yahoo.com> X-Editor: VIM - Vi IMproved 8.0 User-Agent: Mutt/1.12.2 (2019-09-21) X-Rspamd-Queue-Id: 47Yc4J4G9Nz3F9L X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of lars@e.0x20.net has no SPF policy when checking 46.251.251.56) smtp.mailfrom=lars@e.0x20.net X-Spamd-Result: default: False [-0.78 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.94)[-0.936,0]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; IP_SCORE(-0.20)[ip: (-0.97), ipnet: 46.251.251.0/24(-0.48), asn: 31400(0.47), country: DE(-0.02)]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[freebsd.org]; AUTH_NA(1.00)[]; NEURAL_HAM_LONG(-0.84)[-0.840,0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; R_SPF_NA(0.00)[]; FORGED_SENDER(0.30)[lme@freebsd.org,lars@e.0x20.net]; FREEMAIL_TO(0.00)[yahoo.com]; RCVD_COUNT_ONE(0.00)[1]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:31400, ipnet:46.251.251.0/24, country:DE]; FROM_NEQ_ENVFROM(0.00)[lme@freebsd.org,lars@e.0x20.net]; RCVD_TLS_ALL(0.00)[] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Dec 2019 14:43:46 -0000 On Thu, Dec 12, 2019 at 06:24:05AM -0800, Mark Millard wrote: > > > On 2019-Dec-12, at 05:08, Lars Engels wrote: > > > On Thu, Dec 12, 2019 at 12:19:01PM +0100, Julian H. Stacey wrote: > >> Devin Teske wrote: > >>> I???d like to announce a new utility/library for FreeBSD base available for review. > >>> > >>> https://reviews.freebsd.org/D16132 > >>> > >>> Preview HTML-formatted manuals: > >>> https://fraubsd.org/doc/cmb.1.html > >>> https://fraubsd.org/doc/cmb.3.html > >> > >> ... etc. > >> > >> It cost pain & disputes forcing other code from src/ to ports/ , > >> despite which src/ has bloated. No more bloat please. > > > > It's no bloat: > > > > -r-xr-xr-x 1 root wheel 23K Dec 12 14:04 /usr/bin/cmp > > -r--r--r-- 1 root wheel 29K Dec 12 14:04 /usr/lib/debug/usr/bin/cmp.debug > > -r--r--r-- 1 root wheel 1.9K Dec 12 14:04 /usr/share/man/man1/cmp.1.gz > > -r--r--r-- 1 root wheel 151B Dec 12 14:04 /usr/tests/usr.bin/cmp/Kyuafile > > -r-xr-xr-x 1 root wheel 2.3K Dec 12 14:04 /usr/tests/usr.bin/cmp/cmp_test > > -r-xr-xr-x 1 root wheel 2.6K Dec 12 14:04 /usr/tests/usr.bin/cmp/cmp_test2 > > > > > > Given that on embedded systems debug, kyua and man pages are usually not > > installed, cmp(1) adds just 23 kB to the image. > > Hmm: cmp? Should you be listing cmb related files instead? > > On my amd64 head -r355644 build, the system cmp files are a > close match to what you listed as far as sizes go and each > path that you listed already exists. Yes, you're right. I fat-fingered this. The resulting cmb(1) binary is a bit bigger than cmp: -r-xr-xr-x 1 root wheel 39K Dec 12 15:40 /usr/bin/cmb the library: -r--r--r-- 1 root wheel 27K Dec 12 15:42 /usr/lib/libcmb.so.0 From owner-freebsd-hackers@freebsd.org Thu Dec 12 15:11:21 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DEB881D45B0 for ; Thu, 12 Dec 2019 15:11:21 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from smtp-out-so.shaw.ca (smtp-out-so.shaw.ca [64.59.136.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 47Ych84pfZz3Gj4; Thu, 12 Dec 2019 15:11:20 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from spqr.komquats.com ([70.67.125.17]) by shaw.ca with ESMTPA id fQ7Wi9n9LRnrKfQ7YiXWmV; Thu, 12 Dec 2019 08:11:18 -0700 X-Authority-Analysis: v=2.3 cv=L7FjvNb8 c=1 sm=1 tr=0 a=VFtTW3WuZNDh6VkGe7fA3g==:117 a=VFtTW3WuZNDh6VkGe7fA3g==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=pxVhFHJ0LMsA:10 a=7Qk2ozbKAAAA:8 a=6I5d2MoRAAAA:8 a=Xea_XpbGAAAA:8 a=YxBL1-UpAAAA:8 a=HaXGrxfvVFRNQbgalFoA:9 a=QEXdDO2ut3YA:10 a=rHw5y3bcD-QA:10 a=CyYVZQk9z7MA:10 a=1lyxoWkJIXJV6VJUPhuM:22 a=IjZwj45LgO3ly-622nXo:22 a=BLLHKbpUVZJGxmrKK1Xx:22 a=Ia-lj3WSrqcvXOmTRaiG:22 a=3X63VSN7sdrHF8WCFIZG:22 Received: from [IPv6:2605:8d80:401:8b45:8f34:203b:d43c:b784] (unknown [72.143.216.31]) by spqr.komquats.com (Postfix) with ESMTPSA id 85B02D8; Thu, 12 Dec 2019 07:11:14 -0800 (PST) Date: Thu, 12 Dec 2019 07:10:49 -0800 User-Agent: K-9 Mail for Android In-Reply-To: References: <51AD9B50-9488-45CE-878F-EE97F6914E49@freebsd.org> <201912121119.xBCBJ2Jo017249@fire.js.berklix.net> <20191212130825.GJ5400@e.0x20.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [FreeBSD-Announce] BSD-Licensed Combinatorics library/utility To: freebsd-hackers@freebsd.org, Warner Losh , Lars Engels CC: FreeBSD Hackers , "Julian H. Stacey" , Devin Teske From: Cy Schubert Message-ID: <72753F50-8810-43C1-BDDD-E541278A146F@cschubert.com> X-CMAE-Envelope: MS4wfKKitkOPLZs6Y0P/MTaMN3kHc0EwlR+yhaDG+CVZ7jHDHNMfNoSQMyFwv7+Zf0We2KPH1UfWfO418C1goQ/YlqGWK4S9IEhtb1NPncF+xeYO1pQMpYHS yvVhH7UQRDIYkpXzC604Dkv3N7vnoaiKC9bah1O78UDCDbpZeU2gcBJVuldI26RvfKDuBcows1JKfKwkKImH5agubG2ydyl05K+d4IsiW3obkqe4AMjejws+ XnWTr1l1CyiaVrVLknYicgbKTZqBOX5SfruKJ3da5HAO1AG/Kh7C5ejNmK+SkPhP X-Rspamd-Queue-Id: 47Ych84pfZz3Gj4 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; dkim=none; spf=none (mx1.freebsd.org: domain of cy.schubert@cschubert.com has no SPF policy when checking 64.59.136.137) smtp.mailfrom=cy.schubert@cschubert.com X-Spamd-Result: default: False [-4.51 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RECEIVED_SPAMHAUS_PBL(0.00)[17.125.67.70.khpj7ygk5idzvmvt5x4ziurxhy.zen.dq.spamhaus.net : 127.0.0.11,31.216.143.72.khpj7ygk5idzvmvt5x4ziurxhy.zen.dq.spamhaus.net : 127.0.0.11]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; RCPT_COUNT_FIVE(0.00)[6]; RCVD_COUNT_THREE(0.00)[3]; TO_MATCH_ENVRCPT_SOME(0.00)[]; R_SPF_NA(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[137.136.59.64.list.dnswl.org : 127.0.5.1]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:6327, ipnet:64.59.128.0/20, country:CA]; MID_RHS_MATCH_FROM(0.00)[]; IP_SCORE(-2.31)[ip: (-5.98), ipnet: 64.59.128.0/20(-3.08), asn: 6327(-2.38), country: CA(-0.09)]; FROM_EQ_ENVFROM(0.00)[] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Dec 2019 15:11:21 -0000 On December 12, 2019 6:39:05 AM PST, Warner Losh wrote: >On Thu, Dec 12, 2019, 6:08 AM Lars Engels wrote: > >> On Thu, Dec 12, 2019 at 12:19:01PM +0100, Julian H=2E Stacey wrote: >> > Devin Teske wrote: >> > > I???d like to announce a new utility/library for FreeBSD base >> available for review=2E >> > > >> > > https://reviews=2Efreebsd=2Eorg/D16132 >> > >> > > >> > > Preview HTML-formatted manuals: >> > > https://fraubsd=2Eorg/doc/cmb=2E1=2Ehtml >> > >> > > https://fraubsd=2Eorg/doc/cmb=2E3=2Ehtml >> > >> > >> > =2E=2E=2E etc=2E >> > >> > It cost pain & disputes forcing other code from src/ to ports/ , >> > despite which src/ has bloated=2E No more bloat please=2E >> >> It's no bloat: >> >> -r-xr-xr-x 1 root wheel 23K Dec 12 14:04 /usr/bin/cmp >> -r--r--r-- 1 root wheel 29K Dec 12 14:04 >> /usr/lib/debug/usr/bin/cmp=2Edebug >> -r--r--r-- 1 root wheel 1=2E9K Dec 12 14:04 >/usr/share/man/man1/cmp=2E1=2Egz >> -r--r--r-- 1 root wheel 151B Dec 12 14:04 >> /usr/tests/usr=2Ebin/cmp/Kyuafile >> -r-xr-xr-x 1 root wheel 2=2E3K Dec 12 14:04 >> /usr/tests/usr=2Ebin/cmp/cmp_test >> -r-xr-xr-x 1 root wheel 2=2E6K Dec 12 14:04 >> /usr/tests/usr=2Ebin/cmp/cmp_test2 >> >> >> Given that on embedded systems debug, kyua and man pages are usually >not >> installed, cmp(1) adds just 23 kB to the image=2E >> > >Cmb and cmp are different things=2E Cmb is not yet in the system=2E > >But I'm with Julian on this one: this hasn't been socialized, seems >auxiliary to our needs and could better be served as a port=2E There >might be >good arguments to include it, but I've not yet seen them clearly >articulated yet=2E > >Warner > >_______________________________________________ >> freebsd-hackers@freebsd=2Eorg mailing list >> https://lists=2Efreebsd=2Eorg/mailman/listinfo/freebsd-hackers >> To unsubscribe, send any mail to >"freebsd-hackers-unsubscribe@freebsd=2Eorg" >> >_______________________________________________ >freebsd-hackers@freebsd=2Eorg mailing list >https://lists=2Efreebsd=2Eorg/mailman/listinfo/freebsd-hackers >To unsubscribe, send any mail to >"freebsd-hackers-unsubscribe@freebsd=2Eorg" Agreed=2E A good example is mergemaster(8) which started out in ports and= was subsequently moved to base=2E Also, to run our testsuite in /usr/tests one must install devel/kyua from = ports=2E I see nothing wrong with putting it in ports for now=2E It should be there= to start with=2E --=20 Pardon the typos and autocorrect, small keyboard in use=2E=20 Cy Schubert FreeBSD UNIX: Web: https://www=2EFreeBSD=2Eorg The need of the many outweighs the greed of the few=2E Sent from my Android device with K-9 Mail=2E Please excuse my brevity=2E From owner-freebsd-hackers@freebsd.org Thu Dec 12 20:04:24 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 489E41D9E6B for ; Thu, 12 Dec 2019 20:04:24 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: from puchar.net (puchar.net [194.1.144.90]) (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 47YlBG3SGQz442h for ; Thu, 12 Dec 2019 20:04:22 +0000 (UTC) (envelope-from wojtek@puchar.net) Received: Received: from 127.0.0.1 (localhost [127.0.0.1]) by puchar.net (8.15.2/8.15.2) with ESMTPS id xBCK4b16087160 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 12 Dec 2019 21:04:37 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=puchar.net; s=default; t=1576181077; bh=t9qIwn9NI3jVLbOgTsuuFma8g5N20wl4DT42zZ8/yGw=; h=Date:From:To:cc:Subject:In-Reply-To:References; b=omD7Gow+3OZasNcdnHJVOfwaopNIawoxn34RFLRJt67FQaZGypZYvAohcJ99NiS9A REFbRMC+EaYlhni9n1Im72SdQDcDSIoZS5lEhQ4/PsaonoPJrBfqbphZa/ukLm3mH5 13d70xkxh/64JqBWblvndxbvt1yPI12nBwZw0bbc= Received: from localhost (puchar-wojtek@localhost) by puchar.net (8.15.2/8.15.2/Submit) with ESMTP id xBCK4bmE087156; Thu, 12 Dec 2019 21:04:37 +0100 (CET) (envelope-from puchar-wojtek@puchar.net) Date: Thu, 12 Dec 2019 21:04:37 +0100 (CET) From: Wojciech Puchar To: Wojciech Puchar cc: freebsd-hackers@freebsd.org Subject: Re: bhyve+PCIe passthrough = UEFI fail to boot In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (BSF 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Rspamd-Queue-Id: 47YlBG3SGQz442h X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; dkim=fail (rsa verify failed) header.d=puchar.net header.s=default header.b=omD7Gow+; dmarc=none; spf=pass (mx1.freebsd.org: domain of wojtek@puchar.net designates 194.1.144.90 as permitted sender) smtp.mailfrom=wojtek@puchar.net X-Spamd-Result: default: False [-4.51 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+mx]; R_DKIM_REJECT(1.00)[puchar.net:s=default]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[puchar.net]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[puchar.net:-]; RCPT_COUNT_TWO(0.00)[2]; RCVD_IN_DNSWL_NONE(0.00)[90.144.1.194.list.dnswl.org : 127.0.10.0]; IP_SCORE(-3.21)[ip: (-8.47), ipnet: 194.1.144.0/24(-4.24), asn: 43476(-3.39), country: PL(0.07)]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:43476, ipnet:194.1.144.0/24, country:PL]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Dec 2019 20:04:24 -0000 nobody have idea what's wrong? On Wed, 11 Dec 2019, Wojciech Puchar wrote: > i added PCIe USB controller card to server to be used in windows virtual > machine, so i can have USB key (copy protection software for one app) visible > directly in windows. USB key is pendrive compatible (actually you can use it > as pendrive) + some propertiary functions. shouldn't matter IMHO as windows > would handle it. > > i installed it. and as with instruction here > > https://wiki.freebsd.org/bhyve/pci_passthru > > i first booted freebsd, checked if it's detected (it was, as xhci1), then > used pciconf -lv and got > > ppt0@pci0:2:0:0: class=0x0c0330 card=0xffffffff chip=0x01941033 > rev=0x03 hdr=0x00 > vendor = 'NEC Corporation' > device = 'uPD720200 USB 3.0 Host Controller' > class = serial bus > subclass = USB > > > so i put > pptdevs="2/0/0" > > in loader.conf and rebooted. xhci1 doesn't show up again so everything seemed > fine. > > then i modified my bhyve startup > > /usr/sbin/bhyve -s 0,hostbridge -m 22528M -H -S -c > cpus=12,sockets=1,cores=12,threads=1 \ > -s 7,fbuf,rfb=10.10.10.1:5900,password=passwordhere \ > -s 3,ahci,hd:/dev/ada2p5.eli,hd:/dev/ada2p6.eli,hd:/dev/ada2p127.eli \ > -s 5,virtio-net,tap0,mac=08:00:27:b7:ca:16 \ > -s 30,virtio-rnd -s 31,lpc -U 0072c755-0e33-11ea-a92a-3c52820d28a6 \ > -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -w windows > > > by adding -s 8,passthru,2/0/0 \ > > this resulted in UEFI boot failed. in uefi shell i was unable to display > directory of disk drive (attached screen shot). > > i've tried to change -s 8 to other numbers like 2,10,20 - no difference. > > What i'm doing wrong? > > 11.3-STABLE From owner-freebsd-hackers@freebsd.org Fri Dec 13 07:00:18 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 26F741E5408 for ; Fri, 13 Dec 2019 07:00:18 +0000 (UTC) (envelope-from karnajitw@gmail.com) Received: from mail-vk1-xa2d.google.com (mail-vk1-xa2d.google.com [IPv6:2607:f8b0:4864:20::a2d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47Z1l45MxRz4gJ1 for ; Fri, 13 Dec 2019 07:00:16 +0000 (UTC) (envelope-from karnajitw@gmail.com) Received: by mail-vk1-xa2d.google.com with SMTP id t129so41654vkg.6 for ; Thu, 12 Dec 2019 23:00:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=9sa/UTUhgQgwP66skr9p3XLj8SaLRbTFuzVzsUJAv0I=; b=VtOaY3B5sCqPBS2DFSS64D+tsypoZ1RgIbKEAyBqQnfK1B3KSDzhSnXF0qqkpDA4GX 8kf1z6lPbSTrwNxBXLnW+gkYokCFNffDBFUY/bl+Ha9cEFFbTY0uRfzBTqHJM/vToB6q wyjfKAih0fJRqmG57P5KPvF4riE2YQW/WSOWH73E6F9Fd7evoy4wAB8Y9hZ+wj6L7V8R clLjLkqN8Kai4/BnoQV3PfpH5BByDtlWO9jLvdAu1DHJrAmxCqx9Ihyd+3GLHpmmEFWr 6JwjeVLy0Hv2R4qmqZ4VAz1oWXpPJGHrON4r+LCYTs/fBDvEuocm+0raIWnpKKfqlgak SOcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=9sa/UTUhgQgwP66skr9p3XLj8SaLRbTFuzVzsUJAv0I=; b=g4ksxn7fExAszNbnKvyFsUbARWaVmA37QQY8+wXztm9/gT7RrQPbVnh5JcKBnozuGo rpiUVzSCFgX9D5JXBhUazQFBkVY6fueags0An/n4SKxYp3KdTOV3Ly12k3cHc9uI23Hx nPiI850GO4xOa0MlJoSuKUAOySfnBHRWb1ycwTe5G72mBLn86ODN82B3eFcyTXYh6XUv /wljUVmtzTaJmYCExDONNKgJYtJizBLMFhcnME9Fd/iz16YYWg/2K/EcMRma+0ZuD2Cb 69plH/XvhvhaSUMfOT1RRSHyJp4zwfesDZQJeRmrFuSNFXK6qknHoGDJFBOlgF+NPFJS Qd2g== X-Gm-Message-State: APjAAAUeCLtr0awLYo2JqqMJCnfYOfQUrxcts3kr6dbh2XgknkaEErD7 3i9bRjBze0XOXKNXfQlc6CdYy6foH94vF8DF/Xjt+iuG X-Google-Smtp-Source: APXvYqyJnU26ExdpEHDSm53PhNN5ci/dYQ0/2d4O+Z02zTz7v0BLoS6V8TGgYR6ZihfdOMWGSgwqBJ7c6MlOc6IXkoc= X-Received: by 2002:a1f:3a8a:: with SMTP id h132mr12603484vka.95.1576220414377; Thu, 12 Dec 2019 23:00:14 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: karnajit wangkhem Date: Fri, 13 Dec 2019 12:30:03 +0530 Message-ID: Subject: Re: State of register edx on valgrind-freebsd after syscall To: freebsd-hackers@freebsd.org X-Rspamd-Queue-Id: 47Z1l45MxRz4gJ1 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=VtOaY3B5; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of karnajitw@gmail.com designates 2607:f8b0:4864:20::a2d as permitted sender) smtp.mailfrom=karnajitw@gmail.com X-Spamd-Result: default: False [-3.00 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; TO_DN_NONE(0.00)[]; IP_SCORE_FREEMAIL(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; IP_SCORE(0.00)[ip: (-9.25), ipnet: 2607:f8b0::/32(-2.20), asn: 15169(-1.91), country: US(-0.05)]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[d.2.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Dec 2019 07:00:18 -0000 Hi All, Closing on this thread, I got the issue behind this some time back, but still have to check on a proper fix. syscall-x86-freebsd.S: movl %eax, OFFSET_x86_EAX(%ecx) /* save EAX to vex */ movl %edx, OFFSET_x86_EDX(%ecx) /* save EDX to vex */ <<< We have to probably identify between a syscall that will return a single word(write syscall) or a double word(lseek). Regards, Karan On Tue, Dec 3, 2019 at 1:06 PM karnajit wangkhem wrote: > Hi All, > > Below is the valgrind-freebsd I used > > https://www.freshports.org/devel/valgrind > > https://bitbucket.org/stass/valgrind-freebsd/get/ce1acb28953f.tar.gz?dummy=/ > > $ ./valgrind --version > valgrind-3.10.1 > > Please consider the following assembly > ============================================================ > .section .data > .long 0 /* Valgrind segfaults without this dummy */ > .section .text > .global _start > STR0: > .ascii "Hello World\n" > kernel: > int $0x80 > ret > _start: > mov $2, %ebx /* Store value 2, 3, 4 in reg ebx, ecx, edx */ > mov $3, %ecx > mov $4, %edx > push $12 /* Push arguments on stack as per x86 freebsd > convention */ > push $STR0 > push $1 > mov $4, %eax /* write syscall no == 4 */ > call kernel > add %ebx, %eax /* Now lets add all the GP registers */ > add %ecx, %eax > add %edx, %eax > push %eax /* We expect 4(edx) + 3(ecx) + 2(ebx) + 12(eax) == > 21 */ > mov $1, %eax /* Perform exit syscall */ > call kernel > ============================================================ > > compile: > $ clang --target=i386-unknown-freebsd10.3 -nostdlib -nostdinc reg_minimal.s > > $ ./a.out > Hello World > $ echo $? > 21 > > $ ./valgrind ./a.out > ==69326== Memcheck, a memory error detector > ==69326== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. > ==69326== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright > info > ==69326== Command: ./a.out > ==69326== > Hello World > ==69326== > ==69326== HEAP SUMMARY: > ==69326== in use at exit: 0 bytes in 0 blocks > ==69326== total heap usage: 0 allocs, 0 frees, 0 bytes allocated > ==69326== > ==69326== All heap blocks were freed -- no leaks are possible > ==69326== > ==69326== For counts of detected and suppressed errors, rerun with: -v > ==69326== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) > > $ echo $? > 177 <<<<<<<<<< This is > wrong > > Now, if we modify the code slightly to return %edx instead, the return > value will looks like this > > $ echo $? > 160 > > So, the reason why eax + ebx + ecx + edx returned 177 instead of 21 was > because register edx has been clobbered by valgrind instrumentation of > syscall. > > In case of linux, the syscall calling convention is bit different and we > need to pass the arguments in registers ebx, ecx, edx, but even after the > syscall, these register value holds the same argument values > (valgrind-linux valgrind-3.7.0). > > Could someone give a pointer to which part of the freebsd-valgrind code > could be responsible for this bug? Or if possible where I can fix this? > > Regards, > Karan >