From nobody Mon Jan 15 00:28:58 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TCtL2653Hz576gw; Mon, 15 Jan 2024 00:28:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TCtL25T63z4gxQ; Mon, 15 Jan 2024 00:28:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705278538; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z46GuWdYj8k2n5Rj5QXxWEgUApintb0tf+PV6X8594Q=; b=uXtYjmzJKuTZK8LFdu3TIzVN5WqAqLbnZawpE/PjIAGvcTbVqS/kQpnkkm313YLTMybg3f EnqF7U1Itr/02JdA0ETNyjdnqIfL0WcMaGV7vyNXG311y4N6OYhRfGsGLaCsPNFsEBGWgl CT/qFWOB1H54h5ZBOd67Vtx+TNluDUxef5lp3AHTpiNpRMEEcTHVy38GYi+CA825N4GtGo VMQw1Q8IX7PdtsAavdujMDVSdLQt4ZAO+kjqne5YDyU6/rpR2NRakBGg+6LaQhumypHZll MHv65+9YyQKsMD3CYiolDwMGhaLlUqSBb2Sg3SMOw5uDOhyqjrd1wLDKOT0nJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705278538; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z46GuWdYj8k2n5Rj5QXxWEgUApintb0tf+PV6X8594Q=; b=Jh/5plVbwjt5rwz0YZ4bxAIndeFjbV/rbBRiJCwRs+VVZrMGZ4fOdAkmIpSTh+O3Auf2YY Vl/1GAsX5y3lUeWCbiHCkfHsPSGI4hC9kxuiJgelqCkNZZj6R9CTigW6ExPQF2D6Cds7c+ HOsF2RgqrwL81wh3jhLXe3PMHfXg4yKAkDZCs5kSxr/gk6xB21NQkDsFdpNMHza56qB4jI Rf4aaT1MJLHahmi4zypOBCzxesXgngVE5alHL8Y81ohdEMxAP33leu+lmU6fMrpk/wPW4d u+zfJbd3uusonwCISOmbTPv5kLo7jt1jRPmTfeJEw7/evSPyqAGIPi9RYoCm0w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705278538; a=rsa-sha256; cv=none; b=pZv4RhjMUWUFDIL3iursvR12Ufp8GRtUtQu7n+sUwj20l4VdRkuRJvhqOq6eC4VSQm30sS Z1Z3tK+3rLDZP6oURjezaK+zfGN2VZGcj4KUFiW4/nw+19dbtBodOrQ3nDa6VrqQ0X28uB b0U+F41kGBOlb/NGObOmYEeVtrUd+XS3zj/qIwYLC2Z3IvPUSehKFqH9STVZNiNkC6gLtT 0zkPe6Qks0nmzaFsN0KY6U2WNgYwvbh0ATU3wn9er/SRD5jjGtqyH7z7BW9ZZYK8Rr1LaN eAtv7e2artL5i/nsOASodW4lDmzmXDqTI+nRvsLzFmPz7ollILxyXNQqXkfYAw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TCtL24BbBzbZP; Mon, 15 Jan 2024 00:28:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40F0Swvw093852; Mon, 15 Jan 2024 00:28:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40F0Swnj093849; Mon, 15 Jan 2024 00:28:58 GMT (envelope-from git) Date: Mon, 15 Jan 2024 00:28:58 GMT Message-Id: <202401150028.40F0Swnj093849@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Xin LI Subject: git: 0efd9e1c6b86 - stable/14 - releng-gce: Advertise the availability of gVNIC support in GCE images. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: delphij X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 0efd9e1c6b86461d8719341ab95560a9d309a576 Auto-Submitted: auto-generated The branch stable/14 has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=0efd9e1c6b86461d8719341ab95560a9d309a576 commit 0efd9e1c6b86461d8719341ab95560a9d309a576 Author: Xin LI AuthorDate: 2024-01-12 05:38:04 +0000 Commit: Xin LI CommitDate: 2024-01-15 00:28:35 +0000 releng-gce: Advertise the availability of gVNIC support in GCE images. This marks FreeBSD GCE images as gVNIC capable by adding the --guest-os-features=GVNIC flag at creation time as suggested in GCE documentation[1]. This allows Generation 3 and newer GCE instances to leverage advanced networking capabilities and performance enhancements provided by gVNIC. Users will benefit from these improvements without needing to create custom images. [1] https://cloud.google.com/compute/docs/networking/using-gvnic#create_a_vm_with_gvnic_support Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D43411 (cherry picked from commit e872a4013fc325460924772f935b599151bd3d25) --- release/Makefile.gce | 1 + 1 file changed, 1 insertion(+) diff --git a/release/Makefile.gce b/release/Makefile.gce index e84b2df809a9..f244e6c89640 100644 --- a/release/Makefile.gce +++ b/release/Makefile.gce @@ -73,6 +73,7 @@ gce-do-upload-${_FS}: gs://${GCE_BUCKET}/ /usr/local/bin/gcloud compute images create ${GCE_TARGET_${_FS}} \ --family=${GCE_FAMILY}${GCE_FAMILY_SUFX} ${GCE_LICENSE} \ + --guest-os-features=GVNIC \ --source-uri gs://${GCE_BUCKET}/${GCE_TARGET_${_FS}}.tar.gz touch ${.OBJDIR}/${.TARGET} .endfor From nobody Mon Jan 15 00:30:25 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TCtMj69h1z576h9; Mon, 15 Jan 2024 00:30:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TCtMj5Crmz4h2T; Mon, 15 Jan 2024 00:30:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705278625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dJA6M1GD3l8sOYA84gkjilFwc+4jkoPLFnO0fUuLQvM=; b=wgoPnHqitAOPy+79wiWRF816GlsH3mE3XQitHrusG8IodYHklfSGoUx4dZl7mILWP+NSL/ /qTxcmmw1j5e7M2VxwuUzBGkM27wiq9TZDuGAjeNA1XmzJqFVc9sfYTGdt1BPk0idCD5Hl fqA4ukjJUQMMtC3CUdNgUdAIMi/q/n9iVNLH86QOhywQQAKd77RCi76P+J9Gj9LLZQ/Jkh 31i/p5TczZyb8NqN8NHn89KDjCs+Zp/KIw/aAi4hwdDC1ZYRghkmmtTICMCrb2qmaw4Rjn 5DNVs21wQXFDj5tb0EzTvccqb0L/fynY/iGHRlqUJ828wsL4FoPKUuQqyU0O2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705278625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dJA6M1GD3l8sOYA84gkjilFwc+4jkoPLFnO0fUuLQvM=; b=FpgHuUuLowKrh+jVSACs1aBR/48BYEwclbGeOY5144UGSRwY88T4j0hkejjDCWkzbHVV7N HPhRVfN858Bm21Qpo0G2OyMnoc/ooYhQLjQwekGxLfHOBrOF84LUuP6GimUqQl6Z8e07p6 ErezNfgEx3Y3mBdIcMxbA5hqrQcDCrqe8MyF6ktza4LKitxSeJiNNnRF0zt/1mytv7vpJq U+yoUx45ZkgMZmxnsC5YCDQjrEPT8D2O0uZcxrUzzA5WFYv0qKNbqj+0YAczDYREwm5qqV WMvMZgOl1A8NUS+O6vYCrp1cxcpJAjVYGVXOPW6cDjTfCY98mV1EWTO1FO5HZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705278625; a=rsa-sha256; cv=none; b=QWYu3d/aKG3JEjxqA419A8ZtvYVE6b9rEvBJqn+LmTVTC5dVTolu5n85XO7+o05pTN0A5b gT4Y2QEvJrfkg5IKYWe3uFkS5m2uRb68sYoFjQebcjWd7r8EULXKAkvTwJ/JvWpEyuOppC p5EgjWN9j4w5QK72VHHeoFVBKZ00MKoLnyvQSXbZAdh1cXgixrATprIoMqVfDVKiFiYYLy 1B3G61K6vgVJ01c0FhoUoEHFWXEBzc3KiJ54pzbUiKsfLSe6WiibREGFYo8jmmZlsKetTK l7hKst11GWMDJ57gBFXvUqjPVwzg6ymJig/AnEjHhFOm1ZYbac3/IeuPBmm8dA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TCtMj483JzbJX; Mon, 15 Jan 2024 00:30:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40F0UP5I002742; Mon, 15 Jan 2024 00:30:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40F0UPQ4002739; Mon, 15 Jan 2024 00:30:25 GMT (envelope-from git) Date: Mon, 15 Jan 2024 00:30:25 GMT Message-Id: <202401150030.40F0UPQ4002739@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Xin LI Subject: git: 44cd4b2fec02 - stable/13 - releng-gce: Advertise the availability of gVNIC support in GCE images. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: delphij X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 44cd4b2fec0288f6f8bca571a9fb7f012dbb6c6e Auto-Submitted: auto-generated The branch stable/13 has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=44cd4b2fec0288f6f8bca571a9fb7f012dbb6c6e commit 44cd4b2fec0288f6f8bca571a9fb7f012dbb6c6e Author: Xin LI AuthorDate: 2024-01-12 05:38:04 +0000 Commit: Xin LI CommitDate: 2024-01-15 00:30:12 +0000 releng-gce: Advertise the availability of gVNIC support in GCE images. This marks FreeBSD GCE images as gVNIC capable by adding the --guest-os-features=GVNIC flag at creation time as suggested in GCE documentation[1]. This allows Generation 3 and newer GCE instances to leverage advanced networking capabilities and performance enhancements provided by gVNIC. Users will benefit from these improvements without needing to create custom images. [1] https://cloud.google.com/compute/docs/networking/using-gvnic#create_a_vm_with_gvnic_support Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D43411 (cherry picked from commit e872a4013fc325460924772f935b599151bd3d25) --- release/Makefile.gce | 1 + 1 file changed, 1 insertion(+) diff --git a/release/Makefile.gce b/release/Makefile.gce index bdf7b31ba302..c0b4985937a0 100644 --- a/release/Makefile.gce +++ b/release/Makefile.gce @@ -72,6 +72,7 @@ gce-do-upload: gs://${GCE_BUCKET}/ /usr/local/bin/gcloud compute images create ${GCE_TARGET} \ --family=${GCE_FAMILY}${GCE_FAMILY_SUFX} ${GCE_LICENSE} \ + --guest-os-features=GVNIC \ --source-uri gs://${GCE_BUCKET}/${GCE_TARGET}.tar.gz touch ${.OBJDIR}/${.TARGET} From nobody Mon Jan 15 07:37:38 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD3rf6qhwz56DPW; Mon, 15 Jan 2024 07:37:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD3rf456Qz4dCK; Mon, 15 Jan 2024 07:37:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705304258; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MVZHOUwLeEcMFWlVwee8ClgcdLcOLkJ+7rClRCeZnkw=; b=yoRIxmkudeO+B+VM1uQsNITkgQ0ZlFnbzdedzC+Qk29dfbyjxLA3qFe+9UTfOKw0YxXoG/ tM9VgvSgW9CyP8uWaF0vyj0r4+g6FRFrT8TGQCdmUikavPlYAk3W+xSQz5WJ/QFKzXjms3 frbs+hYCJ4F3XX5UpF1rBYwU8jDPi+wlXjdP6d/JhEGcTwO1ZAGBc5yrg4e24LwQI87UT/ l4RevG/qgh+BOxBnU0ZSDzBdBUTLYmwpPsb6KC0InsvbbzbZTcr3wAH7jxBLwMyBx9jDCX YKNYLnsWPqiTw8QIBsMxrpN5Ms/Ewv58ksmY7AiE9xVGu86IiXYgxNrvYrkGTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705304258; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MVZHOUwLeEcMFWlVwee8ClgcdLcOLkJ+7rClRCeZnkw=; b=C7Tt1EGkyYGOp4F7AmtC/Q6+AAedrO1+yQrON++8UmUVNe3lxmsKwHYUmt2Zrtv+DV3vjv MkUGjFp7jON0Jq4MifEHidcb1AIx993SwDQO7yBtRDqPJLvTFq/gBFltQeMOO2v9D0PKRM rdDsNdQG63o3JoAdwqBJHWhaeMjNtDv+jcF2aTr19n6+rwZA2OkqOTKTS8KX0oejdGMn2u GgLAGDZxLgzeP+ia6O5ISSxdvovI63+9A3/Ja9hDjNv1IXTOiYqMFFTLqpGdBblN2gdyck qr1xNnw3ud6NjL1+k4uAHgEAW7OL0LofS7xYbhLfWYZOB+0JD3x/IREy+ow/cQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705304258; a=rsa-sha256; cv=none; b=T7MbvJKYip3MYlHmzW16j/Xh/7bjIw+xNX8phjNVwJYO0hT92wG2ofPSa3/UmKey9pGOWy LAkw2bG8dkkFbFkSNB1d/p7b+a0XQBCfw+zdF3Hggl8TixXnUcX5DeEHezQyoEYvWuqoG+ tAxwSVgHgSgFI3fZ3JEvqmev69AuZ5ZRYzgAcNQQ2pWeC5xWasGd6El/KG/+HZ/T1dD9mc Wywwm/h/YoAyhsq+DFiBcIlllJs5S22ZRi0kTapaIHTtmtx/hbuoDTiKdACV1tD7tg3ijW VOAtcZBYBIiizRDvI3oqxiRZ2mY4R5W0W+3S46RXo0nI8XO+RBkjBQFDoAWWSg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD3rf3B5xznbl; Mon, 15 Jan 2024 07:37:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40F7bcnX015695; Mon, 15 Jan 2024 07:37:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40F7bcX2015692; Mon, 15 Jan 2024 07:37:38 GMT (envelope-from git) Date: Mon, 15 Jan 2024 07:37:38 GMT Message-Id: <202401150737.40F7bcX2015692@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Wolfram Schneider Subject: git: 79e7fef944f7 - stable/13 - fix using man(1) with multiple pages List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wosch X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 79e7fef944f7f4bb6865d2b5d0d38b7933ed6e79 Auto-Submitted: auto-generated The branch stable/13 has been updated by wosch: URL: https://cgit.FreeBSD.org/src/commit/?id=79e7fef944f7f4bb6865d2b5d0d38b7933ed6e79 commit 79e7fef944f7f4bb6865d2b5d0d38b7933ed6e79 Author: Wolfram Schneider AuthorDate: 2024-01-08 15:53:11 +0000 Commit: Wolfram Schneider CommitDate: 2024-01-15 07:36:59 +0000 fix using man(1) with multiple pages PR: 275978 Reported by: Mohamed Akram Fixes: 789480702e490818244af11279868ba4f3dabe6b MFC after: 1 week (cherry picked from commit 1e82d882ed3372bcaf82451bfb865483a409ab1f) --- usr.bin/man/man.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/man/man.sh b/usr.bin/man/man.sh index 114ea9d7a0b2..9c90f0a6a9b5 100755 --- a/usr.bin/man/man.sh +++ b/usr.bin/man/man.sh @@ -973,7 +973,7 @@ do_man() { fi man_setup - for page in "$pages"; do + for page in "$@"; do decho "Searching for \"$page\"" man_find_and_display "$page" done From nobody Mon Jan 15 07:37:47 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD3rr0HK7z56DGQ; Mon, 15 Jan 2024 07:37:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD3rq5Y1Wz4dCQ; Mon, 15 Jan 2024 07:37:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705304267; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=891zYnCDSLuyronfB1ZiPNomI8PGwk6RPVI9BpYMsNs=; b=CsJSac/SCepWcwuImd+FHQbHo8k+5XBJ7aCIEdZ4ECI9JjxpnvKCMk21dpzwG5qR5gz9e7 eVfpprTPScq31wqI6jGowuq+C81XIcF2K+N5Eaixkmb6e3OJMArUoN8TifJZyJj26OcLA+ gEqguuTDz29+Iy8+3zQZqS4/GuOjRAqO10lfhmavfQgX1WSEOOlLC8cUIjEox2wJkKrzrA LLrByt+PtPbG/0X0WRMA7s6p39bI00EkXspxMv73WM/3Pt/iK3tHgEHcUJdHonGRpWpLos /F0cMd71SinjWUn/Ijgtg1Y13hRqP0Lh26aDI/sGtyJSFjPy4RUWImEs0HEkgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705304267; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=891zYnCDSLuyronfB1ZiPNomI8PGwk6RPVI9BpYMsNs=; b=DreBeSsZIrpxebHEvEd4xL/N43O8xbHBe2KQHv2SXjP2sBjXBzZylnh1URk0tFbfcG8XIf TB/MTkFoFwlY7IQHKjeV2GRQdag9NXbhTMu4yeOgLSi6hZVOSqZvaFl+SZcJLu7kZaLrd3 XLQp90XDEi79Pz79Y2/5jqXokwueOWR41PoFi+xaAvlxcJ7kYZ7Gi2RRqTnq+V+J9oUIlF gtoUotUshamtAW+fB1G+UzZMza7QbPAvNS4JdEQSlwfC+M652Qpes68dWg2RxNXdUE+VHR XEjw9h0lyDF1G9vTzyXfnA68XAfep/1w6qweafD+pxtCeBRDEYE2BNIfdke44A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705304267; a=rsa-sha256; cv=none; b=cLD++mcd3rN5kB6x66cC1tZXliM6WRkJ1XXVowU1bLvkiX/ESftke0B4DsGZKOzNiFrKPe mUMSQ4586TXgN2J0eGdFYpRdzrsdiVaRlN5Y3YlJWfxH7hFVLq8MhgNpTj2wzks3Xf/qgX DGxIMc5mfCmdre3+YRDwn1L95AsBbio0gQ2iNamHVRTGXUt5/qljONFLioT8pxTVI0YTWf OssIgidDL1I9WSW72IIqfWwdF74HiPxuVb/GCzPGRqjOHtab4VxHLsMO3Fppk5XoH32J9X VBAYKRfXI9fvCJp03EUnxGyozg+ARoc/e3hVhe4NPbelDgy88WSX8Wfp6+cWTw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD3rq4brPzp1V; Mon, 15 Jan 2024 07:37:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40F7blTT015846; Mon, 15 Jan 2024 07:37:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40F7blk0015843; Mon, 15 Jan 2024 07:37:47 GMT (envelope-from git) Date: Mon, 15 Jan 2024 07:37:47 GMT Message-Id: <202401150737.40F7blk0015843@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Wolfram Schneider Subject: git: 1540a1b6fc05 - stable/14 - fix using man(1) with multiple pages List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wosch X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1540a1b6fc05cfa192acec23c693bbe97e73d844 Auto-Submitted: auto-generated The branch stable/14 has been updated by wosch: URL: https://cgit.FreeBSD.org/src/commit/?id=1540a1b6fc05cfa192acec23c693bbe97e73d844 commit 1540a1b6fc05cfa192acec23c693bbe97e73d844 Author: Wolfram Schneider AuthorDate: 2024-01-08 15:53:11 +0000 Commit: Wolfram Schneider CommitDate: 2024-01-15 07:34:27 +0000 fix using man(1) with multiple pages PR: 275978 Reported by: Mohamed Akram Fixes: 789480702e490818244af11279868ba4f3dabe6b MFC after: 1 week (cherry picked from commit 1e82d882ed3372bcaf82451bfb865483a409ab1f) --- usr.bin/man/man.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/man/man.sh b/usr.bin/man/man.sh index 66af46a36243..7e2151295ba7 100755 --- a/usr.bin/man/man.sh +++ b/usr.bin/man/man.sh @@ -1040,7 +1040,7 @@ do_man() { do_full_search "${REGEXP}" fi - for page in "$pages"; do + for page in "$@"; do decho "Searching for \"$page\"" man_find_and_display "$page" done From nobody Mon Jan 15 08:17:49 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD4l16k3Vz56JNS; Mon, 15 Jan 2024 08:17:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD4l14gh3z4kvX; Mon, 15 Jan 2024 08:17:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705306669; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FoDAwr9CgzYZzaI0IztJfTVsPFyX9ZHBNQOx2UATImI=; b=b+0JGR7BMP9bAkH2dariLcOPNJSh6pga67fImDesNRWM78nmv0ujErVi8BC8RPcwwdKkXQ Lvm9zYs5y0Mkmi/dYw9kQD3r9z+4a92oNuDG8ZLpoVvA56NaMKvxYI8KGIRtdlz36mrx/s Om/4qrPF50CenZVW2QQtI6zO1PodgMsQdK3bNtke0FY/2k82qwPQtK9gKm8Ac5xzX9vf9g 1uEtX2vvPkMc5HH6O77ffQGpKB6989yVnC2oAtpwGnGjvj1SXrffJ23t3ynBZ9Vcr4SGv3 aIkILvd1D2/88MJ5HLJSDa4Cr0Ch2Z1gd6VHXq7kPysCris3kscx7a8hAUW0ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705306669; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FoDAwr9CgzYZzaI0IztJfTVsPFyX9ZHBNQOx2UATImI=; b=haz/j9m5C8Uldv84LFrvg2syLzqxMlDW+QePLlPmacNnyNCsskZij4w1CaRAYHnjW2syyP 0na52RojoZ9/k1jQmhaUwfupmPQFkn7nuh9o+IDlMDAGOJBjrs+1S6Eu1CUpiyfROFnVvl 3Sn+kyhVRZP+1D7iV9IGRfQh4O97sBEzepeSrv32DWeu6S0xg/Bpy1HLGPw3P8MAXLpFGX fepfae2S4C7HYxbr7GFHE4sDij0G8DIFnHOco5WEQljACLouHwNySMjyfsecjXB5E6RANS r8oZtOB6mQOdyHLEmbQL821PZYrlKHWFsKr+PGJTpMVeXwzG0mG9uoN4snzMiA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705306669; a=rsa-sha256; cv=none; b=yEs//9LHUKT1s73n9XTPZh/CD3xzuUFvYfSxlup5F3Mi3IslrN27jrIzuyMD3lIbPjRw5p vP70lkeqGMvk2DHjWus4d8gGmw9Hds/pYSbiSBGK2OU36s3f6HhbjMP4t0KE+3PgKQXkoH /P/To6f0USpkaQv+6BsHJhKn/gZCo8bzcWYRdqdpeQQJRGXyWBLEiRkeYMelH9rIgEat4P pDln+jUOhvcPOfPDGyRQYg/Ymfu2GJSul4pGbPlMhLMagrN+UuH1SeLUj3kCjW+1faqWI0 qB2aSkno9AjvhgchIuXSYJqnT1m9gvN8p/BNmZ8E96iWiqpSOPA2Yhk+BO6k8Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD4l13llCzp3d; Mon, 15 Jan 2024 08:17:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40F8Hnws084651; Mon, 15 Jan 2024 08:17:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40F8HnHI084648; Mon, 15 Jan 2024 08:17:49 GMT (envelope-from git) Date: Mon, 15 Jan 2024 08:17:49 GMT Message-Id: <202401150817.40F8HnHI084648@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Richard Scheffenegger Subject: git: 2bae602e8dad - stable/14 - tcp: prevent spurious empty segments and fix uncommon panic List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rscheff X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2bae602e8dad32b9ae7140a5c2fd6ce794aa15b4 Auto-Submitted: auto-generated The branch stable/14 has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=2bae602e8dad32b9ae7140a5c2fd6ce794aa15b4 commit 2bae602e8dad32b9ae7140a5c2fd6ce794aa15b4 Author: Richard Scheffenegger AuthorDate: 2024-01-08 08:25:39 +0000 Commit: Richard Scheffenegger CommitDate: 2024-01-15 05:23:58 +0000 tcp: prevent spurious empty segments and fix uncommon panic Only try sending more data on pure ACKs when there is more data available in the send buffer. In the case of a retransmitted SYN not being sent due to an internal error, the snd_una/snd_nxt accounting could be off, leading to a panic. Pulling snd_nxt up to snd_una prevents this from happening. Reported by: fengdreamer@126.com Reviewed by: cc, tuexen, #transport MFC after: 1 week Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D43343 (cherry picked from commit f4574e2dc5a4719379496338257526aba484751b) --- sys/netinet/tcp_input.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 9eefef3ea81e..38498370ceb2 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1871,7 +1871,13 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, tcp_timer_activate(tp, TT_REXMT, TP_RXTCUR(tp)); sowwakeup(so); - if (sbavail(&so->so_snd)) + /* + * Only call tcp_output when there + * is new data available to be sent + * or we need to send an ACK. + */ + if (SEQ_GT(tp->snd_una + sbavail(&so->so_snd), + tp->snd_max) || tp->t_flags & TF_ACKNOW) (void) tcp_output(tp); goto check_delack; } @@ -2038,6 +2044,8 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, tp->rcv_adv += min(tp->rcv_wnd, TCP_MAXWIN << tp->rcv_scale); tp->snd_una++; /* SYN is acked */ + if (SEQ_LT(tp->snd_nxt, tp->snd_una)) + tp->snd_nxt = tp->snd_una; /* * If not all the data that was sent in the TFO SYN * has been acked, resend the remainder right away. From nobody Mon Jan 15 08:18:21 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD4ld5rQ0z56Jgt; Mon, 15 Jan 2024 08:18:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD4ld2rvwz4l9B; Mon, 15 Jan 2024 08:18:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705306701; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k5mSBFGctdA5OTGDY34YKe8Y0KKoVITT7cqF67eUdUM=; b=t5jo113+163m9i8DnjS8xiytXTd1QwTYLOUCsQEeGX1lGemGPqLexXIFbj84DzysnSwXEZ TTcDp4DsOnKgns0tO+W71uziOnUUR2on8iVZQ5bkRERBEZKc2BSFcX9xYUHzsUMvDY5nrX V5Mwi8wo3rEVHeP26e7dUApdcb18Vn9eoAS63ZJv6uSqa8uU+kzUa4NPKst5Xu4ddwDPmn 5gOFtqRxj3gsijAECXhGeAA4MbmA2i+tN5QKexNxVvZaLEWYmvTMhwutnHxT+zmXq6C6+u kRDscnSJxD5pqY+xBbDL3M3E7fhsrEt8zvFYFSv/mg8LE/Rcy8NFGL5DzBjWeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705306701; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k5mSBFGctdA5OTGDY34YKe8Y0KKoVITT7cqF67eUdUM=; b=S96KwmDkTFCfUil34nN6N4i5QbAFZ/GjFMxw2coP+UlXylcPPiRl5ntNew9Bad4fqt2V6X 0KmsIzmOXqwW51ii3Ny8rqbZJsZppvJu5F0B31Iz2F9ZKKsFM2cQ4VkOwd11gJM5kzYFq5 aQ79CD2FKopp3O/p5pivx4Smx30ew7XbYoDuikZ98gj1aTYJElbJA5y6I5CFjEpbBt6By6 gmNbrrlCcKKQfiRwXud7ok1bvl4GOJrj5IL9x4EgDz2inhs4BWtuJewHrjxFrqwAjaIgKe 06k/G/psunzvgeGvsMjzenFF89b//O/IU/cdcrwurlzOAoPSq4ly7CU0txJxxg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705306701; a=rsa-sha256; cv=none; b=LNoxNB8HQHiGm/LO8xq5iA/VWLREZ6NQfanineevsUIW+3+cqQmLQW5hKfJYJN7ArC5S+g yicKvdE4myZdqpuAKnPWWdZqPISwmvWnsd/oL3bz7Y4TUy4miGGfjapTJlD27C0iHZmKbR a7My5iZl2MVPuwaQoE7c4Ntmo4x8gz6AQKbsV/Y50Q7SE8kpJUyuteff6wTknoqNqey4N5 QuEey8bfzowOkzHxB2DDm/Xh6YuhBY6jKBEanZhtnjK44GiN3/qcyQBXXSp1Te3jYYGIwk xI6o1BEmoxMIAx8R89aCDqznav0tlO6PpktMbns3i0NwlsA95ohLKxJHH8IO6g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD4ld1w88zpyF; Mon, 15 Jan 2024 08:18:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40F8ILYg084872; Mon, 15 Jan 2024 08:18:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40F8ILU4084869; Mon, 15 Jan 2024 08:18:21 GMT (envelope-from git) Date: Mon, 15 Jan 2024 08:18:21 GMT Message-Id: <202401150818.40F8ILU4084869@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Richard Scheffenegger Subject: git: 04719681ba76 - stable/13 - tcp: prevent spurious empty segments and fix uncommon panic List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rscheff X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 04719681ba76a0756492b42313ea744503b78358 Auto-Submitted: auto-generated The branch stable/13 has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=04719681ba76a0756492b42313ea744503b78358 commit 04719681ba76a0756492b42313ea744503b78358 Author: Richard Scheffenegger AuthorDate: 2024-01-08 08:25:39 +0000 Commit: Richard Scheffenegger CommitDate: 2024-01-15 05:22:17 +0000 tcp: prevent spurious empty segments and fix uncommon panic Only try sending more data on pure ACKs when there is more data available in the send buffer. In the case of a retransmitted SYN not being sent due to an internal error, the snd_una/snd_nxt accounting could be off, leading to a panic. Pulling snd_nxt up to snd_una prevents this from happening. Reported by: fengdreamer@126.com Reviewed by: cc, tuexen, #transport MFC after: 1 week Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D43343 (cherry picked from commit f4574e2dc5a4719379496338257526aba484751b) --- sys/netinet/tcp_input.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 262e95d08071..af6afbd271bb 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1943,7 +1943,13 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, tcp_timer_activate(tp, TT_REXMT, tp->t_rxtcur); sowwakeup(so); - if (sbavail(&so->so_snd)) + /* + * Only call tcp_output when there + * is new data available to be sent + * or we need to send an ACK. + */ + if (SEQ_GT(tp->snd_una + sbavail(&so->so_snd), + tp->snd_max) || tp->t_flags & TF_ACKNOW) (void) tp->t_fb->tfb_tcp_output(tp); goto check_delack; } @@ -2112,6 +2118,8 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, tp->rcv_adv += min(tp->rcv_wnd, TCP_MAXWIN << tp->rcv_scale); tp->snd_una++; /* SYN is acked */ + if (SEQ_LT(tp->snd_nxt, tp->snd_una)) + tp->snd_nxt = tp->snd_una; /* * If not all the data that was sent in the TFO SYN * has been acked, resend the remainder right away. From nobody Mon Jan 15 10:02:09 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD73P5cb5z56WkD; Mon, 15 Jan 2024 10:02:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD73P4z7Nz40sy; Mon, 15 Jan 2024 10:02:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705312929; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=f0I0MX0LZw25Ie+RxpGYzBXeXe/pUWHZuHLyW0YAiI0=; b=gH6tMbdCMsTBFawJnzsGQmh/paYaL4deO9GyA2f+7LvWh7G9/0TYTKz4F0uzRSdzX0UaHg GxS1+2IzfyH8wyYq2/OgJBTSyUvFLU0p7vu3bJ8HCqLczVHKccq8tt8kd7StkryuHCiXYU KzsVEf1WFsNeLzkY2i7BaG+6I6dEHQsawWqvLwi7D9N1jKe/CcAmQzaNl22NhQddvZN4JI c3lsanDjfWs5D15qnJCjWjWt1rOnQPMNqAbS1uuUjWEKTPcU4wQHz3ecqD3LmGSDT6oDM6 ebq5bVsBwZ6HixMvOVqWWNuJP5umfNN2ip39XmoKZEsQEXLfcIi76mu2Dbk+6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705312929; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=f0I0MX0LZw25Ie+RxpGYzBXeXe/pUWHZuHLyW0YAiI0=; b=RSpEUpydLw48CCJfXwTXQuBqM1ibISt3QbLn6auDK+3xGYty2Vt3rqSAHqrvHFPXQf3WZR wd2x36HYIG7Azl35H1fHkjtHiY6akwT9oV7//tlKho4El11GsyqW7FjWIp2cygZA5fWsiX veF5BKoU5g89CNIABW82n3KisV9prE0M/hRHlOF7keLjHil60LRpaZjUAy+qgJbRtcvXjG wn1GDEs+P5RRVmGd6o1C+9QJJu74n4Cfzax4gRhaJrXQ6eEm8qpud8TPFcCcJsh7afuy7d b4Ezgvyeb85VSnc+Dho+ixCPBzIY+14z5tauEn95y9ZIWz0sXwOdbrC42yePwg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705312929; a=rsa-sha256; cv=none; b=C7FZxObbVURzWDRsjzPVWHu3NNqBe5664JZHSMDau96gsNVzulMeZ17mXBYyCLbfpNkO3J IaZWxB57deB0ng2phwZK+32tFNzBidkjHsg5fTbh2nsswkVMrCtaqCwgKj19EQxxwCLAVY S9CyAVlmh+0kjE97SbdiiRT5db8h0Qtp+DGd4c3gAB4D8TYYgj7uXQ1XgbzOOC176DV2vi U2W/fLuX/fUp2mm2ULYNWgC+6SW1xNR9raU9DyTz4/yfyAfeUS81ds0iV7xe4C64A3Z0R+ DTFKPP5XObU4cI5ZjdMmshFAuGXD2Xzf4x/7bbaGn9eUguKN/+xvq4osGFb2AQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD73P43B9zsCC; Mon, 15 Jan 2024 10:02:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FA29OJ068868; Mon, 15 Jan 2024 10:02:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FA29QD068865; Mon, 15 Jan 2024 10:02:09 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:02:09 GMT Message-Id: <202401151002.40FA29QD068865@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: a60e3800c7fd - stable/14 - heimdal: Fix man page and documentation typos List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a60e3800c7fd4e3a413fa25eeb03488f582fbdce Auto-Submitted: auto-generated The branch stable/14 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=a60e3800c7fd4e3a413fa25eeb03488f582fbdce commit a60e3800c7fd4e3a413fa25eeb03488f582fbdce Author: Cy Schubert AuthorDate: 2024-01-04 18:34:50 +0000 Commit: Cy Schubert CommitDate: 2024-01-15 10:00:36 +0000 heimdal: Fix man page and documentation typos Reported by: Jens Schweikhardt (cherry picked from commit fc55c20355d889bf3d3f81d94b3614a0c4253fa0) --- crypto/heimdal/appl/ftp/ftp/ftp.1 | 2 +- crypto/heimdal/appl/rsh/rsh.1 | 4 ++-- .../heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 | 6 +++--- crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 | 2 +- crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 | 18 +++++++++--------- .../heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 | 2 +- crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 | 4 ++-- .../heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 | 2 +- crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 | 4 ++-- .../doc/doxyout/krb5/man/man3/krb5_fileformats.3 | 2 +- .../heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 | 2 +- .../heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 | 4 ++-- crypto/heimdal/kdc/kdc.8 | 2 +- crypto/heimdal/lib/krb5/krb5_get_init_creds.3 | 2 +- crypto/heimdal/lib/krb5/krb5_principal.3 | 2 +- crypto/heimdal/lib/roken/getarg.3 | 4 ++-- 16 files changed, 31 insertions(+), 31 deletions(-) diff --git a/crypto/heimdal/appl/ftp/ftp/ftp.1 b/crypto/heimdal/appl/ftp/ftp/ftp.1 index b0a837d863f5..deca4ef62084 100644 --- a/crypto/heimdal/appl/ftp/ftp/ftp.1 +++ b/crypto/heimdal/appl/ftp/ftp/ftp.1 @@ -206,7 +206,7 @@ current remote machine working directory. Change the permission modes of the file .Ar file-name on the remote -sytem to +system to .Ar mode . .It Ic close Terminate the diff --git a/crypto/heimdal/appl/rsh/rsh.1 b/crypto/heimdal/appl/rsh/rsh.1 index 0b0701f43cb1..205afb05c8bc 100644 --- a/crypto/heimdal/appl/rsh/rsh.1 +++ b/crypto/heimdal/appl/rsh/rsh.1 @@ -171,7 +171,7 @@ section). .Xc Connect to this port instead of the default (which is 514 when using old port based authentication, 544 for Kerberos 5 and non-encrypted -Kerberos 4, and 545 for encrytpted Kerberos 4; subject of course to +Kerberos 4, and 545 for encrypted Kerberos 4; subject of course to the contents of .Pa /etc/services ) . .It Xo @@ -290,5 +290,5 @@ any secret information in the command line (which is probably a bad idea anyway, since the command line can usually be read with tools like .Xr ps 1 ) . -Forthermore in Kerberos 4 the command is not even integrity +Furthermore in Kerberos 4 the command is not even integrity protected, so anyone with the right tools can modify the command. diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 index 0997d55d5090..8c4f1f48da52 100644 --- a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 +++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 @@ -1104,7 +1104,7 @@ Free the resources used by the EVP_MD context. .SS "EVP_MD_CTX* EVP_MD_CTX_create (void)" .PP -Allocate a messsage digest context object. Free with \fBEVP_MD_CTX_destroy()\fP. +Allocate a message digest context object. Free with \fBEVP_MD_CTX_destroy()\fP. .PP \fBReturns:\fP .RS 4 @@ -1114,7 +1114,7 @@ a newly allocated message digest context object. .SS "void EVP_MD_CTX_destroy (EVP_MD_CTX * ctx)" .PP -Free a messsage digest context object. +Free a message digest context object. .PP \fBParameters:\fP .RS 4 @@ -1124,7 +1124,7 @@ Free a messsage digest context object. .SS "void EVP_MD_CTX_init (EVP_MD_CTX * ctx)" .PP -Initiate a messsage digest context object. Deallocate with \fBEVP_MD_CTX_cleanup()\fP. Please use \fBEVP_MD_CTX_create()\fP instead. +Initiate a message digest context object. Deallocate with \fBEVP_MD_CTX_cleanup()\fP. Please use \fBEVP_MD_CTX_create()\fP instead. .PP \fBParameters:\fP .RS 4 diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 index d6de5e226bca..57db14f08576 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 @@ -552,7 +552,7 @@ Expand the the subject name in the to-be-signed certificate object using \fBhx50 .br \fItbs\fP object to be signed. .br -\fIenv\fP enviroment variable to expand variables in the subject name, see hx509_env_init(). +\fIenv\fP environment variable to expand variables in the subject name, see hx509_env_init(). .RE .PP \fBReturns:\fP diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 index e834fddcf8c8..e9535bba7048 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 @@ -1,8 +1,8 @@ -.TH "hx509 enviroment functions" 3 "11 Jan 2012" "Version 1.5.2" "Heimdalx509library" \" -*- nroff -*- +.TH "hx509 environment functions" 3 "11 Jan 2012" "Version 1.5.2" "Heimdalx509library" \" -*- nroff -*- .ad l .nh .SH NAME -hx509 enviroment functions \- +hx509 environment functions \- .SS "Functions" .in +1c @@ -38,7 +38,7 @@ Add a new key/value pair to the hx509_env. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to add .br @@ -59,7 +59,7 @@ Add a new key/binding pair to the hx509_env. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to add .br @@ -80,7 +80,7 @@ Search the hx509_env for a key. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .RE @@ -99,7 +99,7 @@ Search the hx509_env for a binding. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .RE @@ -112,11 +112,11 @@ the binding if the key is found, NULL if not found. .SS "void hx509_env_free (hx509_env * env)" .PP -Free an hx509_env enviroment context. +Free an hx509_env environment context. .PP \fBParameters:\fP .RS 4 -\fIenv\fP the enviroment to free. +\fIenv\fP the environment to free. .RE .PP @@ -128,7 +128,7 @@ Search the hx509_env for a length based key. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .br diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 index 6f0b86673e31..6555d653b361 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 @@ -285,7 +285,7 @@ Allow or deny the use of proxy certificates .SS "void hx509_verify_set_strict_rfc3280_verification (hx509_verify_ctx ctx, int boolean)" .PP -Select strict RFC3280 verification of certificiates. This means checking key usage on CA certificates, this will make version 1 certificiates unuseable. +Select strict RFC3280 verification of certificiates. This means checking key usage on CA certificates, this will make version 1 certificiates unusable. .PP \fBParameters:\fP .RS 4 diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 index 5b323242c9a4..1208522a3114 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 @@ -2,5 +2,5 @@ .ad l .nh .SH NAME -page_env \- Hx509 enviroment functions -See the library functions here: \fBhx509 enviroment functions\fP +page_env \- Hx509 environment functions +See the library functions here: \fBhx509 environment functions\fP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 index 8d273c8a6f87..3559e2946622 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 @@ -263,7 +263,7 @@ krb5_free_address frees the data stored in the address that is alloced with any .RS 4 \fIcontext\fP a Keberos context .br -\fIaddress\fP addresss to be freed. +\fIaddress\fP address to be freed. .RE .PP \fBReturns:\fP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 index 796640b93274..f173ad474e6d 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 @@ -385,7 +385,7 @@ Returns 0 or an error (and then *str is set to NULL). .SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_kdc_offset (krb5_context context, krb5_ccache id, krb5_deltat * offset)" .PP -Get the time offset betwen the client and the KDC +Get the time offset between the client and the KDC .PP If the backend doesn't support KDC offset, use the context global setting. .PP @@ -625,7 +625,7 @@ Return an error code or 0, see krb5_get_error_message(). .SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_kdc_offset (krb5_context context, krb5_ccache id, krb5_deltat offset)" .PP -Set the time offset betwen the client and the KDC +Set the time offset between the client and the KDC .PP If the backend doesn't support KDC offset, use the context global setting. .PP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 index f601d942f121..05be7ef9973e 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 @@ -89,7 +89,7 @@ Fields and their types are: .PP .PP .nf - Quoted princial (quote character is \) [string] + Quoted principal (quote character is \) [string] Keys [keys] Created by [event] Modified by [event optional] diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 index cba91dd1d9ef..c2aebfb35486 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 @@ -382,7 +382,7 @@ Create a principal for the service running on hostname. If KRB5_NT_SRV_HST is us .br \fIsname\fP Service name to use .br -\fItype\fP name type of pricipal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN. +\fItype\fP name type of principal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN. .br \fIret_princ\fP return principal, free with \fBkrb5_free_principal()\fP. .RE diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 index ccc17a641a5a..02e68e4ac6f9 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 @@ -1,8 +1,8 @@ -.TH "Heimdal Kerberos 4 compatiblity functions" 3 "11 Jan 2012" "Version 1.5.2" "HeimdalKerberos5library" \" -*- nroff -*- +.TH "Heimdal Kerberos 4 compatibility functions" 3 "11 Jan 2012" "Version 1.5.2" "HeimdalKerberos5library" \" -*- nroff -*- .ad l .nh .SH NAME -Heimdal Kerberos 4 compatiblity functions \- +Heimdal Kerberos 4 compatibility functions \- .SS "Functions" .in +1c diff --git a/crypto/heimdal/kdc/kdc.8 b/crypto/heimdal/kdc/kdc.8 index 171c426a0c52..c668b923768b 100644 --- a/crypto/heimdal/kdc/kdc.8 +++ b/crypto/heimdal/kdc/kdc.8 @@ -76,7 +76,7 @@ Specifies the location of the config file, the default is .Pa /var/heimdal/kdc.conf . This is the only value that can't be specified in the config file. .It Fl p , Fl Fl no-require-preauth -Turn off the requirement for pre-autentication in the initial AS-REQ +Turn off the requirement for pre-authentication in the initial AS-REQ for all principals. The use of pre-authentication makes it more difficult to do offline password attacks. diff --git a/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 b/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 index 764efb47e441..fccad5c4c42a 100644 --- a/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 +++ b/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 @@ -386,7 +386,7 @@ sets the salt that is going to be used in the request. sets requested ticket lifetime. .Pp .Fn krb5_get_init_creds_opt_set_canonicalize -requests that the KDC canonicalize the client pricipal if possible. +requests that the KDC canonicalize the client principal if possible. .Pp .Fn krb5_get_init_creds_opt_set_win2k turns on compatibility with Windows 2000. diff --git a/crypto/heimdal/lib/krb5/krb5_principal.3 b/crypto/heimdal/lib/krb5/krb5_principal.3 index 2998130a80e3..61fdd5b11ea6 100644 --- a/crypto/heimdal/lib/krb5/krb5_principal.3 +++ b/crypto/heimdal/lib/krb5/krb5_principal.3 @@ -293,7 +293,7 @@ A reason to return .Dv krb5_data was that it was believed that principal components could contain binary data, but this belief was unfounded, and it has been decided -that principal components are infact UTF8, so it's safe to use zero +that principal components are in fact UTF8, so it's safe to use zero terminated strings. .Pp It's generally not necessary to look at the components of a principal. diff --git a/crypto/heimdal/lib/roken/getarg.3 b/crypto/heimdal/lib/roken/getarg.3 index dda6e7dbf3d3..d634944a90c6 100644 --- a/crypto/heimdal/lib/roken/getarg.3 +++ b/crypto/heimdal/lib/roken/getarg.3 @@ -106,7 +106,7 @@ is the long name of the option, it can be .Dv NULL , if you don't want a long name. .Fa short_name -is the characted to use as short option, it can be zero. If the option +is the character to use as short option, it can be zero. If the option has a value the .Fa value field gets filled in with that value interpreted as specified by the @@ -334,7 +334,7 @@ the options come in the correct order. .Pp Options with multiple arguments should be handled better. .Pp -Should be integreated with SL. +Should be integrated with SL. .Pp It's very confusing that the struct you pass in is called getargS. .Sh SEE ALSO From nobody Mon Jan 15 10:02:38 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD73y6TbGz56Wb4; Mon, 15 Jan 2024 10:02:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD73y3dMLz41f9; Mon, 15 Jan 2024 10:02:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705312958; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MpioG1QlXMj3t8lWvIuiSD8xPhrNMr0uB8mfo6Ppvik=; b=aI8naRO3vy/8qMkfNGIldWUffxLJ+tlDhXgZLXrdO4HvYVNFqcnbCJ7di6se99wEfXDhgF S+D33AG7Im23Q0PxrPl8HctLbY5Bqf+HtU2mZOm4vvv+MH9J4y7EeLd+gKNN6gp37PHdwD 8VoFFrToEIvktwsqoczfYVqYyv5gtBHMm53Em/RbkGifMJOkyJQM5/k++gBFqYSWEcC9iw JKqGcUoXLNVITiZRNWFKjjSsRMG7vSlcUXN8Sm3GgTjDR1dqCFG25DiF/hD/XkFtINKK1L QcfYciL5BND74UbZxwpWTymsscsc/vmuFE5+PnXdZ7Lj8t5DoCxhKe5JJZf2MQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705312958; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MpioG1QlXMj3t8lWvIuiSD8xPhrNMr0uB8mfo6Ppvik=; b=UQNSBv13z0wyfgHOvdfCuYNOQ5TPJL7UPlA7RqPhuePpxOsTT60oTkA2PLOtH5m1IVdQcB 0mtN6zApqxkjQdgmTTBdWP06TGO8JrjWSb8v8tBWsS+nu7Yvoje6iUYg9vaxEsUI2GE8Ik cfyqb6aaeIEZdyDvZqROcHHmDPzZR3rfRrO7bXAJRbyQEhPqzetea35OmUL5rZMMjXTz0e wZ0a2LUWbdlgRs4sg0BJ5GMK0uiOXwXTRr8viepUHw6yR7t4diDcQbk1A8x1ysjX3MUUUi Ch8gFZPqrJmUapxx8lvwn8DIlgBhEWqXTdfgBc95t8WgJFsuL1iEWsZ6V/tNNA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705312958; a=rsa-sha256; cv=none; b=v0iu2Cni6eJUpC1C5C4XwpWwqdTAuIE3iX0jCqaAg55kwtjpVpkovI9V9/T1bMuvDbMuUS 6rCPGmx3uSorl21nrV/tYUAw79FLMNbSzCohyUpWVuXikd76HMGSpxfWtsIEE8kHb+v0m/ G8A9iHpmcpWR+RRkrJkURxQ2mvDXyBi2cgoIELuXswtYthRRQJKVFG21YerYejAf2hRL+Z GgV1kg7jD1xWpmbQSEWI8L3R4adR/fcyp5VujegJMXjPhy+zyN73q0PE4hXyPPas5Jo/eE KxT0/HVLMFaRD/j0r08mlPsAN396dFJW80ypwtEXkh2Ruasvmv5lPjPF2XsooA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD73y2jmZzs8H; Mon, 15 Jan 2024 10:02:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FA2cGj069067; Mon, 15 Jan 2024 10:02:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FA2cmK069064; Mon, 15 Jan 2024 10:02:38 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:02:38 GMT Message-Id: <202401151002.40FA2cmK069064@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: b9caa1b4c223 - stable/13 - heimdal: Fix man page and documentation typos List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b9caa1b4c2231fd68e27091414d25d4e2f79abcd Auto-Submitted: auto-generated The branch stable/13 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=b9caa1b4c2231fd68e27091414d25d4e2f79abcd commit b9caa1b4c2231fd68e27091414d25d4e2f79abcd Author: Cy Schubert AuthorDate: 2024-01-04 18:34:50 +0000 Commit: Cy Schubert CommitDate: 2024-01-15 10:02:29 +0000 heimdal: Fix man page and documentation typos Reported by: Jens Schweikhardt (cherry picked from commit fc55c20355d889bf3d3f81d94b3614a0c4253fa0) --- crypto/heimdal/appl/ftp/ftp/ftp.1 | 2 +- crypto/heimdal/appl/rsh/rsh.1 | 4 ++-- .../heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 | 6 +++--- crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 | 2 +- crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 | 18 +++++++++--------- .../heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 | 2 +- crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 | 4 ++-- .../heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 | 2 +- crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 | 4 ++-- .../doc/doxyout/krb5/man/man3/krb5_fileformats.3 | 2 +- .../heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 | 2 +- .../heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 | 4 ++-- crypto/heimdal/kdc/kdc.8 | 2 +- crypto/heimdal/lib/krb5/krb5_get_init_creds.3 | 2 +- crypto/heimdal/lib/krb5/krb5_principal.3 | 2 +- crypto/heimdal/lib/roken/getarg.3 | 4 ++-- 16 files changed, 31 insertions(+), 31 deletions(-) diff --git a/crypto/heimdal/appl/ftp/ftp/ftp.1 b/crypto/heimdal/appl/ftp/ftp/ftp.1 index b0a837d863f5..deca4ef62084 100644 --- a/crypto/heimdal/appl/ftp/ftp/ftp.1 +++ b/crypto/heimdal/appl/ftp/ftp/ftp.1 @@ -206,7 +206,7 @@ current remote machine working directory. Change the permission modes of the file .Ar file-name on the remote -sytem to +system to .Ar mode . .It Ic close Terminate the diff --git a/crypto/heimdal/appl/rsh/rsh.1 b/crypto/heimdal/appl/rsh/rsh.1 index 0b0701f43cb1..205afb05c8bc 100644 --- a/crypto/heimdal/appl/rsh/rsh.1 +++ b/crypto/heimdal/appl/rsh/rsh.1 @@ -171,7 +171,7 @@ section). .Xc Connect to this port instead of the default (which is 514 when using old port based authentication, 544 for Kerberos 5 and non-encrypted -Kerberos 4, and 545 for encrytpted Kerberos 4; subject of course to +Kerberos 4, and 545 for encrypted Kerberos 4; subject of course to the contents of .Pa /etc/services ) . .It Xo @@ -290,5 +290,5 @@ any secret information in the command line (which is probably a bad idea anyway, since the command line can usually be read with tools like .Xr ps 1 ) . -Forthermore in Kerberos 4 the command is not even integrity +Furthermore in Kerberos 4 the command is not even integrity protected, so anyone with the right tools can modify the command. diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 index 0997d55d5090..8c4f1f48da52 100644 --- a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 +++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 @@ -1104,7 +1104,7 @@ Free the resources used by the EVP_MD context. .SS "EVP_MD_CTX* EVP_MD_CTX_create (void)" .PP -Allocate a messsage digest context object. Free with \fBEVP_MD_CTX_destroy()\fP. +Allocate a message digest context object. Free with \fBEVP_MD_CTX_destroy()\fP. .PP \fBReturns:\fP .RS 4 @@ -1114,7 +1114,7 @@ a newly allocated message digest context object. .SS "void EVP_MD_CTX_destroy (EVP_MD_CTX * ctx)" .PP -Free a messsage digest context object. +Free a message digest context object. .PP \fBParameters:\fP .RS 4 @@ -1124,7 +1124,7 @@ Free a messsage digest context object. .SS "void EVP_MD_CTX_init (EVP_MD_CTX * ctx)" .PP -Initiate a messsage digest context object. Deallocate with \fBEVP_MD_CTX_cleanup()\fP. Please use \fBEVP_MD_CTX_create()\fP instead. +Initiate a message digest context object. Deallocate with \fBEVP_MD_CTX_cleanup()\fP. Please use \fBEVP_MD_CTX_create()\fP instead. .PP \fBParameters:\fP .RS 4 diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 index d6de5e226bca..57db14f08576 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 @@ -552,7 +552,7 @@ Expand the the subject name in the to-be-signed certificate object using \fBhx50 .br \fItbs\fP object to be signed. .br -\fIenv\fP enviroment variable to expand variables in the subject name, see hx509_env_init(). +\fIenv\fP environment variable to expand variables in the subject name, see hx509_env_init(). .RE .PP \fBReturns:\fP diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 index e834fddcf8c8..e9535bba7048 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 @@ -1,8 +1,8 @@ -.TH "hx509 enviroment functions" 3 "11 Jan 2012" "Version 1.5.2" "Heimdalx509library" \" -*- nroff -*- +.TH "hx509 environment functions" 3 "11 Jan 2012" "Version 1.5.2" "Heimdalx509library" \" -*- nroff -*- .ad l .nh .SH NAME -hx509 enviroment functions \- +hx509 environment functions \- .SS "Functions" .in +1c @@ -38,7 +38,7 @@ Add a new key/value pair to the hx509_env. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to add .br @@ -59,7 +59,7 @@ Add a new key/binding pair to the hx509_env. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to add .br @@ -80,7 +80,7 @@ Search the hx509_env for a key. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .RE @@ -99,7 +99,7 @@ Search the hx509_env for a binding. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .RE @@ -112,11 +112,11 @@ the binding if the key is found, NULL if not found. .SS "void hx509_env_free (hx509_env * env)" .PP -Free an hx509_env enviroment context. +Free an hx509_env environment context. .PP \fBParameters:\fP .RS 4 -\fIenv\fP the enviroment to free. +\fIenv\fP the environment to free. .RE .PP @@ -128,7 +128,7 @@ Search the hx509_env for a length based key. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .br diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 index 6f0b86673e31..6555d653b361 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 @@ -285,7 +285,7 @@ Allow or deny the use of proxy certificates .SS "void hx509_verify_set_strict_rfc3280_verification (hx509_verify_ctx ctx, int boolean)" .PP -Select strict RFC3280 verification of certificiates. This means checking key usage on CA certificates, this will make version 1 certificiates unuseable. +Select strict RFC3280 verification of certificiates. This means checking key usage on CA certificates, this will make version 1 certificiates unusable. .PP \fBParameters:\fP .RS 4 diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 index 5b323242c9a4..1208522a3114 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 @@ -2,5 +2,5 @@ .ad l .nh .SH NAME -page_env \- Hx509 enviroment functions -See the library functions here: \fBhx509 enviroment functions\fP +page_env \- Hx509 environment functions +See the library functions here: \fBhx509 environment functions\fP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 index 8d273c8a6f87..3559e2946622 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 @@ -263,7 +263,7 @@ krb5_free_address frees the data stored in the address that is alloced with any .RS 4 \fIcontext\fP a Keberos context .br -\fIaddress\fP addresss to be freed. +\fIaddress\fP address to be freed. .RE .PP \fBReturns:\fP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 index 796640b93274..f173ad474e6d 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 @@ -385,7 +385,7 @@ Returns 0 or an error (and then *str is set to NULL). .SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_kdc_offset (krb5_context context, krb5_ccache id, krb5_deltat * offset)" .PP -Get the time offset betwen the client and the KDC +Get the time offset between the client and the KDC .PP If the backend doesn't support KDC offset, use the context global setting. .PP @@ -625,7 +625,7 @@ Return an error code or 0, see krb5_get_error_message(). .SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_kdc_offset (krb5_context context, krb5_ccache id, krb5_deltat offset)" .PP -Set the time offset betwen the client and the KDC +Set the time offset between the client and the KDC .PP If the backend doesn't support KDC offset, use the context global setting. .PP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 index f601d942f121..05be7ef9973e 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 @@ -89,7 +89,7 @@ Fields and their types are: .PP .PP .nf - Quoted princial (quote character is \) [string] + Quoted principal (quote character is \) [string] Keys [keys] Created by [event] Modified by [event optional] diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 index cba91dd1d9ef..c2aebfb35486 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 @@ -382,7 +382,7 @@ Create a principal for the service running on hostname. If KRB5_NT_SRV_HST is us .br \fIsname\fP Service name to use .br -\fItype\fP name type of pricipal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN. +\fItype\fP name type of principal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN. .br \fIret_princ\fP return principal, free with \fBkrb5_free_principal()\fP. .RE diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 index ccc17a641a5a..02e68e4ac6f9 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 @@ -1,8 +1,8 @@ -.TH "Heimdal Kerberos 4 compatiblity functions" 3 "11 Jan 2012" "Version 1.5.2" "HeimdalKerberos5library" \" -*- nroff -*- +.TH "Heimdal Kerberos 4 compatibility functions" 3 "11 Jan 2012" "Version 1.5.2" "HeimdalKerberos5library" \" -*- nroff -*- .ad l .nh .SH NAME -Heimdal Kerberos 4 compatiblity functions \- +Heimdal Kerberos 4 compatibility functions \- .SS "Functions" .in +1c diff --git a/crypto/heimdal/kdc/kdc.8 b/crypto/heimdal/kdc/kdc.8 index 171c426a0c52..c668b923768b 100644 --- a/crypto/heimdal/kdc/kdc.8 +++ b/crypto/heimdal/kdc/kdc.8 @@ -76,7 +76,7 @@ Specifies the location of the config file, the default is .Pa /var/heimdal/kdc.conf . This is the only value that can't be specified in the config file. .It Fl p , Fl Fl no-require-preauth -Turn off the requirement for pre-autentication in the initial AS-REQ +Turn off the requirement for pre-authentication in the initial AS-REQ for all principals. The use of pre-authentication makes it more difficult to do offline password attacks. diff --git a/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 b/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 index 764efb47e441..fccad5c4c42a 100644 --- a/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 +++ b/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 @@ -386,7 +386,7 @@ sets the salt that is going to be used in the request. sets requested ticket lifetime. .Pp .Fn krb5_get_init_creds_opt_set_canonicalize -requests that the KDC canonicalize the client pricipal if possible. +requests that the KDC canonicalize the client principal if possible. .Pp .Fn krb5_get_init_creds_opt_set_win2k turns on compatibility with Windows 2000. diff --git a/crypto/heimdal/lib/krb5/krb5_principal.3 b/crypto/heimdal/lib/krb5/krb5_principal.3 index 2998130a80e3..61fdd5b11ea6 100644 --- a/crypto/heimdal/lib/krb5/krb5_principal.3 +++ b/crypto/heimdal/lib/krb5/krb5_principal.3 @@ -293,7 +293,7 @@ A reason to return .Dv krb5_data was that it was believed that principal components could contain binary data, but this belief was unfounded, and it has been decided -that principal components are infact UTF8, so it's safe to use zero +that principal components are in fact UTF8, so it's safe to use zero terminated strings. .Pp It's generally not necessary to look at the components of a principal. diff --git a/crypto/heimdal/lib/roken/getarg.3 b/crypto/heimdal/lib/roken/getarg.3 index dda6e7dbf3d3..d634944a90c6 100644 --- a/crypto/heimdal/lib/roken/getarg.3 +++ b/crypto/heimdal/lib/roken/getarg.3 @@ -106,7 +106,7 @@ is the long name of the option, it can be .Dv NULL , if you don't want a long name. .Fa short_name -is the characted to use as short option, it can be zero. If the option +is the character to use as short option, it can be zero. If the option has a value the .Fa value field gets filled in with that value interpreted as specified by the @@ -334,7 +334,7 @@ the options come in the correct order. .Pp Options with multiple arguments should be handled better. .Pp -Should be integreated with SL. +Should be integrated with SL. .Pp It's very confusing that the struct you pass in is called getargS. .Sh SEE ALSO From nobody Mon Jan 15 10:02:53 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD74F47Yqz56X2M; Mon, 15 Jan 2024 10:02:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD74F3TXLz41sB; Mon, 15 Jan 2024 10:02:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705312973; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Sp2ZVq4JqoNhbXadyth6HXlw3uylK1l4GMbfgkReZbw=; b=XawrAU532dAxsMAti2E/eb15/X5cahHdvn1RQU3QGxPqsic0JEp8FgKlpdvzLuSEXghWPZ hr+D87HCjuMKwd14MyjpI+5LtO2/qhVYaxf8qlYXwDftgEDL4fpczAkGJY76GmebwLZJhv gRzXwXgTfHV02X7lD9O618XVSCfBpZCT0mKc/NumTP39OsIz+Qy6peVPQPRhi/7IFCPVUJ qcQ1N4vOnBiOlunS+XX3alhLn24qYpFGuW5SVOYexBmPHnvl7XsKmGpY4nQL3iW3oblCEx epPKshcZ/LVOBdxGPlsIE7chixtcnsi6odOGe8Q1E4x1+Hfbkvq/H8WPZ1j4Pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705312973; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Sp2ZVq4JqoNhbXadyth6HXlw3uylK1l4GMbfgkReZbw=; b=HjaS6Pi9/t7S+jR5uHpUvb7DUjG3ymM2X3WeeFmAsNMsKqYJ4VVm64y5IlkXHhERyZYsGS gpRC/MXPY7Cf8T1ka+XK4kctjw3b2jU0xeNuqMNs5l32SXfYjiOjqlSTnqOdAsOihsAfkN rPW9HtAqH12SpmWVA3+XbqsyfqEGDxlLon/JJKGfCZ8CvdTMlPylWDHeOPZCfoC9w4exUs 2XtU/5BZXsvSaxUQUELt32CYytZal55LudGDTbq4BhN4H93SSmxRearp60IzttaoVuRFFe lbpPXQbuncmjcCGGd4dPWJ3nSYl5AhQ+wyiqxsLDx+IHgpDkZy2hK3/ubje67A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705312973; a=rsa-sha256; cv=none; b=UzVbuNbB6sSoKEhevu7QHvSvlAWZTbvz078S4oY1E8S8PU9FFocybF6ewuSoZJUGLMeSzV /dyftOQrISvhj+RVZK05InHP0cHWc6SeqxMhkXM1UHSXGgWSONG6rdGHAIa/Qbk1u7hDSr 0yP9QpzXwuXQLU+B1JJHI9pxQ/xws2fRV/gUHY1M3wzjUf+tE/pQpbt+kdJ8wKHcmvT2GA ueU71RKtKYKRY/jG1tv1hDDNuNRUu5oN44AnuF0VNhuqG1Tmrq9nYpGMOcYCgZfxAWuBcR bALZvJMXrDlQnZ3gasUtfmogwevKC33dIxwOhGQRqREhm8PrTOyA6q0M+jNcow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD74F2YXDzsCP; Mon, 15 Jan 2024 10:02:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FA2rtV069231; Mon, 15 Jan 2024 10:02:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FA2rf3069228; Mon, 15 Jan 2024 10:02:53 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:02:53 GMT Message-Id: <202401151002.40FA2rf3069228@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 0bbd27375057 - stable/12 - heimdal: Fix man page and documentation typos List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 0bbd27375057ff98b7a1ea6d661f2a087a8ecba1 Auto-Submitted: auto-generated The branch stable/12 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=0bbd27375057ff98b7a1ea6d661f2a087a8ecba1 commit 0bbd27375057ff98b7a1ea6d661f2a087a8ecba1 Author: Cy Schubert AuthorDate: 2024-01-04 18:34:50 +0000 Commit: Cy Schubert CommitDate: 2024-01-04 18:42:01 +0000 heimdal: Fix man page and documentation typos Reported by: Jens Schweikhardt (cherry picked from commit fc55c20355d889bf3d3f81d94b3614a0c4253fa0) --- crypto/heimdal/appl/ftp/ftp/ftp.1 | 2 +- crypto/heimdal/appl/rsh/rsh.1 | 4 ++-- .../heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 | 6 +++--- crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 | 2 +- crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 | 18 +++++++++--------- .../heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 | 2 +- crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 | 4 ++-- .../heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 | 2 +- crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 | 4 ++-- .../doc/doxyout/krb5/man/man3/krb5_fileformats.3 | 2 +- .../heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 | 2 +- .../heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 | 4 ++-- crypto/heimdal/kdc/kdc.8 | 2 +- crypto/heimdal/lib/krb5/krb5_get_init_creds.3 | 2 +- crypto/heimdal/lib/krb5/krb5_principal.3 | 2 +- crypto/heimdal/lib/roken/getarg.3 | 4 ++-- 16 files changed, 31 insertions(+), 31 deletions(-) diff --git a/crypto/heimdal/appl/ftp/ftp/ftp.1 b/crypto/heimdal/appl/ftp/ftp/ftp.1 index b0a837d863f5..deca4ef62084 100644 --- a/crypto/heimdal/appl/ftp/ftp/ftp.1 +++ b/crypto/heimdal/appl/ftp/ftp/ftp.1 @@ -206,7 +206,7 @@ current remote machine working directory. Change the permission modes of the file .Ar file-name on the remote -sytem to +system to .Ar mode . .It Ic close Terminate the diff --git a/crypto/heimdal/appl/rsh/rsh.1 b/crypto/heimdal/appl/rsh/rsh.1 index 0b0701f43cb1..205afb05c8bc 100644 --- a/crypto/heimdal/appl/rsh/rsh.1 +++ b/crypto/heimdal/appl/rsh/rsh.1 @@ -171,7 +171,7 @@ section). .Xc Connect to this port instead of the default (which is 514 when using old port based authentication, 544 for Kerberos 5 and non-encrypted -Kerberos 4, and 545 for encrytpted Kerberos 4; subject of course to +Kerberos 4, and 545 for encrypted Kerberos 4; subject of course to the contents of .Pa /etc/services ) . .It Xo @@ -290,5 +290,5 @@ any secret information in the command line (which is probably a bad idea anyway, since the command line can usually be read with tools like .Xr ps 1 ) . -Forthermore in Kerberos 4 the command is not even integrity +Furthermore in Kerberos 4 the command is not even integrity protected, so anyone with the right tools can modify the command. diff --git a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 index 0997d55d5090..8c4f1f48da52 100644 --- a/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 +++ b/crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_evp.3 @@ -1104,7 +1104,7 @@ Free the resources used by the EVP_MD context. .SS "EVP_MD_CTX* EVP_MD_CTX_create (void)" .PP -Allocate a messsage digest context object. Free with \fBEVP_MD_CTX_destroy()\fP. +Allocate a message digest context object. Free with \fBEVP_MD_CTX_destroy()\fP. .PP \fBReturns:\fP .RS 4 @@ -1114,7 +1114,7 @@ a newly allocated message digest context object. .SS "void EVP_MD_CTX_destroy (EVP_MD_CTX * ctx)" .PP -Free a messsage digest context object. +Free a message digest context object. .PP \fBParameters:\fP .RS 4 @@ -1124,7 +1124,7 @@ Free a messsage digest context object. .SS "void EVP_MD_CTX_init (EVP_MD_CTX * ctx)" .PP -Initiate a messsage digest context object. Deallocate with \fBEVP_MD_CTX_cleanup()\fP. Please use \fBEVP_MD_CTX_create()\fP instead. +Initiate a message digest context object. Deallocate with \fBEVP_MD_CTX_cleanup()\fP. Please use \fBEVP_MD_CTX_create()\fP instead. .PP \fBParameters:\fP .RS 4 diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 index d6de5e226bca..57db14f08576 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_ca.3 @@ -552,7 +552,7 @@ Expand the the subject name in the to-be-signed certificate object using \fBhx50 .br \fItbs\fP object to be signed. .br -\fIenv\fP enviroment variable to expand variables in the subject name, see hx509_env_init(). +\fIenv\fP environment variable to expand variables in the subject name, see hx509_env_init(). .RE .PP \fBReturns:\fP diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 index e834fddcf8c8..e9535bba7048 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_env.3 @@ -1,8 +1,8 @@ -.TH "hx509 enviroment functions" 3 "11 Jan 2012" "Version 1.5.2" "Heimdalx509library" \" -*- nroff -*- +.TH "hx509 environment functions" 3 "11 Jan 2012" "Version 1.5.2" "Heimdalx509library" \" -*- nroff -*- .ad l .nh .SH NAME -hx509 enviroment functions \- +hx509 environment functions \- .SS "Functions" .in +1c @@ -38,7 +38,7 @@ Add a new key/value pair to the hx509_env. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to add .br @@ -59,7 +59,7 @@ Add a new key/binding pair to the hx509_env. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to add .br @@ -80,7 +80,7 @@ Search the hx509_env for a key. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .RE @@ -99,7 +99,7 @@ Search the hx509_env for a binding. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .RE @@ -112,11 +112,11 @@ the binding if the key is found, NULL if not found. .SS "void hx509_env_free (hx509_env * env)" .PP -Free an hx509_env enviroment context. +Free an hx509_env environment context. .PP \fBParameters:\fP .RS 4 -\fIenv\fP the enviroment to free. +\fIenv\fP the environment to free. .RE .PP @@ -128,7 +128,7 @@ Search the hx509_env for a length based key. .RS 4 \fIcontext\fP A hx509 context. .br -\fIenv\fP enviroment to add the enviroment variable too. +\fIenv\fP environment to add the environment variable too. .br \fIkey\fP key to search for. .br diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 index 6f0b86673e31..6555d653b361 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/hx509_verify.3 @@ -285,7 +285,7 @@ Allow or deny the use of proxy certificates .SS "void hx509_verify_set_strict_rfc3280_verification (hx509_verify_ctx ctx, int boolean)" .PP -Select strict RFC3280 verification of certificiates. This means checking key usage on CA certificates, this will make version 1 certificiates unuseable. +Select strict RFC3280 verification of certificiates. This means checking key usage on CA certificates, this will make version 1 certificiates unusable. .PP \fBParameters:\fP .RS 4 diff --git a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 index 5b323242c9a4..1208522a3114 100644 --- a/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 +++ b/crypto/heimdal/doc/doxyout/hx509/man/man3/page_env.3 @@ -2,5 +2,5 @@ .ad l .nh .SH NAME -page_env \- Hx509 enviroment functions -See the library functions here: \fBhx509 enviroment functions\fP +page_env \- Hx509 environment functions +See the library functions here: \fBhx509 environment functions\fP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 index 8d273c8a6f87..3559e2946622 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_address.3 @@ -263,7 +263,7 @@ krb5_free_address frees the data stored in the address that is alloced with any .RS 4 \fIcontext\fP a Keberos context .br -\fIaddress\fP addresss to be freed. +\fIaddress\fP address to be freed. .RE .PP \fBReturns:\fP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 index 796640b93274..f173ad474e6d 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_ccache.3 @@ -385,7 +385,7 @@ Returns 0 or an error (and then *str is set to NULL). .SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_get_kdc_offset (krb5_context context, krb5_ccache id, krb5_deltat * offset)" .PP -Get the time offset betwen the client and the KDC +Get the time offset between the client and the KDC .PP If the backend doesn't support KDC offset, use the context global setting. .PP @@ -625,7 +625,7 @@ Return an error code or 0, see krb5_get_error_message(). .SS "KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_cc_set_kdc_offset (krb5_context context, krb5_ccache id, krb5_deltat offset)" .PP -Set the time offset betwen the client and the KDC +Set the time offset between the client and the KDC .PP If the backend doesn't support KDC offset, use the context global setting. .PP diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 index f601d942f121..05be7ef9973e 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_fileformats.3 @@ -89,7 +89,7 @@ Fields and their types are: .PP .PP .nf - Quoted princial (quote character is \) [string] + Quoted principal (quote character is \) [string] Keys [keys] Created by [event] Modified by [event optional] diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 index cba91dd1d9ef..c2aebfb35486 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_principal.3 @@ -382,7 +382,7 @@ Create a principal for the service running on hostname. If KRB5_NT_SRV_HST is us .br \fIsname\fP Service name to use .br -\fItype\fP name type of pricipal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN. +\fItype\fP name type of principal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN. .br \fIret_princ\fP return principal, free with \fBkrb5_free_principal()\fP. .RE diff --git a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 index ccc17a641a5a..02e68e4ac6f9 100644 --- a/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 +++ b/crypto/heimdal/doc/doxyout/krb5/man/man3/krb5_v4compat.3 @@ -1,8 +1,8 @@ -.TH "Heimdal Kerberos 4 compatiblity functions" 3 "11 Jan 2012" "Version 1.5.2" "HeimdalKerberos5library" \" -*- nroff -*- +.TH "Heimdal Kerberos 4 compatibility functions" 3 "11 Jan 2012" "Version 1.5.2" "HeimdalKerberos5library" \" -*- nroff -*- .ad l .nh .SH NAME -Heimdal Kerberos 4 compatiblity functions \- +Heimdal Kerberos 4 compatibility functions \- .SS "Functions" .in +1c diff --git a/crypto/heimdal/kdc/kdc.8 b/crypto/heimdal/kdc/kdc.8 index 171c426a0c52..c668b923768b 100644 --- a/crypto/heimdal/kdc/kdc.8 +++ b/crypto/heimdal/kdc/kdc.8 @@ -76,7 +76,7 @@ Specifies the location of the config file, the default is .Pa /var/heimdal/kdc.conf . This is the only value that can't be specified in the config file. .It Fl p , Fl Fl no-require-preauth -Turn off the requirement for pre-autentication in the initial AS-REQ +Turn off the requirement for pre-authentication in the initial AS-REQ for all principals. The use of pre-authentication makes it more difficult to do offline password attacks. diff --git a/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 b/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 index 764efb47e441..fccad5c4c42a 100644 --- a/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 +++ b/crypto/heimdal/lib/krb5/krb5_get_init_creds.3 @@ -386,7 +386,7 @@ sets the salt that is going to be used in the request. sets requested ticket lifetime. .Pp .Fn krb5_get_init_creds_opt_set_canonicalize -requests that the KDC canonicalize the client pricipal if possible. +requests that the KDC canonicalize the client principal if possible. .Pp .Fn krb5_get_init_creds_opt_set_win2k turns on compatibility with Windows 2000. diff --git a/crypto/heimdal/lib/krb5/krb5_principal.3 b/crypto/heimdal/lib/krb5/krb5_principal.3 index 2998130a80e3..61fdd5b11ea6 100644 --- a/crypto/heimdal/lib/krb5/krb5_principal.3 +++ b/crypto/heimdal/lib/krb5/krb5_principal.3 @@ -293,7 +293,7 @@ A reason to return .Dv krb5_data was that it was believed that principal components could contain binary data, but this belief was unfounded, and it has been decided -that principal components are infact UTF8, so it's safe to use zero +that principal components are in fact UTF8, so it's safe to use zero terminated strings. .Pp It's generally not necessary to look at the components of a principal. diff --git a/crypto/heimdal/lib/roken/getarg.3 b/crypto/heimdal/lib/roken/getarg.3 index dda6e7dbf3d3..d634944a90c6 100644 --- a/crypto/heimdal/lib/roken/getarg.3 +++ b/crypto/heimdal/lib/roken/getarg.3 @@ -106,7 +106,7 @@ is the long name of the option, it can be .Dv NULL , if you don't want a long name. .Fa short_name -is the characted to use as short option, it can be zero. If the option +is the character to use as short option, it can be zero. If the option has a value the .Fa value field gets filled in with that value interpreted as specified by the @@ -334,7 +334,7 @@ the options come in the correct order. .Pp Options with multiple arguments should be handled better. .Pp -Should be integreated with SL. +Should be integrated with SL. .Pp It's very confusing that the struct you pass in is called getargS. .Sh SEE ALSO From nobody Mon Jan 15 10:24:09 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7Xn3z9lz56YtT; Mon, 15 Jan 2024 10:24:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7Xn3Lbnz43vw; Mon, 15 Jan 2024 10:24:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314249; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kPkV0HV/suh9Qzg0lXJpsGYzz/tbPU7/am4Jk5com0I=; b=i1QjtwjzeiyKy/dFi4TU7ZpOnP3rSdkNUXU9GUQHZA6400NtHG+wYQQD7V+ruL85XGtZHM nOxgzra4Gdv843RWtSntE5ZT//fDOUQYBDn2NaS/1bjsW2HdfkyDdQLQxWQm4otegsMTR3 Ky3lx6xBgJ9S0g4QBEyPF1aO5Hkyquff7AOxnAdfsTeSMN87Uh2VGKxlWCRxTueY3430X0 507P/6BK0J2PKz0GMdsatRS+rSh4QfPYWIpLkmHQdbv4PxLjX/x3Apu4E3JZfToHSSBwfe YLZxC3BNlfg1+HQibekRLBoi2trwuRR2e+uLP62iIM4cyg7zLgTE2LgoURV47Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314249; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kPkV0HV/suh9Qzg0lXJpsGYzz/tbPU7/am4Jk5com0I=; b=MEXvjvJErbMdnMt/3RZhgdKUteHoLZIRCwdJ41Mos00DvBvvbrqJ+gl40QTdOn289P+4Ga CP7q6oMvu3fCEWwD59Olr2rgcjoJ3+LW6WhimyKxHgLwthIimxLXMftEs7pjIuoc92nRRr wr06QeaFoENOdh+gxwCmVUAdCsFni+y4gBrKo6689e4MIf5NiFOZow8FFFBXNvXvrdAthb JABR6SjWaSIgr541Yo2Dete7CgXi7/kCiDrEjfC0sKKLVCPm2YPYxvx2L58Uv9gTbtgo2W qA8dndvWo7CFkupGKJPPBnce/Zh1KriYDrhPLp/709zLQ19HhPf7UpClyW0uMQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314249; a=rsa-sha256; cv=none; b=yIMCU36qINfAQVy2G/JJNFjUaBDIjKpwdNdzVR0bBEoWajOYhtfmEd/znOsxTqXvZBDLNJ 0NXr8+YsUzAHiPoOpEAtS5u9QwMlfcDYV3LxSO0iZwpG0OK0uwcok0c7j+IIFuRXe21LYh H/qfeBFX9YXBKnZadOPyxW9LT7LPbDEgNzQQJlpTe/zm5qMmz1rD4QREVP1WrQR1o/cKjl wfQn5Q/AcXU0MLDbwMR0mhelexo4ytQByAdJqn973BW4SGKKpS3Y9fkAwb+0OtQYWEGi01 CbErX4sNAC/3CpLyddLHW94slkwxqe7GAx3erH4H9hipuqiHGfZ6IH3jROjxlg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7Xn2P19zsmG; Mon, 15 Jan 2024 10:24:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FAO9dJ002572; Mon, 15 Jan 2024 10:24:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FAO9OP002569; Mon, 15 Jan 2024 10:24:09 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:24:09 GMT Message-Id: <202401151024.40FAO9OP002569@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Yoshihiro Takahashi Subject: git: 4776a7f06e81 - stable/14 - puc: Add support for Exar XR17V354 Quad PCI Express UART. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: nyan X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4776a7f06e81d93c5305f958d76aeb18b08fb5ec Auto-Submitted: auto-generated The branch stable/14 has been updated by nyan: URL: https://cgit.FreeBSD.org/src/commit/?id=4776a7f06e81d93c5305f958d76aeb18b08fb5ec commit 4776a7f06e81d93c5305f958d76aeb18b08fb5ec Author: Teerayut Hiruntaraporn AuthorDate: 2024-01-08 06:31:19 +0000 Commit: Yoshihiro Takahashi CommitDate: 2024-01-15 10:22:48 +0000 puc: Add support for Exar XR17V354 Quad PCI Express UART. PR: 257207 MFC after: 1 week (cherry picked from commit 5704277ae58b3498fbee2d041cd18d2444f5cf98) --- sys/dev/puc/pucdata.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/dev/puc/pucdata.c b/sys/dev/puc/pucdata.c index 3114202c3a5a..f127e27e7b08 100644 --- a/sys/dev/puc/pucdata.c +++ b/sys/dev/puc/pucdata.c @@ -694,6 +694,13 @@ const struct puc_cfg puc_pci_devices[] = { .config_function = puc_config_exar_pcie }, + { 0x13a8, 0x0354, 0xffff, 0, + "Exar XR17V354", + 125000000, + PUC_PORT_4S, 0x10, 0, -1, + .config_function = puc_config_exar_pcie + }, + /* The XR17V358 uses the 125MHz PCIe clock as its reference clock. */ { 0x13a8, 0x0358, 0xffff, 0, "Exar XR17V358", From nobody Mon Jan 15 10:25:08 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7Yw6pGZz56ZML; Mon, 15 Jan 2024 10:25:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7Yw5rprz4452; Mon, 15 Jan 2024 10:25:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314308; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MDJChzh6eHRpeHayUJBhRJ4TBVGWOzmwmUkQ06aR5bA=; b=rnE2zm6FbB1tvvVooeW/tKpv7csVIa4Fs3+jPJ30O/YkHy+NKmooXP1fyVfFLqJu1RYugB k/laFcv2/PCio7lQ4SnPwL5JvCVJAUd5UkZJAs45+Q/1Ya65tLcrDRW7mcc/ofAJPW66uz 6a+M0wFWtpcOn+158WrGLU0V+TMAxC6/ybIfCodobmTssbMfKLMTnzDoi4vNb35/2hasyN RQn6goSfrbyS6jqeiHibhZvOmhIhgOaRyq362BuasieDY+pdhF+M7EyDJ3awOJE2HooXau RAsOmc21GNYtVlLCQVm99ErsykpRWFEDTxp4AhfJL3/NfuqVqmi0I+wzoMZJDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314308; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MDJChzh6eHRpeHayUJBhRJ4TBVGWOzmwmUkQ06aR5bA=; b=IGKA3zVUog7JyvTHSbofrfqnU1Oanhs374JB0whvo1XwwJlVdzk5opPdwtrGO05L5Skw97 k98pkW41zO0Jjum6HbTLSXI1qoa6p19GDTUfmJH42GUyduwgOcjGuCguDBHhbTvpDbrTC7 HR7ukZv30tCU1yiT5xN2W4W/zWS4VBsUgvNwNLDrQGtCvgcRgFcZ7+X9CvBpImA3Zst4bt S0IyxRHfvEFZCmSVmaCWSwVN0qvaJXjkUSfPgWMiH7hLZfB/omS1+2UTK5w16taxIiAfNU +OSF2RDb7obXVooHx+UwlEVaHmc8Cb/y6OvAAumEG5cDTTbUZ40GQ5lHjgl2Kg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314308; a=rsa-sha256; cv=none; b=T9x2II8ulwzYEFOwvWNsIEy0BBHCE7HoU6TA2U2RVOBAx/VBFyaY2Io8Uf2LkS6hvFroq/ dleBO6xYWjEHB5uuNbNhQLAdl15x7mR93Yrf0DM2D7mfOKbUhsRAHdwdokqPw5x4lddoo1 y0/oFoHwDvl+myBKm8vcr1oOenMU6JhfOxqTW0wdJi7mtI8Q9N7AMXYzs66jvVRW1f9u94 qH34ohYu5Yf4CGvu/Csfklk2EkmjAyDUnNyodjcMWAF2ZArtV9JwtkiaJFeSVtuhWTdFZu XwzDJHBXu8JfhpSWvVvismhCpis57FD0txRfx8kzrFY4FyRL82DrljYgpJ3XBA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7Yw4wqLzt85; Mon, 15 Jan 2024 10:25:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FAP8Tl002867; Mon, 15 Jan 2024 10:25:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FAP81U002864; Mon, 15 Jan 2024 10:25:08 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:25:08 GMT Message-Id: <202401151025.40FAP81U002864@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Yoshihiro Takahashi Subject: git: 819934841ab0 - stable/13 - puc: Add support for Exar XR17V354 Quad PCI Express UART. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: nyan X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 819934841ab0c079f2170467052ba87bd316730a Auto-Submitted: auto-generated The branch stable/13 has been updated by nyan: URL: https://cgit.FreeBSD.org/src/commit/?id=819934841ab0c079f2170467052ba87bd316730a commit 819934841ab0c079f2170467052ba87bd316730a Author: Teerayut Hiruntaraporn AuthorDate: 2024-01-08 06:31:19 +0000 Commit: Yoshihiro Takahashi CommitDate: 2024-01-15 10:24:37 +0000 puc: Add support for Exar XR17V354 Quad PCI Express UART. PR: 257207 MFC after: 1 week (cherry picked from commit 5704277ae58b3498fbee2d041cd18d2444f5cf98) --- sys/dev/puc/pucdata.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/dev/puc/pucdata.c b/sys/dev/puc/pucdata.c index 3114202c3a5a..f127e27e7b08 100644 --- a/sys/dev/puc/pucdata.c +++ b/sys/dev/puc/pucdata.c @@ -694,6 +694,13 @@ const struct puc_cfg puc_pci_devices[] = { .config_function = puc_config_exar_pcie }, + { 0x13a8, 0x0354, 0xffff, 0, + "Exar XR17V354", + 125000000, + PUC_PORT_4S, 0x10, 0, -1, + .config_function = puc_config_exar_pcie + }, + /* The XR17V358 uses the 125MHz PCIe clock as its reference clock. */ { 0x13a8, 0x0358, 0xffff, 0, "Exar XR17V358", From nobody Mon Jan 15 10:26:39 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7bh48bVz56ZRW; Mon, 15 Jan 2024 10:26:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7bg70zzz44Nb; Mon, 15 Jan 2024 10:26:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314400; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9vTkOtYWddvS1N1WGGD1YIq1zu09J5ih5LuNox6qyOg=; b=ZL7ZkQHMLE86dZjuVNCBgVSDW8W/slDgar6YGO0iKxUUJZ3MUUqwyX3WtDwkKMuIfiaXPm Cx+Do55A/v3Elwh5d5A8Ro/9+gSO5CEw/bc1r5n4MKBcMszi/wv/a7Q+BvKCsRu1hOpAoB guEY2OXPr/fQAoTaPbFBP1RRGUPEsgS1rYMXyYt9xAwIFwTq4PAmPenuNcuBvcwbYHauka 6mi/K8U3PVM6ew2IFYXL6J+i2KNTACo6OpOSAht4wkfsKlwg1IyUAkcr2gNvAWVVe01wDp DCPT3TksXa4NfJzhIIhO4jcygX9DxJ3IQZuajzsB5hagKkfN7FIUatp1U2BVFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314400; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9vTkOtYWddvS1N1WGGD1YIq1zu09J5ih5LuNox6qyOg=; b=mdauVBPYo2fJejuIyoZuXESsYzL+wqEXbiWpysMKxj0PSVYp3tYtRG4/bu585f+6k+qbBV WiZil4IA32e0eBfm3dsHaGjPB0MgpUZGDhA78DC0gt/uASFliI9zTirVejKHdyVwh2zQ35 vli6cE/n1YA3lJMT3JN12ZGGXaKncg7m/QokrBgwsz1mOJJ8pZIqPZTmP6qJfa8fyj5hlP F85BB5noFKIT7b/IEp4A9NFWBWw7keA/zYBmuFz2GDTdvklRgC7+u/ojLrrwPlJlN4CX1z FCZOsc7byevJfbsZiAlnjQ6hkpF5ssf6H1yqFEZUbAacde/t+weHIiiXS4e7yg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314400; a=rsa-sha256; cv=none; b=dX19874lLAVrjI9VkAxPT6JV74bwTjIwUzF8s0eKyO79tPBWPhi2EL8xCDLchEfJJyWMtk lOO8HjTJmyHOCImjqGfr3i0iEpAfq718A/HqgeLNlBHUAmX5szPWCNT0DGuBjdZhAT3oO0 99JNoZIa0lBdlc/EhpXkeHFJ6LUfmHiVLsANN4LIXmwlXx/errS18aM8AYVqilB7f0wiRi +E/8Es80qOORKlLUhTgfjR22F3CuxkEX41fTZS39SQbsow0n2LwuukGMqoSk6Sp9Ns4HB7 wgBfE52HO0Pk9hC56/1M4As3WV7xlIHeEQNN22IdxVF+TzDy9XvxQDJ2Q0KQwg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7bg65RjzsmK; Mon, 15 Jan 2024 10:26:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FAQdDw003207; Mon, 15 Jan 2024 10:26:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FAQdIt003204; Mon, 15 Jan 2024 10:26:39 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:26:39 GMT Message-Id: <202401151026.40FAQdIt003204@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Yoshihiro Takahashi Subject: git: fbc5e31c4f1e - stable/14 - mii: Fix memory leak in micphy. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: nyan X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: fbc5e31c4f1e97139aa718baafec096ead8139dd Auto-Submitted: auto-generated The branch stable/14 has been updated by nyan: URL: https://cgit.FreeBSD.org/src/commit/?id=fbc5e31c4f1e97139aa718baafec096ead8139dd commit fbc5e31c4f1e97139aa718baafec096ead8139dd Author: Jiahao LI AuthorDate: 2024-01-08 07:39:56 +0000 Commit: Yoshihiro Takahashi CommitDate: 2024-01-15 10:26:02 +0000 mii: Fix memory leak in micphy. PR: 270040 MFC after: 1 week (cherry picked from commit 9a622787244c4cda76d1509b0eae168bf4fd1952) --- sys/dev/mii/micphy.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/dev/mii/micphy.c b/sys/dev/mii/micphy.c index fa212bf43655..4783398886f5 100644 --- a/sys/dev/mii/micphy.c +++ b/sys/dev/mii/micphy.c @@ -276,6 +276,8 @@ micphy_attach(device_t dev) else ksz9021_load_values(sc, cfg->phynode); + mii_fdt_free_config(cfg); + return (0); } From nobody Mon Jan 15 10:27:18 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7cR19yqz56ZRx; Mon, 15 Jan 2024 10:27:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7cR0bvsz44tH; Mon, 15 Jan 2024 10:27:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314439; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OxcD9FYfoZyGkDLhww8ZsRjd36UMeM98TyMBCLx/CJo=; b=uR+UFmdkYZ/Pad1xxi2+jJGA4f9va0tZlrLWi3vLmDa+yjnwWK/6otqK3PWlA6N8GsPeVW pucRV+bwhlSGvLfj9S0391Xe9cVyMt7rNoWfnq357MqOb2UHvABS2u5m9WvU89jSR2qhy5 T8LJlT/kG0lqY9eZ6x6MmH+1Lg8EoBjvjjTBQmDy96AM2gE33Afs4A2PWnko0BMSZDZgdA SKtLzSC4AXEKRyKgn7qKLGMTHj+Yq8HXP/CA1R6XHThKsyEzqfhF2gAbjy1jq/rpn0BsTB MbB81zfc4es1InSUB19Au6mZrrFHmHucDBfKBKhP0V0aomGOoyPC/7inL5Dpxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314439; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OxcD9FYfoZyGkDLhww8ZsRjd36UMeM98TyMBCLx/CJo=; b=IxsnLmfN9M2JkWQ+9ET5ukT2jdCNKUaFQnF/Iu4haWBxA9BaN2PaVx1LMr9kWYh6zQzamf j4Xrl/EAcDkMYHp9mZijAE+Mhiaca2sMVR+nCeDSeVts9YYWlPDuDVBqkNYgnBWcRtGlkY gzndG+X6h/PeEu4Qr7bIbo29PxZZ78wHMj3SLwlcIhc9sKod4GzAUsobN2b/ot9FC7W76r bjs3xt0HKsOHGAo/kuxc0wCbwdOJAx+i4b5PgzmYP9oQ8YJBhfCnO/VD+fNrdZI3md09Zm J6wjDkhZ0vRty/5FZxvgq9OVW+P1dRKB89w7c7EilAq+uhEzOHHkdlihiiohUA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314439; a=rsa-sha256; cv=none; b=UEAZ/gzNllbIaxZl0Lrvd/EuVg3C/obT9RcE+Qz8Y1TrZ11qtue4hyXKyDVJK84lbT1xlf jl+fBteYu4ZODOy16bzC1fSY1TDZiZJq53wgzPwc8wvv89EcCogeV39ydOq7hRYB08igoG No1hHe2Vwoo7Asqlg81FfAbVVrWGFqBt72xD0Lut1/68XhNUYjLT200a6KCQVbbLjmKNEb 13I6rKHq1ercetxPKBKSpx3C46LFwmMDGr2bJfpKR2U8v9llONsfaTKOxq1ZCr72qKxKnE 22yxyCLkl4QKrnrAz+vKCsonUXDnYWBLVPoaeUhuaZb3Kn5AiqK9DWzI/jzTrg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7cQ6nG6zsgd; Mon, 15 Jan 2024 10:27:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FARIl6003420; Mon, 15 Jan 2024 10:27:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FARIUC003417; Mon, 15 Jan 2024 10:27:18 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:27:18 GMT Message-Id: <202401151027.40FARIUC003417@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Yoshihiro Takahashi Subject: git: e31753a02475 - stable/13 - mii: Fix memory leak in micphy. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: nyan X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e31753a024758a1aa5db95950497c7f04e245b42 Auto-Submitted: auto-generated The branch stable/13 has been updated by nyan: URL: https://cgit.FreeBSD.org/src/commit/?id=e31753a024758a1aa5db95950497c7f04e245b42 commit e31753a024758a1aa5db95950497c7f04e245b42 Author: Jiahao LI AuthorDate: 2024-01-08 07:39:56 +0000 Commit: Yoshihiro Takahashi CommitDate: 2024-01-15 10:26:49 +0000 mii: Fix memory leak in micphy. PR: 270040 MFC after: 1 week (cherry picked from commit 9a622787244c4cda76d1509b0eae168bf4fd1952) --- sys/dev/mii/micphy.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/dev/mii/micphy.c b/sys/dev/mii/micphy.c index 57ae7e362a9f..f2a6d0b1f5b1 100644 --- a/sys/dev/mii/micphy.c +++ b/sys/dev/mii/micphy.c @@ -278,6 +278,8 @@ micphy_attach(device_t dev) else ksz9021_load_values(sc, cfg->phynode); + mii_fdt_free_config(cfg); + return (0); } From nobody Mon Jan 15 10:29:02 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7fQ451Zz56Zfl; Mon, 15 Jan 2024 10:29:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7fQ3DcYz44qQ; Mon, 15 Jan 2024 10:29:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314542; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Rx9EGfShTDwmKDwzRtj9L+s1IlmDlk3bfykKYWlBhpE=; b=WTjXAyvIYVBV9qjdUvqZPqJtS8A3U0JBjaNY8rNOT+l8sLp4llWRyzS0RqYPIYX5KOtQZK oXEVe3p3b8sXVpwdVq2fD26GAa0d9w7FYSXgXKR7XJ31OUahV7Kib2TPSBBVBYMALNPBsu 90C+xXnRP7LEqc1I1I/dEMNSUog+HH7WadfSsfL5rQ254QVkl2aIrts4gAL2CtRLhYn8b2 /JkXAdd1gv/ANwy2Qb97cpm7gP8KWfX8M6482CmP3ZKu7dsmr+QaigcIA/QDiZFId12PmQ XyOecHsScUxa0HY/P3mnCmwBqW0fLbFMl3xyhqxhOz3Ul7oVDA9OEHPaOyEDHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314542; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Rx9EGfShTDwmKDwzRtj9L+s1IlmDlk3bfykKYWlBhpE=; b=emgeSsjYvxiyGqMzW9MLKMbj25a6pb613d/EzMOICG5mIHaCi15O7tTBe8+ZY3eSNV5uBH bFHTZcOL1L7RtgMLOWmnG8LU3ZMl7Y+KMMosaMfZCt+dG0Wh0qan2oAWNvjBAbXZD/0cXn SvBVy5JxeHkiUlTSi6zESwfWiMdgmD4cQrRrXtxCuV8QILhkkw3Z1rYg2nhfBoAn1eOZNd a9DSVOq7daMaQxQiQZLRgQL3DuinJon8MUsVUKsDC+/L6svyFOpRG2UJkYPesTub14kFOM 2HAFfh4qgmv4LnoQeSdU0VaBU7ZAZzlKRZZawnaWhkhh1d1hdh5JaBL7njm7jA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314542; a=rsa-sha256; cv=none; b=H8wLAPrLKCZYB4AzathnEorCycQOXl7lNknni//JpDu+4gXBeZTEAFumBFirPvK9TQbGbY Twmiu+jNtZ+Diixvte0F4ao+DnAWpfZsdl3ApLGcaJ/ZX73cAhrp89Re1b4jI4693+RAMk F77g2pIxLG0GXvtnswPbf4Hw54j2/iH/1z7ITM3zZcvpJCyJKPruyzLI+L0jFzhIDK588C whWZ2smRCYnd3hvh4DilHx30FlGAJtMknFOf49oaZhseeU3DB8A0O3SDj4Q7+n7tQYp9po VoYhew1td1vHqg8KGtH2EVz62IGUAO122rh20XXwvsgg4cSq7CaQctT/xr4zCA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7fQ2Hbgzsjv; Mon, 15 Jan 2024 10:29:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FAT2nm003806; Mon, 15 Jan 2024 10:29:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FAT2iF003803; Mon, 15 Jan 2024 10:29:02 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:29:02 GMT Message-Id: <202401151029.40FAT2iF003803@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Zhenlei Huang Subject: git: e7fd435d3d4e - stable/14 - kern linker: Do not retry loading modules on EEXIST List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zlei X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e7fd435d3d4e888d9894d8c212c29ae6e2768f74 Auto-Submitted: auto-generated The branch stable/14 has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=e7fd435d3d4e888d9894d8c212c29ae6e2768f74 commit e7fd435d3d4e888d9894d8c212c29ae6e2768f74 Author: Zhenlei Huang AuthorDate: 2023-11-07 04:45:25 +0000 Commit: Zhenlei Huang CommitDate: 2024-01-15 10:28:25 +0000 kern linker: Do not retry loading modules on EEXIST LINKER_LOAD_FILE() calls linker_load_dependencies() which will return EEXIST in case the module to be loaded has already been compiled into the kernel. Since the format of the module is now recognized then there is no need to retry loading with a different linker, otherwise the userland will get misleading error number ENOEXEC. PR: 274936 Reviewed by: dfr MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D42474 (cherry picked from commit ecf710f0e04e3314a492747124166ccb7cf4019e) --- sys/kern/kern_linker.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index a1073512e856..6ac2e694a4cf 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -461,8 +461,11 @@ linker_load_file(const char *filename, linker_file_t *result) * If we got something other than ENOENT, then it exists but * we cannot load it for some other reason. */ - if (error != ENOENT) + if (error != ENOENT) { foundfile = 1; + if (error == EEXIST) + break; + } if (lf) { error = linker_file_register_modules(lf); if (error == EEXIST) { From nobody Mon Jan 15 10:30:29 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7h629H7z56ZXv; Mon, 15 Jan 2024 10:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7h61N7Fz45gn; Mon, 15 Jan 2024 10:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314630; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=76cHIcr/ZWx8aWeyNA8zAGc9qPBbKjlippArpbnm4QY=; b=j+WXbv2L/gAwxggD5YvTrh2uYAt4CI0DaD5OrsANSIrrWM2QFAX+TsCzBh+IrZSRodp3+K KfmJH7FI605kKodEu/vIvgFb/OcziUVFyVklmTFAbYPxXpl5Kywqz4yPm2LHk71fXNF8Y/ JXVu6SOZHyA6cN3+Q096St0XnTsssrTGbL7eggfEzhIT0IRobDHnV4lK+S3x/9oHVU3r6L d6H1LhUQaaIQGOvVISeMJO168aFfELCIC3KGCBJbP9yxFOMh+ZxmB6f8uMHRhlL6htCcis 2HcvC1C0S8ToQG/BN/slL5UoXXrtx/lRBJFLeBOc1JH0pxupq0bXHfqVO+vQNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314630; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=76cHIcr/ZWx8aWeyNA8zAGc9qPBbKjlippArpbnm4QY=; b=Otabv6xpHu1jxk9m7a8o3xzP27ptjJIuf9atgqO+8btZ92Rl/VKd3arA7PG8tR8C+GNW1K 4YuzyDcaJ7A639jtg5qoY/TJ6KaNo21N7KRH+EIVQwTnYK7po8bpIIzERz9vPiUT39m6yy fM6qsqeqVpGvxoxW+20QvF4gFq/GpzY1EFZF2uvnE1LRicZXbt+sqjgT8z8FPCiBXZsAyQ OAms2hCiQ9okBosW4mgzs08SvSPLxRwgdGKXuZX0EmvF24B2BQ9NNlH0Czj0sNAHg3W5yN /H2l+0scxg8vGimsq+BYLdFdHBAHNxh6FM6M6BdA7K5/kZ1odlGqnbaMEPzZcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314630; a=rsa-sha256; cv=none; b=ftoIDZ3/S3CYUJ18s9UvmRHyu3wJIUsRcZuQBA12PJsih4enjU22GxHAlxzrG79DPsIN2o /lGOqDG2lR8MNSTmPaRaabhiJ4xvhCMiWDd2VkMDcWh9QSuHyG0EuJDfcwJJBMDfvTu2Ku RLf4rUfM7xTzfjG2atC+bKj2gsI8a4td9ilUvnCmZtSacAbCEztJ/3Nqf+73r/bMz5Tcpl WNvHb7Yppzk8RTz982vb97wMAwdytWFc7IOBiTo4Ejz5vrt9eZLojyKry6ByTJM5lFlbrU 7/JSYcellQIYHLTU2YO7ZkYOFplTh1Dkbn5ShsDTcKdQ+HSvg2ZBLFJ+0Rqcwg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7h60QZLzt8l; Mon, 15 Jan 2024 10:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FAUT9E012837; Mon, 15 Jan 2024 10:30:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FAUTaG012834; Mon, 15 Jan 2024 10:30:29 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:30:29 GMT Message-Id: <202401151030.40FAUTaG012834@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Zhenlei Huang Subject: git: d18326a7cf14 - stable/13 - kern linker: Do not retry loading modules on EEXIST List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zlei X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d18326a7cf14804086550c7463be9721e8d28b64 Auto-Submitted: auto-generated The branch stable/13 has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=d18326a7cf14804086550c7463be9721e8d28b64 commit d18326a7cf14804086550c7463be9721e8d28b64 Author: Zhenlei Huang AuthorDate: 2023-11-07 04:45:25 +0000 Commit: Zhenlei Huang CommitDate: 2024-01-15 10:30:02 +0000 kern linker: Do not retry loading modules on EEXIST LINKER_LOAD_FILE() calls linker_load_dependencies() which will return EEXIST in case the module to be loaded has already been compiled into the kernel. Since the format of the module is now recognized then there is no need to retry loading with a different linker, otherwise the userland will get misleading error number ENOEXEC. PR: 274936 Reviewed by: dfr MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D42474 (cherry picked from commit ecf710f0e04e3314a492747124166ccb7cf4019e) (cherry picked from commit e7fd435d3d4e888d9894d8c212c29ae6e2768f74) --- sys/kern/kern_linker.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index cbf006394aba..87354e47d002 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -446,8 +446,11 @@ linker_load_file(const char *filename, linker_file_t *result) * If we got something other than ENOENT, then it exists but * we cannot load it for some other reason. */ - if (error != ENOENT) + if (error != ENOENT) { foundfile = 1; + if (error == EEXIST) + break; + } if (lf) { error = linker_file_register_modules(lf); if (error == EEXIST) { From nobody Mon Jan 15 10:31:43 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7jW6yWLz56ZqP; Mon, 15 Jan 2024 10:31:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7jW4QFLz46Cy; Mon, 15 Jan 2024 10:31:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314703; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=anj2RV0DvFku2n2DmGITFAUIszJ2vIMp5b9ZOAtvsE4=; b=gnFJ0djAd2JWTIdqMDA2AxSNweiLMloAg5zZLauOHIXH1IYDKYLB0SXVIFONaxmIhICfgB lx8mTFlXKoP+1x5RzrUtTLflmdF6eepJtPQcuAlWcC4QvdsbpmieB/S4nw1Dv5jCuucoqt Pt27thsyX5X394lkFBtF8vSBFGtcL7X4UUnPKffiLLS4b7BrGYNxqDjBn4eF2mdOKRKiCn 1QgPqFSZCd7xt20BMaCM7rgazkx+JLAD2SH5janAw96Ze1o1fK19k0lSJJKTgEO3wywASy 3qI4RLkGiAHknyzkPHt8mgYCfPqU2KybuqYzOS4cgnIsqO/2jne8EfSBGgIkww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314703; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=anj2RV0DvFku2n2DmGITFAUIszJ2vIMp5b9ZOAtvsE4=; b=uDjEJ6f72HsqQpS2Fqsk63670tsaiDlkAG3qg6oqaiCKNQNzz4tAznlhQLljT8eaRSDJCS drmRmhgqPlcz/xYSNDyZLb8w/koSWVUjfMm4hMJG7aJ56d56ECAuTR7BS7CtHhPfC3CHyJ fGEA6mFV+vY2DS44UNGxRodvZsB3I3fNIUsjCJHV//BfepcSK+NL0GjrRf6NGQvKJyxg3w 3llhMPiS9I7N34hwsk57mRPQT/J9ojV/xvLV8DKmOzQ+jJFIx7nRvKfK2QEceSsKKV1gE9 wN77+6AGMmnG4BTNGZWwD+AHSe7pg+CYlB1BxBnWE3JDNOHqiXMdN8AbV7OlZA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314703; a=rsa-sha256; cv=none; b=thHC0hLnqOFhF7Szk6J2kPLUtpMU8GDvSQIL4uE1JFyIRJvGDdua5eeYLnlATpuGu+8JNJ q0uR9MEwRc0cVq39+EwXoGay0uaanX3Tn7GAHjV0a5IoX7HC6NXkrzX66Z4FNDxqVA/1q7 ZSAISBnytlDBzIWN6m+ChlImEKwff3t8cZ8LUdobuw2r8rXPz0Wen4wvn6yssAR5VcVvj6 DltRdAEz5r94bDf/uToNW8kDOYP7JnrPUGlDpJlWn82HeX1t9XGwd38YNqXOa9mypm+wLm nnTQqvaHQKswFa17mwxX8BiwhY9lAcDlkhEWCqPoRj76cobFelRwUusdxKf5Iw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7jW3BbmztBx; Mon, 15 Jan 2024 10:31:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FAVhQK018099; Mon, 15 Jan 2024 10:31:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FAVhmv018096; Mon, 15 Jan 2024 10:31:43 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:31:43 GMT Message-Id: <202401151031.40FAVhmv018096@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Zhenlei Huang Subject: git: 445eb90240ec - stable/12 - kern linker: Do not retry loading modules on EEXIST List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zlei X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 445eb90240ecbd095d8cf865af6773022e8dd750 Auto-Submitted: auto-generated The branch stable/12 has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=445eb90240ecbd095d8cf865af6773022e8dd750 commit 445eb90240ecbd095d8cf865af6773022e8dd750 Author: Zhenlei Huang AuthorDate: 2023-11-07 04:45:25 +0000 Commit: Zhenlei Huang CommitDate: 2024-01-15 10:31:01 +0000 kern linker: Do not retry loading modules on EEXIST LINKER_LOAD_FILE() calls linker_load_dependencies() which will return EEXIST in case the module to be loaded has already been compiled into the kernel. Since the format of the module is now recognized then there is no need to retry loading with a different linker, otherwise the userland will get misleading error number ENOEXEC. PR: 274936 Reviewed by: dfr MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D42474 (cherry picked from commit ecf710f0e04e3314a492747124166ccb7cf4019e) (cherry picked from commit e7fd435d3d4e888d9894d8c212c29ae6e2768f74) (cherry picked from commit d18326a7cf14804086550c7463be9721e8d28b64) --- sys/kern/kern_linker.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index f0732e7012ae..c199d4eb0f31 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -448,8 +448,11 @@ linker_load_file(const char *filename, linker_file_t *result) * If we got something other than ENOENT, then it exists but * we cannot load it for some other reason. */ - if (error != ENOENT) + if (error != ENOENT) { foundfile = 1; + if (error == EEXIST) + break; + } if (lf) { error = linker_file_register_modules(lf); if (error == EEXIST) { From nobody Mon Jan 15 10:34:44 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7n02X6wz56bPL; Mon, 15 Jan 2024 10:34:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7n01lPbz47SV; Mon, 15 Jan 2024 10:34:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314884; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cOMWRYW3BFulVOXSdcDxfy8ZrdRPLzb/M1h08kedJTo=; b=BD+VroLW09ivXmwuZrMIB7x6R3EIPpu6tBpz5nJiidZ1TqlEh/NWobiS5Ko0t13PR5AWhY h0dGkvtLXT67nlTY9NB6FKeLUHtniBdm9mqG/33toNQZzywoo3z7LYxX31OL8G3V/DbHp1 sF5/Cz0RXI6DfYqaaXtRBU7zg9g/Guitxe6ZdOk0aqaGxpw6u3BZ98crZFovgUwWhaZYyB BOmSqPPNQlPQW9NHk3ML/gefO5wjWtVeLdfPaBlBvgDIH8m73NwTmmGroKsqFpXKe5nUHU aeBFeV/Gexaj1L8mjVQP3FaTLPUB3w0tbrQu9fnfDkxyHI6zUOHDhEvbcffK9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314884; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cOMWRYW3BFulVOXSdcDxfy8ZrdRPLzb/M1h08kedJTo=; b=cAC4N3sVnwMIS4lcDsa6zUv9l7Y+Wl4WJPSq/NJuIAq+gjTKcHcn3WUZ6BmVKgUToU3XLd +43UZv3NM29zPmK8I6WtIzKr6vumZigjEnRKJSN9yPhVjzpUYL6EuLfWQ6j6mnAFKmHSI3 us6wPIQhRxdwla6zEtWRCchIUyNeFisitbhwWItUW2cQkCCBrCELcvBDbqLwtaThgm0bKX s/qDdtRIk7kY2AsxsEObsjqsj6FhOn8tqw7vIXkx7IXTuZtOLKRsjVVcVQlwMqf3Nn8Mp/ QXOH7AJ9t4iWm0vXzwyK65NyHX7FTKHqYYTVbikKKs4nLKffQvYJXYmiF/EBLQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314884; a=rsa-sha256; cv=none; b=P6DJ3pc5lnTa4qKP59swy1QGgsO4HX0xLCS8oJgum/AyU3KbbcZdZ/BperOM7jFcerJbeJ zYv5X8dEbCm+GZjcHMeRpVJ8HY8vxbswzQAd3seFHZ99LZ+HWyeGoKGPAo4759JiWgU4PQ XdNtjftolTIX2d9mRTa0gN4gKtl1A2amgJndOkLA0YOHCInYPE8lOSm5MtBslgJZEs/2cy CJv7JfJpFhVRO8vO6rLtE7lZEoGKKaEUzi9SMDdqjCTDhpF2jkzyPkZYMfPI8/CwtGi4vh sDWeX2gt7GELGOAnks2QmABkBQ/Dk6ko+CBNgSnzISuNKzdQIT0rSq93FGH8kQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7n00pYgzskp; Mon, 15 Jan 2024 10:34:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FAYi42020517; Mon, 15 Jan 2024 10:34:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FAYiN5020514; Mon, 15 Jan 2024 10:34:44 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:34:44 GMT Message-Id: <202401151034.40FAYiN5020514@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Yoshihiro Takahashi Subject: git: 5a70219b209f - stable/14 - resolv: Add a required include to resolv.h List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: nyan X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5a70219b209f4ba8e8244d3886d364da4c00e4df Auto-Submitted: auto-generated The branch stable/14 has been updated by nyan: URL: https://cgit.FreeBSD.org/src/commit/?id=5a70219b209f4ba8e8244d3886d364da4c00e4df commit 5a70219b209f4ba8e8244d3886d364da4c00e4df Author: Jan Beich AuthorDate: 2024-01-08 11:52:08 +0000 Commit: Yoshihiro Takahashi CommitDate: 2024-01-15 10:33:59 +0000 resolv: Add a required include to resolv.h Add a required include to resolv.h for sockaddr_in. This should reduce patching required when porting code written with Linux or NetBSD in mind. PR: 182466 MFC after: 1 week (cherry picked from commit 58cf91d3b72a01777bacf72d66a648a744ae3143) --- include/resolv.h | 1 + lib/libc/net/resolver.3 | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/include/resolv.h b/include/resolv.h index 467648b2aa53..b3986d35bc56 100644 --- a/include/resolv.h +++ b/include/resolv.h @@ -59,6 +59,7 @@ #include #include #include +#include #include /*% diff --git a/lib/libc/net/resolver.3 b/lib/libc/net/resolver.3 index e11159583f55..5ddbbc6fa1dd 100644 --- a/lib/libc/net/resolver.3 +++ b/lib/libc/net/resolver.3 @@ -27,7 +27,7 @@ .\" .\" @(#)resolver.3 8.1 (Berkeley) 6/4/93 .\" -.Dd September 15, 2022 +.Dd January 8, 2024 .Dt RESOLVER 3 .Os .Sh NAME @@ -47,9 +47,6 @@ .Sh LIBRARY .Lb libc .Sh SYNOPSIS -.In sys/types.h -.In netinet/in.h -.In arpa/nameser.h .In resolv.h .Ft int .Fo res_query From nobody Mon Jan 15 10:36:12 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TD7ph4VGTz56bPd; Mon, 15 Jan 2024 10:36:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TD7ph3qncz47tC; Mon, 15 Jan 2024 10:36:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314972; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TlTqVjwD6zmtC+hKk0ufal2jK/JKIyoQhs1oYYfKP/w=; b=fuSU/X56nnhin6zVF1emTirpFMUxqDlCnH/5jvMmZ4FMr9lmcXW6KDaoUwye8CNvEBq8B3 xM7PCSdLhXtQalM8qDyZQNqUJkjD8lREHR7lKDxktxpJ5t89mhS9Lbo/rFsgzB8W6CcYo7 3VYXwPJGuuJxzUoavIrOVfoJp6morIsw3y1TvpXbPkBoMTN+ag5zFpXlnI3Ppw0iaXFZuS 6QanXhfUcqR0+elHTiMrGC83X+EGeF1+iLVMMdt/gsoD09s7CE0tA4QIPoyvkeL92Wjd9/ 6Axq/t1yRRX5bTWGEH8ArQLTaZwM8umIP9r4N8MyrxNSxHUaDLBU7tIInFR9FA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705314972; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TlTqVjwD6zmtC+hKk0ufal2jK/JKIyoQhs1oYYfKP/w=; b=BS6uZV2iKn1MogYCBIsoJzrAKC6lamjx7KrVf0WjYVRPbJfeKlLkyRXC1FaAxcIAxS27Jw uK8DidUWY5z6dgKiz8GIXLumiwbHr0hzBbhty1c+kltO9sbkyBQSStxBOE3bet5L2kXJia D4C8yoagjVOAJ/JJE981AGYF35S7zvdBvc2bRyTivK++ii6X5TWeb6JwE5AuyNCUhQsRit tn3CCAEfIQoFPSsGeACaTIvSPmwV5e6ttFqHYFvwRBzJ6VET1vBYgNNK2Wm6AMWbHwBEuj BcRO1w6DGSat1Hfc+64/jDmnhVSQpLoPV8tYvxv1T7bqUA0RSH0wPCmirfpiZw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705314972; a=rsa-sha256; cv=none; b=I2szlzji1SSVLjLAnFquWkf4gvsLuh2hmwUwXdt1ryHT1JGzuttZ3SnCLqSe9/lnyUVpqy /MZ2id5H5HxJGJV48QbZMYRQULQmkCNWO9XmAiSkLUEI9/oUwsSDK5/lzwQiwi4j+EWu9o rWXnEAg0qGUcKbXOQ3gwDeD/V3tu1xiQlzkuW+K1f+vLZpqE59uq26n/PjKDR140xHu2sn lujW5gqzATPDR9+GpL2adEgIsq+0t+Vkcuisgy9hxwlHBPRQTRcjYnHzbrqu021ohV8s/x YwwtflGNsQws+nVrcGMY6LdFy4+Bj2cbSnJkjAT4d0+3/yXLBot+k9/R+SzSZg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TD7ph2wkCztQH; Mon, 15 Jan 2024 10:36:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FAaC0x020869; Mon, 15 Jan 2024 10:36:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FAaCFn020866; Mon, 15 Jan 2024 10:36:12 GMT (envelope-from git) Date: Mon, 15 Jan 2024 10:36:12 GMT Message-Id: <202401151036.40FAaCFn020866@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Yoshihiro Takahashi Subject: git: 4487c6281b6a - stable/13 - resolv: Add a required include to resolv.h List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: nyan X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 4487c6281b6a9347731a06aafada7be57aa2fe19 Auto-Submitted: auto-generated The branch stable/13 has been updated by nyan: URL: https://cgit.FreeBSD.org/src/commit/?id=4487c6281b6a9347731a06aafada7be57aa2fe19 commit 4487c6281b6a9347731a06aafada7be57aa2fe19 Author: Jan Beich AuthorDate: 2024-01-08 11:52:08 +0000 Commit: Yoshihiro Takahashi CommitDate: 2024-01-15 10:35:35 +0000 resolv: Add a required include to resolv.h Add a required include to resolv.h for sockaddr_in. This should reduce patching required when porting code written with Linux or NetBSD in mind. PR: 182466 MFC after: 1 week (cherry picked from commit 58cf91d3b72a01777bacf72d66a648a744ae3143) --- include/resolv.h | 1 + lib/libc/net/resolver.3 | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/include/resolv.h b/include/resolv.h index 467648b2aa53..b3986d35bc56 100644 --- a/include/resolv.h +++ b/include/resolv.h @@ -59,6 +59,7 @@ #include #include #include +#include #include /*% diff --git a/lib/libc/net/resolver.3 b/lib/libc/net/resolver.3 index e11159583f55..5ddbbc6fa1dd 100644 --- a/lib/libc/net/resolver.3 +++ b/lib/libc/net/resolver.3 @@ -27,7 +27,7 @@ .\" .\" @(#)resolver.3 8.1 (Berkeley) 6/4/93 .\" -.Dd September 15, 2022 +.Dd January 8, 2024 .Dt RESOLVER 3 .Os .Sh NAME @@ -47,9 +47,6 @@ .Sh LIBRARY .Lb libc .Sh SYNOPSIS -.In sys/types.h -.In netinet/in.h -.In arpa/nameser.h .In resolv.h .Ft int .Fo res_query From nobody Mon Jan 15 13:30:19 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDCgb4CS4z56x8M; Mon, 15 Jan 2024 13:30:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDCgb2q32z4ZlS; Mon, 15 Jan 2024 13:30:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705325419; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BdRWzFnf/lKT1TQoC932zsCG6GOc0jjb9wETtra1aFM=; b=LvBXkAkmu3m0ctLicOCRt6MyMp0Mq8GeOUkUs1FeL3Dgfz6MfUF8PAF2DVbRXGUSLHRwkW J+M2vTqlNyohvLW2vgcWtEIwvHSjyZqOfQUKzjNYL4PacqM3VL3lDgyyrNqpPq5GWcDWMg cdDcFV0G60e7Of9CHKpsJhiobLFj07hjBWtZDy+vRG58mGwdY8qpUJbCgQvJjDRL5+X6gd jdP00/u9Jkg61nV64elguwoid0m4XGLGRZw91+1tshQWuL1K7THkepoW9SztQEgla8ECDU TmFYpFhjQ32+cKwPtDUDbr+YXXAMV+I1x1x0ZPGLR+0hCK9U0gCcWY7eHeS49g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705325419; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BdRWzFnf/lKT1TQoC932zsCG6GOc0jjb9wETtra1aFM=; b=QFQmIUjpOzPWUbEKqeX5n7VJyFaiQ7TVy2+lgHq9T38Qhy+LYeqUTKylfmDvXXCM8j9Xl1 AFBfS5JyerK5WCgZtSObTpvdC8hslhrvrtYotqgi1ezXzE1hXKvm0nMw82WQq8T0RAPpwZ zDSvS4MxHG42jc8Ey0ER5iI2INQV+G588SvKHU5JawlXMBGqoS8aSros2SRZn8oTGyQi8k WNwT17OjkiPnnm/lB2OylIDenHJPF/y2UmAF+lktG8Mi8qVJKHPB5PsmlF2fyKlE+bqFsB aE5m54UNzf/eh9PUmsoAAA7zuokOnu2KuowIUKZT99klHakSALYk4gYS7+kd/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705325419; a=rsa-sha256; cv=none; b=TLhpZgHEoR1mabnipDUvN/zBZfMcTsWFMPtS2fvDfZPjEEfjxcREiDFJu6RA4qcFHTnGQM mbG0LfKrKCv6W8Xme3f5lzsg8rEuzGtLU03/LWv2C+MXurE33a+DWB4ycUYpdZS85g70m+ yU/9/CfgObBzTuQ2A6sywYeyDRQULwntw20MjFURIVpM/yfrjlan3nbnDmanbQlayzAWPN Gp9GvOkFvAlZNOkWHa09V2FLWJieXpyrp5wd0HQbO8PdO/k93g2+jfp/hH7RBh/BB3/XDg 0hbNBoCx8Z15hNITZy/0ZOuC8bxjpaGG+rQNbSxFlpFxw5aCW3DPFCzSswrFQA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDCgb1vZszxvr; Mon, 15 Jan 2024 13:30:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FDUJhY018006; Mon, 15 Jan 2024 13:30:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FDUJkN018003; Mon, 15 Jan 2024 13:30:19 GMT (envelope-from git) Date: Mon, 15 Jan 2024 13:30:19 GMT Message-Id: <202401151330.40FDUJkN018003@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mike Karels Subject: git: 9895c3a22783 - stable/14 - Increase the size of riscv GENERICSD images to 6 GB List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: karels X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 9895c3a22783e30711962c668a052283b7aa0729 Auto-Submitted: auto-generated The branch stable/14 has been updated by karels: URL: https://cgit.FreeBSD.org/src/commit/?id=9895c3a22783e30711962c668a052283b7aa0729 commit 9895c3a22783e30711962c668a052283b7aa0729 Author: Mike Karels AuthorDate: 2024-01-14 17:01:19 +0000 Commit: Mike Karels CommitDate: 2024-01-15 13:29:35 +0000 Increase the size of riscv GENERICSD images to 6 GB The stable/13 snapshot this week failed to build the riscv GENERICSD image because it ran out of space. Checking main and stable/14 snapshots, they are also low on space, around 100% or more of capacity. Increase them all from 5 GB to 6 GB. Note, this is the only riscv image configuration. Discussed with: cperciva (cherry picked from commit 6137b5f7b8c183ee8806d79b3f1d8e5e3ddb3df3) --- release/riscv/GENERICSD.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/riscv/GENERICSD.conf b/release/riscv/GENERICSD.conf index d0b1ee32743c..7bd58bc9f97b 100644 --- a/release/riscv/GENERICSD.conf +++ b/release/riscv/GENERICSD.conf @@ -7,7 +7,7 @@ EMBEDDED_TARGET="riscv" EMBEDDEDBUILD=1 FAT_SIZE="54m -b 8m" FAT_TYPE="16" -IMAGE_SIZE="5120M" +IMAGE_SIZE="6144M" KERNEL="GENERIC" MD_ARGS="-x 63 -y 255" PART_SCHEME="GPT" From nobody Mon Jan 15 13:31:54 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDCjR1b62z56xNL; Mon, 15 Jan 2024 13:31:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDCjQ5xqNz4bfR; Mon, 15 Jan 2024 13:31:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705325514; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TdAeKPXUGdURm496/0ciQiwyAveWnY+IROGHAfoBSU8=; b=sAf4+f+WsWq+wYa3bQtJ6pdeVdQohQIAFPr3Gu1EvDW0DY4IY5fehGgrUMUE+IU6YgtB7i Vk5euJQF/CANq6OreKdEYT791COJgtjv2h9b3zAyKfB1ExnKf1n3TZ6hCSHvF4alOxeeex Esn/AFFCl/Z5kcThgSycugzMQSC71/7qb6CuRWpUYtDVhqkYHuL7z9BGtblZVpSZSBz1Se Xo+r1g5OF/4wM25+EPgeBC6v1qqvYSxwXUEbK6EnCSq6dSNNIyxQIzKlkrOvKPuL0+455k Rshd/bzm72k32L/q2GqWqaUUsXgFHHsM7hN/UCIDbGECnNqIgOePZD4FCYVSeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705325514; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TdAeKPXUGdURm496/0ciQiwyAveWnY+IROGHAfoBSU8=; b=A/e2KVT5Cn0xl68fz2HE2OGkhqfNkt9ZI6sOAx031Z6g74QAfSWnkNXR9sb6HXkMhWotFr i/JrCUPbEy0z/2jD+1hPRxWMkxFk+OeyBB2PkfnpEegQxc+YSBIb8q+GSe0IWRoyUPaVzL z8Qga9Faa5QIFjXFw0+XGwHmfayCV38Gv47IClHAlnNyuGxVg68A2plb23MBQcXD8szbkH F3sbt0KNPIKuvLGH6vpQOapz+f52ZwM/+CBIPiwlAj2MeUGY8O8S1hh74M3gpnmaAGKwd9 +Tz1im2/WW0HBm82nZnzEbeJeEDO2uK65wTxWGF7nQLScYD1RxTDMxGu+fHJTA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705325514; a=rsa-sha256; cv=none; b=tg71hceqvHlqnW2oAtWIBH+JljYXQgpskHuaxZfiPOvHBvPLYnGrRy3RI0K7sb1KaRKbxx 36kbJ1dVTBnojfMrH2tg6nwJH0js/vQoVQzahK0YDz9opZ2GoJjMeqtlVmSlxz8eM3wsGN 0rnl+XZjep/fKgT4vEFhY3bp0gPmbWxY2MK9koIHI1ahTGv90cykBW2F7u7neecN6T/TGU zjKUNcLpCW32PubalehtY0yT9ctMp1P5UFCRBtrGBxrr/l80IB3svh+bUptSAgtIX6dXEo ML3aDkETpteoAjfehKqMaAVkMnszW09VEeSLJcSvbAdTW2XBnH5fiNPhdBJRHw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDCjQ4jFgzyS4; Mon, 15 Jan 2024 13:31:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FDVs5L023738; Mon, 15 Jan 2024 13:31:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FDVsM2023735; Mon, 15 Jan 2024 13:31:54 GMT (envelope-from git) Date: Mon, 15 Jan 2024 13:31:54 GMT Message-Id: <202401151331.40FDVsM2023735@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mike Karels Subject: git: c10c15319676 - stable/13 - Increase the size of riscv GENERICSD images to 6 GB List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: karels X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c10c15319676228c69aea7ad599d2472f16493b6 Auto-Submitted: auto-generated The branch stable/13 has been updated by karels: URL: https://cgit.FreeBSD.org/src/commit/?id=c10c15319676228c69aea7ad599d2472f16493b6 commit c10c15319676228c69aea7ad599d2472f16493b6 Author: Mike Karels AuthorDate: 2024-01-14 17:01:19 +0000 Commit: Mike Karels CommitDate: 2024-01-15 13:31:43 +0000 Increase the size of riscv GENERICSD images to 6 GB The stable/13 snapshot this week failed to build the riscv GENERICSD image because it ran out of space. Checking main and stable/14 snapshots, they are also low on space, around 100% or more of capacity. Increase them all from 5 GB to 6 GB. Note, this is the only riscv image configuration. Discussed with: cperciva (cherry picked from commit 6137b5f7b8c183ee8806d79b3f1d8e5e3ddb3df3) --- release/riscv/GENERICSD.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/riscv/GENERICSD.conf b/release/riscv/GENERICSD.conf index d0b1ee32743c..7bd58bc9f97b 100644 --- a/release/riscv/GENERICSD.conf +++ b/release/riscv/GENERICSD.conf @@ -7,7 +7,7 @@ EMBEDDED_TARGET="riscv" EMBEDDEDBUILD=1 FAT_SIZE="54m -b 8m" FAT_TYPE="16" -IMAGE_SIZE="5120M" +IMAGE_SIZE="6144M" KERNEL="GENERIC" MD_ARGS="-x 63 -y 255" PART_SCHEME="GPT" From nobody Mon Jan 15 14:56:10 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDFZf37jhz576h0; Mon, 15 Jan 2024 14:56:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDFZf2P0sz4lQr; Mon, 15 Jan 2024 14:56:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705330570; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0RJNidwigUryx5htiDejh0aeSChHrJqtnqvlt6VuOSY=; b=nx7ZF+jaGhzVkrMuzBoZrhi7AABTH92ESxwwZylKKJERH0VlUcD5yUbo/pHxqXovKboPk9 DSB8r95nFJURkLAn2fLxDOqVuI/elOSkpBX+/REgw5klpxgRa513Za42pavOXm4sYX1pO+ sQdB67YQ5DGU6DBAA8PpadPN8vSHCwACXlMwcPjSmD8E6YHuzvTsTEXA0yvN2odplBK8wZ seCWpPf/Lo/+2O/Mx3k1Y8z9skrzCbkCWNL6EPX67Jyakpq0b02Xquccx839j2Nzcb9/UO oxSS2gX8xLQuRhZP0XHzgOlyXBruVgfluNn6riaw8kAqAjc2lGeqGV+jNn38fg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705330570; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0RJNidwigUryx5htiDejh0aeSChHrJqtnqvlt6VuOSY=; b=R7aKRSbNHJxf0YMLg8Vq2kJ8IKIrSUk2SGP8dHMoK4watYOOgzMx24GjZM6w04RSn+zCCV dDwe82P4LP2CaZAIk7Xfl80oaZyHGoMcLPC8zMYSzm5ErphPeXIIlGT+sE+freRLdi/SXY OspVGD6+BuHNzCq5fQDpADqdV1KnU4eJ2DPGOH8aF+HwbQaf+LHjedsa3/MGeQb1rluRrv u6R4xQX7JuUHSgoNDfY8C1YfqW9vYB9ELvll/ozFfHyS+NQyVfrKkMpYJMK1NbUSXNv3X/ dmyYRAWY/St5ocpwsRKUvtxv0XysB75T/5mT8N1vtxesP53/nadGp+zJ94g4Xw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705330570; a=rsa-sha256; cv=none; b=neZIDCDLPwxrP1grcREdmZdyjB7ePcoBO6j5Q8bkEv+kkepiYJlVO5HZgj8K2S9j6oK7Z4 Hb6D723I6FayfqQwWpCAf+WCmiSg9x09h7xHuGY5jQsBOtiTY0+Of/AEHQALlPAGxGyj9G aFNRARmWBkGRDqBn/NOoNU60VkP7wMFH6g+keu3E/c7FUsj1UGWhsx+fniUa/t9p5bVQmd VdRDzaBe1yS6Y5K94HOya47QEfnGkM5bm2IKXiQrDtUIl1lU0hEYb4/LnQ6qzxUjTCwXYC F/HnqJCpsEz0SUv6SfXN1w11w420pmYkYAHaAbUS4sM27+JbNGzppzgFEZKlXQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDFZf1Tqqz11Z3; Mon, 15 Jan 2024 14:56:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FEuAKe059087; Mon, 15 Jan 2024 14:56:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FEuAll059084; Mon, 15 Jan 2024 14:56:10 GMT (envelope-from git) Date: Mon, 15 Jan 2024 14:56:10 GMT Message-Id: <202401151456.40FEuAll059084@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 6f2a87c6f1f8 - stable/14 - dtrace/profile: Set t_dtrace_trapframe for profile probes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6f2a87c6f1f869d60390952f35a4802bbce7ab7c Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=6f2a87c6f1f869d60390952f35a4802bbce7ab7c commit 6f2a87c6f1f869d60390952f35a4802bbce7ab7c Author: Mark Johnston AuthorDate: 2024-01-07 16:35:06 +0000 Commit: Mark Johnston CommitDate: 2024-01-15 14:49:21 +0000 dtrace/profile: Set t_dtrace_trapframe for profile probes profile provider probes fire in the context of a timer interrupt. Thus, the "regs" action can make use of the interrupt trap frame to get register values when the interrupt happened in kernel mode. Make that trap frame available when possible so that "regs" works more or less as it already does with the fbt and kinst providers. MFC after: 1 week (cherry picked from commit 7d35b389729ef5a3efcac75ad265139ada3f8e69) --- sys/cddl/dev/profile/profile.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/cddl/dev/profile/profile.c b/sys/cddl/dev/profile/profile.c index d86c09ba06b5..a939c13aad45 100644 --- a/sys/cddl/dev/profile/profile.c +++ b/sys/cddl/dev/profile/profile.c @@ -58,6 +58,8 @@ #include #include +#include + #define PROF_NAMELEN 15 #define PROF_PROFILE 0 @@ -246,12 +248,15 @@ profile_probe(profile_probe_t *prof, hrtime_t late) if (frame != NULL) { if (TRAPF_USERMODE(frame)) upc = TRAPF_PC(frame); - else + else { pc = TRAPF_PC(frame); + td->t_dtrace_trapframe = frame; + } } else if (TD_IS_IDLETHREAD(td)) pc = (uintfptr_t)&cpu_idle; dtrace_probe(prof->prof_id, pc, upc, late, 0, 0); + td->t_dtrace_trapframe = NULL; } static void From nobody Mon Jan 15 15:21:28 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDG7s139yz5794P; Mon, 15 Jan 2024 15:21:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDG7s0JqZz4rhH; Mon, 15 Jan 2024 15:21:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705332089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wg9Pfh/+xOueUkPDJaqhw7ppkRFLCCZN9+wSyXjTPXU=; b=QX5gVQdrvbKVDYj8uyEuAtUXrPX/LYjbLkz9BQdkfaNO9S7tegitm3vVvRnK+gUkWGGQUU qWj9dT8uN/cWQStak59is81OCbfoF1yVNJ1wWlnqE7SIUYO/B/LtmPAkwvvgy/251Y0+Mq On389J0SxqvIrXnVAzAmHyp17kwpiETAEBpXBIA7QMRL+yg+D4+9LaEgxE/cx892JL54vf a6iv58MGWIq5zngaxJk1DcA5QOkE2t3mAxLlK27p4ZCQ9mj/QOUQseEW9Uaz1hFFzHYEQj /XJDYJQUg7Te2RccHdDzXUGTm51mGNJtTYsjhookSG2LuPEjIcKKtPjkabQ2fA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705332089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wg9Pfh/+xOueUkPDJaqhw7ppkRFLCCZN9+wSyXjTPXU=; b=GN4zkkH2nbFDMNLBaNuBuxFI2vIWf+OHucGp6zfoB0BcsHZ6FMOrEUXLWgaAzDlPUJxCZa MSZJMlfGB/q352GxYJMjV4qgXV40ifY1cCuqzLecpJzUY2own8R9dYXLZi5pAgEcwg4gpi lwGQbXzg+mJLb0xQUB5mYvo4jI5wJQBd4DY3fBuCghds8zXyk/T05aBgSVxeZOhQ70Fyhi Oo8Z6kDfSStvOFNsePLYNamsy+F0SPu5DoJRgUJctJYoNUlKE7TrYTdhvFAbjq53Lnki/F 4QsQczXysGtM835BTT2XRrZyEm5uNP8bbAW1REnrvE42B9TrEJ5Er2+FxX0ELQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705332089; a=rsa-sha256; cv=none; b=ZRUBvti2kKLSlhJ31tASKvXBH3ezCzjxbVz8ErY30ndcUmFZO8Tox5hSaSyYhSZMdcxLg5 BubqGSUWl3rww08l7IejJ8Cea2vZABR+KcFM1OH0j+uNz5oylGx8K1mcvOawpyKxcMKqeM fpJY9J+HM8sJwqbAs8btqenzABEpNqW2cgI4DzbczMvIk23N92rGOPfEhKXfDAKuVIYSRs Vli8Bsjsh9/FqkAx23WhETZtfGkTp07265AQwa/OZ8++LncdXns7xRsTF+M/EZWUUmBZFa f/AHhvnBb1s5bBm1wS6NPBkwW+oRS8rZQxr5h3EIvR27JU46han5eI46CSR3uA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDG7r6WS4z128G; Mon, 15 Jan 2024 15:21:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FFLSSa003547; Mon, 15 Jan 2024 15:21:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FFLSPC003544; Mon, 15 Jan 2024 15:21:28 GMT (envelope-from git) Date: Mon, 15 Jan 2024 15:21:28 GMT Message-Id: <202401151521.40FFLSPC003544@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 554b8bc90704 - stable/14 - Fix "version introduced" in numerous manual pages List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 554b8bc90704e06434a0e775092a8eca6d319031 Auto-Submitted: auto-generated The branch stable/14 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=554b8bc90704e06434a0e775092a8eca6d319031 commit 554b8bc90704e06434a0e775092a8eca6d319031 Author: Tom Hukins AuthorDate: 2023-09-25 15:22:51 +0000 Commit: Ed Maste CommitDate: 2024-01-15 15:20:56 +0000 Fix "version introduced" in numerous manual pages Pull request: https://github.com/freebsd/freebsd-src/pull/853 (cherry picked from commit ba719a0fec8f831aef4b23de0ff36fd47bb26651) --- bin/ls/ls.1 | 2 +- lib/libc/gen/posix_spawn_file_actions_addopen.3 | 2 +- lib/libc/sys/fork.2 | 2 +- sbin/mount/mntopts.3 | 2 +- share/man/man4/igc.4 | 2 +- share/man/man4/mac_priority.4 | 2 +- share/man/man4/tslog.4 | 2 +- share/man/man7/growfs.7 | 2 +- share/man/man9/kasan.9 | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bin/ls/ls.1 b/bin/ls/ls.1 index c26e7767f88f..17d3f7c8eae4 100644 --- a/bin/ls/ls.1 +++ b/bin/ls/ls.1 @@ -927,7 +927,7 @@ command appeared in The .Fl v option was added in -.Fx 14.0 . +.Fx 13.2 . .Sh BUGS To maintain backward compatibility, the relationships between the many options are quite complex. diff --git a/lib/libc/gen/posix_spawn_file_actions_addopen.3 b/lib/libc/gen/posix_spawn_file_actions_addopen.3 index ef6348daa4ba..80bc91454471 100644 --- a/lib/libc/gen/posix_spawn_file_actions_addopen.3 +++ b/lib/libc/gen/posix_spawn_file_actions_addopen.3 @@ -270,6 +270,6 @@ The and .Fn posix_spawn_file_actions_addclosefrom_np functions first appeared in -.Fx 14.0 . +.Fx 13.1 . .Sh AUTHORS .An \&Ed Schouten Aq Mt ed@FreeBSD.org diff --git a/lib/libc/sys/fork.2 b/lib/libc/sys/fork.2 index eb9cfcd6130c..a3af078b3d69 100644 --- a/lib/libc/sys/fork.2 +++ b/lib/libc/sys/fork.2 @@ -267,4 +267,4 @@ implementation must be async-signal safe. The .Fn _Fork function appeared in -.Fx 14.0 . +.Fx 13.1 . diff --git a/sbin/mount/mntopts.3 b/sbin/mount/mntopts.3 index 782acabef1a0..0b0ccde425d9 100644 --- a/sbin/mount/mntopts.3 +++ b/sbin/mount/mntopts.3 @@ -378,4 +378,4 @@ The and .Fn chkdoreload functions were added in -.Fx 14.0 . +.Fx 13.2 . diff --git a/share/man/man4/igc.4 b/share/man/man4/igc.4 index 97b40b6ffb92..f77581edd00b 100644 --- a/share/man/man4/igc.4 +++ b/share/man/man4/igc.4 @@ -151,7 +151,7 @@ address. The .Nm device driver first appeared in -.Fx 14.0 . +.Fx 13.1 . .Sh AUTHORS .An -nosplit The diff --git a/share/man/man4/mac_priority.4 b/share/man/man4/mac_priority.4 index 868d027d5233..c63197d5fc29 100644 --- a/share/man/man4/mac_priority.4 +++ b/share/man/man4/mac_priority.4 @@ -125,4 +125,4 @@ MAC first appeared in and .Nm first appeared in -.Fx 14.0 . +.Fx 13.1 . diff --git a/share/man/man4/tslog.4 b/share/man/man4/tslog.4 index 93fb66f9e857..4d623d413fa0 100644 --- a/share/man/man4/tslog.4 +++ b/share/man/man4/tslog.4 @@ -101,7 +101,7 @@ first appeared in .Fx 12.0 . Support for tracing boot loaders and userland process was added in -.Fx 14.0 . +.Fx 13.2 . .Ss TSLOG vs. Boottrace .Nm is oriented towards system developers while diff --git a/share/man/man7/growfs.7 b/share/man/man7/growfs.7 index 241c12cd28f1..43648d8d9f2b 100644 --- a/share/man/man7/growfs.7 +++ b/share/man/man7/growfs.7 @@ -132,7 +132,7 @@ The manual page first appeared in .Fx 10.1 . The ability to add a swap partition was added in -.Fx 14.0 . +.Fx 13.2 . .Sh AUTHORS The man page and script were written by .An John-Mark Gurney Aq Mt jmg@FreeBSD.org . diff --git a/share/man/man9/kasan.9 b/share/man/man9/kasan.9 index 209fbb06506c..77d7e8f46aa8 100644 --- a/share/man/man9/kasan.9 +++ b/share/man/man9/kasan.9 @@ -163,7 +163,7 @@ should be 0. was ported from .Nx and first appeared in -.Fx 14.0 . +.Fx 13.1 . .Sh BUGS Accesses to kernel memory outside of the kernel map are ignored by the .Nm From nobody Mon Jan 15 19:08:19 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDM9c0ZRpz57MwH; Mon, 15 Jan 2024 19:08:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDM9c03PDz4ZNQ; Mon, 15 Jan 2024 19:08:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705345700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1V4STtUb0/kgLjjnc7C3UeexCyqNLPukxURGOT7NqEU=; b=gE5+uOQNVziA++JrOh3JIRhdfvwVX9QpIQdT1Dea00F3vZFDiwTHKrLhNhWOlJPtxfHpFe KGPObZy12z385hk9xx2uHkf3wCn6fZdo1gXvacGc3ueyMMBXwRkEILp8Jl+kpPeFDTF0Zq lQQopKoxDHh9gtiOoacExPS8D5ZLR1MK1KbJRODpMYg2LCw6pyDx76jicXqqCBixffK5pw rRsWzgHviUeCOtnU7GmOxCaLNp/2TcQqHqg2Q4rsd1q1cYLlSSemt7qQxd30AoZ3WPGwP2 swNB9LkNGF7yF0H/o1e963OSxBk2E0ZLKMCRBjtOwEp2mVwjOhDwVzPzVuBx5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705345700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1V4STtUb0/kgLjjnc7C3UeexCyqNLPukxURGOT7NqEU=; b=F+1hlYugpYBnoKi4tmSa0AiM6/J2DSlFuko0YnbLRj50NZ5dSOBLoZKIg2//G7sTlXWLsJ NnhMqbGs/I0HWbdTntmowE1tJgYC4qraeBoaK6urE3RWuFDxVJkNFREYrfx7JV+wGRUXbL 6j1xW2D4PJKCaHdNt5wn5SsPOXeofxnCMxyLdXlCqXQCEBAMvV2c8AnubsplIzC6I26w0M vKIx7Z3Ct386zxv0tf+UFzIGfvf8c5FS++B/xHp2AWnCCv2hHhDCLx6Re0tneEcN+EFN6M vpGnnPA7Mi+E4JLNI6aHAfcO5dpm+3FlAXrqHaZ23GprCRfxlimCR2S5sg1vRA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705345700; a=rsa-sha256; cv=none; b=mvrDl/vONwN3CripGdKOWYLqlRzBrsuObtlOEkZ3eFzJRRsOUb4Yc6X20JlAMZNk9bzwaf uUYQqMZ4ysXfgdHOJjfd+50w0r6FE1my2JpvRhyDfskah+U9Evh2JFkvDPBJ1OYqtDMkEQ vrCJd0I3TOse2LaKI/19QZ7hc/nlNZhCKN2NaL6X/3XLUo6lVZiUhND3rB0FSSh1KGlxF8 ZDtHK5SHoZTbejbPUc9drcxcBuIJUwVdIRBoBSql/rjc2qV4NXJL0CMzbpGlfliNXd7RGD hO4bes/7dR8mlKY943RJbuwZcANbiUAJvtxRdT8hjbCexgQYPmKvZAWPMU4hFQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDM9b6DXxz17fT; Mon, 15 Jan 2024 19:08:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FJ8JX1082080; Mon, 15 Jan 2024 19:08:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FJ8Jnu082077; Mon, 15 Jan 2024 19:08:19 GMT (envelope-from git) Date: Mon, 15 Jan 2024 19:08:19 GMT Message-Id: <202401151908.40FJ8Jnu082077@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Wolfram Schneider Subject: git: 03bff02e81d3 - stable/13 - Revert "fix using man(1) with multiple pages" List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wosch X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 03bff02e81d38f0241b44769a79eb96f94a4960b Auto-Submitted: auto-generated The branch stable/13 has been updated by wosch: URL: https://cgit.FreeBSD.org/src/commit/?id=03bff02e81d38f0241b44769a79eb96f94a4960b commit 03bff02e81d38f0241b44769a79eb96f94a4960b Author: Wolfram Schneider AuthorDate: 2024-01-15 19:05:08 +0000 Commit: Wolfram Schneider CommitDate: 2024-01-15 19:05:08 +0000 Revert "fix using man(1) with multiple pages" This reverts commit 79e7fef944f7f4bb6865d2b5d0d38b7933ed6e79. man.sh on stable/13 is missing some new features. Unfortunately this means that this fix is not working as on stable/14. Be patient and wait until the following 2 commits are ready to merge. --- usr.bin/man/man.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/man/man.sh b/usr.bin/man/man.sh index 9c90f0a6a9b5..114ea9d7a0b2 100755 --- a/usr.bin/man/man.sh +++ b/usr.bin/man/man.sh @@ -973,7 +973,7 @@ do_man() { fi man_setup - for page in "$@"; do + for page in "$pages"; do decho "Searching for \"$page\"" man_find_and_display "$page" done From nobody Mon Jan 15 23:11:47 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDSZX14WZz57n3T; Mon, 15 Jan 2024 23:11:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDSZX0g7jz4Dmk; Mon, 15 Jan 2024 23:11:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705360308; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=s7VVjajieepfs6Q945tKSfVMeKx4yu7VpEp6lRmtofs=; b=IAtce+zlE8YOuXzk/1RDfHYpeSE9gZzR7JJlVxqqc7Wc+S0Qwo8Z/rHYRT1cKTBGJTQsU+ oa4X4QVDXd1erHOCGrbdVVZE94HTkzWbSp1oSEwwoUHQTDOEkVmJpgrJCI1xhF/V5rTmWQ azacyQ0FbV+DEZ4t3EbdRnI4sR0Luasgcg+HHVuIpaVP8YNdYrbIfiL7N6tPt18ETqzt2/ 7LwzlSy9VSqFh8ZmUclY3IbhQc69rcQsY0kb2xcsgrCPw2OcOiJnFA3KyP7HLLBAT6gZpw kUKeuJfrkNw98RvM+U0HdPUUCD6Wo/FAYwrwJlSXGIgMHxQvJ1D9rzvk9R1DJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705360308; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=s7VVjajieepfs6Q945tKSfVMeKx4yu7VpEp6lRmtofs=; b=OrQk01u8vtcUiCa3BDBgfQidwSjsfVnh7GrGlJG59aEPfG4Riq3mhKpXtnryaWAR5sWzuL awzjJQzk5lDxtpquOWY2rWWf9FToeb3N0JmQwsqPuWPoJ6vMoU+VyrOPqNQCZZlfEgZ+K2 +bndTwC/0Nx97LFrJ7lkDJlb1wQ99Yit3n7uxcy/5gs5FBaEN9/wgLu96uJTVWfupCnrEC DYGCIMp1u2Vyek9lkob9BbRpu0+9VJueXrxK5+Q5t2hrkvBTznoloiHP2K2RmUR59/OBIV +OOpO8Ug4sPgJDqU4pNKtPu6LKK2GUUF+YdgEOPBUmGr8qWH2FeMgCXkWYlG4A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705360308; a=rsa-sha256; cv=none; b=ZvxJQlTFAloFUffhYyqwzIpoIr1EbPQzwSdntVBJUwKJYmJ4ra65B9juwr6YuY1cIdj7gS ry3fjJLDeQ+6sALpMf6m3i65dlUlmye1aoeSyjeIB7Ze4TJe3xUxlGKzfEvQ9rg8O+/CMm onwzY8sja90NRp6u7fuPYZodDp+qLv5gY29gAopViwZDYdC9YBpQazZpLR7inWvSgZ0iA6 NLShCeY+3zWFj+lNytjNjj9QSE19KhCLMTQTWB63wn3CxHWOPJdRSs9mxIx+0lpx0Uglp6 gviVb/HwYv2qWI8GABJozJPqF64S0pwrzTJ9dKYwc/DyZAK2P8k2xpAaPlwIwQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDSZW6s0gzGGL; Mon, 15 Jan 2024 23:11:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FNBlev097801; Mon, 15 Jan 2024 23:11:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FNBlQr097798; Mon, 15 Jan 2024 23:11:47 GMT (envelope-from git) Date: Mon, 15 Jan 2024 23:11:47 GMT Message-Id: <202401152311.40FNBlQr097798@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 426b28fdf700 - stable/14 - bhyveload: use a dirfd to support -h List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 426b28fdf700bcd8c05b25665da34f806b27b1bb Auto-Submitted: auto-generated The branch stable/14 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=426b28fdf700bcd8c05b25665da34f806b27b1bb commit 426b28fdf700bcd8c05b25665da34f806b27b1bb Author: Kyle Evans AuthorDate: 2024-01-03 22:17:59 +0000 Commit: Kyle Evans CommitDate: 2024-01-15 22:27:59 +0000 bhyveload: use a dirfd to support -h Don't allow lookups from the loader scripts, which in rare cases may be in guest control depending on the setup, to leave the specified host root. Open the root dir and strictly do RESOLVE_BENEATH lookups from there. cb_open() has been restructured a bit to work nicely with this, using fdopendir() in the directory case and just using the fd we already opened in the regular file case. hostbase_open() was split out to provide an obvious place to apply rights(4) if that's something we care to do. Reviewed by: allanjude (earlier version), markj (cherry picked from commit 6779d44bd878e3cf4723f7386b11da6508ab5431) --- usr.sbin/bhyveload/bhyveload.c | 84 ++++++++++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 27 deletions(-) diff --git a/usr.sbin/bhyveload/bhyveload.c b/usr.sbin/bhyveload/bhyveload.c index 6b2633cac288..4c1dbd583e1f 100644 --- a/usr.sbin/bhyveload/bhyveload.c +++ b/usr.sbin/bhyveload/bhyveload.c @@ -88,11 +88,11 @@ #define NDISKS 32 -static char *host_base; static struct termios term, oldterm; static int disk_fd[NDISKS]; static int ndisks; static int consin_fd, consout_fd; +static int hostbase_fd = -1; static int need_reinit; @@ -159,42 +159,61 @@ static int cb_open(void *arg __unused, const char *filename, void **hp) { struct cb_file *cf; - char path[PATH_MAX]; + struct stat sb; + int fd, flags; - if (!host_base) + cf = NULL; + fd = -1; + flags = O_RDONLY | O_RESOLVE_BENEATH; + if (hostbase_fd == -1) return (ENOENT); - strlcpy(path, host_base, PATH_MAX); - if (path[strlen(path) - 1] == '/') - path[strlen(path) - 1] = 0; - strlcat(path, filename, PATH_MAX); - cf = malloc(sizeof(struct cb_file)); - if (stat(path, &cf->cf_stat) < 0) { - free(cf); + /* Absolute paths are relative to our hostbase, chop off leading /. */ + if (filename[0] == '/') + filename++; + + /* Lookup of /, use . instead. */ + if (filename[0] == '\0') + filename = "."; + + if (fstatat(hostbase_fd, filename, &sb, AT_RESOLVE_BENEATH) < 0) return (errno); + + if (!S_ISDIR(sb.st_mode) && !S_ISREG(sb.st_mode)) + return (EINVAL); + + if (S_ISDIR(sb.st_mode)) + flags |= O_DIRECTORY; + + /* May be opening the root dir */ + fd = openat(hostbase_fd, filename, flags); + if (fd < 0) + return (errno); + + cf = malloc(sizeof(struct cb_file)); + if (cf == NULL) { + close(fd); + return (ENOMEM); } + cf->cf_stat = sb; cf->cf_size = cf->cf_stat.st_size; + if (S_ISDIR(cf->cf_stat.st_mode)) { cf->cf_isdir = 1; - cf->cf_u.dir = opendir(path); - if (!cf->cf_u.dir) - goto out; - *hp = cf; - return (0); - } - if (S_ISREG(cf->cf_stat.st_mode)) { + cf->cf_u.dir = fdopendir(fd); + if (cf->cf_u.dir == NULL) { + close(fd); + free(cf); + return (ENOMEM); + } + } else { + assert(S_ISREG(cf->cf_stat.st_mode)); cf->cf_isdir = 0; - cf->cf_u.fd = open(path, O_RDONLY); - if (cf->cf_u.fd < 0) - goto out; - *hp = cf; - return (0); + cf->cf_u.fd = fd; } - -out: - free(cf); - return (EINVAL); + *hp = cf; + return (0); } static int @@ -714,6 +733,17 @@ usage(void) exit(1); } +static void +hostbase_open(const char *base) +{ + + if (hostbase_fd != -1) + close(hostbase_fd); + hostbase_fd = open(base, O_DIRECTORY | O_PATH); + if (hostbase_fd == -1) + err(EX_OSERR, "open"); +} + int main(int argc, char** argv) { @@ -748,7 +778,7 @@ main(int argc, char** argv) break; case 'h': - host_base = optarg; + hostbase_open(optarg); break; case 'l': From nobody Mon Jan 15 23:11:52 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDSZc2hKKz57mxg; Mon, 15 Jan 2024 23:11:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDSZc1vM8z4F8p; Mon, 15 Jan 2024 23:11:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705360312; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OaPRPP7T7f4jYcmnmjuIIrG44cQIgoWdhFFwF6Upows=; b=xXeyN54rEssCuJFRVeYQG22JEe7n7msUQUPxZyjasaZ2Kg3/qKGTuuvNrwY83MWkEjUxdt K9QDarJoK2Ju63kWsFmadJagPzzmwy+I54onJvIljTys5YAGOaCNOW8xF0F00/LadIVIaG pMWsgPTIJTn3K7pqpIGgJ7JChnL8GLpurTgWxK9VaUp34L7VGOKihwmoz3zWfiZQKrL755 yGAMfiuE6emM0kQkR3gg8/eeK/u69+jjKtxgqT4YWZq4L/ZIwGZiqVrSydaJNegBORY7B5 sDG3gi8KoLJa/JGY1eNF5zX2WUjKnPhxA4tM4tFdFDEVdOXy+Lvd8tr7GPGTqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705360312; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OaPRPP7T7f4jYcmnmjuIIrG44cQIgoWdhFFwF6Upows=; b=CRY1d/sI8noC1QM5RRa0EVwwhyKkq/1ZtLNHV27JmqgE1zqFGMIK0q1GbqrQRZIBK4Uadt 6kdVmDKempFY3eLwgp20FsdGOt55AA1NDfze2/pUcWjrWFGFIITgfQxw8ROy3TnXX1kr3J ZraPHLDwQUsZRIOHsUBKYq7A1zt3uWHooKA6kNd6+bhpBLzoqFbM8/gCLF8oEhpEShSZUi vazchczdFl/32GsdtFa+P3+TErjTvNcJKv7I70YpbBclm+TppJI/AyNY1revbYSmPLfl9y IgqkIreWGpBWDwCIOqGWGKvNuqEuNe354OnC8YYznSo/eei+1RiK619SAS/FPQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705360312; a=rsa-sha256; cv=none; b=tGVqi5oJIXHhcSyYR92QkTBlqVjKaR893f97efBwdrKfc1tlhZIVymbI5wx3Y+CfC3dxss mYVlQYHvewL4Ni3xPTqQXPKPiW0U5SvD3DhSvKAThGo20TBKr4Ro81/rLk4QM5zDjCHqUm YYO4tGWqZjhPhLwRS20RtV6P5ibj6iJ+AbevBaSEWhOCs4VL7kUPXwc40Ym+zTSMSaHJFq wUUeRJjbyaPnPuM3PGciKIW/GFyzvNhdPtfvu+DZ1elCrzNBr4HPzfwz3QmUW2InL2rgws z9nvyONGdcBxcfWSBK0zhjvDXfznwm7kGSyBL1TXhQxG5+sYgor87ZKW5BT30g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDSZc0pwzzGGP; Mon, 15 Jan 2024 23:11:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40FNBqZT097947; Mon, 15 Jan 2024 23:11:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40FNBq46097944; Mon, 15 Jan 2024 23:11:52 GMT (envelope-from git) Date: Mon, 15 Jan 2024 23:11:52 GMT Message-Id: <202401152311.40FNBq46097944@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 78345dbd7a00 - stable/13 - bhyveload: use a dirfd to support -h List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 78345dbd7a004e0a6d1b717e7dbc758ae67ca293 Auto-Submitted: auto-generated The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=78345dbd7a004e0a6d1b717e7dbc758ae67ca293 commit 78345dbd7a004e0a6d1b717e7dbc758ae67ca293 Author: Kyle Evans AuthorDate: 2024-01-03 22:17:59 +0000 Commit: Kyle Evans CommitDate: 2024-01-15 23:11:38 +0000 bhyveload: use a dirfd to support -h Don't allow lookups from the loader scripts, which in rare cases may be in guest control depending on the setup, to leave the specified host root. Open the root dir and strictly do RESOLVE_BENEATH lookups from there. cb_open() has been restructured a bit to work nicely with this, using fdopendir() in the directory case and just using the fd we already opened in the regular file case. hostbase_open() was split out to provide an obvious place to apply rights(4) if that's something we care to do. Reviewed by: allanjude (earlier version), markj (cherry picked from commit 6779d44bd878e3cf4723f7386b11da6508ab5431) --- usr.sbin/bhyveload/bhyveload.c | 85 ++++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 27 deletions(-) diff --git a/usr.sbin/bhyveload/bhyveload.c b/usr.sbin/bhyveload/bhyveload.c index d3095483b797..797f8b88dad2 100644 --- a/usr.sbin/bhyveload/bhyveload.c +++ b/usr.sbin/bhyveload/bhyveload.c @@ -61,6 +61,7 @@ #include #include +#include #include #include #include @@ -87,11 +88,11 @@ #define NDISKS 32 -static char *host_base; static struct termios term, oldterm; static int disk_fd[NDISKS]; static int ndisks; static int consin_fd, consout_fd; +static int hostbase_fd = -1; static int need_reinit; @@ -157,42 +158,61 @@ static int cb_open(void *arg __unused, const char *filename, void **hp) { struct cb_file *cf; - char path[PATH_MAX]; + struct stat sb; + int fd, flags; - if (!host_base) + cf = NULL; + fd = -1; + flags = O_RDONLY | O_RESOLVE_BENEATH; + if (hostbase_fd == -1) return (ENOENT); - strlcpy(path, host_base, PATH_MAX); - if (path[strlen(path) - 1] == '/') - path[strlen(path) - 1] = 0; - strlcat(path, filename, PATH_MAX); - cf = malloc(sizeof(struct cb_file)); - if (stat(path, &cf->cf_stat) < 0) { - free(cf); + /* Absolute paths are relative to our hostbase, chop off leading /. */ + if (filename[0] == '/') + filename++; + + /* Lookup of /, use . instead. */ + if (filename[0] == '\0') + filename = "."; + + if (fstatat(hostbase_fd, filename, &sb, AT_RESOLVE_BENEATH) < 0) return (errno); + + if (!S_ISDIR(sb.st_mode) && !S_ISREG(sb.st_mode)) + return (EINVAL); + + if (S_ISDIR(sb.st_mode)) + flags |= O_DIRECTORY; + + /* May be opening the root dir */ + fd = openat(hostbase_fd, filename, flags); + if (fd < 0) + return (errno); + + cf = malloc(sizeof(struct cb_file)); + if (cf == NULL) { + close(fd); + return (ENOMEM); } + cf->cf_stat = sb; cf->cf_size = cf->cf_stat.st_size; + if (S_ISDIR(cf->cf_stat.st_mode)) { cf->cf_isdir = 1; - cf->cf_u.dir = opendir(path); - if (!cf->cf_u.dir) - goto out; - *hp = cf; - return (0); - } - if (S_ISREG(cf->cf_stat.st_mode)) { + cf->cf_u.dir = fdopendir(fd); + if (cf->cf_u.dir == NULL) { + close(fd); + free(cf); + return (ENOMEM); + } + } else { + assert(S_ISREG(cf->cf_stat.st_mode)); cf->cf_isdir = 0; - cf->cf_u.fd = open(path, O_RDONLY); - if (cf->cf_u.fd < 0) - goto out; - *hp = cf; - return (0); + cf->cf_u.fd = fd; } - -out: - free(cf); - return (EINVAL); + *hp = cf; + return (0); } static int @@ -710,6 +730,17 @@ usage(void) exit(1); } +static void +hostbase_open(const char *base) +{ + + if (hostbase_fd != -1) + close(hostbase_fd); + hostbase_fd = open(base, O_DIRECTORY | O_PATH); + if (hostbase_fd == -1) + err(EX_OSERR, "open"); +} + int main(int argc, char** argv) { @@ -744,7 +775,7 @@ main(int argc, char** argv) break; case 'h': - host_base = optarg; + hostbase_open(optarg); break; case 'l': From nobody Tue Jan 16 19:05:07 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3R2bRXz57qv7; Tue, 16 Jan 2024 19:05:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3R266lz54P5; Tue, 16 Jan 2024 19:05:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7BoV8qQ9mSN8o0yp4gu4Di6Sv9+oTNLOz0hvpiqQAuI=; b=YitPh3BZy2fO4KkipfYZBvKDuBBDkDtC9BKg9YgiibMXyb5jgxxBSB4j5XlUOl5wHZ5LHL MV1yRS+ikPGIwMMUCHZeetaPm+0eh9gH3CwiFnmpPMfrhmRpLVFMEbL9g8Wg95JQOMjEX+ y3P0VeRId9hWDw9k4yCBgjpuZ/9d5hDQTvQwGYRz+/8ZgGZbiQZW4HCfoPsy71k7GiSRyF Y24may7gv6ZzQzCcGsVfa4WijvWXcNIlnqWounkjxXUzom2F3HJsANW5v/D+uHeJlAXgrh zRkSEIvTuqVAon6lBfDnRmrMBg8ZsJU06uAlmxmagJkL0PTApBtwDxgtCS0AVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7BoV8qQ9mSN8o0yp4gu4Di6Sv9+oTNLOz0hvpiqQAuI=; b=lAYquDrRvPprKdD/ZPwlkzZvY5GaA5TB2jGbW5+fc7NH4B5upaVdD2BhOru9Ml6YQsguF9 BahbdYcexZrLPesZlTQxfSqfBq8jo0TIr+y/jjSy6gr0VSAFNdOp8+ok0Ap2r1vPZQiat/ fFJFWGDm/7pJm5O6ByraFuycSZ2mPFSvV7Vfol5nUZ6HsLzNS915y/6GUh4DJPmz90bRoa 54bAoiCEtcOoWzhTQ8WOG6WXQqKDnAeK+ZifDD3cUHEuZDUbH+ULJNOEGWrnsM20oq2xed RQ1m/iHT+ALP4msNUBHiNtC/aNadwmFsB2d2bD5Qsws81Wkk/rDm/yP8tqddcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431907; a=rsa-sha256; cv=none; b=P2w/WVLrNDv+q+dO+VbKQvTBtgCv6UC9ibvzYs2mFr3ylsMbitTDHSOgrSBEgD1cWoelfL wgDiNOBXD79Pe3bNzozLruOhy5tHXzyiHpujOt3O9NvQEqtRnCyZcqVxxMkikmAjWL2N2r DRv85DYrYc1zjsjE2spE6MmCq4rknMd/VkHE342pBjHBSP66r7S74rh5xUlRjRF1390r6W /U56Ckdcxitga7sc3PrUoBVQXUIqKRfz4ZBI65uEs6YEEaiQmDseLNpQjTOeYCEYIZ9ltW a9HMFjYO6HOGg0p3pOdsFH3sFXy1m/mfwKqh76HrL9bX5K8l7NoCwdtkxl4uvQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3R1B2Lzs8Z; Tue, 16 Jan 2024 19:05:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ57ve009833; Tue, 16 Jan 2024 19:05:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ57am009830; Tue, 16 Jan 2024 19:05:07 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:07 GMT Message-Id: <202401161905.40GJ57am009830@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 123fd2a93eea - stable/14 - Add the BBR and RACK stacks to the LINT kernel. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 123fd2a93eeaeff0bb3ac433526296f44b75e368 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=123fd2a93eeaeff0bb3ac433526296f44b75e368 commit 123fd2a93eeaeff0bb3ac433526296f44b75e368 Author: Dag-Erling Smørgrav AuthorDate: 2023-10-18 14:13:12 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:32:07 +0000 Add the BBR and RACK stacks to the LINT kernel. While here, drop the EXTRA_TCP_STACKS option, which serves no purpose and should never have been added. Instead, build bbr and rack as long as either or both of INET and INET6 is enabled. There is no risk to anyone who doesn't load one or both and then twiddle the relevant sysctls. Differential Revision: https://reviews.freebsd.org/D42088 (cherry picked from commit 3a338c534154164504005beb00a3c6feb03756cc) --- share/man/man5/src.conf.5 | 2 -- sys/conf/NOTES | 4 +++- sys/conf/files | 7 +++++++ sys/conf/kern.opts.mk | 1 - sys/conf/kern.post.mk | 4 ---- sys/conf/options | 2 ++ sys/modules/tcp/Makefile | 7 ++----- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index b31d44abde9f..89070b097f6f 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -643,8 +643,6 @@ Avoid installing examples to .Pa /usr/share/examples/ . .It Va WITH_EXPERIMENTAL Include experimental features in the build. -.It Va WITH_EXTRA_TCP_STACKS -Build extra TCP stack modules. .It Va WITHOUT_FDT Do not build Flattened Device Tree support as part of the base system. This includes the device tree compiler (dtc) and libfdt support library. diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 088bd7426a77..45dd6c30c7ba 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -678,7 +678,6 @@ options TCP_OFFLOAD # TCP offload support. options TCP_RFC7413 # TCP Fast Open options TCPHPTS -makeoptions WITH_EXTRA_TCP_STACKS=1 # RACK and BBR TCP kernel modules # In order to enable IPSEC you MUST also add device crypto to # your kernel configuration @@ -690,6 +689,9 @@ options IPSEC #IP security (requires device crypto) options IPSEC_SUPPORT #options IPSEC_DEBUG #debug for IP security +# Alternative TCP stacks +options TCP_BBR +options TCP_RACK # TLS framing and encryption/decryption of data over TCP sockets. options KERN_TLS # TLS transmit and receive offload diff --git a/sys/conf/files b/sys/conf/files index 39b68a79e20f..2b558bf339a8 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -4362,6 +4362,13 @@ netinet/tcp_pcap.c optional inet tcppcap | inet6 tcppcap \ compile-with "${NORMAL_C} ${NO_WNONNULL}" netinet/tcp_reass.c optional inet | inet6 netinet/tcp_sack.c optional inet | inet6 +netinet/tcp_stacks/bbr.c optional inet tcp_bbr | inet6 tcp_bbr \ + compile-with "${NORMAL_C} -DMODNAME=tcp_bbr -DSTACKNAME=bbr" +netinet/tcp_stacks/rack.c optional inet tcp_bbr | inet6 tcp_bbr \ + compile-with "${NORMAL_C} -DMODNAME=tcp_rack -DSTACKNAME=rack" +netinet/tcp_stacks/rack_bbr_common.c optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack +netinet/tcp_stacks/sack_filter.c optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack +netinet/tcp_stacks/tailq_hash.c optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack netinet/tcp_stats.c optional stats inet | stats inet6 netinet/tcp_subr.c optional inet | inet6 netinet/tcp_syncache.c optional inet | inet6 diff --git a/sys/conf/kern.opts.mk b/sys/conf/kern.opts.mk index 178a4db61cb2..f8bedab700b4 100644 --- a/sys/conf/kern.opts.mk +++ b/sys/conf/kern.opts.mk @@ -56,7 +56,6 @@ __DEFAULT_YES_OPTIONS = \ __DEFAULT_NO_OPTIONS = \ BHYVE_SNAPSHOT \ - EXTRA_TCP_STACKS \ INIT_ALL_PATTERN \ INIT_ALL_ZERO \ KERNEL_RETPOLINE \ diff --git a/sys/conf/kern.post.mk b/sys/conf/kern.post.mk index f42ec4a9564b..d74087fc7c3d 100644 --- a/sys/conf/kern.post.mk +++ b/sys/conf/kern.post.mk @@ -33,10 +33,6 @@ MKMODULESENV+= CONF_CFLAGS="${CONF_CFLAGS}" MKMODULESENV+= WITH_CTF="${WITH_CTF}" .endif -.if defined(WITH_EXTRA_TCP_STACKS) -MKMODULESENV+= WITH_EXTRA_TCP_STACKS="${WITH_EXTRA_TCP_STACKS}" -.endif - .if !empty(KCSAN_ENABLED) MKMODULESENV+= KCSAN_ENABLED="yes" .endif diff --git a/sys/conf/options b/sys/conf/options index aede28eeaaa7..31ddbe2e6981 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -229,6 +229,8 @@ SW_WATCHDOG opt_watchdog.h TCPHPTS opt_inet.h TCP_REQUEST_TRK opt_global.h TCP_ACCOUNTING opt_global.h +TCP_BBR opt_inet.h +TCP_RACK opt_inet.h # # TCP SaD Detection is an experimental Sack attack Detection (SaD) # algorithm that uses "normal" behaviour with SACK's to detect diff --git a/sys/modules/tcp/Makefile b/sys/modules/tcp/Makefile index 8f89977b5b69..364c0326c40d 100644 --- a/sys/modules/tcp/Makefile +++ b/sys/modules/tcp/Makefile @@ -8,13 +8,10 @@ SUBDIR= \ ${_tcp_rack} \ ${_tcpmd5} \ -.if ${MK_EXTRA_TCP_STACKS} != "no" || defined(ALL_MODULES) -_tcp_bbr= bbr -_tcp_rack= rack -.endif - .if (${MK_INET_SUPPORT} != "no" || ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) +_tcp_bbr= bbr +_tcp_rack= rack .if ${KERN_OPTS:MIPSEC_SUPPORT} && !${KERN_OPTS:MTCP_SIGNATURE} _tcpmd5= tcpmd5 .endif From nobody Tue Jan 16 19:05:08 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3S3Sdxz57qv9; Tue, 16 Jan 2024 19:05:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3S32zbz54RL; Tue, 16 Jan 2024 19:05:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431908; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=C9EAxLfmbEI/0QCs4cYkcSA50J74mYjeW4VKacyYE+o=; b=mJUq+olvM6tH64JlV+rCSwCHSuvcScT9aWNBIbVDeSRhSUvSRd/HadSZKr5OMXAvDRn4Ir AuuRZOeLXjLEUdzp79qZtodP5YFXFLU6TpYI3LzcqLGOydfDfpItdsP9s+7VZ3SNPxI7Jv vX5iLcP9FXAZ/AP9fv0hmhUba33Tgz2LcKJ96w7UIe/Pfc16/uCWbodSun5iqvos3KmPkU aPA9kPCR/qAB/WpeLaq3BPS9C0iCpHnaHl9PlE/XjUGMsAPm1ES2lSSy9q9PQCf2qx7pRv sJAWLPt2gtr+fg4GlLfxbEqTWLiM4SI4oIFcq/y3BaHFUxOmuF6Yne21SCKgTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431908; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=C9EAxLfmbEI/0QCs4cYkcSA50J74mYjeW4VKacyYE+o=; b=KT8l3ZtF75DgLkBYcXoulyYwVHFXL30ET0cRDCRpBQtKZGcIWq7VuYdtPQyYboc+VR+s0+ kuuXFzJocGrQCVNfDgi++kGvQIvk6wa2ejCvQKWUtoQ5mtVPf0utM+ootmpxG9NinNuguG l209PJvI3JAwjsncQ/nkbOdeZg+JcRol8H/rGPMB4OibTgNaDSREnuAVa1epdbpNsN5ydA nEBNh1PAKX6SqhVZuem+3Lk5ALkhsomjWZAkHRebl/jyoiuleuKj1y6eDAsqFOhptehOrU 8sLK1YixFdMCvoY9Lmdo5HgkXQQYHlgxce0ecuR6iUR0kDySRXHYxEX4/y0b9w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431908; a=rsa-sha256; cv=none; b=gEMFefFgWxQgjneHln6wx12AfOyRkq4o+kAU33HiSOe2hBWFVZJYX51jXaJsTVSQttwWgu 25m2AgITfkwUr+IlExRJgvTMw3kc+6EyFCsxoy5MsAf7vKMuzoYdH4N2brGyYrjAQ+mYlf kGUtzX2KuRZOIfPA5iJeVdkfu9sMpMzTOI8vjjMZ3pgIGbD+kBgZUCA0TrR9RUiFtj1/sz DMrhiyoCm9WCnp+sibd6tkrpHbOdNuFJXFlSrs1xql882eM/XtcPXsfCgETJVxg05sfVHr oxXdF/6uu9tuDp2PAjCulIvi5gEuhc9PmRQC/et5JjdCgK1crx3NJpC8moXmcQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3S2821zsbb; Tue, 16 Jan 2024 19:05:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ58N6009869; Tue, 16 Jan 2024 19:05:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ58e8009866; Tue, 16 Jan 2024 19:05:08 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:08 GMT Message-Id: <202401161905.40GJ58e8009866@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 56a55eee6bbe - stable/14 - tcp: uninline tcp_account_for_send() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 56a55eee6bbe4aac9bd1c870f9ace58a95328c55 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=56a55eee6bbe4aac9bd1c870f9ace58a95328c55 commit 56a55eee6bbe4aac9bd1c870f9ace58a95328c55 Author: Gleb Smirnoff AuthorDate: 2023-11-21 17:21:41 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:37:06 +0000 tcp: uninline tcp_account_for_send() This allows to clear inclusion of "opt_kern_tls.h" from a system header. Reviewed by: rscheff, tuexen Differential Revision: https://reviews.freebsd.org/D42696 (cherry picked from commit 219a6ca919576c4f7e783720f66a458d51476f3d) --- sys/netinet/tcp_subr.c | 27 +++++++++++++++++++++++++++ sys/netinet/tcp_var.h | 26 +------------------------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 27b0eae83837..083a8b1ea384 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -4678,3 +4678,30 @@ tcp_get_srtt(struct tcpcb *tp, int granularity) return (srtt); } + +void +tcp_account_for_send(struct tcpcb *tp, uint32_t len, uint8_t is_rxt, + uint8_t is_tlp, bool hw_tls) +{ + + if (is_tlp) { + tp->t_sndtlppack++; + tp->t_sndtlpbyte += len; + } + /* To get total bytes sent you must add t_snd_rxt_bytes to t_sndbytes */ + if (is_rxt) + tp->t_snd_rxt_bytes += len; + else + tp->t_sndbytes += len; + +#ifdef KERN_TLS + if (hw_tls && is_rxt && len != 0) { + uint64_t rexmit_percent; + + rexmit_percent = (1000ULL * tp->t_snd_rxt_bytes) / + (10ULL * (tp->t_snd_rxt_bytes + tp->t_sndbytes)); + if (rexmit_percent > ktls_ifnet_max_rexmit_pct) + ktls_disable_ifnet(tp); + } +#endif +} diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index 624de66e3e23..4be7fc1baad5 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -38,7 +38,6 @@ #include #ifdef _KERNEL -#include "opt_kern_tls.h" #include #include #include @@ -1356,6 +1355,7 @@ VNET_DECLARE(struct hhook_head *, tcp_hhh[HHOOK_TCP_LAST + 1]); #define V_tcp_hhh VNET(tcp_hhh) #endif +void tcp_account_for_send(struct tcpcb *, uint32_t, uint8_t, uint8_t, bool); int tcp_addoptions(struct tcpopt *, u_char *); struct tcpcb * tcp_close(struct tcpcb *); @@ -1589,30 +1589,6 @@ tcp_set_flags(struct tcphdr *th, uint16_t flags) th->th_x2 = (flags >> 8) & 0x0f; th->th_flags = flags & 0xff; } - -static inline void -tcp_account_for_send(struct tcpcb *tp, uint32_t len, uint8_t is_rxt, - uint8_t is_tlp, bool hw_tls) -{ - if (is_tlp) { - tp->t_sndtlppack++; - tp->t_sndtlpbyte += len; - } - /* To get total bytes sent you must add t_snd_rxt_bytes to t_sndbytes */ - if (is_rxt) - tp->t_snd_rxt_bytes += len; - else - tp->t_sndbytes += len; - -#ifdef KERN_TLS - if (hw_tls && is_rxt && len != 0) { - uint64_t rexmit_percent = (1000ULL * tp->t_snd_rxt_bytes) / (10ULL * (tp->t_snd_rxt_bytes + tp->t_sndbytes)); - if (rexmit_percent > ktls_ifnet_max_rexmit_pct) - ktls_disable_ifnet(tp); - } -#endif - -} #endif /* _KERNEL */ #endif /* _NETINET_TCP_VAR_H_ */ From nobody Tue Jan 16 19:05:09 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3T6lWqz57qcX; Tue, 16 Jan 2024 19:05:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3T41Zvz54B3; Tue, 16 Jan 2024 19:05:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431909; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=98wCPTHKOjHmsSsIR/M7Ft1AQoDU9zFY/WimSZQAoe8=; b=HfACaQB2X8lXnebzjtnKtoLOGPATmzBWPFz8GiTFXgrXCd3fqQxveABMD5sHeidAQqee1n hL/VS/xdF1PsucrqCdw72ubnOG6xnq1LAVFJOD7P6ecXtKmOaApdxnC8GbXLPJO2mK9Qz3 qRURhLRIcGyy11xRORS6kPq6IX0TOU275sF6ejcr+/ygrRNkKVdoDK+cBfivzAFWBGOMke wljkSyWdjhUwZcpMjMK7gGqrZN0/IxIVWQyLe0ICp6E1o/TyXtVrSFg8EP/Zmur6knPUzz H+tA65nQpWrI4islKATU/1rxCLGC8HaU5tJcFAc6GNou8YiQwn1Kd621R1tTtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431909; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=98wCPTHKOjHmsSsIR/M7Ft1AQoDU9zFY/WimSZQAoe8=; b=CCf6YCqjy3jHoZjGMQk6dh3WTN/yVbO1uTBM3meFIolhk9QoswfjjrKn8ojM/aPJPrxpSk 89OrfAGZO6gpWKGzbe99ucO7D0qDLLvpccWCaAux/nqpJeks1l3dBI0N6sA0kU9X6csO5R mL+lyyNg6FDN1qpwndwXM6eZOjHnKPV4YDFTeThgs1YUcKLSVRRnkeh05q+xK31iUW0isd /331CQrMYXUBTzKX1YAtuOEYPaWXevyBcg1vuCZguDcnfwPa05I/Eglr7gRyfPfmNfuBbm ACfo/g5qPpQd2guW/I0cBZ82JBKpUg3hBRfHP9AP7mZ6YKxK6NW6AD4zJU9i7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431909; a=rsa-sha256; cv=none; b=BhlxePi7JeumHYUHeWjiB1ksZjuKgpr0X3rhVYtAytrcC1WQfobafdON3/+GMQ5M+t/nF4 5xgp6soNLyFv2uHUnaSPqOEEiovItO/k2Dd5r1dammDrRXmuCdgenyoc8Kt//lrJFZJqRy Hkq88/CCJrd/OfC6uQazZ48N0+lh+praQ54Rws99G61JKByCxYQUTAnMyAt7QQpESCjcYh VLe5+V9d0gaWN2GwHJtdb7YrCVfUB4eiICPyDCBguIMDfFwnETyg5rp2bvkG44Tkw4niNX PFbp27Te9Ds1lZWvrEQkpKX7JceHJX68iKlb+hNG9xIk2kvQHX5eiVYzakaYQQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3T35qMzrnN; Tue, 16 Jan 2024 19:05:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ59MV009915; Tue, 16 Jan 2024 19:05:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ59xu009912; Tue, 16 Jan 2024 19:05:09 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:09 GMT Message-Id: <202401161905.40GJ59xu009912@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 4a32d6020753 - stable/14 - hpts: install kernel module List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4a32d60207537e27fdf76f133419fa5170343dde Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=4a32d60207537e27fdf76f133419fa5170343dde commit 4a32d60207537e27fdf76f133419fa5170343dde Author: Gleb Smirnoff AuthorDate: 2023-11-21 17:22:46 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:38:40 +0000 hpts: install kernel module It is important to instantly load tcp_rack.ko and tcp_bbr.ko Reviewed by: tuexen, imp Differential Revision: https://reviews.freebsd.org/D42697 (cherry picked from commit f9030650185622d7cf8a7c81c4b3a3763539de24) --- sys/modules/tcp/Makefile | 6 ++---- sys/modules/tcp/hpts/Makefile | 6 ++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sys/modules/tcp/Makefile b/sys/modules/tcp/Makefile index 364c0326c40d..3b6df4bc18e9 100644 --- a/sys/modules/tcp/Makefile +++ b/sys/modules/tcp/Makefile @@ -1,15 +1,13 @@ -# -# - .include -SUBDIR= \ +SUBDIR= ${_hpts} \ ${_tcp_bbr} \ ${_tcp_rack} \ ${_tcpmd5} \ .if (${MK_INET_SUPPORT} != "no" || ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) +_hpts= hpts _tcp_bbr= bbr _tcp_rack= rack .if ${KERN_OPTS:MIPSEC_SUPPORT} && !${KERN_OPTS:MTCP_SIGNATURE} diff --git a/sys/modules/tcp/hpts/Makefile b/sys/modules/tcp/hpts/Makefile new file mode 100644 index 000000000000..4ca462d7f612 --- /dev/null +++ b/sys/modules/tcp/hpts/Makefile @@ -0,0 +1,6 @@ +.PATH: ${SRCTOP}/sys/netinet + +KMOD= tcphpts +SRCS= tcp_hpts.c opt_inet.h opt_inet6.h opt_rss.h device_if.h bus_if.h + +.include From nobody Tue Jan 16 19:05:10 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3W0qyvz57qyj; Tue, 16 Jan 2024 19:05:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3V4yp2z54ZR; Tue, 16 Jan 2024 19:05:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431910; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=I7KZDadBIxlgQzpU1o8xLdFZQguZwMZn7xu5VKbAErk=; b=TDXuIqf8JlnfWIVZMfT8wVxED1XFyYX7sytAO+uA+zJFiHBW5kjl6++n6TQb6XJSLw+39o mVtsn9nCes5mcJb6XicePlyJM6dIxc0CWPhlVF7lz6guzpEGndQfLIMxen5GS8H9jIDr1n /3LDHw/Xv3rX1uMrhmXH3Q9Bj1O4pNLcB9l9h4hnofnoopHV9TClotEXBdrqRYWKpy7DWu cpYYLlJfs9TR2h0i3ABz81GOOZXcIiLs1evsKHucG4N1WxIB/6I1/pZ44VeVvDU44eiywx IpX8BxCGjqc9cc4IJVUWfBhOouCiF78Zz5bGEu5svGDJEbKTv8B60ga/fx5q3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431910; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=I7KZDadBIxlgQzpU1o8xLdFZQguZwMZn7xu5VKbAErk=; b=BWo0DLkA0lDbmVNTcwrfNE9lyMAJOB+/H7B19EeC2RkSw2BzlMtdHx9OpZfqN3UUPwu9sU QSeh6WHGIpEa1++ldjN+6Dv1Ch8UPY8Fpp4RUBI4XKAtv14EbUebFcLT5PRI1QgRki9GMX LWGFySdbTptYFy896qPtvWSZN+uZNrbO6QMSsArZ7ceXnSNRPiVnwXDmRRxCFqPpJ0PR0K j8y05ZDP//2rhI+0QAkB967uNC7OfRGffPRcAiaOno2Kha9/f/lwNWpJcWMF1YEAdM3S+f IT+xDLPP44zsVMEyIscpqG5EVyfbcVF4lQtNUc3FIeRFFGopybTzjb0an3jPfg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431910; a=rsa-sha256; cv=none; b=KZC0YBQK4QJhA/hIBtWaHF73008YnkGosJkETkIhu44/wWlkcLz1fnw6c3bvCo9aeQjewC ALGlNgOHZLwMcdOukZWmyHRdhr8tLPm3Qqs1pOwzNJDmk1eCLxxgD8LXkHwmOa67/tIXGn fZQQohJ9XtRADQ55xT/XyPbNLj7uTllRz10BNDD7qVXNgdS+AtZQRj1aK8i/Tl/rsuym29 3gqSxeTbDxIcF/EmdJ/lZv5lc1nLWQL3lIZ+4neyL5SMrh/Makp0/2gPdSiY7WmjbuEAbn 9lY0VTVQeNA6C5Q8Mgre1dUeddZrTrq14zPK5lXO5UqqAWKZQz6NNhWBkcjJ5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3V3wSyzsbc; Tue, 16 Jan 2024 19:05:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5A7V009963; Tue, 16 Jan 2024 19:05:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5AKA009960; Tue, 16 Jan 2024 19:05:10 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:10 GMT Message-Id: <202401161905.40GJ5AKA009960@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: a74aa0e589f2 - stable/14 - lro: separate HPTS specific code into tcp_lro_hpts.c List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a74aa0e589f2651ae9dfe3f59e5814a41bd2bff7 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=a74aa0e589f2651ae9dfe3f59e5814a41bd2bff7 commit a74aa0e589f2651ae9dfe3f59e5814a41bd2bff7 Author: Gleb Smirnoff AuthorDate: 2023-12-04 18:19:46 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:38:40 +0000 lro: separate HPTS specific code into tcp_lro_hpts.c Put same copyright header as tcp_hpts.c has, since all this code was developed by Randall Stewart as a part of the HPTS work. Also copy Mellanox copyright from tcp_lro.c as Hans Petter Selasky also participated in restructuring the code. Reviewed by: imp, tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42854 (cherry picked from commit 4f9c93f16c30d553613def0442d8ddbee859e76b) --- sys/conf/files | 1 + sys/modules/tcp/hpts/Makefile | 3 +- sys/netinet/tcp_lro.c | 540 +-------------------------------------- sys/netinet/tcp_lro.h | 15 +- sys/netinet/tcp_lro_hpts.c | 577 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 595 insertions(+), 541 deletions(-) diff --git a/sys/conf/files b/sys/conf/files index 2b558bf339a8..31f92670e796 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -4354,6 +4354,7 @@ netinet/tcp_hostcache.c optional inet | inet6 netinet/tcp_input.c optional inet | inet6 netinet/tcp_log_buf.c optional tcp_blackbox inet | tcp_blackbox inet6 netinet/tcp_lro.c optional inet | inet6 +netinet/tcp_lro_hpts.c optional tcphpts inet | tcphpts inet6 netinet/tcp_output.c optional inet | inet6 netinet/tcp_offload.c optional tcp_offload inet | tcp_offload inet6 netinet/tcp_hpts.c optional tcphpts inet | tcphpts inet6 diff --git a/sys/modules/tcp/hpts/Makefile b/sys/modules/tcp/hpts/Makefile index 4ca462d7f612..2d664c048cdd 100644 --- a/sys/modules/tcp/hpts/Makefile +++ b/sys/modules/tcp/hpts/Makefile @@ -1,6 +1,7 @@ .PATH: ${SRCTOP}/sys/netinet KMOD= tcphpts -SRCS= tcp_hpts.c opt_inet.h opt_inet6.h opt_rss.h device_if.h bus_if.h +SRCS= tcp_hpts.c tcp_lro_hpts.c \ + opt_inet.h opt_inet6.h opt_rss.h device_if.h bus_if.h .include diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c index e87b32b55b47..6cf0411b5f65 100644 --- a/sys/netinet/tcp_lro.c +++ b/sys/netinet/tcp_lro.c @@ -80,25 +80,14 @@ static MALLOC_DEFINE(M_LRO, "LRO", "LRO control structures"); -#define TCP_LRO_TS_OPTION \ - ntohl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) | \ - (TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP) - static void tcp_lro_rx_done(struct lro_ctrl *lc); static int tcp_lro_rx_common(struct lro_ctrl *lc, struct mbuf *m, uint32_t csum, bool use_hash); -#ifdef TCPHPTS -static bool do_bpf_strip_and_compress(struct tcpcb *, struct lro_ctrl *, - struct lro_entry *, struct mbuf **, struct mbuf **, struct mbuf **, - bool *, bool, bool, struct ifnet *, bool); - -#endif - SYSCTL_NODE(_net_inet_tcp, OID_AUTO, lro, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "TCP LRO"); -static long tcplro_stacks_wanting_mbufq; +long tcplro_stacks_wanting_mbufq; counter_u64_t tcp_inp_lro_direct_queue; counter_u64_t tcp_inp_lro_wokeup_queue; counter_u64_t tcp_inp_lro_compressed; @@ -487,12 +476,6 @@ tcp_lro_trim_mbuf_chain(struct mbuf *m, const struct lro_parser *po) return (TCP_LRO_CANNOT); } -static struct tcphdr * -tcp_lro_get_th(struct mbuf *m) -{ - return ((struct tcphdr *)((uint8_t *)m->m_data + m->m_pkthdr.lro_tcp_h_off)); -} - static void lro_free_mbuf_chain(struct mbuf *m) { @@ -680,58 +663,6 @@ tcp_lro_rx_ipv4(struct lro_ctrl *lc, struct mbuf *m, struct ip *ip4) } #endif -#ifdef TCPHPTS -static void -tcp_lro_log(struct tcpcb *tp, const struct lro_ctrl *lc, - const struct lro_entry *le, const struct mbuf *m, - int frm, int32_t tcp_data_len, uint32_t th_seq, - uint32_t th_ack, uint16_t th_win) -{ - if (tcp_bblogging_on(tp)) { - union tcp_log_stackspecific log; - struct timeval tv, btv; - uint32_t cts; - - cts = tcp_get_usecs(&tv); - memset(&log, 0, sizeof(union tcp_log_stackspecific)); - log.u_bbr.flex8 = frm; - log.u_bbr.flex1 = tcp_data_len; - if (m) - log.u_bbr.flex2 = m->m_pkthdr.len; - else - log.u_bbr.flex2 = 0; - if (le->m_head) { - log.u_bbr.flex3 = le->m_head->m_pkthdr.lro_nsegs; - log.u_bbr.flex4 = le->m_head->m_pkthdr.lro_tcp_d_len; - log.u_bbr.flex5 = le->m_head->m_pkthdr.len; - log.u_bbr.delRate = le->m_head->m_flags; - log.u_bbr.rttProp = le->m_head->m_pkthdr.rcv_tstmp; - } - log.u_bbr.inflight = th_seq; - log.u_bbr.delivered = th_ack; - log.u_bbr.timeStamp = cts; - log.u_bbr.epoch = le->next_seq; - log.u_bbr.lt_epoch = le->ack_seq; - log.u_bbr.pacing_gain = th_win; - log.u_bbr.cwnd_gain = le->window; - log.u_bbr.lost = curcpu; - log.u_bbr.cur_del_rate = (uintptr_t)m; - log.u_bbr.bw_inuse = (uintptr_t)le->m_head; - bintime2timeval(&lc->lro_last_queue_time, &btv); - log.u_bbr.flex6 = tcp_tv_to_usectick(&btv); - log.u_bbr.flex7 = le->compressed; - log.u_bbr.pacing_gain = le->uncompressed; - if (in_epoch(net_epoch_preempt)) - log.u_bbr.inhpts = 1; - else - log.u_bbr.inhpts = 0; - TCP_LOG_EVENTP(tp, NULL, &tptosocket(tp)->so_rcv, - &tptosocket(tp)->so_snd, - TCP_LOG_LRO, 0, 0, &log, false, &tv); - } -} -#endif - static inline void tcp_lro_assign_and_checksum_16(uint16_t *ptr, uint16_t value, uint16_t *psum) { @@ -1175,276 +1106,6 @@ again: } } -#ifdef TCPHPTS -static void -tcp_queue_pkts(struct tcpcb *tp, struct lro_entry *le) -{ - - INP_WLOCK_ASSERT(tptoinpcb(tp)); - - STAILQ_HEAD(, mbuf) q = { le->m_head, - &STAILQ_NEXT(le->m_last_mbuf, m_stailqpkt) }; - STAILQ_CONCAT(&tp->t_inqueue, &q); - le->m_head = NULL; - le->m_last_mbuf = NULL; -} - -static bool -tcp_lro_check_wake_status(struct tcpcb *tp) -{ - - if (tp->t_fb->tfb_early_wake_check != NULL) - return ((tp->t_fb->tfb_early_wake_check)(tp)); - return (false); -} - -static struct mbuf * -tcp_lro_get_last_if_ackcmp(struct lro_ctrl *lc, struct lro_entry *le, - struct tcpcb *tp, int32_t *new_m, bool can_append_old_cmp) -{ - struct mbuf *m; - - /* Look at the last mbuf if any in queue */ - if (can_append_old_cmp) { - m = STAILQ_LAST(&tp->t_inqueue, mbuf, m_stailqpkt); - if (m != NULL && (m->m_flags & M_ACKCMP) != 0) { - if (M_TRAILINGSPACE(m) >= sizeof(struct tcp_ackent)) { - tcp_lro_log(tp, lc, le, NULL, 23, 0, 0, 0, 0); - *new_m = 0; - counter_u64_add(tcp_extra_mbuf, 1); - return (m); - } else { - /* Mark we ran out of space */ - tp->t_flags2 |= TF2_MBUF_L_ACKS; - } - } - } - /* Decide mbuf size. */ - tcp_lro_log(tp, lc, le, NULL, 21, 0, 0, 0, 0); - if (tp->t_flags2 & TF2_MBUF_L_ACKS) - m = m_getcl(M_NOWAIT, MT_DATA, M_ACKCMP | M_PKTHDR); - else - m = m_gethdr(M_NOWAIT, MT_DATA); - - if (__predict_false(m == NULL)) { - counter_u64_add(tcp_would_have_but, 1); - return (NULL); - } - counter_u64_add(tcp_comp_total, 1); - m->m_pkthdr.rcvif = lc->ifp; - m->m_flags |= M_ACKCMP; - *new_m = 1; - return (m); -} - -static struct tcpcb * -tcp_lro_lookup(struct ifnet *ifp, struct lro_parser *pa) -{ - struct inpcb *inp; - - switch (pa->data.lro_type) { -#ifdef INET6 - case LRO_TYPE_IPV6_TCP: - inp = in6_pcblookup(&V_tcbinfo, - &pa->data.s_addr.v6, - pa->data.s_port, - &pa->data.d_addr.v6, - pa->data.d_port, - INPLOOKUP_WLOCKPCB, - ifp); - break; -#endif -#ifdef INET - case LRO_TYPE_IPV4_TCP: - inp = in_pcblookup(&V_tcbinfo, - pa->data.s_addr.v4, - pa->data.s_port, - pa->data.d_addr.v4, - pa->data.d_port, - INPLOOKUP_WLOCKPCB, - ifp); - break; -#endif - default: - return (NULL); - } - - return (intotcpcb(inp)); -} - -static inline bool -tcp_lro_ack_valid(struct mbuf *m, struct tcphdr *th, uint32_t **ppts, bool *other_opts) -{ - /* - * This function returns two bits of valuable information. - * a) Is what is present capable of being ack-compressed, - * we can ack-compress if there is no options or just - * a timestamp option, and of course the th_flags must - * be correct as well. - * b) Our other options present such as SACK. This is - * used to determine if we want to wakeup or not. - */ - bool ret = true; - - switch (th->th_off << 2) { - case (sizeof(*th) + TCPOLEN_TSTAMP_APPA): - *ppts = (uint32_t *)(th + 1); - /* Check if we have only one timestamp option. */ - if (**ppts == TCP_LRO_TS_OPTION) - *other_opts = false; - else { - *other_opts = true; - ret = false; - } - break; - case (sizeof(*th)): - /* No options. */ - *ppts = NULL; - *other_opts = false; - break; - default: - *ppts = NULL; - *other_opts = true; - ret = false; - break; - } - /* For ACKCMP we only accept ACK, PUSH, ECE and CWR. */ - if ((tcp_get_flags(th) & ~(TH_ACK | TH_PUSH | TH_ECE | TH_CWR)) != 0) - ret = false; - /* If it has data on it we cannot compress it */ - if (m->m_pkthdr.lro_tcp_d_len) - ret = false; - - /* ACK flag must be set. */ - if (!(tcp_get_flags(th) & TH_ACK)) - ret = false; - return (ret); -} - -static int -tcp_lro_flush_tcphpts(struct lro_ctrl *lc, struct lro_entry *le) -{ - struct tcpcb *tp; - struct mbuf **pp, *cmp, *mv_to; - struct ifnet *lagg_ifp; - bool bpf_req, lagg_bpf_req, should_wake, can_append_old_cmp; - - /* Check if packet doesn't belongs to our network interface. */ - if ((tcplro_stacks_wanting_mbufq == 0) || - (le->outer.data.vlan_id != 0) || - (le->inner.data.lro_type != LRO_TYPE_NONE)) - return (TCP_LRO_CANNOT); - -#ifdef INET6 - /* - * Be proactive about unspecified IPv6 address in source. As - * we use all-zero to indicate unbounded/unconnected pcb, - * unspecified IPv6 address can be used to confuse us. - * - * Note that packets with unspecified IPv6 destination is - * already dropped in ip6_input. - */ - if (__predict_false(le->outer.data.lro_type == LRO_TYPE_IPV6_TCP && - IN6_IS_ADDR_UNSPECIFIED(&le->outer.data.s_addr.v6))) - return (TCP_LRO_CANNOT); - - if (__predict_false(le->inner.data.lro_type == LRO_TYPE_IPV6_TCP && - IN6_IS_ADDR_UNSPECIFIED(&le->inner.data.s_addr.v6))) - return (TCP_LRO_CANNOT); -#endif - /* Lookup inp, if any. Returns locked TCP inpcb. */ - tp = tcp_lro_lookup(lc->ifp, - (le->inner.data.lro_type == LRO_TYPE_NONE) ? &le->outer : &le->inner); - if (tp == NULL) - return (TCP_LRO_CANNOT); - - counter_u64_add(tcp_inp_lro_locks_taken, 1); - - /* Check if the inp is dead, Jim. */ - if (tp->t_state == TCPS_TIME_WAIT) { - INP_WUNLOCK(tptoinpcb(tp)); - return (TCP_LRO_CANNOT); - } - if (tp->t_lro_cpu == HPTS_CPU_NONE && lc->lro_cpu_is_set == 1) - tp->t_lro_cpu = lc->lro_last_cpu; - /* Check if the transport doesn't support the needed optimizations. */ - if ((tp->t_flags2 & (TF2_SUPPORTS_MBUFQ | TF2_MBUF_ACKCMP)) == 0) { - INP_WUNLOCK(tptoinpcb(tp)); - return (TCP_LRO_CANNOT); - } - - if (tp->t_flags2 & TF2_MBUF_QUEUE_READY) - should_wake = false; - else - should_wake = true; - /* Check if packets should be tapped to BPF. */ - bpf_req = bpf_peers_present(lc->ifp->if_bpf); - lagg_bpf_req = false; - lagg_ifp = NULL; - if (lc->ifp->if_type == IFT_IEEE8023ADLAG || - lc->ifp->if_type == IFT_INFINIBANDLAG) { - struct lagg_port *lp = lc->ifp->if_lagg; - struct lagg_softc *sc = lp->lp_softc; - - lagg_ifp = sc->sc_ifp; - if (lagg_ifp != NULL) - lagg_bpf_req = bpf_peers_present(lagg_ifp->if_bpf); - } - - /* Strip and compress all the incoming packets. */ - can_append_old_cmp = true; - cmp = NULL; - for (pp = &le->m_head; *pp != NULL; ) { - mv_to = NULL; - if (do_bpf_strip_and_compress(tp, lc, le, pp, - &cmp, &mv_to, &should_wake, bpf_req, - lagg_bpf_req, lagg_ifp, can_append_old_cmp) == false) { - /* Advance to next mbuf. */ - pp = &(*pp)->m_nextpkt; - /* - * Once we have appended we can't look in the pending - * inbound packets for a compressed ack to append to. - */ - can_append_old_cmp = false; - /* - * Once we append we also need to stop adding to any - * compressed ack we were remembering. A new cmp - * ack will be required. - */ - cmp = NULL; - tcp_lro_log(tp, lc, le, NULL, 25, 0, 0, 0, 0); - } else if (mv_to != NULL) { - /* We are asked to move pp up */ - pp = &mv_to->m_nextpkt; - tcp_lro_log(tp, lc, le, NULL, 24, 0, 0, 0, 0); - } else - tcp_lro_log(tp, lc, le, NULL, 26, 0, 0, 0, 0); - } - /* Update "m_last_mbuf", if any. */ - if (pp == &le->m_head) - le->m_last_mbuf = *pp; - else - le->m_last_mbuf = __containerof(pp, struct mbuf, m_nextpkt); - - /* Check if any data mbufs left. */ - if (le->m_head != NULL) { - counter_u64_add(tcp_inp_lro_direct_queue, 1); - tcp_lro_log(tp, lc, le, NULL, 22, 1, tp->t_flags2, 0, 1); - tcp_queue_pkts(tp, le); - } - if (should_wake) { - /* Wakeup */ - counter_u64_add(tcp_inp_lro_wokeup_queue, 1); - if ((*tp->t_fb->tfb_do_queued_segments)(tp, 0)) - /* TCP cb gone and unlocked. */ - return (0); - } - INP_WUNLOCK(tptoinpcb(tp)); - - return (0); /* Success. */ -} -#endif - void tcp_lro_flush(struct lro_ctrl *lc, struct lro_entry *le) { @@ -1614,205 +1275,6 @@ done: lc->lro_mbuf_count = 0; } -#ifdef TCPHPTS -static void -build_ack_entry(struct tcp_ackent *ae, struct tcphdr *th, struct mbuf *m, - uint32_t *ts_ptr, uint16_t iptos) -{ - /* - * Given a TCP ACK, summarize it down into the small TCP ACK - * entry. - */ - ae->timestamp = m->m_pkthdr.rcv_tstmp; - ae->flags = 0; - if (m->m_flags & M_TSTMP_LRO) - ae->flags |= TSTMP_LRO; - else if (m->m_flags & M_TSTMP) - ae->flags |= TSTMP_HDWR; - ae->seq = ntohl(th->th_seq); - ae->ack = ntohl(th->th_ack); - ae->flags |= tcp_get_flags(th); - if (ts_ptr != NULL) { - ae->ts_value = ntohl(ts_ptr[1]); - ae->ts_echo = ntohl(ts_ptr[2]); - ae->flags |= HAS_TSTMP; - } - ae->win = ntohs(th->th_win); - ae->codepoint = iptos; -} - -/* - * Do BPF tap for either ACK_CMP packets or MBUF QUEUE type packets - * and strip all, but the IPv4/IPv6 header. - */ -static bool -do_bpf_strip_and_compress(struct tcpcb *tp, struct lro_ctrl *lc, - struct lro_entry *le, struct mbuf **pp, struct mbuf **cmp, struct mbuf **mv_to, - bool *should_wake, bool bpf_req, bool lagg_bpf_req, struct ifnet *lagg_ifp, bool can_append_old_cmp) -{ - union { - void *ptr; - struct ip *ip4; - struct ip6_hdr *ip6; - } l3; - struct mbuf *m; - struct mbuf *nm; - struct tcphdr *th; - struct tcp_ackent *ack_ent; - uint32_t *ts_ptr; - int32_t n_mbuf; - bool other_opts, can_compress; - uint8_t lro_type; - uint16_t iptos; - int tcp_hdr_offset; - int idx; - - /* Get current mbuf. */ - m = *pp; - - /* Let the BPF see the packet */ - if (__predict_false(bpf_req)) - ETHER_BPF_MTAP(lc->ifp, m); - - if (__predict_false(lagg_bpf_req)) - ETHER_BPF_MTAP(lagg_ifp, m); - - tcp_hdr_offset = m->m_pkthdr.lro_tcp_h_off; - lro_type = le->inner.data.lro_type; - switch (lro_type) { - case LRO_TYPE_NONE: - lro_type = le->outer.data.lro_type; - switch (lro_type) { - case LRO_TYPE_IPV4_TCP: - tcp_hdr_offset -= sizeof(*le->outer.ip4); - m->m_pkthdr.lro_etype = ETHERTYPE_IP; - break; - case LRO_TYPE_IPV6_TCP: - tcp_hdr_offset -= sizeof(*le->outer.ip6); - m->m_pkthdr.lro_etype = ETHERTYPE_IPV6; - break; - default: - goto compressed; - } - break; - case LRO_TYPE_IPV4_TCP: - tcp_hdr_offset -= sizeof(*le->outer.ip4); - m->m_pkthdr.lro_etype = ETHERTYPE_IP; - break; - case LRO_TYPE_IPV6_TCP: - tcp_hdr_offset -= sizeof(*le->outer.ip6); - m->m_pkthdr.lro_etype = ETHERTYPE_IPV6; - break; - default: - goto compressed; - } - - MPASS(tcp_hdr_offset >= 0); - - m_adj(m, tcp_hdr_offset); - m->m_flags |= M_LRO_EHDRSTRP; - m->m_flags &= ~M_ACKCMP; - m->m_pkthdr.lro_tcp_h_off -= tcp_hdr_offset; - - th = tcp_lro_get_th(m); - - th->th_sum = 0; /* TCP checksum is valid. */ - - /* Check if ACK can be compressed */ - can_compress = tcp_lro_ack_valid(m, th, &ts_ptr, &other_opts); - - /* Now lets look at the should wake states */ - if ((other_opts == true) && - ((tp->t_flags2 & TF2_DONT_SACK_QUEUE) == 0)) { - /* - * If there are other options (SACK?) and the - * tcp endpoint has not expressly told us it does - * not care about SACKS, then we should wake up. - */ - *should_wake = true; - } else if (*should_wake == false) { - /* Wakeup override check if we are false here */ - *should_wake = tcp_lro_check_wake_status(tp); - } - /* Is the ack compressable? */ - if (can_compress == false) - goto done; - /* Does the TCP endpoint support ACK compression? */ - if ((tp->t_flags2 & TF2_MBUF_ACKCMP) == 0) - goto done; - - /* Lets get the TOS/traffic class field */ - l3.ptr = mtod(m, void *); - switch (lro_type) { - case LRO_TYPE_IPV4_TCP: - iptos = l3.ip4->ip_tos; - break; - case LRO_TYPE_IPV6_TCP: - iptos = IPV6_TRAFFIC_CLASS(l3.ip6); - break; - default: - iptos = 0; /* Keep compiler happy. */ - break; - } - /* Now lets get space if we don't have some already */ - if (*cmp == NULL) { -new_one: - nm = tcp_lro_get_last_if_ackcmp(lc, le, tp, &n_mbuf, - can_append_old_cmp); - if (__predict_false(nm == NULL)) - goto done; - *cmp = nm; - if (n_mbuf) { - /* - * Link in the new cmp ack to our in-order place, - * first set our cmp ack's next to where we are. - */ - nm->m_nextpkt = m; - (*pp) = nm; - /* - * Set it up so mv_to is advanced to our - * compressed ack. This way the caller can - * advance pp to the right place. - */ - *mv_to = nm; - /* - * Advance it here locally as well. - */ - pp = &nm->m_nextpkt; - } - } else { - /* We have one already we are working on */ - nm = *cmp; - if (M_TRAILINGSPACE(nm) < sizeof(struct tcp_ackent)) { - /* We ran out of space */ - tp->t_flags2 |= TF2_MBUF_L_ACKS; - goto new_one; - } - } - MPASS(M_TRAILINGSPACE(nm) >= sizeof(struct tcp_ackent)); - counter_u64_add(tcp_inp_lro_compressed, 1); - le->compressed++; - /* We can add in to the one on the tail */ - ack_ent = mtod(nm, struct tcp_ackent *); - idx = (nm->m_len / sizeof(struct tcp_ackent)); - build_ack_entry(&ack_ent[idx], th, m, ts_ptr, iptos); - - /* Bump the size of both pkt-hdr and len */ - nm->m_len += sizeof(struct tcp_ackent); - nm->m_pkthdr.len += sizeof(struct tcp_ackent); -compressed: - /* Advance to next mbuf before freeing. */ - *pp = m->m_nextpkt; - m->m_nextpkt = NULL; - m_freem(m); - return (true); -done: - counter_u64_add(tcp_uncomp_total, 1); - le->uncompressed++; - return (false); -} -#endif - static struct lro_head * tcp_lro_rx_get_bucket(struct lro_ctrl *lc, struct mbuf *m, struct lro_parser *parser) { diff --git a/sys/netinet/tcp_lro.h b/sys/netinet/tcp_lro.h index 3e8c33a68b6d..d981c940e7eb 100644 --- a/sys/netinet/tcp_lro.h +++ b/sys/netinet/tcp_lro.h @@ -33,7 +33,7 @@ #include #include - +#include #include #ifndef TCP_LRO_ENTRIES @@ -200,12 +200,25 @@ struct tcp_ackent { #define TCP_LRO_LENGTH_MAX (65535 - 255) /* safe value with room for outer headers */ #define TCP_LRO_ACKCNT_MAX 65535 /* unlimited */ +#define TCP_LRO_TS_OPTION ntohl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |\ + (TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP) + +static inline struct tcphdr * +tcp_lro_get_th(struct mbuf *m) +{ + return ((struct tcphdr *)((char *)m->m_data + + m->m_pkthdr.lro_tcp_h_off)); +} + +extern long tcplro_stacks_wanting_mbufq; + int tcp_lro_init(struct lro_ctrl *); int tcp_lro_init_args(struct lro_ctrl *, struct ifnet *, unsigned, unsigned); void tcp_lro_free(struct lro_ctrl *); void tcp_lro_flush_inactive(struct lro_ctrl *, const struct timeval *); void tcp_lro_flush(struct lro_ctrl *, struct lro_entry *); void tcp_lro_flush_all(struct lro_ctrl *); +int tcp_lro_flush_tcphpts(struct lro_ctrl *, struct lro_entry *); int tcp_lro_rx(struct lro_ctrl *, struct mbuf *, uint32_t); void tcp_lro_queue_mbuf(struct lro_ctrl *, struct mbuf *); void tcp_lro_reg_mbufq(void); diff --git a/sys/netinet/tcp_lro_hpts.c b/sys/netinet/tcp_lro_hpts.c new file mode 100644 index 000000000000..497da9cba40e --- /dev/null +++ b/sys/netinet/tcp_lro_hpts.c @@ -0,0 +1,577 @@ +/*- + * Copyright (c) 2016-2018 Netflix, Inc. + * Copyright (c) 2016-2021 Mellanox Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ +#include +#include "opt_inet.h" +#include "opt_inet6.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void +build_ack_entry(struct tcp_ackent *ae, struct tcphdr *th, struct mbuf *m, + uint32_t *ts_ptr, uint16_t iptos) +{ + /* + * Given a TCP ACK, summarize it down into the small TCP ACK + * entry. + */ + ae->timestamp = m->m_pkthdr.rcv_tstmp; + ae->flags = 0; + if (m->m_flags & M_TSTMP_LRO) + ae->flags |= TSTMP_LRO; + else if (m->m_flags & M_TSTMP) + ae->flags |= TSTMP_HDWR; + ae->seq = ntohl(th->th_seq); + ae->ack = ntohl(th->th_ack); + ae->flags |= tcp_get_flags(th); + if (ts_ptr != NULL) { + ae->ts_value = ntohl(ts_ptr[1]); + ae->ts_echo = ntohl(ts_ptr[2]); + ae->flags |= HAS_TSTMP; + } + ae->win = ntohs(th->th_win); + ae->codepoint = iptos; +} + +static inline bool +tcp_lro_ack_valid(struct mbuf *m, struct tcphdr *th, uint32_t **ppts, bool *other_opts) +{ + /* + * This function returns two bits of valuable information. + * a) Is what is present capable of being ack-compressed, + * we can ack-compress if there is no options or just + * a timestamp option, and of course the th_flags must + * be correct as well. + * b) Our other options present such as SACK. This is + * used to determine if we want to wakeup or not. + */ + bool ret = true; + + switch (th->th_off << 2) { + case (sizeof(*th) + TCPOLEN_TSTAMP_APPA): + *ppts = (uint32_t *)(th + 1); + /* Check if we have only one timestamp option. */ + if (**ppts == TCP_LRO_TS_OPTION) + *other_opts = false; + else { + *other_opts = true; + ret = false; + } + break; + case (sizeof(*th)): + /* No options. */ + *ppts = NULL; + *other_opts = false; + break; + default: + *ppts = NULL; + *other_opts = true; + ret = false; + break; + } + /* For ACKCMP we only accept ACK, PUSH, ECE and CWR. */ + if ((tcp_get_flags(th) & ~(TH_ACK | TH_PUSH | TH_ECE | TH_CWR)) != 0) + ret = false; + /* If it has data on it we cannot compress it */ + if (m->m_pkthdr.lro_tcp_d_len) + ret = false; + + /* ACK flag must be set. */ + if (!(tcp_get_flags(th) & TH_ACK)) + ret = false; + return (ret); +} + +static bool +tcp_lro_check_wake_status(struct tcpcb *tp) +{ + + if (tp->t_fb->tfb_early_wake_check != NULL) + return ((tp->t_fb->tfb_early_wake_check)(tp)); + return (false); +} + +static void +tcp_lro_log(struct tcpcb *tp, const struct lro_ctrl *lc, + const struct lro_entry *le, const struct mbuf *m, + int frm, int32_t tcp_data_len, uint32_t th_seq, + uint32_t th_ack, uint16_t th_win) +{ + if (tcp_bblogging_on(tp)) { + union tcp_log_stackspecific log; + struct timeval tv, btv; + uint32_t cts; + + cts = tcp_get_usecs(&tv); + memset(&log, 0, sizeof(union tcp_log_stackspecific)); + log.u_bbr.flex8 = frm; + log.u_bbr.flex1 = tcp_data_len; + if (m) + log.u_bbr.flex2 = m->m_pkthdr.len; + else + log.u_bbr.flex2 = 0; + if (le->m_head) { + log.u_bbr.flex3 = le->m_head->m_pkthdr.lro_nsegs; + log.u_bbr.flex4 = le->m_head->m_pkthdr.lro_tcp_d_len; + log.u_bbr.flex5 = le->m_head->m_pkthdr.len; + log.u_bbr.delRate = le->m_head->m_flags; + log.u_bbr.rttProp = le->m_head->m_pkthdr.rcv_tstmp; + } + log.u_bbr.inflight = th_seq; + log.u_bbr.delivered = th_ack; + log.u_bbr.timeStamp = cts; + log.u_bbr.epoch = le->next_seq; + log.u_bbr.lt_epoch = le->ack_seq; + log.u_bbr.pacing_gain = th_win; + log.u_bbr.cwnd_gain = le->window; + log.u_bbr.lost = curcpu; + log.u_bbr.cur_del_rate = (uintptr_t)m; + log.u_bbr.bw_inuse = (uintptr_t)le->m_head; + bintime2timeval(&lc->lro_last_queue_time, &btv); + log.u_bbr.flex6 = tcp_tv_to_usectick(&btv); + log.u_bbr.flex7 = le->compressed; + log.u_bbr.pacing_gain = le->uncompressed; + if (in_epoch(net_epoch_preempt)) + log.u_bbr.inhpts = 1; + else + log.u_bbr.inhpts = 0; + TCP_LOG_EVENTP(tp, NULL, &tptosocket(tp)->so_rcv, + &tptosocket(tp)->so_snd, + TCP_LOG_LRO, 0, 0, &log, false, &tv); + } +} + +static struct mbuf * +tcp_lro_get_last_if_ackcmp(struct lro_ctrl *lc, struct lro_entry *le, + struct tcpcb *tp, int32_t *new_m, bool can_append_old_cmp) +{ + struct mbuf *m; + + /* Look at the last mbuf if any in queue */ + if (can_append_old_cmp) { + m = STAILQ_LAST(&tp->t_inqueue, mbuf, m_stailqpkt); + if (m != NULL && (m->m_flags & M_ACKCMP) != 0) { + if (M_TRAILINGSPACE(m) >= sizeof(struct tcp_ackent)) { + tcp_lro_log(tp, lc, le, NULL, 23, 0, 0, 0, 0); + *new_m = 0; + counter_u64_add(tcp_extra_mbuf, 1); + return (m); + } else { + /* Mark we ran out of space */ + tp->t_flags2 |= TF2_MBUF_L_ACKS; + } + } + } + /* Decide mbuf size. */ + tcp_lro_log(tp, lc, le, NULL, 21, 0, 0, 0, 0); + if (tp->t_flags2 & TF2_MBUF_L_ACKS) + m = m_getcl(M_NOWAIT, MT_DATA, M_ACKCMP | M_PKTHDR); + else + m = m_gethdr(M_NOWAIT, MT_DATA); + + if (__predict_false(m == NULL)) { + counter_u64_add(tcp_would_have_but, 1); + return (NULL); + } + counter_u64_add(tcp_comp_total, 1); + m->m_pkthdr.rcvif = lc->ifp; + m->m_flags |= M_ACKCMP; + *new_m = 1; + return (m); +} + +/* + * Do BPF tap for either ACK_CMP packets or MBUF QUEUE type packets + * and strip all, but the IPv4/IPv6 header. + */ +static bool +do_bpf_strip_and_compress(struct tcpcb *tp, struct lro_ctrl *lc, + struct lro_entry *le, struct mbuf **pp, struct mbuf **cmp, + struct mbuf **mv_to, bool *should_wake, bool bpf_req, bool lagg_bpf_req, + struct ifnet *lagg_ifp, bool can_append_old_cmp) +{ + union { + void *ptr; + struct ip *ip4; + struct ip6_hdr *ip6; + } l3; + struct mbuf *m; + struct mbuf *nm; + struct tcphdr *th; + struct tcp_ackent *ack_ent; + uint32_t *ts_ptr; + int32_t n_mbuf; + bool other_opts, can_compress; + uint8_t lro_type; + uint16_t iptos; + int tcp_hdr_offset; + int idx; + + /* Get current mbuf. */ + m = *pp; + + /* Let the BPF see the packet */ + if (__predict_false(bpf_req)) + ETHER_BPF_MTAP(lc->ifp, m); + + if (__predict_false(lagg_bpf_req)) + ETHER_BPF_MTAP(lagg_ifp, m); + + tcp_hdr_offset = m->m_pkthdr.lro_tcp_h_off; + lro_type = le->inner.data.lro_type; + switch (lro_type) { + case LRO_TYPE_NONE: + lro_type = le->outer.data.lro_type; + switch (lro_type) { + case LRO_TYPE_IPV4_TCP: + tcp_hdr_offset -= sizeof(*le->outer.ip4); + m->m_pkthdr.lro_etype = ETHERTYPE_IP; + break; + case LRO_TYPE_IPV6_TCP: + tcp_hdr_offset -= sizeof(*le->outer.ip6); + m->m_pkthdr.lro_etype = ETHERTYPE_IPV6; + break; + default: + goto compressed; + } + break; + case LRO_TYPE_IPV4_TCP: + tcp_hdr_offset -= sizeof(*le->outer.ip4); + m->m_pkthdr.lro_etype = ETHERTYPE_IP; + break; + case LRO_TYPE_IPV6_TCP: + tcp_hdr_offset -= sizeof(*le->outer.ip6); + m->m_pkthdr.lro_etype = ETHERTYPE_IPV6; + break; + default: + goto compressed; + } *** 276 LINES SKIPPED *** From nobody Tue Jan 16 19:05:11 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3X0Kj4z57qjK; Tue, 16 Jan 2024 19:05:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3W5mdYz54Ly; Tue, 16 Jan 2024 19:05:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431911; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=m7YxbO/pHSGw4AWW1bYWTYFoArBR46MbHyHtNcRmIic=; b=wpgd8YkMYOgsaSF1l5lmKvdc1SOKMY+Y4b6F/v6eM398Jp+d2AROy3lkO1qr/PC++5z18p l3bnCcwqtVG0FPLVNe+fFWRm675LJCQEPW5MqCDfAWRVrE6DXe71voHdM/v9lBhUnfS06o ZPbKhHKi3Amd7iveuHaXwV4Fh1k+zgI+s3Hj6icIY1giB14jdZOVSN8wSQSF3HJ5/eVAAV 7Art6ox0RwOpORZHv9EoiOK386UVGAL3q6ldq0d8HOi/XcL97Q0+6ZFX6GoNbaH46ry1pI ugIn6Jp/7A2YHSXpRnzZv84DfaUgRmtaINvuOwJdfl9L3Rm7ilGVC3P3jhcXxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431911; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=m7YxbO/pHSGw4AWW1bYWTYFoArBR46MbHyHtNcRmIic=; b=IUfQ86UdihLFCnhF+ooCYpLqmbyHUxZNDMOVfp/R1rD8kk5GE9I1qNnIeP7ENqaMzcffqV BSS6Vjhz82j6DaomAxo95a/alnjwUb+OFKhh690HAFhvGlM0SHLG9mmoT5h6Amm+rfngfe hvssXX1HL027T368lRHEn5jhKgyRK9ocI8tsT2sjgadnZw79Psx8/1qejxwHYbhVcCp3QY sfC34eSc56Mb/MlXMYkbkZjQl6kQncIKImd8voPVtBw3KB+H+MDFqJ8Zyn8Ph7XB35siWG k3UJlxpXGDKQoR9VMbGdi6uQWEKINvwM+pxHt5K8IyqW3l1U7iQewjPxesEtVg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431911; a=rsa-sha256; cv=none; b=wimTzY7fV4OxFiVnDQTm5IIRmdCNmOUop7J3B3LFPC7EtAjZY3ILXLb1BFNSBqENST5mm4 /XqSK7EJFFPGZKAYm1Ne6BMv97JtWcCNL0P0BGiveCsFAxaxjNDBm6HQHMUtP301hMfNAo FuOcV8YbLlJo6oEtqAfId5pJSWLHwNJD3DR3f6jZK081oaXEu+4GH9UOlpxMAxOlyNuq1C ZguII9CjPNDEQcm6Ys5ZZ2y2Lk7v+rVFSxFYetAQHdAOPQixVZa/zBcaee68hcrrZSPXon g9IcFWBKWXRCQI7aCd6IwS6JUNbwOuc5py/+Ne0KnhJedqBZ2qeIr3knLxdQ4w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3W4tjQzsLK; Tue, 16 Jan 2024 19:05:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5BBU010002; Tue, 16 Jan 2024 19:05:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5Bhl009999; Tue, 16 Jan 2024 19:05:11 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:11 GMT Message-Id: <202401161905.40GJ5Bhl009999@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: fee8f540da32 - stable/14 - hpts: don't ifdef tcp_in_hpts() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: fee8f540da32bc81dbbd81e52382c8aa5b71d678 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=fee8f540da32bc81dbbd81e52382c8aa5b71d678 commit fee8f540da32bc81dbbd81e52382c8aa5b71d678 Author: Gleb Smirnoff AuthorDate: 2023-12-04 18:19:46 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:38:52 +0000 hpts: don't ifdef tcp_in_hpts() This small inline function is always available. Reviewed by: imp, tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42855 (cherry picked from commit 8e907391b74c6ccb6a6925638383e7b82fc9371a) --- sys/netinet/tcp_subr.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 083a8b1ea384..c1a29f3d01d7 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -4316,9 +4316,7 @@ tcp_req_log_req_info(struct tcpcb *tp, struct tcp_sendfile_track *req, struct timeval tv; memset(&log.u_bbr, 0, sizeof(log.u_bbr)); -#ifdef TCPHPTS log.u_bbr.inhpts = tcp_in_hpts(tp); -#endif log.u_bbr.flex8 = val; log.u_bbr.rttProp = req->timestamp; log.u_bbr.delRate = req->start; From nobody Tue Jan 16 19:05:12 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3Y2JwDz57qph; Tue, 16 Jan 2024 19:05:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3Y07dxz54gZ; Tue, 16 Jan 2024 19:05:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431913; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rKFdSkl2Ax82oY5c3NSTu3aWl/+UEI+m+bVZDeCiQZ0=; b=wellomsDC5EtXVb2Dmou5x8/Mckwc0FdY48E7Q6Ms5FRu3IOjDsOCxz3Lc8rvX0eFS7rcM FeeGfqpNfonQP0UsS+Ghstvmjfub++pz/p2B9bStZy1FMJMIOGZPKLm4pww9Vr87l4R67e Maap+do84aFEAQtBq1DtBegtFae4vA8J/AiM5yXI9krQ5b0AvpGLOxKk16z6if2YHtVWyV zzw0GI9X66t4lZWo/SxgNIUteWVgL8uzovi8QP7y1INMhBrVWOoVAqEXg77fYhP52mzyGr zTmBVz56UI2e8ywLRZ49vL9M1XeOzKKiiKD/AnRo0KYma5tSuIwRfNF06dO8dA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431913; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rKFdSkl2Ax82oY5c3NSTu3aWl/+UEI+m+bVZDeCiQZ0=; b=EPL3mwO+MZqUWMO9SSQo84iGCBc4bjMnxaeTZESaXNqMXE4yck6DULi8bzSP7szN8i7BQL Up5JXYnMNW93axrePWHccRa3tV7X/KBDJ4BEqQxSh7XqgyhzalksW1ee6/mxjbXyS7/KGs 7qk59P0UCAtDyRVo4J8g/MF6ti725//xJUSlHRCP6DYKUqMljVSvsKW7j0j/fnVUmFS1cP WtYUssnMb0hy/6L1h0VNLkoAj/qZe5wxnjV9sYf/qIl5tBrMuZcmV+PD35D4MvfpyoyXEB TUSx4vAcmXZdMAuHCPsQL2i4X4FCdzlFP2tJjpROpakbvFrD+NzW6m2DDeXUNg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431913; a=rsa-sha256; cv=none; b=MEP5sWKWMMalb9V0LIGYEMD+J5Ok61gWFhjRHtOs2tERY/3qAdkDJSsHPkNoqqFlqzrD4p /g3BaOICyVaGphBYHhpgz4D6P2S8s/q0/j4Ivr5MeZkW0SyVxz5ffW+joSIlzmLKMuT3XH lhDlX+47sjN8Jv2HrLwiAs9Hg5flOFOUw+OIJiGRln/PFYQdyv5KzU/vJ87itfg9Pho/8q oW7f6ochIsZUpqzSi8ajqURqgfYOytIXlBtTNoCKJo/7RUfhBCsd6s8/YZs4Dyynq/5kNw FreC9MyFWyChpFx9NrkIFO6sWta0AaEidCpGVC3IahUwvErBBGwzKZkdB2maPw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3X68BPzsbd; Tue, 16 Jan 2024 19:05:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5CDm010058; Tue, 16 Jan 2024 19:05:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5CxN010055; Tue, 16 Jan 2024 19:05:12 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:12 GMT Message-Id: <202401161905.40GJ5CxN010055@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 76deefc548e5 - stable/14 - hpts: make stacks responsible for tcp_hpts_init() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 76deefc548e59e6dcaa720c8071b4d399b95af63 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=76deefc548e59e6dcaa720c8071b4d399b95af63 commit 76deefc548e59e6dcaa720c8071b4d399b95af63 Author: Gleb Smirnoff AuthorDate: 2023-12-04 18:19:46 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:39:10 +0000 hpts: make stacks responsible for tcp_hpts_init() Those stacks that use HPTS should care about init, not generic code. Reviewed by: imp, tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42856 (cherry picked from commit 2b3a77467dd3d74a7170f279fb25f9736b46ef8a) --- sys/netinet/tcp_stacks/bbr.c | 2 ++ sys/netinet/tcp_stacks/rack.c | 2 ++ sys/netinet/tcp_subr.c | 3 --- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index 4a472c5cea66..3805a911df41 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -9926,6 +9926,8 @@ bbr_init(struct tcpcb *tp, void **ptr) struct tcp_bbr *bbr = NULL; uint32_t cts; + tcp_hpts_init(tp); + *ptr = uma_zalloc(bbr_pcb_zone, (M_NOWAIT | M_ZERO)); if (*ptr == NULL) { /* diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 760bd4ee9689..af03f2e1640c 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -14973,6 +14973,8 @@ rack_init(struct tcpcb *tp, void **ptr) uint32_t iwin, snt, us_cts; int err, no_query; + tcp_hpts_init(tp); + /* * First are we the initial or are we a switched stack? * If we are initing via tcp_newtcppcb the ptr passed diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index c1a29f3d01d7..19d71a9e9058 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -2315,9 +2315,6 @@ tcp_newtcpcb(struct inpcb *inp) * which may match an IPv4-mapped IPv6 address. */ inp->inp_ip_ttl = V_ip_defttl; -#ifdef TCPHPTS - tcp_hpts_init(tp); -#endif #ifdef TCPPCAP /* * Init the TCP PCAP queues. From nobody Tue Jan 16 19:05:13 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3Z3xpjz57qrm; Tue, 16 Jan 2024 19:05:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3Z1b5gz54Qd; Tue, 16 Jan 2024 19:05:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431914; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3t0+ub8gXJGEUlO10m3dnG9piPwud2k81lwXFdAFYnQ=; b=T+OCyX6ukKI/P2/GmR7Nc6Ys8Re/UBWro5CiC95s9M0NtJXuQiw4U7GkDkHop5tcKvJb6D rr6wRAVvTvbjcfZmM/kwv+TyQfsm6JdIrN9cjlrpuF3sFg45SL3K4A8ZeqG9hRzRN4UZy7 KEwI56+LaJSX9bEHVCgcv1gUTRA6Tw6MrwH7SHzZCvSTZLbdv0zsYYs3z1hKHrpw/xS/vK fhTsVF07SqQnLPZY/niYDR5YpAots06aMCGAjI4Z3LCl09DicOwHNMpbgedmSZ+buF2O2D CuXMoS7O69XfF87XwEDbwo6Fs+UPcBi0/fVGIBkVxoT2mUHrehbdaVPcZSfOyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431914; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3t0+ub8gXJGEUlO10m3dnG9piPwud2k81lwXFdAFYnQ=; b=rTklWcgMVrxr2g+TwBphN6QLHXW43SeFE2jlParO2VIW7LmzKS7uq9K0INZKglnfcMVNwA kA0+txXh3Qa5cAV69oOHHG4Ya2kzL6+PkHOLsGYuJKSfMQwW73xtLWL2+zYvXe8Mu0onLr DGKGF5LW3Q5rryB59yr0Pbhyet8I23Ke/6KW9vJ0LA3jLbtkguqTFilseTdZOw1AN57fI5 jKJEa6Aw7QySfsKUWdD5i3WwrlFxA0mD2pNw++9gBz7BaBo7jzaF0tNPw+5bv7YWMuYtFx qqW0ZKyE3qjHRoNdkEWfsLWQABmw6g65HgqOVWT/3uQabrY3GVK+5WJEyU9Q+w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431914; a=rsa-sha256; cv=none; b=nbpOiQLJv5snYHSF+AbJSjLs4jldL8zOYxKmhiAGWEMVcdKcGsmFJjr7tE+QzYHNPfUP6w NHzYZY+fzPF9jndLb3p9LuHhUaL7JJFT/bU8/rCqeGA6wqCdl87BfaZWlRnKqpF5emKQDb pglbJu3phSMKTxxGo5M4bDcegiBg/CUle3dTEy0n0wb3jOLrBZg/UnObOg4VlxyyewPM+U G8rqnXQ4WhHNyvFyMCfdt7ENhlxXhCc2FamzOXbUSV6ztEXtrOcJBjhilRUE1HjxQFdpdj 7LQklQs4EHAMphkbxbhJZMPvzTRSX0GWouL1Q6RInNjAQC4Z+4uitKPd769T8g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3Z0ByBzs8c; Tue, 16 Jan 2024 19:05:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5D9S010115; Tue, 16 Jan 2024 19:05:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5Dxs010112; Tue, 16 Jan 2024 19:05:13 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:13 GMT Message-Id: <202401161905.40GJ5Dxs010112@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 08cad73479df - stable/14 - tcp/hpts: make stacks responsible for clearing themselves out HPTS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 08cad73479df9ba6aab280af1cfd2eacb508a5a7 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=08cad73479df9ba6aab280af1cfd2eacb508a5a7 commit 08cad73479df9ba6aab280af1cfd2eacb508a5a7 Author: Gleb Smirnoff AuthorDate: 2023-12-04 18:19:46 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:49 +0000 tcp/hpts: make stacks responsible for clearing themselves out HPTS There already is the tfb_tcp_timer_stop_all method that is supposed to stop all time events associated with a given tcpcb by given stack. Some time ago it was doing actual callout_stop(). Today bbr/rack just mark their internal state as inactive in their tfb_tcp_timer_stop_all methods, but tcpcb stays in HPTS wheel and potentially called in from HPTS. Change the methods to also call tcp_hpts_remove(). Note: I'm not sure if internal flag is still relevant once we are out of HPTS wheel. Call the method when connection goes into TCP_CLOSED state, instead of calling it later when tcpcb is freed. Also call it when we switch between stacks. Reviewed by: tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42857 (cherry picked from commit d2ef52ef3dee38cccb7f54d33ecc2a4b944dad9d) --- sys/netinet/tcp_stacks/bbr.c | 3 +++ sys/netinet/tcp_stacks/rack.c | 4 ++++ sys/netinet/tcp_subr.c | 8 ++------ sys/netinet/tcp_usrreq.c | 6 ++---- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index 3805a911df41..c643f0321099 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -5278,6 +5278,9 @@ bbr_stopall(struct tcpcb *tp) bbr = (struct tcp_bbr *)tp->t_fb_ptr; bbr->rc_all_timers_stopped = 1; + + tcp_hpts_remove(tp); + return (0); } diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index af03f2e1640c..db8131ffb377 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -8213,8 +8213,12 @@ static int rack_stopall(struct tcpcb *tp) { struct tcp_rack *rack; + rack = (struct tcp_rack *)tp->t_fb_ptr; rack->t_timers_stopped = 1; + + tcp_hpts_remove(tp); + return (0); } diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 19d71a9e9058..023078d1d4f9 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -2381,9 +2381,6 @@ tcp_discardcb(struct tcpcb *tp) INP_WLOCK_ASSERT(inp); tcp_timer_stop(tp); - if (tp->t_fb->tfb_tcp_timer_stop_all) { - tp->t_fb->tfb_tcp_timer_stop_all(tp); - } /* free the reassembly queue, if any */ tcp_reass_flush(tp); @@ -2523,9 +2520,8 @@ tcp_close(struct tcpcb *tp) tcp_fastopen_decrement_counter(tp->t_tfo_pending); tp->t_tfo_pending = NULL; } -#ifdef TCPHPTS - tcp_hpts_remove(tp); -#endif + if (tp->t_fb->tfb_tcp_timer_stop_all != NULL) + tp->t_fb->tfb_tcp_timer_stop_all(tp); in_pcbdrop(inp); TCPSTAT_INC(tcps_closed); if (tp->t_state != TCPS_CLOSED) diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index 767045480abf..f65b09f17a5f 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -1759,10 +1759,8 @@ tcp_ctloutput_set(struct inpcb *inp, struct sockopt *sopt) * Ensure the new stack takes ownership with a * clean slate on peak rate threshold. */ -#ifdef TCPHPTS - /* Assure that we are not on any hpts */ - tcp_hpts_remove(tp); -#endif + if (tp->t_fb->tfb_tcp_timer_stop_all != NULL) + tp->t_fb->tfb_tcp_timer_stop_all(tp); if (blk->tfb_tcp_fb_init) { error = (*blk->tfb_tcp_fb_init)(tp, &ptr); if (error) { From nobody Tue Jan 16 19:05:15 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3b3gpDz57qym; Tue, 16 Jan 2024 19:05:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3b25xpz54k5; Tue, 16 Jan 2024 19:05:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431915; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WXrHOHgvI6sToF6lzS14MEO0520J2qa1Z1HPFeujqKA=; b=jWVawO/0zvfmUENPZCC0XLRPfkN6fznPBKbLn+SWl1SuoI8l/KD039d/pTPfKteCwB75HR FVQJB3b7aFeTu33WTwPKlTSuPx61lPFEqSnrmm5IHqWft5DZso9rKDpKOUoAiSRn9GD6qU Kp3wrVC6qSKFbk5ajrJEfv5pnjsSkZ9OzMsThXc5rjmTRzp0o2bwTZ6Z8OD9PIMTRs5CL3 JhIzALFaW5Ka5zs0azyV/dr0YAhFxJb7ILUwoNybO7shuHojHJdzrPMhYSEYb8ISmxmZMB ZqlOy1jEqd0U3KuuSG8XDZERg9TSJJ2TXty+winp8C+1oROXpJaSzDit/SDcMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431915; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WXrHOHgvI6sToF6lzS14MEO0520J2qa1Z1HPFeujqKA=; b=EgrR+0P81PLINr3EDPlLx+U7NpzOjtI1yAZKX37KgyHiPM7OcfOHwqr28XYBXQtCOwmiBM gQ6YUP2UtS8QSNtQ3SoOXZwmhL1L8jdKNAoXeQ6YWlNl4ujLfpls/oDJib5w1qOzoZgG/k faBkVrga3UO7GSa4GiTCRf+CHRs6NEkkmGuVHHoEsMG/GGomoA9gBIkhYP2Ykvmvp4XIVj BGIk/Rd8UbxKvdAa0LYn56LMU9l4SWXYPVrAQ4iGOM3pkZ3zuRRex3gRsoRcCj+DFiYemQ k430+76bjrPflI9VpWOft8wMnwrWOI2UszmiAYLt/GQ2Db13+KG7lAWInE5V/g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431915; a=rsa-sha256; cv=none; b=FU1xzCnw+tfqqgaOA6rfqIOnKGNT7ucWZPDdzuHojDTe3INABbNCakOL21iSnshwW3g0XS hSxZYnLe5nQf1jR61fHp6Z0fNBXnAMyCH9uzwnMTGPsRgTj3nW76wvwQWWVob95tgUOPiw wYA/TorH6J5T2kySSCBZlmzG/ZUDGQl14qHNIXdKojxUpR/5vqUBR9J4n3ug+TzLICBgMI VNilWLAFMIfLr5okn0FzUTHfLTzu8nv9wdh6Y5sGGjCpS0NEWhwHBUO1o0Tiku/c96wyR+ 1M/l+UEUzAfvPTdoCECBHAesna4bxokap2mshraP+sI7ukZcqO/Cz3vGtFZlOw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3b19g2zsbf; Tue, 16 Jan 2024 19:05:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5Fg4010160; Tue, 16 Jan 2024 19:05:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5FqV010157; Tue, 16 Jan 2024 19:05:15 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:15 GMT Message-Id: <202401161905.40GJ5FqV010157@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 22d80d2226e0 - stable/14 - tcp: stop stack timers in tcp_switch_back_to_default() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 22d80d2226e0c762d192d545068086c68071b36f Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=22d80d2226e0c762d192d545068086c68071b36f commit 22d80d2226e0c762d192d545068086c68071b36f Author: Gleb Smirnoff AuthorDate: 2023-12-07 22:41:36 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:49 +0000 tcp: stop stack timers in tcp_switch_back_to_default() This funcion is an alternative code path that detaches an alternative TCP stack, missed in d2ef52ef3dee38cccb7f54d33ecc2a4b944dad9d. Reviewed by: rrs, tuexen Differential Revision: https://reviews.freebsd.org/D42917 Reported-by: syzbot+186130be9f0ca5557d4e@syzkaller.appspotmail.com Fixes: d2ef52ef3dee38cccb7f54d33ecc2a4b944dad9d (cherry picked from commit ade05d63b727d5e8d0d833c1d974a9d50d4cb1bb) --- sys/netinet/tcp_subr.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 023078d1d4f9..4e28f7917bdf 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -544,6 +544,9 @@ tcp_switch_back_to_default(struct tcpcb *tp) KASSERT(tp->t_fb != &tcp_def_funcblk, ("%s: called by the built-in default stack", __func__)); + if (tp->t_fb->tfb_tcp_timer_stop_all != NULL) + tp->t_fb->tfb_tcp_timer_stop_all(tp); + /* * Now, we'll find a new function block to use. * Start by trying the current user-selected From nobody Tue Jan 16 19:05:16 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3c6y8Xz57qjR; Tue, 16 Jan 2024 19:05:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3c3FFXz54T3; Tue, 16 Jan 2024 19:05:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431916; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4gyCtLNi6GYpn3vW2ZN6Ol3C/c+JT7spRexBkOlnP3I=; b=jnRjWIlU9LPAW+71Ei34BRBKBsgIPHz0gkSxACVAe0mo015+ylgC+RPRzS6hQboxyCnzt7 EberhxPtZNwhXXcRDqljGm/s7wZt3ED7EdOGGHNPMFm04AGCPLZz0iOUGfNWmNVxI6if58 1gVl/zDN3qhl1AbpDqyOtCecicHixnzClTX6eMdwzZLEbdxKvii8ib/oiPbRtakaS5s0n1 S1IcZo5BfCDzsy8De7YwiwwV7ex9rnpHlb2/Jz6MzKkAnXnIfokuctRdibD8aneS3wKpMy tKt6zUwyqYX9r9TNFv2PAlODr3OWqtx6J/hX1urOT/4gv8eXnCbY3RfphHNOmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431916; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4gyCtLNi6GYpn3vW2ZN6Ol3C/c+JT7spRexBkOlnP3I=; b=e4nXjn6QU42dHja020AuICDnFvxJT4C+C7n0gVhskfFMG725RN2bQDkR5u4RUanTLxZ3/y VBP6AVkVrDA/M+IfAx7N6or/kWfbvX8L352PN5issB+VjqWE/E/eS7J+QQ3VPgahESmsnI YRIKeVSIf+fZ6w6lJ/myfzxF4bjrt2zkJdSNvY1ckP3J/yKDuIWkeOQmu9j7QAYnB3Z6qZ a9752Aarr0OTV8VESDOkoCD5BKOo5YXaspj18A8JOpb4hdPYp9NPc+5VWSQo0UsilM3d1m SOvQaUPls2JfzzQO7gsPqCVcdGrhL706W2ft6iIuHcFqVJ/js983PObTQksmGA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431916; a=rsa-sha256; cv=none; b=pZhUmaPVMSQTaHvmmnVzw1CjsffK7r8eOqvot7JUV3REW3pQq7UcHaXFgU7O6D9I7JgrUT fnFFJleC8jATjkiv4Htg6b4oXTItHewjJdQv8gb78MuwCPw49UVnKPxuw0n8NHMiH9jSaK n3fuNZuv3GdrQ4TaYo37yuck8bXx+rUl+5snYpEzD7Abf8yOxqh0BK8ytIN/gcKW/uOLiW V41ERf2fQetIgPx99paRC1v5rx9skOAcllVQG+x/eUOV6v+kmRPPXyrvfdJcRrzQYqmdsB KUMJGt6yfMgCgbKFDyPU+HRI29jc26AjJ9f9B+s5R/9jX2YiKs2UHqIC00RVKw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3c20dzzs8d; Tue, 16 Jan 2024 19:05:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5GMN010215; Tue, 16 Jan 2024 19:05:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5GXY010212; Tue, 16 Jan 2024 19:05:16 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:16 GMT Message-Id: <202401161905.40GJ5GXY010212@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: c0303fa84eed - stable/14 - tcp_hpts: let tcp_hpts_init() set a random CPU only once List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c0303fa84eed989ec7ba9aafcb7028bb11c9d6a2 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=c0303fa84eed989ec7ba9aafcb7028bb11c9d6a2 commit c0303fa84eed989ec7ba9aafcb7028bb11c9d6a2 Author: Gleb Smirnoff AuthorDate: 2023-12-07 22:41:43 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:49 +0000 tcp_hpts: let tcp_hpts_init() set a random CPU only once After d2ef52ef3dee the tcp_hpts_init() function can be called multiple times on a tcpcb if it is switched there and back between two TCP stacks. First, this makes existing assertion in tcp_hpts_init() incorrect. Second, it creates possibility to change a randomly set t_hpts_cpu to a different random value, while a tcpcb is already in the HPTS wheel, triggering other assertions later in tcp_hptsi(). The best approach here would be to work on the stacks to really clear a tcpcb out of HPTS wheel in tfb_tcp_fb_fini, draining the IHPTS_MOVING state. But that's pretty intrusive change, so let's just get back to the old logic (pre d2ef52ef3dee) where t_hpts_cpu was set to a random value only once in a CPU lifetime and a newly switched stack inherits t_hpts_cpu from the previous stack. Reviewed by: rrs, tuexen Differential Revision: https://reviews.freebsd.org/D42946 Reported-by: syzbot+fab29fe1ab089c52998d@syzkaller.appspotmail.com Reported-by: syzbot+ca5f2aa0fda15dcfe6d7@syzkaller.appspotmail.com Fixes: 2b3a77467dd3d74a7170f279fb25f9736b46ef8a (cherry picked from commit 3f46be6acadd5d660acde67d9d4c80137f424b70) --- sys/netinet/tcp_hpts.c | 16 ++++++++++++---- sys/netinet/tcp_subr.c | 3 +++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/sys/netinet/tcp_hpts.c b/sys/netinet/tcp_hpts.c index 92b2f69c9e58..e39c2b69ea7e 100644 --- a/sys/netinet/tcp_hpts.c +++ b/sys/netinet/tcp_hpts.c @@ -542,15 +542,23 @@ tcp_hpts_release(struct tcpcb *tp) } /* - * Initialize newborn tcpcb to get ready for use with HPTS. + * Initialize tcpcb to get ready for use with HPTS. We will know which CPU + * is preferred on the first incoming packet. Before that avoid crowding + * a single CPU with newborn connections and use a random one. + * This initialization is normally called on a newborn tcpcb, but potentially + * can be called once again if stack is switched. In that case we inherit CPU + * that the previous stack has set, be it random or not. In extreme cases, + * e.g. syzkaller fuzzing, a tcpcb can already be in HPTS in IHPTS_MOVING state + * and has never received a first packet. */ void tcp_hpts_init(struct tcpcb *tp) { - tp->t_hpts_cpu = hpts_random_cpu(); - tp->t_lro_cpu = HPTS_CPU_NONE; - MPASS(!(tp->t_flags2 & TF2_HPTS_CPU_SET)); + if (__predict_true(tp->t_hpts_cpu == HPTS_CPU_NONE)) { + tp->t_hpts_cpu = hpts_random_cpu(); + MPASS(!(tp->t_flags2 & TF2_HPTS_CPU_SET)); + } } /* diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 4e28f7917bdf..34150707072e 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -2276,6 +2276,9 @@ tcp_newtcpcb(struct inpcb *inp) /* All mbuf queue/ack compress flags should be off */ tcp_lro_features_off(tp); + tp->t_hpts_cpu = HPTS_CPU_NONE; + tp->t_lro_cpu = HPTS_CPU_NONE; + callout_init_rw(&tp->t_callout, &inp->inp_lock, CALLOUT_RETURNUNLOCKED); for (int i = 0; i < TT_N; i++) tp->t_timers[i] = SBT_MAX; From nobody Tue Jan 16 19:05:17 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3d6snbz57qcm; Tue, 16 Jan 2024 19:05:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3d48Zhz54c0; Tue, 16 Jan 2024 19:05:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431917; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=02dXF+WZIeik4rZ24MfDz4r3cnTkelPHz4I8MZMLNr8=; b=aiZZ8k6sc4JjlohQID7zedpyuImt6H+BvWMLd2hA4hSkWXbsOuF0toTemnUfPyNpMVMzHT JDFjUpaopInuM1ZpFQOHUulxGv0Nyvzz/GB4QPDjel6nSCKPdL9i1UXbIFa0yRiaTJGkww 78UwgD4S2JSjrGNYiG5de5q0YOj2YGiRMP0gvTfkRUMLgI7SubWy9IuwRdm3SaS4iZvC2B sY2X4ZE/cEBxCZ+eatodWtamSA4lG3egYFv0dCpZKOfPZRXDsdyfTxTdFZh+cdX79fdeAw UjCKt1N05kLj45y9lVY3pamaEYKpyK8LM+0QObuDjdHjSTJMsN3fXAlQK23zyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431917; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=02dXF+WZIeik4rZ24MfDz4r3cnTkelPHz4I8MZMLNr8=; b=imRYZVPLIREtROKMMHEef/35juupQgPOwrggwURTGFom+j3+Z77hjr3IeAS0pFB5Eaxb0D SXMHaHPUC+i0uk7BMbGnGqJc5kP3QJq5xGD1QRQEfG28l2zNAqGr453bB8aF/MTWU9UoMQ uTAUA58+W3JQQSebXVpRZGPSQ5ZzSSKfhmmMCvFZtpi5goIbK9NCE5Nt/IJtPkDLhzUjeU MSwtoTVy92anDmDmSifZinJHBpbK9bhBTAbPQRjPmsC8LuDelvnIgxD91lqUpTiWXfImEc pYLfCsZbfcUfMX6bOKD7qYVn0VFSzF7wOaCHrZYQ2gJd9u/lyqpR7CrarQnUHw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431917; a=rsa-sha256; cv=none; b=YKhuXYdjlHZgEJRlbS9u9ZbfXLCbY1nSec7pYP5xrYAHlIvWbiMovZgx/IEZK+FZjZa2vA MaiGVKPXG1ckIHo5vAES5t1EldGrREKZaqU5huqQmjkEJFPOMO7A6JzIfjvcLZRJjWEWHG HctoFDjjkJcvkZmre09E2iBCAKuvJ5ll4TJldHB5IyIiJQ3/sQ5iD+QLH0OsgG24WVvGwU EkMIiFTYRwFXZscv30wQdRJeaw8kJb9qW47SObG3wL+5lZF995H/u7tmXtS5KL08vtzWJ/ tCGoIBDAlXid2+2C1aZP7nQszITSlSzWuxW1KrnsaD5FuT/eC6WpOF2SUtCwVQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3d3GdLzsMk; Tue, 16 Jan 2024 19:05:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5HUL010329; Tue, 16 Jan 2024 19:05:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5HOk010326; Tue, 16 Jan 2024 19:05:17 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:17 GMT Message-Id: <202401161905.40GJ5HOk010326@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: daa0dc908882 - stable/14 - Fix two latent bugs in hpts. One where a static is put on a local variable, the other an initialization bug where we should be setting tv.tv_sec to 0. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: daa0dc908882f1a724dbe61af2ee86115bd86461 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=daa0dc908882f1a724dbe61af2ee86115bd86461 commit daa0dc908882f1a724dbe61af2ee86115bd86461 Author: Randall Stewart AuthorDate: 2023-11-27 19:38:06 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:49 +0000 Fix two latent bugs in hpts. One where a static is put on a local variable, the other an initialization bug where we should be setting tv.tv_sec to 0. PR: 275482 (cherry picked from commit 6a79e48076bcce3e902323e62689eacb98faa180) --- sys/netinet/tcp_hpts.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/netinet/tcp_hpts.c b/sys/netinet/tcp_hpts.c index e39c2b69ea7e..a85eca08b815 100644 --- a/sys/netinet/tcp_hpts.c +++ b/sys/netinet/tcp_hpts.c @@ -1527,6 +1527,7 @@ __tcp_run_hpts(struct tcp_hpts_entry *hpts) hpts->p_mysleep.tv_usec = dynamic_min_sleep; /* Reschedule with new to value */ tcp_hpts_set_max_sleep(hpts, 0); + tv.tv_sec = 0; tv.tv_usec = hpts->p_hpts_sleep_time * HPTS_TICKS_PER_SLOT; /* Validate its in the right ranges */ if (tv.tv_usec < hpts->p_mysleep.tv_usec) { @@ -1608,7 +1609,7 @@ tcp_choose_hpts_to_run(void) void tcp_run_hpts(void) { - static struct tcp_hpts_entry *hpts; + struct tcp_hpts_entry *hpts; struct epoch_tracker et; NET_EPOCH_ENTER(et); From nobody Tue Jan 16 19:05:18 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3f6TGBz57qlt; Tue, 16 Jan 2024 19:05:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3f5NyGz54sK; Tue, 16 Jan 2024 19:05:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431918; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lrPvDowAGqRM/OdkYWw0iOrf9Fm21rq/50s/eSpQeaA=; b=fOKDMVH3rjIFY4/d6PzQi6WelZ1U6ybsehVnoYtsrs+clvkiq5cbNjNJWelfjEH8L2dzPF YUh4NN2+qRzWLNxZTqfVur7ILnuKYwmDx30E7vOHIuKHG1wKvrcGHBc8AmxXvkN3NprbcR GnkdMfbCvo2vZXtOgPX41lw4lb6iOyJ/x4C+OT9zGE/sBef0iyixzFie2u1TR5R2cjrRUh F9ZqQJanKLf7ay8OPTJRDBpktD0RLGRHq9HSGST29z/6dejUI+NjKHVFoVgwvUpHO0tLTo mg8v4PGpjqZHjuUglRGKMQPTvR4cGnUojfb8RPB9GXKvESVOqDp39LTiJY+4UQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431918; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lrPvDowAGqRM/OdkYWw0iOrf9Fm21rq/50s/eSpQeaA=; b=yyjP07LYzBkqBk+P2yFNfQ61s0liv3sOS+zrb3kl4OzURbXO7D/aNBcD8pVupuFDFfNzma gpiJXYc00jESmlzfP29UjEja+uTtT2np3c/VzWyPMHwOf0ZL2hLwarcJGeqATCjsNNa+Ax KRKzeokgJkmSPj0/isRe2u0AZNupIfbx9b6e2g9H52CKEOJlqnb7RvLEqE/6prIBHZ5KCO UY+wHnE/02De9Q1JfiOtFH57on/IMSdPvon4r99XjsGZoZKtF5OQ+IJVbPfOv6mcvMWK8m 56hHss+Tf3GlppUHllUFamMPzs9sTura15FKN2pr4WEfAhGWYG/aeiZMhkuWkg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431918; a=rsa-sha256; cv=none; b=db63aQE6R82e8EIXcIUNjuUb9iYhZjQcS9W3W/qmCPM9W2rAhkZ4NRE/CLkoaUxXO+P0K4 svACbRackUNEMilgeukt7DXh9ONzm9EgIoCqwklU1OV9ks54t8g67um1N7liJk5Td3ht2T xjw7UMGLmepyWGfGlvoFWFwTUG41YEKalntben7MNjFJcMoruaHVZ/F9bUH0BL8SoDV+eb yv7xQn4V9+0W6O4vzSgMsvInx5F48rh92yd2iCPPcTrYn9h3wZKzYlHG4krYcoy8Ozz7tY 0gdSFPOYZaXDD8ZYNYiFJyOjCXc3EWK3PBMyVeGnxqTQDS8FwX28deubuOcONQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3f4VG2zs2L; Tue, 16 Jan 2024 19:05:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5IGO010380; Tue, 16 Jan 2024 19:05:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5InM010377; Tue, 16 Jan 2024 19:05:18 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:18 GMT Message-Id: <202401161905.40GJ5InM010377@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 2707135d0959 - stable/14 - hpts/lro: make tcp_lro_flush_tcphpts() and tcp_run_hpts() pointers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2707135d0959fe0ccabd872b23f3082a5a156a35 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=2707135d0959fe0ccabd872b23f3082a5a156a35 commit 2707135d0959fe0ccabd872b23f3082a5a156a35 Author: Gleb Smirnoff AuthorDate: 2023-12-04 18:19:46 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:49 +0000 hpts/lro: make tcp_lro_flush_tcphpts() and tcp_run_hpts() pointers Rename tcp_run_hpts() to tcp_hpts_softlock() to better describe its function. This makes loadable hpts.ko working correctly with LRO. Reviewed by: tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42858 (cherry picked from commit 2c6fc36a0ddd4d741e2c206855d2dff9b008005a) --- sys/netinet/tcp_hpts.c | 104 +++++++++++++++++++++------------------------ sys/netinet/tcp_hpts.h | 3 +- sys/netinet/tcp_lro.c | 24 ++++------- sys/netinet/tcp_lro.h | 2 +- sys/netinet/tcp_lro_hpts.c | 13 +++++- 5 files changed, 71 insertions(+), 75 deletions(-) diff --git a/sys/netinet/tcp_hpts.c b/sys/netinet/tcp_hpts.c index a85eca08b815..f1b729c249c6 100644 --- a/sys/netinet/tcp_hpts.c +++ b/sys/netinet/tcp_hpts.c @@ -1497,11 +1497,56 @@ __tcp_set_hpts(struct tcpcb *tp, int32_t line) mtx_unlock(&hpts->p_mtx); } +static struct tcp_hpts_entry * +tcp_choose_hpts_to_run(void) +{ + int i, oldest_idx, start, end; + uint32_t cts, time_since_ran, calc; + + cts = tcp_get_usecs(NULL); + time_since_ran = 0; + /* Default is all one group */ + start = 0; + end = tcp_pace.rp_num_hptss; + /* + * If we have more than one L3 group figure out which one + * this CPU is in. + */ + if (tcp_pace.grp_cnt > 1) { + for (i = 0; i < tcp_pace.grp_cnt; i++) { + if (CPU_ISSET(curcpu, &tcp_pace.grps[i]->cg_mask)) { + start = tcp_pace.grps[i]->cg_first; + end = (tcp_pace.grps[i]->cg_last + 1); + break; + } + } + } + oldest_idx = -1; + for (i = start; i < end; i++) { + if (TSTMP_GT(cts, cts_last_ran[i])) + calc = cts - cts_last_ran[i]; + else + calc = 0; + if (calc > time_since_ran) { + oldest_idx = i; + time_since_ran = calc; + } + } + if (oldest_idx >= 0) + return(tcp_pace.rp_ent[oldest_idx]); + else + return(tcp_pace.rp_ent[(curcpu % tcp_pace.rp_num_hptss)]); +} + static void -__tcp_run_hpts(struct tcp_hpts_entry *hpts) +__tcp_run_hpts(void) { + struct epoch_tracker et; + struct tcp_hpts_entry *hpts; int ticks_ran; + hpts = tcp_choose_hpts_to_run(); + if (hpts->p_hpts_active) { /* Already active */ return; @@ -1510,6 +1555,7 @@ __tcp_run_hpts(struct tcp_hpts_entry *hpts) /* Someone else got the lock */ return; } + NET_EPOCH_ENTER(et); if (hpts->p_hpts_active) goto out_with_mtx; hpts->syscall_cnt++; @@ -1562,63 +1608,9 @@ __tcp_run_hpts(struct tcp_hpts_entry *hpts) out_with_mtx: HPTS_MTX_ASSERT(hpts); mtx_unlock(&hpts->p_mtx); -} - -static struct tcp_hpts_entry * -tcp_choose_hpts_to_run(void) -{ - int i, oldest_idx, start, end; - uint32_t cts, time_since_ran, calc; - - cts = tcp_get_usecs(NULL); - time_since_ran = 0; - /* Default is all one group */ - start = 0; - end = tcp_pace.rp_num_hptss; - /* - * If we have more than one L3 group figure out which one - * this CPU is in. - */ - if (tcp_pace.grp_cnt > 1) { - for (i = 0; i < tcp_pace.grp_cnt; i++) { - if (CPU_ISSET(curcpu, &tcp_pace.grps[i]->cg_mask)) { - start = tcp_pace.grps[i]->cg_first; - end = (tcp_pace.grps[i]->cg_last + 1); - break; - } - } - } - oldest_idx = -1; - for (i = start; i < end; i++) { - if (TSTMP_GT(cts, cts_last_ran[i])) - calc = cts - cts_last_ran[i]; - else - calc = 0; - if (calc > time_since_ran) { - oldest_idx = i; - time_since_ran = calc; - } - } - if (oldest_idx >= 0) - return(tcp_pace.rp_ent[oldest_idx]); - else - return(tcp_pace.rp_ent[(curcpu % tcp_pace.rp_num_hptss)]); -} - - -void -tcp_run_hpts(void) -{ - struct tcp_hpts_entry *hpts; - struct epoch_tracker et; - - NET_EPOCH_ENTER(et); - hpts = tcp_choose_hpts_to_run(); - __tcp_run_hpts(hpts); NET_EPOCH_EXIT(et); } - static void tcp_hpts_thread(void *ctx) { @@ -2009,6 +2001,8 @@ tcp_init_hptsi(void *st) break; } } + tcp_hpts_softclock = __tcp_run_hpts; + tcp_lro_hpts_init(); printf("TCP Hpts created %d swi interrupt threads and bound %d to %s\n", created, bound, tcp_bind_threads == 2 ? "NUMA domains" : "cpus"); diff --git a/sys/netinet/tcp_hpts.h b/sys/netinet/tcp_hpts.h index 514ab84227b5..8ca21daf60de 100644 --- a/sys/netinet/tcp_hpts.h +++ b/sys/netinet/tcp_hpts.h @@ -152,7 +152,8 @@ void __tcp_set_hpts(struct tcpcb *tp, int32_t line); void tcp_set_inp_to_drop(struct inpcb *inp, uint16_t reason); -void tcp_run_hpts(void); +extern void (*tcp_hpts_softclock)(void); +void tcp_lro_hpts_init(void); extern int32_t tcp_min_hptsi_time; diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c index 6cf0411b5f65..255e543ae21d 100644 --- a/sys/netinet/tcp_lro.c +++ b/sys/netinet/tcp_lro.c @@ -88,6 +88,9 @@ SYSCTL_NODE(_net_inet_tcp, OID_AUTO, lro, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "TCP LRO"); long tcplro_stacks_wanting_mbufq; +int (*tcp_lro_flush_tcphpts)(struct lro_ctrl *lc, struct lro_entry *le); +void (*tcp_hpts_softclock)(void); + counter_u64_t tcp_inp_lro_direct_queue; counter_u64_t tcp_inp_lro_wokeup_queue; counter_u64_t tcp_inp_lro_compressed; @@ -1109,23 +1112,14 @@ again: void tcp_lro_flush(struct lro_ctrl *lc, struct lro_entry *le) { - /* Only optimise if there are multiple packets waiting. */ -#ifdef TCPHPTS - int error; -#endif + /* Only optimise if there are multiple packets waiting. */ NET_EPOCH_ASSERT(); -#ifdef TCPHPTS - CURVNET_SET(lc->ifp->if_vnet); - error = tcp_lro_flush_tcphpts(lc, le); - CURVNET_RESTORE(); - if (error != 0) { -#endif + if (tcp_lro_flush_tcphpts == NULL || + tcp_lro_flush_tcphpts(lc, le) != 0) { tcp_lro_condense(lc, le); tcp_flush_out_entry(lc, le); -#ifdef TCPHPTS } -#endif lc->lro_flushed++; bzero(le, sizeof(*le)); LIST_INSERT_HEAD(&lc->lro_free, le, next); @@ -1268,10 +1262,8 @@ tcp_lro_flush_all(struct lro_ctrl *lc) done: /* flush active streams */ tcp_lro_rx_done(lc); - -#ifdef TCPHPTS - tcp_run_hpts(); -#endif + if (tcp_hpts_softclock != NULL) + tcp_hpts_softclock(); lc->lro_mbuf_count = 0; } diff --git a/sys/netinet/tcp_lro.h b/sys/netinet/tcp_lro.h index d981c940e7eb..b4b5e3f811e4 100644 --- a/sys/netinet/tcp_lro.h +++ b/sys/netinet/tcp_lro.h @@ -218,7 +218,7 @@ void tcp_lro_free(struct lro_ctrl *); void tcp_lro_flush_inactive(struct lro_ctrl *, const struct timeval *); void tcp_lro_flush(struct lro_ctrl *, struct lro_entry *); void tcp_lro_flush_all(struct lro_ctrl *); -int tcp_lro_flush_tcphpts(struct lro_ctrl *, struct lro_entry *); +extern int (*tcp_lro_flush_tcphpts)(struct lro_ctrl *, struct lro_entry *); int tcp_lro_rx(struct lro_ctrl *, struct mbuf *, uint32_t); void tcp_lro_queue_mbuf(struct lro_ctrl *, struct mbuf *); void tcp_lro_reg_mbufq(void); diff --git a/sys/netinet/tcp_lro_hpts.c b/sys/netinet/tcp_lro_hpts.c index 497da9cba40e..769c82a32391 100644 --- a/sys/netinet/tcp_lro_hpts.c +++ b/sys/netinet/tcp_lro_hpts.c @@ -423,6 +423,7 @@ tcp_lro_lookup(struct ifnet *ifp, struct lro_parser *pa) { struct inpcb *inp; + CURVNET_SET(ifp->if_vnet); switch (pa->data.lro_type) { #ifdef INET6 case LRO_TYPE_IPV6_TCP: @@ -447,14 +448,16 @@ tcp_lro_lookup(struct ifnet *ifp, struct lro_parser *pa) break; #endif default: + CURVNET_RESTORE(); return (NULL); } + CURVNET_RESTORE(); return (intotcpcb(inp)); } -int -tcp_lro_flush_tcphpts(struct lro_ctrl *lc, struct lro_entry *le) +static int +_tcp_lro_flush_tcphpts(struct lro_ctrl *lc, struct lro_entry *le) { struct tcpcb *tp; struct mbuf **pp, *cmp, *mv_to; @@ -575,3 +578,9 @@ tcp_lro_flush_tcphpts(struct lro_ctrl *lc, struct lro_entry *le) return (0); /* Success. */ } + +void +tcp_lro_hpts_init(void) +{ + tcp_lro_flush_tcphpts = _tcp_lro_flush_tcphpts; +} From nobody Tue Jan 16 19:05:19 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3h08hxz57qxj; Tue, 16 Jan 2024 19:05:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3g6NrCz54px; Tue, 16 Jan 2024 19:05:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431919; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XU6yx/ZSWiLPOpOpnM9B5QW/3f2omZ6hLJZwC5aT7Vg=; b=H+h+3l2xxXb3VqDRGGPGdJxBr5BZsXUcTsR+SGbMGZTNICqTKks69axWiR0PYCsfYlk8/j M1YbM7dVGntcPUDCJNDZUL9+gPR8NKd4UU6PBlke6eEYUZAGA1W4ncYghrDpMRfSY0UrZt JIC+TLPb0qzlicx0orFNhynVQzmsVbtOeYMjz5UFRrN7bk38vTvvMOwlz/xlfdZTD+PA2k HEK1O5xxU0S7YLk8VfC5+pLkdj46NJ0CsbduAudrSjcNpa+JzwffNXAURJZNiGLvbji64/ VCApMuIYHB6w/AoVFYVMI4IVNNRdeYqWX++AMXdFMPLEmbHXb7/B4hqFhr49Rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431919; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XU6yx/ZSWiLPOpOpnM9B5QW/3f2omZ6hLJZwC5aT7Vg=; b=xFQ4LFigdWNBsNgwXfn8xE6mogT/wmvZb2tnL3RO2WIdZSyje/4pg45U2m4WQaVqM8XRFC T3gUZArknVeNMep5YImajs5VhzFas5VZApum+MWKxKUXu5nUbkgWNnXsVgDcyGTDYCLn2J Svt/g8P1otdzZVUzU7MWlgmsMlPYKgSVMwLMXeVw9W+2Iige5SyTJIhgsb150O1/MyI5Nm 0weJE1nD71IcU9xdn0NBibnIN1wlzo61c7ZxybTvB4yCvwPLaPqVcdgu4kEjIZywljkJbR H64o17MNgrWYuTR209NstvvLWA/v+PjwbC1dgo0vo4ilVW4nSU4gE5tUZk8vAQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431919; a=rsa-sha256; cv=none; b=EFZvRWw5WS0qP7WQiNRar9c17nvyM/zSwnSu56s2snW0cU0XzuVDPuZ5kTuonHR6Gy0VM1 eOPWeYD+n0FgelzVXG2zAEEZViDBfDMjJYPGMRtC7t9HnOniGoU/n+fhdiKxzrBR9XsBKi /PmaV2/baGHHi8r0ApdpSb/rka1McDiOUeRRVf6dcgVxmTywmurU351spIFQhiIzoAmOYa Vcsa7TWKxsK6qjoL57Fkf6x4mpnS4Mh6HHanICEE8uiInaNTS8FtulW7gbsd0qTsXUeCef iuXnmUf+UiBbyaMG3r4ucUK5qaZSS1IucozltzHyUH2IDi5DPBegQx6wKBmf/w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3g5VGLzrnP; Tue, 16 Jan 2024 19:05:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5JT0010434; Tue, 16 Jan 2024 19:05:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5Jf9010431; Tue, 16 Jan 2024 19:05:19 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:19 GMT Message-Id: <202401161905.40GJ5Jf9010431@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 01df384133a3 - stable/14 - kern/subr_trap.c: repair the HPTS performance hack in userret() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 01df384133a388ac2f686651f5cf33bdd8a88603 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=01df384133a388ac2f686651f5cf33bdd8a88603 commit 01df384133a388ac2f686651f5cf33bdd8a88603 Author: Gleb Smirnoff AuthorDate: 2023-12-04 18:19:46 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:49 +0000 kern/subr_trap.c: repair the HPTS performance hack in userret() It wasn't functional as subr_trap.c doesn't include opt_inet.h. Put a better comment provided by gallatin@ in place of the old one. The idea is to use userret() as a cheap place to call a soft clock. This approach saves CPU on busy machines and saves power on idle machines. An alternative would be to constantly schedule callouts. Running with neither callouts nor the soft clock ruins HPTS precision. Reviewed by: tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42860 (cherry picked from commit e3cbc572f1541fdc18be9971d23e210d5018e662) --- sys/kern/subr_trap.c | 20 ++++++++++++-------- sys/netinet/tcp_hpts.h | 1 - sys/netinet/tcp_lro.c | 4 +--- sys/sys/systm.h | 6 ++++++ 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c index 6160b3fcdf30..42ce9e7988b5 100644 --- a/sys/kern/subr_trap.c +++ b/sys/kern/subr_trap.c @@ -76,6 +76,8 @@ #include #endif +void (*tcp_hpts_softclock)(void); + /* * Define the code needed before returning to user mode, for trap and * syscall. @@ -127,16 +129,18 @@ userret(struct thread *td, struct trapframe *frame) if (PMC_THREAD_HAS_SAMPLES(td)) PMC_CALL_HOOK(td, PMC_FN_THR_USERRET, NULL); #endif -#ifdef TCPHPTS /* - * @gallatin is adament that this needs to go here, I - * am not so sure. Running hpts is a lot like - * a lro_flush() that happens while a user process - * is running. But he may know best so I will go - * with his view of accounting. :-) + * Calling tcp_hpts_softclock() here allows us to avoid frequent, + * expensive callouts that trash the cache and lead to a much higher + * number of interrupts and context switches. Testing on busy web + * servers at Netflix has shown that this improves CPU use by 7% over + * relying only on callouts to drive HPTS, and also results in idle + * power savings on mostly idle servers. + * This was inspired by the paper "Soft Timers: Efficient Microsecond + * Software Timer Support for Network Processing" + * by Mohit Aron and Peter Druschel. */ - tcp_run_hpts(); -#endif + tcp_hpts_softclock(); /* * Let the scheduler adjust our priority etc. */ diff --git a/sys/netinet/tcp_hpts.h b/sys/netinet/tcp_hpts.h index 8ca21daf60de..7eb1b2e08cb4 100644 --- a/sys/netinet/tcp_hpts.h +++ b/sys/netinet/tcp_hpts.h @@ -152,7 +152,6 @@ void __tcp_set_hpts(struct tcpcb *tp, int32_t line); void tcp_set_inp_to_drop(struct inpcb *inp, uint16_t reason); -extern void (*tcp_hpts_softclock)(void); void tcp_lro_hpts_init(void); extern int32_t tcp_min_hptsi_time; diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c index 255e543ae21d..921d28f82517 100644 --- a/sys/netinet/tcp_lro.c +++ b/sys/netinet/tcp_lro.c @@ -89,7 +89,6 @@ SYSCTL_NODE(_net_inet_tcp, OID_AUTO, lro, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, long tcplro_stacks_wanting_mbufq; int (*tcp_lro_flush_tcphpts)(struct lro_ctrl *lc, struct lro_entry *le); -void (*tcp_hpts_softclock)(void); counter_u64_t tcp_inp_lro_direct_queue; counter_u64_t tcp_inp_lro_wokeup_queue; @@ -1262,8 +1261,7 @@ tcp_lro_flush_all(struct lro_ctrl *lc) done: /* flush active streams */ tcp_lro_rx_done(lc); - if (tcp_hpts_softclock != NULL) - tcp_hpts_softclock(); + tcp_hpts_softclock(); lc->lro_mbuf_count = 0; } diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 2367a7880cfd..0e90b6062b72 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -380,6 +380,12 @@ void cpu_et_frequency(struct eventtimer *et, uint64_t newfreq); extern int cpu_disable_c2_sleep; extern int cpu_disable_c3_sleep; +extern void (*tcp_hpts_softclock)(void); +#define tcp_hpts_softclock() do { \ + if (tcp_hpts_softclock != NULL) \ + tcp_hpts_softclock(); \ +} while (0) + char *kern_getenv(const char *name); void freeenv(char *env); int getenv_int(const char *name, int *data); From nobody Tue Jan 16 19:05:20 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3j2WKZz57qd0; Tue, 16 Jan 2024 19:05:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3j0P0Pz54sv; Tue, 16 Jan 2024 19:05:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431921; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yS9BXmEI+6aqLOaURPTaeYV4cwjJtkhb2qYa9QSV8KY=; b=aLPT/XyfC6rl4wWozgNiBof9fBlI/7UW1F5rp8hdoQkQSCQezOGJ+LChWCbT32LgCKz95q 2Jr8uXg8298WJKR5rzxLvFeRyswfeFplXONGWNOW1oiweuhwZUmqDCzsElBGbzQUH1b+rN AvQhz9HkStHT+zQzwsCS8ZePDkwu4P8aGf+XN+9YSBej553n7EHhLgsyzEFnm+Or/O/waP us+VvQwv9frYXjDhIzQT0zBdNjUPa/PKGMC0h0fOwalzdRnf3qvW28+VAuC6sepmjqQena Iklxh/qY+0HHGA8VU3IhCgw2ZGID38Qp1b15ShrjIXKmnGWasFACYJMqT7ZHdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431921; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yS9BXmEI+6aqLOaURPTaeYV4cwjJtkhb2qYa9QSV8KY=; b=pNh0XwP1uifkIEPA0KWbK8Qvdq3rHkcT4BKMOlz0AM95SUSPvYx7/qY0yieymuXyTRFu+q CjV7w+380Utg0uasprx9mcdvxEQBP+AZS4TnTC9lB3KzRRgboWc+CAKnlmQ6VUJ/bv7uzK Mm2Le9RKGlDS8QXGpBZnwwMtuXe06gYiHJyIyYgh/ubRSbN6Kxlne0yAYvhgtJyys4qsEf nVwKC3UG4WgTbdr7G18eihjldd7Gt3N5t1txRmx8FXouCPI6Ri24CrZuqLG74BrdazLsZP zJ094q0UZlOZSDy1ArLgDgns9gTKRegcc8/M4zPeyiRE3cC2JXcnnEtVEZYPkA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431921; a=rsa-sha256; cv=none; b=c/aciedLQQo4FcVteAMisAjnujeGnu9L6yL1mWgzPrnUnanIGwvuKExGiwSprwisTXU9a3 xioi/rvyym+3SWWZPoLSXqsGsb4r9oFjhBoLDgqYdptT9t5LeJUw5unbcehX1SQGCI95w5 0S+B1virLsEAxC7GcI5GOf7zNGYd076IHNzzx3G8uIP12BQ/1Oo6PGG+IATfHm/dMVQo3X nqr9NYJwwN29CcqRyFyKsmDUeuiC/0ABbjGHggI8NaM10Q6elOlDRTf1QIC4Q9/46ebi1L rbYIF/CKUH9r0oUbf6Q1Y9ilcNgx893geerj2uQWcydpYvgi1QUbjlBLgFSU8g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3h6XNKzs2M; Tue, 16 Jan 2024 19:05:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5KNB010473; Tue, 16 Jan 2024 19:05:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5KBa010470; Tue, 16 Jan 2024 19:05:20 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:20 GMT Message-Id: <202401161905.40GJ5KBa010470@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: e4a5a27b1bbe - stable/14 - hpts: remove from opt_inet.h List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e4a5a27b1bbed269717f721058955351c836fcf5 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=e4a5a27b1bbed269717f721058955351c836fcf5 commit e4a5a27b1bbed269717f721058955351c836fcf5 Author: Gleb Smirnoff AuthorDate: 2023-12-04 18:19:47 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:50 +0000 hpts: remove from opt_inet.h No conditionally compilable code left. The hpts.ko is fully functional. Reviewed by: imp, tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42859 (cherry picked from commit 4b92c7721deecdc2117490ce3bc74f9cafc186d8) --- sys/conf/options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/conf/options b/sys/conf/options index 31ddbe2e6981..c4da2e595ea3 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -226,7 +226,7 @@ SYSVMSG opt_sysvipc.h SYSVSEM opt_sysvipc.h SYSVSHM opt_sysvipc.h SW_WATCHDOG opt_watchdog.h -TCPHPTS opt_inet.h +TCPHPTS TCP_REQUEST_TRK opt_global.h TCP_ACCOUNTING opt_global.h TCP_BBR opt_inet.h From nobody Tue Jan 16 19:05:21 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3k4tkWz57r00; Tue, 16 Jan 2024 19:05:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3k1S18z54nK; Tue, 16 Jan 2024 19:05:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431922; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Mp7GaTF0dWgbxGSSVvyscG+IJuf/nD6FNRdU79spJn4=; b=cATMYAvG6Vd6WiaJOdMuY+5LvP0uR6vBHSota0wWNWjG+JwfkcZ8mZ2x2Ceu6X6YLIpxpa Bra32t+2YJ+Bt1vPc9ahfGy6/pSlAjpqedseKQE72qTAvX69uWECr+EwWdhyVbpCS5mies s/GGsaBNoFAU3/XDlqwtNolvt5kPzD6+e+20DA0SIVU32xVlMlX75PaItITsXtOQcO0wM6 /t/rv2KBGEm9CJgB+feahOh5H+rFEvzTUoE9DHZqyIqXG8e5kfH7TsVZCXUL+PUrW7+d0j Y2C6ma5gTeorLCnmcauV7dCUac5vv24yZqEsf/+yz/CALT4imf3hC8I4mLpzrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431922; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Mp7GaTF0dWgbxGSSVvyscG+IJuf/nD6FNRdU79spJn4=; b=R9jJzEv9hvqduFagXRGJLOibH3LFqLW6UoiIj3G4jxhvxekyEhFObJp90j7dXYDawcKHwN eosywrCqEhbZYM98q6VmGaNk2flvNkY0ou3FEkrnyNm2I6Jit1QnkCo5rC82XPAA0ZNfA+ GaaTFDFC5fbj164+MIJzQLl6YbNIaKDLZkNOeRKLFDy2fdZraC5cP9tkmi+irkfD5c9FbC 0avAd/cojZYH2bfjJJHpST1zuD8atvLFXy/Q5o+AvobsM/pHEagobyAS7KrtiMl56ifWxZ /xcTZiL/PHku0m5dINWLeec7Dj9kqvmdGvJmGRJdb41CcAZVCnYh7lyltFzo1g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431922; a=rsa-sha256; cv=none; b=K9Xj9kmuIgzKdBEtJu9HxrdHb+7+KZO2Qo++rO3XLIl2aFC8NvfgHebyCsTQo97ROzg4c2 Hattx87bVaS1D1SWGDt0ZVfLMELXwbK0/scUHM+j5x+cX5j0xC+EqLOrFTIbGTl+PEeQvT VlGF5c6cYuP4ebqG3ofeeh/dThDjMX2pERBROgn4EYVOysFS8f21lLortl4EMuUWEA/K0U whpwNqCXGpr9LsDoP7OJF6qOYJBoIirxZOXXwFlWI0knn0UAPLVciv5l/4Z6bhtAreyFB2 0LwhQWGuBsCDWOV7lBaH7oN+NPPYVRMrIO2SeaGcZXdcRqRdcXpUEUdXYlsnCA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3k0XfhzsMl; Tue, 16 Jan 2024 19:05:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5Lga010521; Tue, 16 Jan 2024 19:05:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5LDw010518; Tue, 16 Jan 2024 19:05:21 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:21 GMT Message-Id: <202401161905.40GJ5LDw010518@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 39000ced1f29 - stable/14 - tcp_hpts: use tcp_pace.cts_last_ran for last ran table List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 39000ced1f2931bdf105b1a2547775f942891428 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=39000ced1f2931bdf105b1a2547775f942891428 commit 39000ced1f2931bdf105b1a2547775f942891428 Author: Gleb Smirnoff AuthorDate: 2023-12-19 18:21:56 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:50 +0000 tcp_hpts: use tcp_pace.cts_last_ran for last ran table Remove the global cts_last_ran and use already existing unused field of struct tcp_hptsi, which seems originally planned to hold this table. This makes it consistent with other malloc-ed tables, like main array of HPTS entities and CPU groups. Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D43091 (cherry picked from commit 175d4d69887fb103f0b0385cbbafec0432284ff3) --- sys/netinet/tcp_hpts.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/sys/netinet/tcp_hpts.c b/sys/netinet/tcp_hpts.c index f1b729c249c6..50a30a2cff03 100644 --- a/sys/netinet/tcp_hpts.c +++ b/sys/netinet/tcp_hpts.c @@ -236,7 +236,6 @@ static int tcp_bind_threads = 1; static int tcp_bind_threads = 2; #endif static int tcp_use_irq_cpu = 0; -static uint32_t *cts_last_ran; static int hpts_does_tp_logging = 0; static int32_t tcp_hptsi(struct tcp_hpts_entry *hpts, int from_callout); @@ -1098,7 +1097,7 @@ tcp_hptsi(struct tcp_hpts_entry *hpts, int from_callout) hpts->p_lasttick = hpts->p_curtick; hpts->p_curtick = tcp_gethptstick(&tv); - cts_last_ran[hpts->p_num] = tcp_tv_to_usectick(&tv); + tcp_pace.cts_last_ran[hpts->p_num] = tcp_tv_to_usectick(&tv); orig_exit_slot = hpts->p_cur_slot = tick_to_wheel(hpts->p_curtick); if ((hpts->p_on_queue_cnt == 0) || (hpts->p_lasttick == hpts->p_curtick)) { @@ -1441,7 +1440,7 @@ no_one: goto again; } no_run: - cts_last_ran[hpts->p_num] = tcp_tv_to_usectick(&tv); + tcp_pace.cts_last_ran[hpts->p_num] = tcp_tv_to_usectick(&tv); /* * Set flag to tell that we are done for * any slot input that happens during @@ -1523,8 +1522,8 @@ tcp_choose_hpts_to_run(void) } oldest_idx = -1; for (i = start; i < end; i++) { - if (TSTMP_GT(cts, cts_last_ran[i])) - calc = cts - cts_last_ran[i]; + if (TSTMP_GT(cts, tcp_pace.cts_last_ran[i])) + calc = cts - tcp_pace.cts_last_ran[i]; else calc = 0; if (calc > time_since_ran) { @@ -1830,7 +1829,7 @@ tcp_init_hptsi(void *st) sz = (tcp_pace.rp_num_hptss * sizeof(struct tcp_hpts_entry *)); tcp_pace.rp_ent = malloc(sz, M_TCPHPTS, M_WAITOK | M_ZERO); sz = (sizeof(uint32_t) * tcp_pace.rp_num_hptss); - cts_last_ran = malloc(sz, M_TCPHPTS, M_WAITOK); + tcp_pace.cts_last_ran = malloc(sz, M_TCPHPTS, M_WAITOK); tcp_pace.grp_cnt = 0; if (cpu_top == NULL) { tcp_pace.grp_cnt = 1; @@ -1916,7 +1915,7 @@ tcp_init_hptsi(void *st) SYSCTL_ADD_UINT(&hpts->hpts_ctx, SYSCTL_CHILDREN(hpts->hpts_root), OID_AUTO, "lastran", CTLFLAG_RD, - &cts_last_ran[i], 0, + &tcp_pace.cts_last_ran[i], 0, "The last usec tick that this hpts ran"); SYSCTL_ADD_LONG(&hpts->hpts_ctx, SYSCTL_CHILDREN(hpts->hpts_root), @@ -1937,7 +1936,7 @@ tcp_init_hptsi(void *st) hpts->p_hpts_sleep_time = hpts_sleep_max; hpts->p_num = i; hpts->p_curtick = tcp_gethptstick(&tv); - cts_last_ran[i] = tcp_tv_to_usectick(&tv); + tcp_pace.cts_last_ran[i] = tcp_tv_to_usectick(&tv); hpts->p_prev_slot = hpts->p_cur_slot = tick_to_wheel(hpts->p_curtick); hpts->p_cpu = 0xffff; hpts->p_nxt_slot = hpts_slot(hpts->p_cur_slot, 1); From nobody Tue Jan 16 19:05:23 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3l4zNMz57qxs; Tue, 16 Jan 2024 19:05:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3l2PN9z54wK; Tue, 16 Jan 2024 19:05:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431923; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NfNIEo9ntyNHcjz0wJEfNj2/tg5419XWK200RUszlTo=; b=X4GLso8F5DN2SZQ6NKK2ApC+BsVozvoMmo6ZajXl3scRitVAD/dOBuzJjm1vm0oHuvWUO6 CNCvtxNh2BfrPAYq7W4BAxDZVgWZiGOniPg0qUV7EwRe2BJ5bFTP1/3dF/Z/dwbSvv0onG GJOs3xCvYyrmGpKXfc9d1czmy7YUL0AxgOii4YVnMPOEo3h6+JLLK/omneUWNYFGV4GwO2 ywPrtHalPjQugzPm9w8tAZIqZVUQsYlGPNo9YQONhq/XZ1DdeekkaIpb/PJ9st81dugnOu Qk4eM2n0EB6iijeDQk916rp5pMfA3MRSwDMRQ6Pt1dEyFkF6WZ+C+4u9k6IMLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431923; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NfNIEo9ntyNHcjz0wJEfNj2/tg5419XWK200RUszlTo=; b=X26WI5Xp8/m+Pd6ybow04DL/uR0oqVshOo6ehYjsFAKiMkrI+zA/aro6ZbnHBpVL4hd04a n3mC66bI7kzHElCjb9mlvzbAR6jXWn0N1sgTGDfwlbW707BydUX4mSAhVDJI6sHjoybzZm r2k0X5MgpEZ4Ggp0JLaKBgE8F/AxWJkM7X/TibGo/eJo9kB2my3qNwwn7DGyXs8jdV+RIl B2pdvbLDCpfmikw0UTFve7WLvNSU0WNTW+DK4YDcu+5YS0ruG6vQ1BG7ptaHs39eszw1KH uSNwyHEY/gvsxJ9aaX3KAiRpP1vzYIfAdrg/yXVZaN3VwDqXE1eMUp4Pm3cVQw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431923; a=rsa-sha256; cv=none; b=Km7eooUDEvgAgANMXv4i7XBSy0G+xRxs5BTyRwuYmj+5LoQMfWgs0xouCakIzBRsYfMdVy 11oil1zEL7H6Tfesuv8F2VADiynyPBG8ScVuj4ZgWHm2skfZuZurs3Ys8b1gmA7V3lqKsk zXLwEAcFIlb6eTwTQ2F4AgH0DwbFoMmIPISrw8WaL6l/c/+0U+OVhPKB8dLqspUxR/SO31 vwKanhTkeU9hqZWKgz6+d/I0JVDH94BE+LFwr2ZsFQrHJl9+RKarKqqshSv463DSjDJmVR 27svXGRz8Kj8n9CitCh2tL9b1N+6ZhWhII2oTEb/tdfMb2nZ6UFlYmOrl9PYvQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3l1KpMzsMm; Tue, 16 Jan 2024 19:05:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5NIF010570; Tue, 16 Jan 2024 19:05:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5NmJ010567; Tue, 16 Jan 2024 19:05:23 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:23 GMT Message-Id: <202401161905.40GJ5NmJ010567@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 2ae0ff8f11ac - stable/14 - tcp_hpts: make the module unloadable List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2ae0ff8f11acf18247609f3abdaaa5ca64697d63 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=2ae0ff8f11acf18247609f3abdaaa5ca64697d63 commit 2ae0ff8f11acf18247609f3abdaaa5ca64697d63 Author: Gleb Smirnoff AuthorDate: 2023-12-19 18:21:56 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:50 +0000 tcp_hpts: make the module unloadable Although the HPTS subsytem wasn't initially designed as a loadable module, now it is so. Make it possible to also unload it, but for safety reasons hide that under 'kldunload -f'. Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D43092 (cherry picked from commit 48b55a7c7be4175998f9b26dfbec5a561acbd936) --- sys/netinet/tcp_hpts.c | 82 ++++++++++++++++++++++++++++++++++++++++++---- sys/netinet/tcp_hpts.h | 1 + sys/netinet/tcp_lro_hpts.c | 6 ++++ 3 files changed, 83 insertions(+), 6 deletions(-) diff --git a/sys/netinet/tcp_hpts.c b/sys/netinet/tcp_hpts.c index 50a30a2cff03..a6fa79a26949 100644 --- a/sys/netinet/tcp_hpts.c +++ b/sys/netinet/tcp_hpts.c @@ -229,7 +229,7 @@ static struct tcp_hptsi { uint32_t rp_num_hptss; /* Number of hpts threads */ } tcp_pace; -MALLOC_DEFINE(M_TCPHPTS, "tcp_hpts", "TCP hpts"); +static MALLOC_DEFINE(M_TCPHPTS, "tcp_hpts", "TCP hpts"); #ifdef RSS static int tcp_bind_threads = 1; #else @@ -240,7 +240,6 @@ static int hpts_does_tp_logging = 0; static int32_t tcp_hptsi(struct tcp_hpts_entry *hpts, int from_callout); static void tcp_hpts_thread(void *ctx); -static void tcp_init_hptsi(void *st); int32_t tcp_min_hptsi_time = DEFAULT_MIN_SLEEP; static int conn_cnt_thresh = DEFAULT_CONNECTION_THESHOLD; @@ -1794,7 +1793,7 @@ hpts_gather_grps(struct cpu_group **grps, int32_t *at, int32_t max, struct cpu_g } static void -tcp_init_hptsi(void *st) +tcp_hpts_mod_load(void) { struct cpu_group *cpu_top; int32_t error __diagused; @@ -2005,10 +2004,81 @@ tcp_init_hptsi(void *st) printf("TCP Hpts created %d swi interrupt threads and bound %d to %s\n", created, bound, tcp_bind_threads == 2 ? "NUMA domains" : "cpus"); -#ifdef INVARIANTS - printf("HPTS is in INVARIANT mode!!\n"); +} + +static void +tcp_hpts_mod_unload(void) +{ + int rv __diagused; + + tcp_lro_hpts_uninit(); + atomic_store_ptr(&tcp_hpts_softclock, NULL); + + for (int i = 0; i < tcp_pace.rp_num_hptss; i++) { + struct tcp_hpts_entry *hpts = tcp_pace.rp_ent[i]; + + rv = callout_drain(&hpts->co); + MPASS(rv != 0); + + rv = swi_remove(hpts->ie_cookie); + MPASS(rv == 0); + + rv = sysctl_ctx_free(&hpts->hpts_ctx); + MPASS(rv == 0); + + mtx_destroy(&hpts->p_mtx); + free(hpts->p_hptss, M_TCPHPTS); + free(hpts, M_TCPHPTS); + } + + free(tcp_pace.rp_ent, M_TCPHPTS); + free(tcp_pace.cts_last_ran, M_TCPHPTS); +#ifdef SMP + free(tcp_pace.grps, M_TCPHPTS); #endif + + counter_u64_free(hpts_hopelessly_behind); + counter_u64_free(hpts_loops); + counter_u64_free(back_tosleep); + counter_u64_free(combined_wheel_wrap); + counter_u64_free(wheel_wrap); + counter_u64_free(hpts_wake_timeout); + counter_u64_free(hpts_direct_awakening); + counter_u64_free(hpts_back_tosleep); + counter_u64_free(hpts_direct_call); + counter_u64_free(cpu_uses_flowid); + counter_u64_free(cpu_uses_random); +} + +static int +tcp_hpts_modevent(module_t mod, int what, void *arg) +{ + + switch (what) { + case MOD_LOAD: + tcp_hpts_mod_load(); + return (0); + case MOD_QUIESCE: + /* + * Since we are a dependency of TCP stack modules, they should + * already be unloaded, and the HPTS ring is empty. However, + * function pointer manipulations aren't 100% safe. Although, + * tcp_hpts_mod_unload() use atomic(9) the userret() doesn't. + * Thus, allow only forced unload of HPTS. + */ + return (EBUSY); + case MOD_UNLOAD: + tcp_hpts_mod_unload(); + return (0); + default: + return (EINVAL); + }; } -SYSINIT(tcphptsi, SI_SUB_SOFTINTR, SI_ORDER_ANY, tcp_init_hptsi, NULL); +static moduledata_t tcp_hpts_module = { + .name = "tcphpts", + .evhand = tcp_hpts_modevent, +}; + +DECLARE_MODULE(tcphpts, tcp_hpts_module, SI_SUB_SOFTINTR, SI_ORDER_ANY); MODULE_VERSION(tcphpts, 1); diff --git a/sys/netinet/tcp_hpts.h b/sys/netinet/tcp_hpts.h index 7eb1b2e08cb4..0c5cfac28a6c 100644 --- a/sys/netinet/tcp_hpts.h +++ b/sys/netinet/tcp_hpts.h @@ -153,6 +153,7 @@ void __tcp_set_hpts(struct tcpcb *tp, int32_t line); void tcp_set_inp_to_drop(struct inpcb *inp, uint16_t reason); void tcp_lro_hpts_init(void); +void tcp_lro_hpts_uninit(void); extern int32_t tcp_min_hptsi_time; diff --git a/sys/netinet/tcp_lro_hpts.c b/sys/netinet/tcp_lro_hpts.c index 769c82a32391..7724e727d5ce 100644 --- a/sys/netinet/tcp_lro_hpts.c +++ b/sys/netinet/tcp_lro_hpts.c @@ -584,3 +584,9 @@ tcp_lro_hpts_init(void) { tcp_lro_flush_tcphpts = _tcp_lro_flush_tcphpts; } + +void +tcp_lro_hpts_uninit(void) +{ + atomic_store_ptr(&tcp_lro_flush_tcphpts, NULL); +} From nobody Tue Jan 16 19:05:24 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TDz3m6F0Kz57qq5; Tue, 16 Jan 2024 19:05:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TDz3m3Ttwz54tT; Tue, 16 Jan 2024 19:05:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431924; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uO8qW+/9EiqzYhvf5H8ECufyq0gVYmSpjKm5K7SiS14=; b=nHrYDehBddBLu1adRQ96gh6QnHnv9lrZjxeg0HWeC7fqu/0loAEecLbyFyBairBjg86LxN wDkRxB0SPyGyunHWqNgU80k+gce4nhFefu3EStmgQhm8cMN/p9rsOsKAq38d6flivpuvhw AyeyN8bTsc3xX8fWUjKPvTU76Ryn6Cnz/bzLrubsP0Nt/eBhkSLL3xAg1jhWrRUo5V8fW3 6v7yWSN0YHPX2ONXeoKhh5zvLxfDVKU/42gjzJ7cw/gDPGAdAXoH/FIQtr22wHEAzQOMpK 395NCL6TbEYxnKYR5PKSpLgwF6ULNCBzNdM2oB3T01aZasGY9BhI2J7t4I7R8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705431924; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uO8qW+/9EiqzYhvf5H8ECufyq0gVYmSpjKm5K7SiS14=; b=VmN41sdeEPzfmyBplIejKUCHTdK7LoRydHEg6D+XS++7ALAkOWQx4Fztq8TuXy//tHXh2s JWS+7MfUVgbMYGreOWdEiNmfPe9PCCE0d71ytK0xigzvRL77rqQ9F4q3Ai2+4roX+7imn9 xVV0YylQj7t+mDlFrF9qchB/WMA+vKIV5vHAxFSlEWJm5py1Aa2AfXfK2jA+7kSXFc4p8S g5+Fi8vbF25e7NLw85RZnblH3uzKfxPXMMJAgfUMDjkfK63nrrEvPfQd4XGnP9fjA62yQx vtSNLNP2oEyv7so3yWutV/A5Mdi04+9tO12S9T4u9A10EdRzvCE+riQHJKuzXw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705431924; a=rsa-sha256; cv=none; b=PVDaJy9j5gJT2/Xcmn5Eg7NpUXHBseiUYgIAVMosNKIvrPwFf06cDBxZb6j/3SQtIGdcn8 F3Otv1cNbf97G0weDWr2xSZbquV+BaiYNcR0Nbm2to8bdGtLjHJ4bFGEXD7dPzewlEq1n6 PPDR277Kau0rCbiCxEhGPo0KP7EFmEU4LvO7AzP3ABWK0P+ZXb6lgtRQQyTfvhH3E2IMch gdOftY+xvKB8ETa17ifVZwHEYrywmCmNKBtUc7+YKVSfZnxkrP553x+cMmypYr8yEJVBah xHYXwpdSlVOKGOaCg+gg7NEkXHWH3xxF3WBjQE7EW4BADRfCiG6L75W4T1r7yA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TDz3m2YcrzsLL; Tue, 16 Jan 2024 19:05:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GJ5OZE010623; Tue, 16 Jan 2024 19:05:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GJ5OR2010620; Tue, 16 Jan 2024 19:05:24 GMT (envelope-from git) Date: Tue, 16 Jan 2024 19:05:24 GMT Message-Id: <202401161905.40GJ5OR2010620@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: c815844c5a60 - stable/14 - hpts: avoid duplicate call to tcp_output() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c815844c5a6037f138fbd531b3fa4d3859cab5d8 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=c815844c5a6037f138fbd531b3fa4d3859cab5d8 commit c815844c5a6037f138fbd531b3fa4d3859cab5d8 Author: Gleb Smirnoff AuthorDate: 2023-12-26 21:09:09 +0000 Commit: Gleb Smirnoff CommitDate: 2024-01-16 18:47:50 +0000 hpts: avoid duplicate call to tcp_output() Obtained from: rrs (cherry picked from commit 08c33cd94da18b4cae73a4837e13f677345a6c1e) --- sys/netinet/tcp_hpts.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/sys/netinet/tcp_hpts.c b/sys/netinet/tcp_hpts.c index a6fa79a26949..73e9997c060f 100644 --- a/sys/netinet/tcp_hpts.c +++ b/sys/netinet/tcp_hpts.c @@ -1364,18 +1364,23 @@ again: * We also only call tfb_do_queued_segments() * tcp_output(). It is expected that if segments are * queued and come in that the final input mbuf will - * cause a call to output if it is needed. + * cause a call to output if it is needed so we do + * not need a second call to tcp_output(). So we do + * one or the other but not both. */ tp->t_flags2 |= TF2_HPTS_CALLS; if ((tp->t_flags2 & TF2_SUPPORTS_MBUFQ) && !STAILQ_EMPTY(&tp->t_inqueue)) { error = (*tp->t_fb->tfb_do_queued_segments)(tp, 0); - if (error) { - /* The input killed the connection */ + /* + * A non-zero return for input queue processing + * is the lock is released and most likely the + * inp is gone. + */ + if (error) goto skip_pacing; - } - } - error = tcp_output(tp); + } else + error = tcp_output(tp); if (error < 0) goto skip_pacing; INP_WUNLOCK(inp); From nobody Tue Jan 16 20:45:53 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TF1Hj6700z581Gn; Tue, 16 Jan 2024 20:45:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TF1Hj5h99z46pg; Tue, 16 Jan 2024 20:45:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705437953; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0RsAXZGkIJPgRHTHVp5WUGCInz3+1sDRiadN+BPHGCU=; b=qsI+VYEKu/8LbuH76LXIb/j+1NVdbZVeLzBfzQzK3dRpv4IYy/1vgnsVi0tLBA5y013I+t 6TqustH+fDvhcWo1+ODfFoqc1N+W6nRMxW9u/j716X0vroARpcKhqlXlHHSXsVlnZnid8m HPARhbVWNIsXZ1dOjEx01auXhr4B+KpanQtjZNAdW+qQSzYiMBVrmloiehOxEzEqFqeR6F UehEFjHMyAXCFe5/YZ35jvSWMHeZVNNXTKu8IBf6EmzDTIbmhqZfouywrNzKuz31Q0CnMp iVpiUwyXqoGJBlFIGdohd2Sdun9kgLzH3AWFsFEyLY2us+OF2rr5r+kdxedfOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705437953; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0RsAXZGkIJPgRHTHVp5WUGCInz3+1sDRiadN+BPHGCU=; b=eElFOaRT2IUXiPcU9AAObskDaAs8Y5J86GwxzEsEvvo5GK1MNeDrOwegxg6JS8TG9YVwMA IrrGxfr2p4HrlpKyWogZGzC9k6VS2i/yj9p7GTwH0jVXJK0kEObpJJXOgAUk5ozAwR5Zu4 6qWXUQCZvhcAaAeiM1KnKlb7+OZR4zvLvvVErzz1QxVLHNoNQM/v4PY26ZNdxD+in9cXcb nFEv1ai+aYzgm6jpWuEvYMcBqbGsn43oR1vj7l0ClP/6yh1bNIm6yqjkjjRo0Di9hdH5CA OZncbXIzmxWJC3DwnqSCTb7nQvNEu+jZLZfapdhVqsGWsU28IWGIVCq+2AfUYw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705437953; a=rsa-sha256; cv=none; b=hBhVO5ZWqrKZ60EyMi55kw6qI/pDHIDixe8ZON1jiydOIBmqPW6eIxw/gy5rwe0FJ/WRFm rmGXZ47cw78YoG4ykMzPHWiiiNqL9cEvTbpRJP+TuqoOQnYU4jeDAfsgDTU4gs+wJca3hK UDFi+FZYA8fZqhv4nxpBl6XoB/iw6xxuccA+g6ZNP32Cr+QiqLDuTNwng1Bo10vYMdB3Ed 8nC1Wb4OFcXDsIgLOn542DMZmFOYJHMmJONtA5X4El9ySS42Xgw6CyFxNQmSn+OaIk1Vyw c9gkC7ij+GkbHA3YaDGtvba5QLzbJO8eOsrHTSUSNZUzU3HflreYKjMd9lbjjw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TF1Hj4knNzvTx; Tue, 16 Jan 2024 20:45:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GKjrpX077740; Tue, 16 Jan 2024 20:45:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GKjrW7077737; Tue, 16 Jan 2024 20:45:53 GMT (envelope-from git) Date: Tue, 16 Jan 2024 20:45:53 GMT Message-Id: <202401162045.40GKjrW7077737@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: fcd1b6ec0766 - stable/14 - Compile RACK when options TCP_RACK, not TCP_BBR List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: fcd1b6ec0766bbdacc4d1129f88e83c53f929d23 Auto-Submitted: auto-generated The branch stable/14 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=fcd1b6ec0766bbdacc4d1129f88e83c53f929d23 commit fcd1b6ec0766bbdacc4d1129f88e83c53f929d23 Author: Alex Xu (Hello71) AuthorDate: 2023-11-21 00:09:56 +0000 Commit: Michael Tuexen CommitDate: 2024-01-16 20:42:50 +0000 Compile RACK when options TCP_RACK, not TCP_BBR Signed-off-by: Alex Xu (Hello71) Fixes: 3a338c5341 ("Add the BBR and RACK stacks to the LINT kernel.") Pull Request: https://github.com/freebsd/freebsd-src/pull/907 (cherry picked from commit 96f193b290a1aa735ff1833983d654c01ed8902e) --- sys/conf/files | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/conf/files b/sys/conf/files index 31f92670e796..2dbf6f37e940 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -4365,7 +4365,7 @@ netinet/tcp_reass.c optional inet | inet6 netinet/tcp_sack.c optional inet | inet6 netinet/tcp_stacks/bbr.c optional inet tcp_bbr | inet6 tcp_bbr \ compile-with "${NORMAL_C} -DMODNAME=tcp_bbr -DSTACKNAME=bbr" -netinet/tcp_stacks/rack.c optional inet tcp_bbr | inet6 tcp_bbr \ +netinet/tcp_stacks/rack.c optional inet tcp_rack | inet6 tcp_rack \ compile-with "${NORMAL_C} -DMODNAME=tcp_rack -DSTACKNAME=rack" netinet/tcp_stacks/rack_bbr_common.c optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack netinet/tcp_stacks/sack_filter.c optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack From nobody Tue Jan 16 20:48:06 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TF1LG4p37z581Pk; Tue, 16 Jan 2024 20:48:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TF1LG4GWjz46tQ; Tue, 16 Jan 2024 20:48:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705438086; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vyi6aU438OrFTIMN7xrbJ6MoE/TWj2yISuVtbSckbg4=; b=TZCZ1KTlQ7uEVAuogjtrFWrVcjOoJLBLsfRn5W2WUdCQHCWAoXvxWCtWYFITk+U3J4aGqO C1jw7j5jqPu6fC/RrYLIE4oLQ4TFxjY+1h7XATexGin73CU284Udiq+Ab+Q32MtubxC2e3 y/rnhsFfo0D1qMvQAqlsNyZcLVrBPq1uw0wl0QhEsNQGaHXp77XT0yg1rZDsAEQPLaSmG3 HjkLwYjEZY5GyV/Mw/zm9R1BpOySD3+aGMA+8ksAodo7p3vMscMYBNpbIVRkXM4w2q9czF EwrJqvjdreMyY3OZjWXxuyqYCTx0rbUCYrEOxw9clltBn9UyGCs8Z+jcEusdzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705438086; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vyi6aU438OrFTIMN7xrbJ6MoE/TWj2yISuVtbSckbg4=; b=rTWONcUz1NHLn60d5exWNyQoWnfgmjgoF7kPnso6bx4M6bPXrJ3SauraUauFbA6hNs5Ttx Nh8DZboUK55nfw6Btv+DCKEXM8/L2o2NNfq8UWZompSvoMs6ovvC9FiyEKy7Com6oFHOxz z4gl8c7e2pGzGGQ7MF7g/FyDkEhIXCTd0dnN9jUTIFh1oFwDGeNElnIBrJMbM9wrxLto7N 6bJCPN7OTqeJVdkcbIduj0urtb570i0MnVzlJ5JMvGPAI2+gyKu71or0IUQ85UGZ7sCIxF ABpbnlv7jRD0wnZQ3dwqG79l0K080s5oqUqw/kOWCMOu3y3KmZU2e1Occus1Jw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705438086; a=rsa-sha256; cv=none; b=u/omvnbjU1YJy8+OfWjz0fsttL4M73CA/QkpcPIN3/tLMtz5Jsf3n9SXAfLKjExK4gvIOl v07ING3DTmB0k4DC897sJ0y0qP3VtdzUSFWL+3CF1nNS5CeJXzoqGVdeVuKzRuDE8QSul7 uZ6g4IzzcqMa2mQ5R5+akKBa7qMdQ3JeAtwFtooN2EMlWnPbd+dVpsxMc629WmsnP910Bp boDcAchGIPcCPrOiiic0WwiGqWCUU21x6piIs1/8px+oSfigArQ9F/jCQ9a1HH/sWtYo6E wNaVx1myL46fLPVaBAPeK5EVNZH6Lw27FrOuuMRGt4Iwe0LaKNyTsHlPSIOlcQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TF1LG3K6NzvTy; Tue, 16 Jan 2024 20:48:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40GKm6I1078355; Tue, 16 Jan 2024 20:48:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40GKm61l078352; Tue, 16 Jan 2024 20:48:06 GMT (envelope-from git) Date: Tue, 16 Jan 2024 20:48:06 GMT Message-Id: <202401162048.40GKm61l078352@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 5da67ed5279a - stable/14 - tcp stacks: in kernel BBR and RACK require in kernel HPTS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5da67ed5279abf21e36e4c02af8e93af486bfabb Auto-Submitted: auto-generated The branch stable/14 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=5da67ed5279abf21e36e4c02af8e93af486bfabb commit 5da67ed5279abf21e36e4c02af8e93af486bfabb Author: Michael Tuexen AuthorDate: 2023-12-12 11:01:37 +0000 Commit: Michael Tuexen CommitDate: 2024-01-16 20:46:36 +0000 tcp stacks: in kernel BBR and RACK require in kernel HPTS Compiling the BBR or RACK stack into the kernel requires HPTS to be compiled into the kernel. Reviewed by: glebius, rscheff Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D42998 (cherry picked from commit 793e4aca9e70f2441f0f4e1688d0a727d602ed81) --- sys/conf/files | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/conf/files b/sys/conf/files index 2dbf6f37e940..8fc4edc9c118 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -4363,13 +4363,13 @@ netinet/tcp_pcap.c optional inet tcppcap | inet6 tcppcap \ compile-with "${NORMAL_C} ${NO_WNONNULL}" netinet/tcp_reass.c optional inet | inet6 netinet/tcp_sack.c optional inet | inet6 -netinet/tcp_stacks/bbr.c optional inet tcp_bbr | inet6 tcp_bbr \ +netinet/tcp_stacks/bbr.c optional inet tcphpts tcp_bbr | inet6 tcphpts tcp_bbr \ compile-with "${NORMAL_C} -DMODNAME=tcp_bbr -DSTACKNAME=bbr" -netinet/tcp_stacks/rack.c optional inet tcp_rack | inet6 tcp_rack \ +netinet/tcp_stacks/rack.c optional inet tcphpts tcp_rack | inet6 tcphpts tcp_rack \ compile-with "${NORMAL_C} -DMODNAME=tcp_rack -DSTACKNAME=rack" -netinet/tcp_stacks/rack_bbr_common.c optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack -netinet/tcp_stacks/sack_filter.c optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack -netinet/tcp_stacks/tailq_hash.c optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack +netinet/tcp_stacks/rack_bbr_common.c optional inet tcphpts tcp_bbr | inet tcphpts tcp_rack | inet6 tcphpts tcp_bbr | inet6 tcphpts tcp_rack +netinet/tcp_stacks/sack_filter.c optional inet tcphpts tcp_bbr | inet tcphpts tcp_rack | inet6 tcphpts tcp_bbr | inet6 tcphpts tcp_rack +netinet/tcp_stacks/tailq_hash.c optional inet tcphpts tcp_bbr | inet tcphpts tcp_rack | inet6 tcphpts tcp_bbr | inet6 tcphpts tcp_rack netinet/tcp_stats.c optional stats inet | stats inet6 netinet/tcp_subr.c optional inet | inet6 netinet/tcp_syncache.c optional inet | inet6 From nobody Wed Jan 17 00:34:23 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TF6MN2HD2z56QZX; Wed, 17 Jan 2024 00:34:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TF6MN10p2z4WVD; Wed, 17 Jan 2024 00:34:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705451664; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ucha43crv7Dhh5jAoiAF5I/b9h/h8sB7AoM/PvY033w=; b=Ufx9olV7H5coGLTWU22r/rx4QyxAdgqg8PZmGUsgbjhFSam94LBXLKcWebf5OPCJsxx9TW a2miI3/+UwdUlyrOKMjaLD6jUjZDIV9yDU5c0IaCnlg8g8svsrhg12GzLNm56hMs/QWtql +sV100xuhE/O2ORY8kqoDkfX6DAvdiSkcYVLIGW/SntWbzUvxQ6pgGzt1Rfapjlb/48FW3 1lc6Bl0Vc7QDIECd2TrDwWgXDrz6gVDlAq/CdbGdv9KOCrWm1iu8NxzAmUsivpEdRb5dRQ NH9/U2NwfY7sqf+ic2nnfbGtue9L01kYt5/g61wbLJfCa0bDouP1jkBxojbkPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705451664; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ucha43crv7Dhh5jAoiAF5I/b9h/h8sB7AoM/PvY033w=; b=ZH0jrHap8izP6s8NpnkKZIFttPbvnqfiUSVjag0rPZSTkvbdDG7s0aMOwh9aaCegGWnZ6G KqRKqH9Pg/JMKk6uU4ARgIMu4KXNuXzdTfLc+AZzVgS07BEvTc6hPAPnpfpbj6MEcE27Cf CRMPOEn4xXl1BARLFfavcutgIdqvaKnUuQUjnEnOoSpW+12p68wTBLy6wzR7dalDeEzpnf VF1TwZGZdNLR7EiQOxBf878fP4WHIwVRBuJ8XWSHsIZxci4LQ6/MMXz8hO7K9upV1z1cQv XP9sU0FQXHkzxED3Hp1tbAhwnUOvyuhhcAuJ4lge8jGReXreu6n5tYF0odoNsA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705451664; a=rsa-sha256; cv=none; b=DALP3jC5+wHTZg9RTbAbonT8e9VCGl9c+5VmbwKAvQ15f3f4uwGpTTXC5etR1rwQlULARm 8DKNXaeaz9x5tv0izt9WKyBbx27/AFE27nUMM0ZO2Q1iRD4kCuCT16sIetIsjvUmvj8EPO IpqgkoFu3r32tHdNLz6RlyAqUdNiitX8b8oFhZVSxLXKmx5Y2ZDzHEdYLCXB6eFXVVroGc o6F4q80xHiOtqDhoX9oKcpG5RtkEFVAt3x2zWRbkG3xwtQhcnX7aXq30T92UL2D2jyQyKo hDbEVOh0khZvTng2gi8m22RsWqceoY3aC6oVKWjYfz/w9yZ2MGDGpl3pXBscuA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TF6MN04Kdz12fd; Wed, 17 Jan 2024 00:34:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40H0YNXf063674; Wed, 17 Jan 2024 00:34:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40H0YN3r063671; Wed, 17 Jan 2024 00:34:23 GMT (envelope-from git) Date: Wed, 17 Jan 2024 00:34:23 GMT Message-Id: <202401170034.40H0YN3r063671@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: a657d22d2275 - stable/14 - tcpsso: fix TIME_WAIT description in man-page List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a657d22d2275140719d75a868047655fd977b0c3 Auto-Submitted: auto-generated The branch stable/14 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=a657d22d2275140719d75a868047655fd977b0c3 commit a657d22d2275140719d75a868047655fd977b0c3 Author: Michael Tuexen AuthorDate: 2024-01-14 13:45:43 +0000 Commit: Michael Tuexen CommitDate: 2024-01-17 00:32:50 +0000 tcpsso: fix TIME_WAIT description in man-page Reviewed by: manpages(pauamma_gundo.com) Fixes: e179d9739b14 ("tcpsso: support TIME_WAIT state") Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D43424 (cherry picked from commit 256fe4a15484d72452ada288f5a3d9c9672b2d57) --- usr.sbin/tcpsso/tcpsso.8 | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/usr.sbin/tcpsso/tcpsso.8 b/usr.sbin/tcpsso/tcpsso.8 index c06cd8adb25f..37968c8afa54 100644 --- a/usr.sbin/tcpsso/tcpsso.8 +++ b/usr.sbin/tcpsso/tcpsso.8 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 6, 2024 +.Dd January 14, 2024 .Dt TCPSSO 8 .Os .Sh NAME @@ -191,10 +191,8 @@ and .Fl s Ar state are specified, .Nm -will apply the socket option to all TCP endpoints not being in the -state -.Dv TIME_WAIT -and using the congestion control algorithm +will apply the socket option to all TCP endpoints using the congestion +control algorithm .Ar cc-algo , being in the state .Ar state , From nobody Wed Jan 17 10:04:20 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFM111m6nz57Tm9; Wed, 17 Jan 2024 10:04:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFM111JPnz4XRP; Wed, 17 Jan 2024 10:04:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705485861; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qhOzcoAGQhAybiqAkNHLYtmiTDy2a6Fo+57cjVj9Zvo=; b=w6DwAACoWHL/YSofBTV9yiCmxmr8l50gE9niQ5FacW/RYsZ1ESE3JkvGWJK7/DnPsRUE7f Z5VqO4ikI1pb4AK9ZAYyNcemOr7GVyznELfO1t+ZKtA9dGQAlUAFzNI2+Nga5lCDwwsslr pepl7jNUWBay1UMVoh07CN8595PhQmUJR72x6jqaIoTg64W5BI1nouuGt3WssQhv+11JAb l2nMFfeIr4OnLsgXW5nAJMpOyT6jNhTGzC1O5r27NweSPL3Yw2NLkjQzzuNGXcMnXvAoRC l9Gm+dvlP4irQknsAU3c3X4IvZOYpGZyEc4PUFD3FeT+vnJ6DHMtdfv4NA5sAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705485861; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qhOzcoAGQhAybiqAkNHLYtmiTDy2a6Fo+57cjVj9Zvo=; b=AnswCAb1HNSz/7RRUDwAeTfqZFfUZzGBndSzorycXNw4giLwcbY9of48TxeSSUo+/UE03V 2kWc5xvqxL1HLhWkldJV7NUEUu58rA6RVoIgvCVcl7uH1QLgau+rMSIZzxV2eywGPdhwuW tCXvRcHy9M+5u+ojiUONModKePHQWDMjzpdF72MFWKSHXRXKXiWhEfcRQTPfiLL4Gi7Cp5 C1q1kiUlZXaudKzEeZ/Esl5Y25FgDKLcZAigACIs1whCsDCAGF//DTICz43E4SG6xOsW7/ Ow1++btmRxJ2VXcHxB2f3wq70GbwgBQH4NK+ysaOoZyhy6wtr7sonpwzzsyjTg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705485861; a=rsa-sha256; cv=none; b=cI3JWqA7msy+JQycScCH4nmWROhxVg8EhzNqF7fngfZY4PU9nBCSonZFT1FtF1nexf+4bI y73wsIf5Ct23orpi1kf5oW17+06m/cIKSv2m8r/UQQ8iq9EntZ9qw+QsPyWjFiIwOHNGE+ Y9r6H8TITL1rD+sDTI1xN1t9I94keTBy+VEo1VaEwqKRhZ4REH/2twSh/5IAFOMpeBkkxr PBgbMfZUV1E8kYxQiDnSy9Tw6+f3qLhM4V7zT30im9OCFn39C8ktcaLZnHMa6SH1nDh8Od yT17JuOMwGWLm9npUkeTzlbX6ZHpPHwmDYg/iqmTyYpWtAyxZCcdDrgnGxyCSA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFM110GRlzK4C; Wed, 17 Jan 2024 10:04:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HA4KHY022927; Wed, 17 Jan 2024 10:04:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HA4KRa022924; Wed, 17 Jan 2024 10:04:20 GMT (envelope-from git) Date: Wed, 17 Jan 2024 10:04:20 GMT Message-Id: <202401171004.40HA4KRa022924@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 7b49e60227f8 - stable/14 - ncl_bioread(): check for vp->v_object before accessing it List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 7b49e60227f837c9a54c8bfdacd2b352b7e1ded9 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=7b49e60227f837c9a54c8bfdacd2b352b7e1ded9 commit 7b49e60227f837c9a54c8bfdacd2b352b7e1ded9 Author: Konstantin Belousov AuthorDate: 2024-01-15 11:49:14 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-17 10:03:51 +0000 ncl_bioread(): check for vp->v_object before accessing it (cherry picked from commit 503f72a828c7d0d938ec73ffbf62406038c69d47) --- sys/fs/nfsclient/nfs_clbio.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c index 7b9b68782d53..f6b8cc0a70a4 100644 --- a/sys/fs/nfsclient/nfs_clbio.c +++ b/sys/fs/nfsclient/nfs_clbio.c @@ -417,6 +417,18 @@ out: return (error); } +static bool +ncl_bioread_dora(struct vnode *vp) +{ + vm_object_t obj; + + obj = vp->v_object; + if (obj == NULL) + return (true); + return (!vm_object_mightbedirty(vp->v_object) && + vp->v_object->un_pager.vnp.writemappings == 0); +} + /* * Vnode op for read using bio */ @@ -489,9 +501,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) * unlocked read by nfsiod could obliterate changes * done by userspace. */ - if (nmp->nm_readahead > 0 && - !vm_object_mightbedirty(vp->v_object) && - vp->v_object->un_pager.vnp.writemappings == 0) { + if (nmp->nm_readahead > 0 && ncl_bioread_dora(vp)) { for (nra = 0; nra < nmp->nm_readahead && nra < seqcount && (off_t)(lbn + 1 + nra) * biosize < nsize; nra++) { rabn = lbn + 1 + nra; @@ -678,9 +688,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) * directory offset cookie of the next block.) */ NFSLOCKNODE(np); - if (nmp->nm_readahead > 0 && - !vm_object_mightbedirty(vp->v_object) && - vp->v_object->un_pager.vnp.writemappings == 0 && + if (nmp->nm_readahead > 0 && ncl_bioread_dora(vp) && (bp->b_flags & B_INVAL) == 0 && (np->n_direofoffset == 0 || (lbn + 1) * NFS_DIRBLKSIZ < np->n_direofoffset) && From nobody Wed Jan 17 10:05:26 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFM2G5PTQz57TQQ; Wed, 17 Jan 2024 10:05:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFM2G4xWkz4XhJ; Wed, 17 Jan 2024 10:05:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705485926; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QcfPeiVXJmHGGJLbJKjoiusYw5EUSrUI3poWMAa1rcc=; b=A4/O02H1vbBw5oRo1kJOeqqVljl8UngLbkjfzFFhn0kRVSdweMXp5PFzQSynwknlYPQZFm 8J4r3ERdmZu+0q8bRdRnRVlUrQrI4RNP5Sdu3eb4YJsMLDzDu/VWiC6GEuVAvTzlMfeXbD 4pSpibL3vDqOA0V5zPI3qGsCBzYvwTh7bm249cmwo2yIuXY9LxXVqx2xdLOTSmlp7rzJBa 3MoMrIGuIELEPFSPW8tP1szIj7mHnKUkQkRBMwsqay3ECWhgC5Z4A+pKqz3rYxrV+2edym WxoDGLZi9ciZd/I9tBh8W9CPw2boHGaofO9Cp9r15CSb2JjT6XxISAeZiWVZeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705485926; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QcfPeiVXJmHGGJLbJKjoiusYw5EUSrUI3poWMAa1rcc=; b=UPdgsqbCIRIanPiuR7GqIRgWInGmYePB+j93IJMvqTzxRXGnBA54S4pSaRvktSdnoeozSK 4VZb2WuH90VJTyBE55HJLbd5Tu+9VLNqJoOXp7LG3opljfiilHXTaeDNeJXe85qtA0QrwI 7gRmzz7HZ0aUAFr3DZf7OoML6DbRAbMWQlYvAvLek2z1K6pvgIFKXIrAywl2bDAIISE6I2 2kUp+s/PjLAUfEQKjaokedBP/WlLTFG2rL5RSTdgCB+RCZ1XZWQmtVnm9mb0HPyNUHjXb1 vLvqqk1HNNbSEkpnJn5LbGTntOP8K1heOPRNTSmaKip38xDkMQhKqXiWr42daQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705485926; a=rsa-sha256; cv=none; b=nG0nxYHHHcxhkhcxYPOO3kg+DOSEdmvDCk1WnuOqNNmW7Per9PE80IZZhQbcWC5TccEuVi BxZJlEN+xmHVcEOxsmHBAr53t25bLsu06VRZ7VtSDQy5y+wEZLo8ajl2RBRobjYlBDm0fp oHalsj3tGWoFiL+boSq2BbrYIcm9NcSb+0K63R1bCdfHbpF5wJQxlnhuyHiRYGAC2tKWBI BFIvT/8gdWf2byppedMY+e09PsANfhsJ/kHecgsXnKXGOQ7WV2yhrqjZP2xS4khd3Xaw48 QAYQS8x8pxMDI3O/guF9E+lar3+2RCylY9vDkJtlbvE/U/LYrzQzRZEzHFlCBQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFM2G41kwzJpG; Wed, 17 Jan 2024 10:05:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HA5QSY023209; Wed, 17 Jan 2024 10:05:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HA5QCW023206; Wed, 17 Jan 2024 10:05:26 GMT (envelope-from git) Date: Wed, 17 Jan 2024 10:05:26 GMT Message-Id: <202401171005.40HA5QCW023206@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 2a22edfc70ad - stable/13 - ncl_bioread(): check for vp->v_object before accessing it List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 2a22edfc70ad442bdf5060f48ea673faebfaa386 Auto-Submitted: auto-generated The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=2a22edfc70ad442bdf5060f48ea673faebfaa386 commit 2a22edfc70ad442bdf5060f48ea673faebfaa386 Author: Konstantin Belousov AuthorDate: 2024-01-15 11:49:14 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-17 10:04:48 +0000 ncl_bioread(): check for vp->v_object before accessing it (cherry picked from commit 503f72a828c7d0d938ec73ffbf62406038c69d47) --- sys/fs/nfsclient/nfs_clbio.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c index 7b9b68782d53..f6b8cc0a70a4 100644 --- a/sys/fs/nfsclient/nfs_clbio.c +++ b/sys/fs/nfsclient/nfs_clbio.c @@ -417,6 +417,18 @@ out: return (error); } +static bool +ncl_bioread_dora(struct vnode *vp) +{ + vm_object_t obj; + + obj = vp->v_object; + if (obj == NULL) + return (true); + return (!vm_object_mightbedirty(vp->v_object) && + vp->v_object->un_pager.vnp.writemappings == 0); +} + /* * Vnode op for read using bio */ @@ -489,9 +501,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) * unlocked read by nfsiod could obliterate changes * done by userspace. */ - if (nmp->nm_readahead > 0 && - !vm_object_mightbedirty(vp->v_object) && - vp->v_object->un_pager.vnp.writemappings == 0) { + if (nmp->nm_readahead > 0 && ncl_bioread_dora(vp)) { for (nra = 0; nra < nmp->nm_readahead && nra < seqcount && (off_t)(lbn + 1 + nra) * biosize < nsize; nra++) { rabn = lbn + 1 + nra; @@ -678,9 +688,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) * directory offset cookie of the next block.) */ NFSLOCKNODE(np); - if (nmp->nm_readahead > 0 && - !vm_object_mightbedirty(vp->v_object) && - vp->v_object->un_pager.vnp.writemappings == 0 && + if (nmp->nm_readahead > 0 && ncl_bioread_dora(vp) && (bp->b_flags & B_INVAL) == 0 && (np->n_direofoffset == 0 || (lbn + 1) * NFS_DIRBLKSIZ < np->n_direofoffset) && From nobody Wed Jan 17 15:56:12 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFVq11LJvz585YB; Wed, 17 Jan 2024 15:56:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFVq10nLgz4DBY; Wed, 17 Jan 2024 15:56:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705506973; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5N8LYEetOo6VNbe7DR4m6UHVeWtdmH9qGBYLNpH+v8Q=; b=wI0HKggwuJiqGnlrxYAGgdZkC3fo0qm/pPzzxK2IRGt3fRAXrEYLAOhNobfc3oNIvdL4RO LxJxZAoh0GId9mCtBIf+94ohgP55dqdgFCBSSutdITAtIh/W6Clby057kznqWxvJZha3Vr KTxn9KuT2MgMr1+LTOabX99+nS4XeNEPi4gdUzqd4VE4MuF3i79GVe3+eF6o/BzYxCVVLv HTQdhkkadm2aId29h8Nt3utwTlXMgq1qt1fYoBU65Iu2SuUbVdrKAS4SaZyAKX4Yw5f7xD aQSlvc8cqbjUAyhYuwh1woPFmhCwTxc8jAlAy5DbqYhgtWCz3ZGKrwMmf2L7Bg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705506973; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5N8LYEetOo6VNbe7DR4m6UHVeWtdmH9qGBYLNpH+v8Q=; b=sfIMuju3c4SqsILM4r6r7z3yeRKqSkCpqQMd5Lue2OxC3h0a5GqAUFoVI+G0IWLwWL6lrh 10Cd8ZZCL+9UP+/AHGtrY8EL3JOOOyf5LyL9aqHTi5Ao87H9ep+yGl+BzkYuNfJSv5c9tU 0wPA8lWlj1/HvbpmyRVCb2OZODne0sZO9ECcXKuGm4TN/UkdJa87MzvCfkjuAHYp7MJWxW mpOn9HevlIOA0Hlq4/LmENlcmhgQR5Cl21A53p2ZZiWxPe4nXePSAmfCEr9QFrj+9/R+Cj iTc7ezdhnRwresPkUQj8Dg/VWgzt2FVUEhu1zzxMJw8uP9entUCzQaGbLUZUDw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705506973; a=rsa-sha256; cv=none; b=YwoW/tblVLnQ51pEq7+E/BWr5tTp8toPB7SzDGfpFjcVHDbIdA7rDc2SnK48M/oJrGaiBO mzwv9G90ZBMpG4AKfWbP+izsfMy7LV8v0L5BCqVjv3YxLwY3o6naQyMyduQPTmum/MJT/t azZRP0cmPVcxV5m167PeESDYE6KXmu1KLpsAtWrai+sXw/b6ZCeCOJ9ZvqqHoc/1ftOd2D Slda5AsH52dRgvhaQXPJTZN9viSfirxq/9oyfpI9joN41lImLQBWW5Kb7UDjPiEjTOTHPQ l871R2s7p2GsFOdVWLRMn1fq0KLxDaNBU7+pDM8ob5VzO+0u9dlkH91hF9Qlog== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFVq06yPJzVHj; Wed, 17 Jan 2024 15:56:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HFuCbl009768; Wed, 17 Jan 2024 15:56:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HFuCIQ009765; Wed, 17 Jan 2024 15:56:12 GMT (envelope-from git) Date: Wed, 17 Jan 2024 15:56:12 GMT Message-Id: <202401171556.40HFuCIQ009765@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: ab215565c81a - stable/13 - Fix test output when gzip is run with -tlv List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ab215565c81a0dc1f97635cc0647084ad1480ba3 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ab215565c81a0dc1f97635cc0647084ad1480ba3 commit ab215565c81a0dc1f97635cc0647084ad1480ba3 Author: Tom Jones AuthorDate: 2022-01-27 17:17:13 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 15:52:02 +0000 Fix test output when gzip is run with -tlv When run with test, verbose and list we need to parse the file otherwise the test output is "NOT OK" even for the file is valid. Reviewed by: kevans, allanjude, imp Sponsored by: Klara Inc. Differential Revision: https://reviews.freebsd.org/D34046 (cherry picked from commit 21c966a6b9f2e9110b8dc2a822ad2b4583f4f18b) --- usr.bin/gzip/gzip.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/usr.bin/gzip/gzip.c b/usr.bin/gzip/gzip.c index 95525f99b881..a21039aeb59c 100644 --- a/usr.bin/gzip/gzip.c +++ b/usr.bin/gzip/gzip.c @@ -1654,10 +1654,13 @@ file_uncompress(char *file, char *outfile, size_t outsize) case FT_XZ: if (lflag) { size = unxz_len(fd); - print_list_out(in_size, size, file); - return -1; - } - size = unxz(fd, zfd, NULL, 0, NULL); + if (!tflag) { + print_list_out(in_size, size, file); + close(fd); + return -1; + } + } else + size = unxz(fd, zfd, NULL, 0, NULL); break; #endif @@ -1682,8 +1685,10 @@ file_uncompress(char *file, char *outfile, size_t outsize) default: if (lflag) { print_list(fd, in_size, outfile, isb.st_mtime); - close(fd); - return -1; /* XXX */ + if (!tflag) { + close(fd); + return -1; /* XXX */ + } } size = gz_uncompress(fd, zfd, NULL, 0, NULL, file); From nobody Wed Jan 17 15:56:14 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFVq21z8Rz585T1; Wed, 17 Jan 2024 15:56:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFVq21W23z4CyG; Wed, 17 Jan 2024 15:56:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705506974; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SJ5RecT70T5rkjFDLG1ps5O+SAWJBgF95WgYdqyH9Yk=; b=QRiDuJmSAA8HkDrI/s5ia9pg8+hwEHXEeAW0BJrumhz1F+quv94GrO2BwcQi6BSTvb0khq qwrtTqUIWQUPZNx2w2x30Xf3ff68fxzjNkSBMvG9DraNqyza1ae4eomRPGGPIEjoEOAnm6 SlRK0pphacjVZ58Otu3jAF1+5ED/pkZEmj3m0Ojf84gl+UZFlFRqNWHjJWcsnuMbzRrlaf 20d1gwOa6cbZf9eCsdgELHARdW57ys05DYeMVpmbmX28zOHrDJxgDzrQO0SrCyg9IbYEjb ms/msAKyz6wSMZl/RHoO7fSalgSJW/e/GYa9SevK1I135KzUpYhOB3myhfl3zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705506974; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SJ5RecT70T5rkjFDLG1ps5O+SAWJBgF95WgYdqyH9Yk=; b=VOxlO+/X4keGeQaiTi9Dm32UJRRlMwdGKb83H7CED+NKX2ziZw/5JNl+ZpaM7UrebWhaBP I+qQvt+v4Ut3+mNWmxKKG5gWmuSneT72vezUiOSQzg9ldlmHtbIJBsmZZInS4A+hHt+Yww X6uCL/6PoWWfaoVwEXdXV2+hivqj3LCxqN1iFfiKKBuLotCs1IQr3YEGcudbXZJRsq2Rb0 vPZTshk5Oysh/Ow+Jj1HHGypuo4OumtzEU+nGKoFJyOyYfhSvhbRPOKXKGSLWkKb29xaVU k9IrdyVrUPPyFP3H7GQ6Y4ruZi5snSemL+QWQrjDUGlLuOlxaYyDHE3Q0ePEQw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705506974; a=rsa-sha256; cv=none; b=AXn6YlNmsfife8aQPKwVS2SYvrqieKGg24OUM8a35AvxJ7xp5tGyJ5A5MfB77EtRSoDneC iSVQMLP0thgcKXawQUPToZ2kjNEIJ4aKg20jblu94W3HQo2EHZoEmWXuCIOUMsRN4iVGEV KRMB6v0lR3B30Ndr/NPGzjag0xEybfR5n6fZcFGbnjZzufwZOAwMB7xumgXibWBC1yZBa+ eQYXPP4powTFpLT0xEO1LgIUG/R5DrlJzKXsqkdkvp2r2v+CQKmgo7Ffrb4+T4tqTMjgE9 Fw+3EEXIPBTRKfQ5LEo+tRQVS1Mjq2ShIL5D/sI4ao19W8Sefu5SiQ0S2Lo8hw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFVq20YH8zV29; Wed, 17 Jan 2024 15:56:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HFuEkl009820; Wed, 17 Jan 2024 15:56:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HFuEfY009817; Wed, 17 Jan 2024 15:56:14 GMT (envelope-from git) Date: Wed, 17 Jan 2024 15:56:14 GMT Message-Id: <202401171556.40HFuEfY009817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 80e3a8b5c685 - stable/13 - Remove SMALL conditionals from gzip List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 80e3a8b5c6850f1f294b0e7a0aad36a0e8a8d1c7 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=80e3a8b5c6850f1f294b0e7a0aad36a0e8a8d1c7 commit 80e3a8b5c6850f1f294b0e7a0aad36a0e8a8d1c7 Author: Tom Jones AuthorDate: 2022-01-27 17:24:45 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 15:52:02 +0000 Remove SMALL conditionals from gzip gzip has SMALL conditionals which enable building a reduced size version of the binary. These exist as part of the introduction of BSD licensed gzip in 2004 in NetBSD and appear to have been required to reach a size for inclusion in their install media. For more information see commits to gzip in the NetBSD tree on the 28th of March 2004. SMALL doesn't appear to be hooked up to our build system and complicates gzip quite a bit. Reviewed by: kevans, imp Sponsored by: Klara Inc. Differential Revision: https://reviews.freebsd.org/D34047 (cherry picked from commit 4669f23ef76bd5ff7d122546ca5ed3e8575f1c73) --- usr.bin/gzip/gzip.c | 136 ---------------------------------------------------- 1 file changed, 136 deletions(-) diff --git a/usr.bin/gzip/gzip.c b/usr.bin/gzip/gzip.c index a21039aeb59c..873d571f2b9b 100644 --- a/usr.bin/gzip/gzip.c +++ b/usr.bin/gzip/gzip.c @@ -143,7 +143,6 @@ typedef struct { static suffixes_t suffixes[] = { #define SUFFIX(Z, N) {Z, sizeof Z - 1, N} SUFFIX(GZ_SUFFIX, ""), /* Overwritten by -S .xxx */ -#ifndef SMALL SUFFIX(GZ_SUFFIX, ""), SUFFIX(".z", ""), SUFFIX("-gz", ""), @@ -166,7 +165,6 @@ static suffixes_t suffixes[] = { SUFFIX(LZ_SUFFIX, ""), #endif SUFFIX(GZ_SUFFIX, ""), /* Overwritten by -S "" */ -#endif /* SMALL */ #undef SUFFIX }; #define NUM_SUFFIXES (nitems(suffixes)) @@ -174,7 +172,6 @@ static suffixes_t suffixes[] = { static const char gzip_version[] = "FreeBSD gzip 20190107"; -#ifndef SMALL static const char gzip_copyright[] = \ " Copyright (c) 1997, 1998, 2003, 2004, 2006 Matthew R. Green\n" " All rights reserved.\n" @@ -199,7 +196,6 @@ static const char gzip_copyright[] = \ " OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n" " OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n" " SUCH DAMAGE."; -#endif static int cflag; /* stdout mode */ static int dflag; /* decompress mode */ @@ -209,7 +205,6 @@ static int numflag = 6; /* gzip -1..-9 value */ static const char *remove_file = NULL; /* file to be removed upon SIGINT */ static int fflag; /* force mode */ -#ifndef SMALL static int kflag; /* don't delete input files */ static int nflag; /* don't save name/timestamp */ static int Nflag; /* don't restore name/timestamp */ @@ -218,10 +213,6 @@ static int rflag; /* recursive mode */ static int tflag; /* test */ static int vflag; /* verbose mode */ static sig_atomic_t print_info = 0; -#else -#define qflag 0 -#define tflag 0 -#endif static int exit_value = 0; /* exit value */ @@ -235,9 +226,6 @@ static void maybe_errx(const char *fmt, ...) __printflike(1, 2) __dead2; static void maybe_warn(const char *fmt, ...) __printflike(1, 2); static void maybe_warnx(const char *fmt, ...) __printflike(1, 2); static enum filetype file_gettype(u_char *); -#ifdef SMALL -#define gz_compress(if, of, sz, fn, tm) gz_compress(if, of, sz) -#endif static off_t gz_compress(int, int, off_t *, const char *, uint32_t); static off_t gz_uncompress(int, int, char *, size_t, off_t *, const char *); static off_t file_compress(char *, char *, size_t); @@ -250,25 +238,14 @@ static void print_ratio(off_t, off_t, FILE *); static void print_list(int fd, off_t, const char *, time_t); static void usage(void) __dead2; static void display_version(void) __dead2; -#ifndef SMALL static void display_license(void); -#endif static const suffixes_t *check_suffix(char *, int); static ssize_t read_retry(int, void *, size_t); static ssize_t write_retry(int, const void *, size_t); static void print_list_out(off_t, off_t, const char*); -#ifdef SMALL -#define infile_set(f,t) infile_set(f) -#endif static void infile_set(const char *newinfile, off_t total); -#ifdef SMALL -#define unlink_input(f, sb) unlink(f) -#define check_siginfo() /* nothing */ -#define setup_signals() /* nothing */ -#define infile_newdata(t) /* nothing */ -#else static off_t infile_total; /* total expected to read/write */ static off_t infile_current; /* current read/write */ @@ -283,7 +260,6 @@ static int check_outfile(const char *outfile); static void setup_signals(void); static void infile_newdata(size_t newdata); static void infile_clear(void); -#endif #ifndef NO_BZIP2_SUPPORT static off_t unbzip2(int, int, char *, size_t, off_t *); @@ -307,9 +283,6 @@ static off_t unxz_len(int); static off_t unlz(int, int, char *, size_t, off_t *); #endif -#ifdef SMALL -#define getopt_long(a,b,c,d,e) getopt(a,b,c) -#else static const struct option longopts[] = { { "stdout", no_argument, 0, 'c' }, { "to-stdout", no_argument, 0, 'c' }, @@ -333,24 +306,19 @@ static const struct option longopts[] = { { "license", no_argument, 0, 'L' }, { NULL, no_argument, 0, 0 }, }; -#endif int main(int argc, char **argv) { const char *progname = getprogname(); -#ifndef SMALL char *gzip; int len; -#endif int ch; setup_signals(); -#ifndef SMALL if ((gzip = getenv("GZIP")) != NULL) prepend_gzip(gzip, &argc, &argv); -#endif /* * XXX @@ -362,11 +330,7 @@ main(int argc, char **argv) strcmp(progname, "gzcat") == 0) dflag = cflag = 1; -#ifdef SMALL -#define OPT_LIST "123456789cdhlV" -#else #define OPT_LIST "123456789acdfhklLNnqrS:tVv" -#endif while ((ch = getopt_long(argc, argv, OPT_LIST, longopts, NULL)) != -1) { switch (ch) { @@ -388,7 +352,6 @@ main(int argc, char **argv) case 'V': display_version(); /* NOTREACHED */ -#ifndef SMALL case 'a': fprintf(stderr, "%s: option --ascii ignored on this system\n", progname); break; @@ -435,7 +398,6 @@ main(int argc, char **argv) case 'v': vflag = 1; break; -#endif default: usage(); /* NOTREACHED */ @@ -454,10 +416,8 @@ main(int argc, char **argv) handle_pathname(argv[0]); } while (*++argv); } -#ifndef SMALL if (qflag == 0 && lflag && argc > 1) print_list(-1, 0, "(totals)", 0); -#endif exit(exit_value); } @@ -522,7 +482,6 @@ maybe_errx(const char *fmt, ...) } #endif -#ifndef SMALL /* split up $GZIP and prepend it to the argument list */ static void prepend_gzip(char *gzip, int *argc, char ***argv) @@ -586,7 +545,6 @@ copy_done: nargv[i++] = *(ac++); nargv[i] = NULL; } -#endif /* compress input to output. Return bytes read, -1 on error */ static off_t @@ -598,11 +556,6 @@ gz_compress(int in, int out, off_t *gsizep, const char *origname, uint32_t mtime ssize_t in_size; int i, error; uLong crc; -#ifdef SMALL - static char header[] = { GZIP_MAGIC0, GZIP_MAGIC1, Z_DEFLATED, 0, - 0, 0, 0, 0, - 0, OS_CODE }; -#endif outbufp = malloc(BUFLEN); inbufp = malloc(BUFLEN); @@ -616,10 +569,6 @@ gz_compress(int in, int out, off_t *gsizep, const char *origname, uint32_t mtime z.zfree = Z_NULL; z.opaque = 0; -#ifdef SMALL - memcpy(outbufp, header, sizeof header); - i = sizeof header; -#else if (nflag != 0) { mtime = 0; origname = ""; @@ -639,7 +588,6 @@ gz_compress(int in, int out, off_t *gsizep, const char *origname, uint32_t mtime maybe_err("snprintf"); if (*origname) i++; -#endif z.next_out = (unsigned char *)outbufp + i; z.avail_out = BUFLEN - i; @@ -999,10 +947,8 @@ gz_uncompress(int in, int out, char *pre, size_t prelen, off_t *gsizep, if (wr != 0) { crc = crc32(crc, (const Bytef *)outbufp, (unsigned)wr); if ( -#ifndef SMALL /* don't write anything with -t */ tflag == 0 && -#endif write_retry(out, outbufp, wr) != wr) { maybe_warn("error writing to output"); goto stop_and_fail; @@ -1098,7 +1044,6 @@ out2: return (out_tot); } -#ifndef SMALL /* * set the owner, mode, flags & utimes using the given file descriptor. * file is only used in possible warning messages. @@ -1143,7 +1088,6 @@ copymodes(int fd, const struct stat *sbp, const char *file) if (sb.st_flags != 0 && fchflags(fd, sb.st_flags) < 0) maybe_warn("couldn't fchflags: %s", file); } -#endif /* what sort of file is this? */ static enum filetype @@ -1183,7 +1127,6 @@ file_gettype(u_char *buf) return FT_UNKNOWN; } -#ifndef SMALL /* check the outfile is OK. */ static int check_outfile(const char *outfile) @@ -1259,7 +1202,6 @@ infile_newdata(size_t newdata) infile_current += newdata; } -#endif static void infile_set(const char *newinfile, off_t total) @@ -1267,9 +1209,7 @@ infile_set(const char *newinfile, off_t total) if (newinfile) infile = newinfile; -#ifndef SMALL infile_total = total; -#endif } static void @@ -1277,9 +1217,7 @@ infile_clear(void) { infile = NULL; -#ifndef SMALL infile_total = infile_current = 0; -#endif } static const suffixes_t * @@ -1313,10 +1251,8 @@ file_compress(char *file, char *outfile, size_t outsize) int in; int out; off_t size, in_size; -#ifndef SMALL struct stat isb, osb; const suffixes_t *suff; -#endif in = open(file, O_RDONLY); if (in == -1) { @@ -1324,25 +1260,20 @@ file_compress(char *file, char *outfile, size_t outsize) return (-1); } -#ifndef SMALL if (fstat(in, &isb) != 0) { maybe_warn("couldn't stat: %s", file); close(in); return (-1); } -#endif -#ifndef SMALL if (fstat(in, &isb) != 0) { close(in); maybe_warn("can't stat %s", file); return -1; } infile_set(file, isb.st_size); -#endif if (cflag == 0) { -#ifndef SMALL if (isb.st_nlink > 1 && fflag == 0) { maybe_warnx("%s has %ju other link%s -- " "skipping", file, @@ -1359,7 +1290,6 @@ file_compress(char *file, char *outfile, size_t outsize) close(in); return (-1); } -#endif /* Add (usually) .gz to filename */ if ((size_t)snprintf(outfile, outsize, "%s%s", @@ -1367,12 +1297,10 @@ file_compress(char *file, char *outfile, size_t outsize) memcpy(outfile + outsize - suffixes[0].ziplen - 1, suffixes[0].zipped, suffixes[0].ziplen + 1); -#ifndef SMALL if (check_outfile(outfile) == 0) { close(in); return (-1); } -#endif } if (cflag == 0) { @@ -1382,9 +1310,7 @@ file_compress(char *file, char *outfile, size_t outsize) fclose(stdin); return (-1); } -#ifndef SMALL remove_file = outfile; -#endif } else out = STDOUT_FILENO; @@ -1402,7 +1328,6 @@ file_compress(char *file, char *outfile, size_t outsize) if (cflag != 0) return in_size == -1 ? -1 : size; -#ifndef SMALL if (fstat(out, &osb) != 0) { maybe_warn("couldn't stat: %s", outfile); goto bad_outfile; @@ -1416,7 +1341,6 @@ file_compress(char *file, char *outfile, size_t outsize) copymodes(out, &isb, outfile); remove_file = NULL; -#endif if (close(out) == -1) maybe_warn("couldn't close output"); @@ -1424,7 +1348,6 @@ file_compress(char *file, char *outfile, size_t outsize) unlink_input(file, &isb); return (size); -#ifndef SMALL bad_outfile: if (close(out) == -1) maybe_warn("couldn't close output"); @@ -1432,7 +1355,6 @@ file_compress(char *file, char *outfile, size_t outsize) maybe_warnx("leaving original %s", file); unlink(outfile); return (size); -#endif } /* uncompress the given file and remove the original */ @@ -1447,11 +1369,9 @@ file_uncompress(char *file, char *outfile, size_t outsize) int fd, ofd, zfd = -1; int error; size_t in_size; -#ifndef SMALL ssize_t rv; time_t timestamp = 0; char name[PATH_MAX + 1]; -#endif /* gather the old name info */ @@ -1479,10 +1399,8 @@ file_uncompress(char *file, char *outfile, size_t outsize) rbytes = read(fd, fourbytes, sizeof fourbytes); if (rbytes != sizeof fourbytes) { /* we don't want to fail here. */ -#ifndef SMALL if (fflag) goto lose; -#endif if (rbytes == -1) maybe_warn("can't read %s", file); else @@ -1492,15 +1410,12 @@ file_uncompress(char *file, char *outfile, size_t outsize) infile_newdata(rbytes); method = file_gettype(fourbytes); -#ifndef SMALL if (fflag == 0 && method == FT_UNKNOWN) { maybe_warnx("%s: not in gzip format", file); goto lose; } -#endif -#ifndef SMALL if (method == FT_GZIP && Nflag) { unsigned char ts[4]; /* timestamp */ @@ -1546,11 +1461,9 @@ file_uncompress(char *file, char *outfile, size_t outsize) } } } -#endif lseek(fd, 0, SEEK_SET); if (cflag == 0 || lflag) { -#ifndef SMALL if (isb.st_nlink > 1 && lflag == 0 && fflag == 0) { maybe_warnx("%s has %ju other links -- skipping", file, (uintmax_t)isb.st_nlink - 1); @@ -1560,7 +1473,6 @@ file_uncompress(char *file, char *outfile, size_t outsize) isb.st_mtime = timestamp; if (check_outfile(outfile) == 0) goto lose; -#endif } if (cflag) @@ -1673,7 +1585,6 @@ file_uncompress(char *file, char *outfile, size_t outsize) size = unlz(fd, zfd, NULL, 0, NULL); break; #endif -#ifndef SMALL case FT_UNKNOWN: if (lflag) { maybe_warnx("no -l for unknown filetypes"); @@ -1681,7 +1592,6 @@ file_uncompress(char *file, char *outfile, size_t outsize) } size = cat_fd(NULL, 0, NULL, fd); break; -#endif default: if (lflag) { print_list(fd, in_size, outfile, isb.st_mtime); @@ -1708,10 +1618,8 @@ file_uncompress(char *file, char *outfile, size_t outsize) } /* if testing, or we uncompressed to stdout, this is all we need */ -#ifndef SMALL if (tflag) return size; -#endif /* if we are uncompressing to stdin, don't remove the file. */ if (cflag) return size; @@ -1742,10 +1650,8 @@ file_uncompress(char *file, char *outfile, size_t outsize) unlink(outfile); return -1; } -#ifndef SMALL copymodes(ofd, &isb, outfile); remove_file = NULL; -#endif close(ofd); unlink_input(file, &isb); return size; @@ -1760,7 +1666,6 @@ file_uncompress(char *file, char *outfile, size_t outsize) return -1; } -#ifndef SMALL static void check_siginfo(void) { @@ -1816,7 +1721,6 @@ cat_fd(unsigned char * prepend, size_t count, off_t *gsizep, int fd) *gsizep = in_tot; return (in_tot); } -#endif static void handle_stdin(void) @@ -1831,12 +1735,10 @@ handle_stdin(void) FILE *in; #endif -#ifndef SMALL if (fflag == 0 && lflag == 0 && isatty(STDIN_FILENO)) { maybe_warnx("standard input is a terminal -- ignoring"); goto out; } -#endif if (fstat(STDIN_FILENO, &isb) < 0) { maybe_warn("fstat"); @@ -1865,14 +1767,12 @@ handle_stdin(void) method = file_gettype(fourbytes); switch (method) { default: -#ifndef SMALL if (fflag == 0) { maybe_warnx("unknown compression format"); goto out; } usize = cat_fd(fourbytes, sizeof fourbytes, &gsize, STDIN_FILENO); break; -#endif case FT_GZIP: usize = gz_uncompress(STDIN_FILENO, STDOUT_FILENO, (char *)fourbytes, sizeof fourbytes, &gsize, "(stdin)"); @@ -1915,14 +1815,10 @@ handle_stdin(void) #endif } -#ifndef SMALL if (vflag && !tflag && usize != -1 && gsize != -1) print_verbage(NULL, NULL, usize, gsize); if (vflag && tflag) print_test("(stdin)", usize != -1); -#else - (void)&usize; -#endif out: infile_clear(); @@ -1932,7 +1828,6 @@ static void handle_stdout(void) { off_t gsize; -#ifndef SMALL off_t usize; struct stat sb; time_t systime; @@ -1966,12 +1861,9 @@ handle_stdout(void) } usize = -#endif gz_compress(STDIN_FILENO, STDOUT_FILENO, &gsize, "", mtime); -#ifndef SMALL if (vflag && !tflag && usize != -1 && gsize != -1) print_verbage(NULL, NULL, usize, gsize); -#endif } /* do what is asked for, for the path name */ @@ -2012,11 +1904,9 @@ retry: } if (S_ISDIR(sb.st_mode)) { -#ifndef SMALL if (rflag) handle_dir(path); else -#endif maybe_warnx("%s is a directory", path); goto out; } @@ -2041,10 +1931,8 @@ handle_file(char *file, struct stat *sbp) infile_set(file, sbp->st_size); if (dflag) { usize = file_uncompress(file, outfile, sizeof(outfile)); -#ifndef SMALL if (vflag && tflag) print_test(file, usize != -1); -#endif if (usize == -1) return; gsize = sbp->st_size; @@ -2056,13 +1944,10 @@ handle_file(char *file, struct stat *sbp) } infile_clear(); -#ifndef SMALL if (vflag && !tflag) print_verbage(file, (cflag) ? NULL : outfile, usize, gsize); -#endif } -#ifndef SMALL /* this is used with -r to recursively descend directories */ static void handle_dir(char *dir) @@ -2098,7 +1983,6 @@ handle_dir(char *dir) warn("error with fts_read %s", dir); (void)fts_close(fts); } -#endif /* print a ratio - size reduction as a fraction of uncompressed size */ static void @@ -2140,7 +2024,6 @@ print_ratio(off_t in, off_t out, FILE *where) fprintf(where, "%5s%%", buff); } -#ifndef SMALL /* print compression statistics, and the new name (if there is one!) */ static void print_verbage(const char *file, const char *nfile, off_t usize, off_t gsize) @@ -2166,7 +2049,6 @@ print_test(const char *file, int ok) strlen(file) < 7 ? "\t\t" : "\t", ok ? "OK" : "NOT OK"); fflush(stderr); } -#endif /* print a file's info ala --list */ /* eg: @@ -2177,17 +2059,13 @@ static void print_list(int fd, off_t out, const char *outfile, time_t ts) { static int first = 1; -#ifndef SMALL static off_t in_tot, out_tot; uint32_t crc = 0; -#endif off_t in = 0, rv; if (first) { -#ifndef SMALL if (vflag) printf("method crc date time "); -#endif if (qflag == 0) printf(" compressed uncompressed " "ratio uncompressed_name\n"); @@ -2195,12 +2073,10 @@ print_list(int fd, off_t out, const char *outfile, time_t ts) first = 0; /* print totals? */ -#ifndef SMALL if (fd == -1) { in = in_tot; out = out_tot; } else -#endif { /* read the last 4 bytes - this is the uncompressed size */ rv = lseek(fd, (off_t)(-8), SEEK_END); @@ -2217,14 +2093,11 @@ print_list(int fd, off_t out, const char *outfile, time_t ts) else { usize = le32dec(&buf[4]); in = (off_t)usize; -#ifndef SMALL crc = le32dec(&buf[0]); -#endif } } } -#ifndef SMALL if (vflag && fd == -1) printf(" "); else if (vflag) { @@ -2237,9 +2110,6 @@ print_list(int fd, off_t out, const char *outfile, time_t ts) } in_tot += in; out_tot += out; -#else - (void)&ts; /* XXX */ -#endif print_list_out(out, in, outfile); } @@ -2258,9 +2128,6 @@ usage(void) fprintf(stderr, "%s\n", gzip_version); fprintf(stderr, -#ifdef SMALL - "usage: %s [-" OPT_LIST "] [ [ ...]]\n", -#else "usage: %s [-123456789acdfhklLNnqrtVv] [-S .suffix] [ [ ...]]\n" " -1 --fast fastest (worst) compression\n" " -2 .. -8 set compression level\n" @@ -2282,12 +2149,10 @@ usage(void) " -t --test test compressed file\n" " -V --version display program version\n" " -v --verbose print extra statistics\n", -#endif getprogname()); exit(0); } -#ifndef SMALL /* display the license information of FreeBSD gzip */ static void display_license(void) @@ -2297,7 +2162,6 @@ display_license(void) fprintf(stderr, "%s\n", gzip_copyright); exit(0); } -#endif /* display the version of NetBSD gzip */ static void From nobody Wed Jan 17 15:56:15 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFVq33PqWz5859k; Wed, 17 Jan 2024 15:56:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFVq32XDTz4DKB; Wed, 17 Jan 2024 15:56:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705506975; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WO5DP8R3dHABc8BcMM0wtrqO38nUIvhmB5R5CUSzMR0=; b=gMAsPXK4H8/JbbtsV/bAHuA88wZbUQ00XeCpGIYKOO2mnfcSAXx4qqKZVlQebnOqVhK5+Y I8gsYivDc3s4pPCz93GI/jzAY+K4mUUOsxugIQe+dmLECGKlTcl8iUKFgZwmMrVYLxIvkJ QRar18rzqR8pYLjCT5e3Oqmg3vUNS3g6X2ptM/AG00MaaTuARxTjqsp41bMStX7jFmj/9g AvFNu5OiOUKdsO6FqmKD/6E31RnfBq2Y/kK9SWdmIBwXYLuirDtqkMQQKt+7F1AR/vy0ea 5izLS3oyF/6VNecNWR+ZSVN0Evltlo+YOxqzQRZJIftqp0Z6ZoUsp6fg0AbHvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705506975; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WO5DP8R3dHABc8BcMM0wtrqO38nUIvhmB5R5CUSzMR0=; b=jq5x2Vqpi5789XDLQp81pIuO0S2J06u182/dH/ZcrZs8T+89GsZGuvSdtSzbyDgCLQl+Vp o2XrxX5f7fWWxlWaXZiTWSBDnHKWT5uzFjqBZ3yb6VohLdus3k/FGbq0TRGdoWK1PTa5Lo 0skMtfOWJnPDJDvKN/80EnAXZkLIaxCFU4Lfbhl9e8U4rlB3QL0qDQ3HNccVDZBA58qPI/ BlUiAB1rnpGK9qpmnscPLoyGF7/mgUSuEsr9iWXcMTxk6SexutUWqJzufj9qAebYr03gkT JrvKcTRGGgPyUWXxb3aC/qQoBlAcRSHHrIzC49S+d6KhJl9mZqPMRtbxey0wxg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705506975; a=rsa-sha256; cv=none; b=Sk7xwsTLeiDiWK27z1mhBKEzaYelEWlm8W6e0I+NbLfzirMBn3qd09h56fgeIGExWtnDwB ZXceV23xeJzxfGHm0/VOCgSwSasydl2yxBXCBGXznPQ2LogEGg5T4rL4jgaIpwkwFi823u ua0ZOxlYOVY5ZXrGKHGQD8EUNM+OyeIDApk0BLygCsYBrEGXf+FP1XO8XEpbb/xRKxxcB4 +e0U5m5sSG/OkosC5KA5WVly524ZPsQaTfdiL/qNDoFDxhn4bOTvnK8gknmYY2vhQCLo+V 8W/hxyWXcDI3jg7A/z/MUWl/9jH0S2Qv3Re2VCLJ5D0AAsHPhCfnJ0Yk7ecdOQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFVq31b3XzVSK; Wed, 17 Jan 2024 15:56:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HFuFjc009871; Wed, 17 Jan 2024 15:56:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HFuFFE009868; Wed, 17 Jan 2024 15:56:15 GMT (envelope-from git) Date: Wed, 17 Jan 2024 15:56:15 GMT Message-Id: <202401171556.40HFuFFE009868@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 127f4dd60bed - stable/13 - gzip: Add support for decompressing zstd files. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 127f4dd60bed2af6ab6b99560e7cce2e5ac86772 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=127f4dd60bed2af6ab6b99560e7cce2e5ac86772 commit 127f4dd60bed2af6ab6b99560e7cce2e5ac86772 Author: Dag-Erling Smørgrav AuthorDate: 2022-11-02 13:41:44 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 15:52:31 +0000 gzip: Add support for decompressing zstd files. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D37236 (cherry picked from commit f9349d427431eaa5b3bd7e9e7e87725a138facd1) --- usr.bin/gzip/Makefile | 4 +- usr.bin/gzip/Makefile.depend | 1 + usr.bin/gzip/gzip.1 | 4 +- usr.bin/gzip/gzip.c | 60 ++++++++++++++++++++++------- usr.bin/gzip/unzstd.c | 89 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 143 insertions(+), 15 deletions(-) diff --git a/usr.bin/gzip/Makefile b/usr.bin/gzip/Makefile index b9e6d84f436e..33fbdb85d78c 100644 --- a/usr.bin/gzip/Makefile +++ b/usr.bin/gzip/Makefile @@ -5,7 +5,7 @@ PROG= gzip MAN= gzip.1 gzexe.1 zdiff.1 zforce.1 zmore.1 znew.1 -LIBADD= z lzma +LIBADD= z lzma zstd .if ${MK_BZIP2_SUPPORT} != "no" LIBADD+= bz2 @@ -13,6 +13,8 @@ LIBADD+= bz2 CFLAGS+= -DNO_BZIP2_SUPPORT .endif +CFLAGS+= -I${SRCTOP}/sys/contrib/zstd/lib + SCRIPTS= gzexe zdiff zforce zmore znew MLINKS+= gzip.1 gunzip.1 \ diff --git a/usr.bin/gzip/Makefile.depend b/usr.bin/gzip/Makefile.depend index 413518057565..7c13917770d9 100644 --- a/usr.bin/gzip/Makefile.depend +++ b/usr.bin/gzip/Makefile.depend @@ -9,6 +9,7 @@ DIRDEPS = \ lib/liblzma \ lib/libthr \ lib/libz \ + lib/libzstd \ .include diff --git a/usr.bin/gzip/gzip.1 b/usr.bin/gzip/gzip.1 index 8677edf2751a..afb1147f3dfe 100644 --- a/usr.bin/gzip/gzip.1 +++ b/usr.bin/gzip/gzip.1 @@ -23,7 +23,7 @@ .\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. -.Dd January 7, 2019 +.Dd November 2, 2022 .Dt GZIP 1 .Os .Sh NAME @@ -108,6 +108,7 @@ is also capable of decompressing files compressed using .Xr compress 1 , .Xr bzip2 1 , .Ar lzip , +.Xr zstd 1 , or .Xr xz 1 . .Sh OPTIONS @@ -201,6 +202,7 @@ Report progress to standard error. .Sh SEE ALSO .Xr bzip2 1 , .Xr compress 1 , +.Xr zstd 1 , .Xr xz 1 , .Xr fts 3 , .Xr zlib 3 diff --git a/usr.bin/gzip/gzip.c b/usr.bin/gzip/gzip.c index 873d571f2b9b..8eddac4adcdd 100644 --- a/usr.bin/gzip/gzip.c +++ b/usr.bin/gzip/gzip.c @@ -85,6 +85,9 @@ enum filetype { #endif #ifndef NO_LZ_SUPPORT FT_LZ, +#endif +#ifndef NO_ZSTD_SUPPORT + FT_ZSTD, #endif FT_LAST, FT_UNKNOWN @@ -117,6 +120,12 @@ enum filetype { #define LZ_MAGIC "LZIP" #endif +#ifndef NO_ZSTD_SUPPORT +#include +#define ZSTD_SUFFIX ".zst" +#define ZSTD_MAGIC "\050\265\057\375" +#endif + #define GZ_SUFFIX ".gz" #define BUFLEN (64 * 1024) @@ -163,6 +172,9 @@ static suffixes_t suffixes[] = { #endif #ifndef NO_LZ_SUPPORT SUFFIX(LZ_SUFFIX, ""), +#endif +#ifndef NO_ZSTD_SUPPORT + SUFFIX(ZSTD_SUFFIX, ""), #endif SUFFIX(GZ_SUFFIX, ""), /* Overwritten by -S "" */ #undef SUFFIX @@ -220,7 +232,7 @@ static const char *infile; /* name of file coming in */ static void maybe_err(const char *fmt, ...) __printflike(1, 2) __dead2; #if !defined(NO_BZIP2_SUPPORT) || !defined(NO_PACK_SUPPORT) || \ - !defined(NO_XZ_SUPPORT) + !defined(NO_XZ_SUPPORT) || !defined(NO_ZSTD_SUPPORT) static void maybe_errx(const char *fmt, ...) __printflike(1, 2) __dead2; #endif static void maybe_warn(const char *fmt, ...) __printflike(1, 2); @@ -283,6 +295,10 @@ static off_t unxz_len(int); static off_t unlz(int, int, char *, size_t, off_t *); #endif +#ifndef NO_ZSTD_SUPPORT +static off_t unzstd(int, int, char *, size_t, off_t *); +#endif + static const struct option longopts[] = { { "stdout", no_argument, 0, 'c' }, { "to-stdout", no_argument, 0, 'c' }, @@ -466,7 +482,7 @@ maybe_err(const char *fmt, ...) } #if !defined(NO_BZIP2_SUPPORT) || !defined(NO_PACK_SUPPORT) || \ - !defined(NO_XZ_SUPPORT) + !defined(NO_XZ_SUPPORT) || !defined(NO_ZSTD_SUPPORT) /* ... without an errno. */ void maybe_errx(const char *fmt, ...) @@ -1097,33 +1113,32 @@ file_gettype(u_char *buf) if (buf[0] == GZIP_MAGIC0 && (buf[1] == GZIP_MAGIC1 || buf[1] == GZIP_OMAGIC1)) return FT_GZIP; - else #ifndef NO_BZIP2_SUPPORT - if (memcmp(buf, BZIP2_MAGIC, 3) == 0 && + else if (memcmp(buf, BZIP2_MAGIC, 3) == 0 && buf[3] >= '0' && buf[3] <= '9') return FT_BZIP2; - else #endif #ifndef NO_COMPRESS_SUPPORT - if (memcmp(buf, Z_MAGIC, 2) == 0) + else if (memcmp(buf, Z_MAGIC, 2) == 0) return FT_Z; - else #endif #ifndef NO_PACK_SUPPORT - if (memcmp(buf, PACK_MAGIC, 2) == 0) + else if (memcmp(buf, PACK_MAGIC, 2) == 0) return FT_PACK; - else #endif #ifndef NO_XZ_SUPPORT - if (memcmp(buf, XZ_MAGIC, 4) == 0) /* XXX: We only have 4 bytes */ + else if (memcmp(buf, XZ_MAGIC, 4) == 0) /* XXX: We only have 4 bytes */ return FT_XZ; - else #endif #ifndef NO_LZ_SUPPORT - if (memcmp(buf, LZ_MAGIC, 4) == 0) + else if (memcmp(buf, LZ_MAGIC, 4) == 0) return FT_LZ; - else #endif +#ifndef NO_ZSTD_SUPPORT + else if (memcmp(buf, ZSTD_MAGIC, 4) == 0) + return FT_ZSTD; +#endif + else return FT_UNKNOWN; } @@ -1585,6 +1600,16 @@ file_uncompress(char *file, char *outfile, size_t outsize) size = unlz(fd, zfd, NULL, 0, NULL); break; #endif + +#ifndef NO_ZSTD_SUPPORT + case FT_ZSTD: + if (lflag) { + maybe_warnx("no -l with zstd files"); + goto lose; + } + size = unzstd(fd, zfd, NULL, 0, NULL); + break; +#endif case FT_UNKNOWN: if (lflag) { maybe_warnx("no -l for unknown filetypes"); @@ -1812,6 +1837,12 @@ handle_stdin(void) usize = unlz(STDIN_FILENO, STDOUT_FILENO, (char *)fourbytes, sizeof fourbytes, &gsize); break; +#endif +#ifndef NO_ZSTD_SUPPORT + case FT_ZSTD: + usize = unzstd(STDIN_FILENO, STDOUT_FILENO, + (char *)fourbytes, sizeof fourbytes, &gsize); + break; #endif } @@ -2187,6 +2218,9 @@ display_version(void) #ifndef NO_LZ_SUPPORT #include "unlz.c" #endif +#ifndef NO_ZSTD_SUPPORT +#include "unzstd.c" +#endif static ssize_t read_retry(int fd, void *buf, size_t sz) diff --git a/usr.bin/gzip/unzstd.c b/usr.bin/gzip/unzstd.c new file mode 100644 index 000000000000..4536f3119ace --- /dev/null +++ b/usr.bin/gzip/unzstd.c @@ -0,0 +1,89 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2022 Klara, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* This file is #included by gzip.c */ + +static off_t +unzstd(int in, int out, char *pre, size_t prelen, off_t *bytes_in) +{ + static char *ibuf, *obuf; + ZSTD_inBuffer zib; + ZSTD_outBuffer zob; + ZSTD_DCtx *zds; + ssize_t res; + size_t zres; + size_t bytes_out = 0; + int eof = 0; + + if (ibuf == NULL) + ibuf = malloc(BUFLEN); + if (obuf == NULL) + obuf = malloc(BUFLEN); + if (ibuf == NULL || obuf == NULL) + maybe_err("malloc"); + + zds = ZSTD_createDStream(); + ZSTD_initDStream(zds); + + zib.src = pre; + zib.size = prelen; + zib.pos = 0; + if (bytes_in != NULL) + *bytes_in = prelen; + zob.dst = obuf; + zob.size = BUFLEN; + zob.pos = 0; + + while (!eof) { + if (zib.pos >= zib.size) { + res = read(in, ibuf, BUFLEN); + if (res < 0) + maybe_err("read"); + if (res == 0) + eof = 1; + infile_newdata(res); + zib.src = ibuf; + zib.size = res; + zib.pos = 0; + if (bytes_in != NULL) + *bytes_in += res; + } + zres = ZSTD_decompressStream(zds, &zob, &zib); + if (ZSTD_isError(zres)) { + maybe_errx("%s", ZSTD_getErrorName(zres)); + } + if (zob.pos > 0) { + res = write(out, obuf, zob.pos); + if (res < 0) + maybe_err("write"); + zob.pos = 0; + bytes_out += res; + } + } + ZSTD_freeDStream(zds); + return (bytes_out); +} From nobody Wed Jan 17 16:51:07 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFX2M73yXz58BJG; Wed, 17 Jan 2024 16:51:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFX2M6dJNz4Lqq; Wed, 17 Jan 2024 16:51:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705510267; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pRYmVuoepsV5QZ/sdOfa+HPtxpCKU5t2oI7VaM/h4Pg=; b=HbXozzUkN0CDjUZBhVFonWS0zO45H2CzSiBDvRjTGSKQ9rQjXhYozocqsoMKCkgJXU3D3h ZRI/kG+t0wjDHm+7sdFlDoI2qAJBlhFybGdpItEgYpRabtuXXfx4XZcCSp/lrO5jmLz/PB 6hGnmHP5fN0NwE8YwppBDYN+hguQ7FI9jsNhak2L6PxKhLLGSP3j9osW3JCvf6eqeC53eg c6HjEvT6qpOnXQ4FGF6Ptb6BObXjIkgbm986pzA+ZA3oXQ59v4wZ6dg0cAHhCtgwYNNS7G 8CTDzjOYvYhhXXVwA8etjOS7ThrDpgLLc5Ieef1a5qT5O5T1cQeaVef0Ecv0RA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705510267; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pRYmVuoepsV5QZ/sdOfa+HPtxpCKU5t2oI7VaM/h4Pg=; b=qVDMFzUYuKGYj0rx5xg8OCVD9NMpgBYPaY9JS77MMJwsDsDpGSZ+DwcsPVmnGpcXS0oG6J /Gio2Pi3NW4RXK8j9XV2ICSkvZdGBgqgwQSHZjsfNUtDrpbUV2+kaWSYCYaQQJ9UiLVXCq JPoDhk+6ulQXoGft3rakDGw9kqg+r1Ztt733m4DKKRltPsj0HaCAuam23FBub2aPg3Sqs7 PyIy/C95XS6wock3PJe/tH4D5GB5aZB09HyGyVxLAzrxOlXEDunCg4FKn/Gz0wYVoHBw0V brSwBIU4EJ9ZQMEWRbHX7Vb9BsoRlN/5nP7PsWexpnRxC6hyi7aZgfOf/H1inA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705510267; a=rsa-sha256; cv=none; b=EoEfnf0txwWrFnWEsYZrfOaDJXnK44UM8AsT0sDtIKyON3izEnWtZ5X2S1Gf3Das3PigX/ dKpdFebhSFxg3aAUGGkA5ZS7B+c7KD7J3npMf+HBkIMeWsYNn4e5l0Pz/X7mGkdZdsVhts KLfJExzx/8tP/JBd5V1nCADh+aEdFjLveDz20KPv5Z7bQ7cEEOnoy02FsnozrQ7SHWv6S4 vh3Y8y0t0pRIxoRJJB76IjcFu382CFrca1PQOyxRHYq9F3HOFmavvXYOxEOG6JmN1D+/mg sgZ6wCwhfIIWSGHJqhg235YiaNk7W2FxrM8oLm8DuJ3cvgVSpuQNt79J5F34pw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFX2M5krPzXNG; Wed, 17 Jan 2024 16:51:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HGp7AO002593; Wed, 17 Jan 2024 16:51:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HGp7Bs002589; Wed, 17 Jan 2024 16:51:07 GMT (envelope-from git) Date: Wed, 17 Jan 2024 16:51:07 GMT Message-Id: <202401171651.40HGp7Bs002589@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: e99d7fc27054 - stable/14 - dtrace tests: Run ksh with -p List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e99d7fc270546257a1b1d20be6f06cdc62db0beb Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e99d7fc270546257a1b1d20be6f06cdc62db0beb commit e99d7fc270546257a1b1d20be6f06cdc62db0beb Author: Mark Johnston AuthorDate: 2024-01-09 15:39:39 +0000 Commit: Mark Johnston CommitDate: 2024-01-17 16:50:35 +0000 dtrace tests: Run ksh with -p In particular, avoid loading the user's .profile file, since that can have undesirable side effects. Most tests were already careful to do this. MFC after: 1 week (cherry picked from commit e25922b34ed2b7b4bf0ae4de2f7ec82b04153384) --- .../cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.exe | 2 +- .../cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.exe | 2 +- .../cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.exe | 2 +- .../cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.exe | 2 +- .../cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.exe | 2 +- .../cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.exe | 2 +- .../cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.exe | 2 +- .../opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.exe | 2 +- .../opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.exe | 2 +- .../cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe | 2 +- cddl/usr.sbin/dtrace/tests/tools/dtest.sh | 4 ++-- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.exe index e360d25b465b..4985133fb2a6 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.exe index e360d25b465b..4985133fb2a6 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.exe index e360d25b465b..4985133fb2a6 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.exe index e360d25b465b..4985133fb2a6 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.exe index e360d25b465b..4985133fb2a6 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.exe index e360d25b465b..4985133fb2a6 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.exe index e360d25b465b..4985133fb2a6 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.exe index ddd0f60f63ce..b9365eaafe3d 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.exe index 6369bc561412..9b9e2659786d 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe index 5acce76efc6c..d15d0668cfc1 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe @@ -1,4 +1,4 @@ -#!/usr/bin/env ksh +#!/usr/local/bin/ksh -p # # CDDL HEADER START # diff --git a/cddl/usr.sbin/dtrace/tests/tools/dtest.sh b/cddl/usr.sbin/dtrace/tests/tools/dtest.sh index e87562d2fe45..83f7a6c875da 100755 --- a/cddl/usr.sbin/dtrace/tests/tools/dtest.sh +++ b/cddl/usr.sbin/dtrace/tests/tools/dtest.sh @@ -70,7 +70,7 @@ runtest() err.*.ksh|tst.*.ksh) expr "$TFILE" : 'err.*' >/dev/null && exstatus=1 - tst=$TFILE ksh "$TFILE" /usr/sbin/dtrace >$STDOUT 2>$STDERR + tst=$TFILE ksh -p "$TFILE" /usr/sbin/dtrace >$STDOUT 2>$STDERR status=$? if [ $status -ne $exstatus ]; then @@ -86,7 +86,7 @@ runtest() if [ $retval -eq 0 ] && \ head -n 1 $STDOUT | grep -q -E '^#!/.*ksh$'; then - ksh $STDOUT + ksh -p $STDOUT retval=$? fi From nobody Wed Jan 17 16:51:08 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFX2P2mRkz58BCZ; Wed, 17 Jan 2024 16:51:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFX2P0Y3Lz4Lwy; Wed, 17 Jan 2024 16:51:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705510269; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fOP2imlAmf0csW3r6hQDXaf8/ZTEljEfhh0OR/eF2qY=; b=PpVWkuWHich1qzAVOw25lgWc5HvtgWG/KqTJMRO6DnQ1O3dY4PLzbpQ9Nx93F2zeps13fV 9ikEZUT4picNCuz5n2xyq42oz9Qa6WIfbIEeVpTdtZOd4nC1qobZqffM1Mof6DjzpcEew5 K1H6Ni1G5h9vO+tJBM0QGUPt2/i4+LWQ9RTUkKKxNYhOxK4qrb+ErFVzh1fMTnzNgKBIje VglfMUvSjlQa1kt0SV6jnDTlypsowiMetn19H44WCz5r680CUmUjJIgf4poaahyO1HY9Zz +tbMZ1I1QP8pzkloaSdCmcQn5vfH2hl4iBbVvrLLjWsAheoHEAC5q9q/M2gvCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705510269; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fOP2imlAmf0csW3r6hQDXaf8/ZTEljEfhh0OR/eF2qY=; b=vpMG72GmV3rCm/b1TciRVZQ0V1EVIj5UPA/o3CAxpnTjyoZqBqRFeBnUFIW/QjNAmN71K/ 8bKcTFpl3STAEuNEGf2o+TEAQPgogIFs0eSkMbLm9AC4DvJ9oI0aLr6/Org9PjrJh0vz5k U/5/XxdY4cgOX0EFRq9b3g0w0iyPKyRZFwE6cLLKYtfjzHp/xi6BLI3hII8AoWzalP3Ipj gjrFNrh1C5Mb9o5WBBZLF/ZFGRfzhRh3HmbFom+KrL/xa0IZHtpusd+tLJadtD1NzA3yaq zqn9WW8VqVcfzinHVMs2V8vzBcFfsbnHDqDz7expNJYcAbxfBsHLqmZwoTUVVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705510269; a=rsa-sha256; cv=none; b=I3NYJ4TpjzjOhDVNAbq+0o6v1i90eucAa4tg8JuYX15vztGHcsHTCvj9hhkuqpvtAx5rHB BrvAYUVryUJ7bcd/x/fKONkObUBj1Atu8Z70YeSKb2SKi94mmV6tA68cHe8Ck98cEvCivK Am8BC+D9mC26wSAaY2DdKBqTauKz8L82FJLhBBBM9AbaEUZruTFxQFD+HC7a6oZkbEgBN5 fMyXNwPaXRtAuwwmGwJfsLbWprhZZRg2xXrSab2WPWsD4SmarLrjCA5aW2ctJ7ZZuU+a6t JMuTS4Pz/YJSVwXxTPpXTcb7TXO7ZB/g8Gx/dhFIzVNNkRd9zmqM3O6hX+m5pA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFX2N6lwTzXQp; Wed, 17 Jan 2024 16:51:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HGp88I002647; Wed, 17 Jan 2024 16:51:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HGp8rm002644; Wed, 17 Jan 2024 16:51:08 GMT (envelope-from git) Date: Wed, 17 Jan 2024 16:51:08 GMT Message-Id: <202401171651.40HGp8rm002644@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 91871c57228b - stable/14 - dtrace tests: Stop hard-coding an incorrect path to sleep(1) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 91871c57228bcb3afdcc13b056d105c5cadc31ac Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=91871c57228bcb3afdcc13b056d105c5cadc31ac commit 91871c57228bcb3afdcc13b056d105c5cadc31ac Author: Mark Johnston AuthorDate: 2024-01-10 20:19:22 +0000 Commit: Mark Johnston CommitDate: 2024-01-17 16:50:37 +0000 dtrace tests: Stop hard-coding an incorrect path to sleep(1) MFC after: 1 week (cherry picked from commit 9f5dd61e14004d546ba3d3c9052f85bb325b58b4) --- cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.icmp.ksh | 2 +- cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.udp.ksh | 2 +- .../opensolaris/cmd/dtrace/test/tst/common/proc/tst.startexit.ksh | 2 +- .../opensolaris/cmd/dtrace/test/tst/i86xpv/xdt/tst.schedargs.ksh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.icmp.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.icmp.ksh index b1cac20fc8db..6def4da1062b 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.icmp.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.icmp.ksh @@ -59,7 +59,7 @@ pinger() { while true; do ping -A inet localhost - /usr/bin/sleep 1 + sleep 1 done } diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.udp.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.udp.ksh index a492124c9c17..10a83cbd06fd 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.udp.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mib/tst.udp.ksh @@ -54,7 +54,7 @@ rupper() { while true; do rup localhost - /usr/bin/sleep 1 + sleep 1 done } diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.startexit.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.startexit.ksh index 429173806f35..76996bfcb413 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.startexit.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.startexit.ksh @@ -68,7 +68,7 @@ EOF sleeper() { while true; do - /usr/bin/sleep 1 + sleep 1 done } diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/i86xpv/xdt/tst.schedargs.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/i86xpv/xdt/tst.schedargs.ksh index 5b14fc989138..c74a278c1347 100755 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/i86xpv/xdt/tst.schedargs.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/i86xpv/xdt/tst.schedargs.ksh @@ -45,7 +45,7 @@ outf=/tmp/sched.args.$$ script() { - $dtrace -c '/usr/bin/sleep 10' -o $outf -qs /dev/stdin < To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: bee9caf67c70 - stable/14 - dtrace tests: Require perl List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: bee9caf67c70b655b18318810b14cccd27dbdbe1 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=bee9caf67c70b655b18318810b14cccd27dbdbe1 commit bee9caf67c70b655b18318810b14cccd27dbdbe1 Author: Mark Johnston AuthorDate: 2024-01-10 20:22:14 +0000 Commit: Mark Johnston CommitDate: 2024-01-17 16:50:54 +0000 dtrace tests: Require perl A number of tests use it, so just require it globally as we do with other tools. MFC after: 1 week (cherry picked from commit 66bfb4b2ee49e435152316434ae322d8f3f19d3d) --- cddl/usr.sbin/dtrace/tests/dtrace.test.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cddl/usr.sbin/dtrace/tests/dtrace.test.mk b/cddl/usr.sbin/dtrace/tests/dtrace.test.mk index c0d66aac3382..022c42f7617e 100644 --- a/cddl/usr.sbin/dtrace/tests/dtrace.test.mk +++ b/cddl/usr.sbin/dtrace/tests/dtrace.test.mk @@ -12,7 +12,7 @@ ${TESTGROUP}EXEPACKAGE= ${PACKAGE} TESTWRAPPER= t_dtrace_contrib ATF_TESTS_SH+= ${TESTWRAPPER} -TEST_METADATA.t_dtrace_contrib+= required_files="/usr/local/bin/ksh" +TEST_METADATA.t_dtrace_contrib+= required_files="/usr/local/bin/ksh /usr/local/bin/perl" TEST_METADATA.t_dtrace_contrib+= required_user="root" GENTEST?= ${.CURDIR:H:H}/tools/gentest.sh From nobody Wed Jan 17 16:51:11 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFX2R6MxTz589xF; Wed, 17 Jan 2024 16:51:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFX2R2c5Dz4LtR; Wed, 17 Jan 2024 16:51:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705510271; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IfTiXRUvGSM+yPo79QSj0Oi6om8nx30MPOtr9Sa59XU=; b=YR+PKyEdQqAyfjPzloP9d37SfG0lgZteUFXxrKYaLDsgRte+89m3gzAdWpMfcJRk156CHx B5bscUgRo6vsl9SzRoQxrqRvU+XAuAidEEHZQIg1v2TEhwbEl64pmBDmKG0UbbmDBStU/b 9JF3nR2r/NoZYtMejXcWI7jtxyvXriy5nLLquHubyGU8PX6IN+OdlxrOiBaouDUkabhn8h MD0S7if05wKJVjclGs6cHMOXuusvxdepROFgKRrdHx9hvYLsRM4+A3J1HBJbzdiFzie/2u epmp9ct+T0JzoRiDxRF2hl22qRFybsG4b8cItIsFgQsaiNiPtsgq7C73S101EQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705510271; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IfTiXRUvGSM+yPo79QSj0Oi6om8nx30MPOtr9Sa59XU=; b=lATwmRlPvN0jDgQaKrQxTNSRufnNeRS/dTuPLVjDEajJA4fCOQDzlC8lcJJXNu6IWOjX6B U1xudtIDeF51CWL3xCdC9z1NFu9yiE4EFy7sqU6Sr2XdkcYzuboiRoAQWmqfUfIF9ZPKmU GbCNE3wX3wxpoa22jU/OXCdrWCLm7Hd/9sGnSlMPwJozvhtRgCfUIQY2rLwfWAfw2SXl7i lRGwyORqwagbQ2hZ+TpHSyEo+dxnDEO/Qqo1uKBE+aLCsDopznmFC82ipwB16AN5PwTJ19 wH+M+R/RtuA7glALQIHzlc2vbIcnvsGBjR3SSQB17+h3mC1iWJxbzdBAKHJ2oA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705510271; a=rsa-sha256; cv=none; b=gmWq0UsfmP9UCEJ7xolJ8PJwuLFKC5F5xJHi9X1Ti8YcLAswc4DV4ggLtOF3Ok6BDYJT9o Snx48fH5GaH6CJE7Q4sCSnjHeFwsWYc/biPc1mUYtiIovyiFQmC/PKm6rM4u7WLv46JlhY xdbjyxR3zF8IpuQmEdhM9p9sLdxcI/78qXG1dCsXdBMONKCL/u9tHl84QMrKQd3a1aGyvV Uzvw9aggihrlmTfktyuLmshGhnzo9NiXBjqQ1vJn4fisemDtGM67Z/ajhsYkXc1gsZDzV8 voLp3B8QGksfemKHG+rrASWfe8S3Zw8FnJalN9aXDD+TJoglWJH4jZ2oNqvyYA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFX2R1h9YzX9C; Wed, 17 Jan 2024 16:51:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HGpBxq002743; Wed, 17 Jan 2024 16:51:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HGpBoO002741; Wed, 17 Jan 2024 16:51:11 GMT (envelope-from git) Date: Wed, 17 Jan 2024 16:51:11 GMT Message-Id: <202401171651.40HGpBoO002741@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 59044cc210c5 - stable/14 - dtrace tests: Catch up with ping(8) output changes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 59044cc210c56f5cfecb96b4c9151588821bb2da Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=59044cc210c56f5cfecb96b4c9151588821bb2da commit 59044cc210c56f5cfecb96b4c9151588821bb2da Author: Mark Johnston AuthorDate: 2024-01-10 21:38:00 +0000 Commit: Mark Johnston CommitDate: 2024-01-17 16:50:55 +0000 dtrace tests: Catch up with ping(8) output changes MFC after: 1 week (cherry picked from commit ba10366037c5ea7f2fcb9e3654491316dae3f049) --- .../opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh.out index 2e94ff35de88..7f7368f13900 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh.out +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh.out @@ -1,6 +1,6 @@ -PING6(56=40+8+8 bytes) ::1 --> ::1 +PING(56=40+8+8 bytes) ::1 --> ::1 1 packets transmitted, 1 packets received, 0.0% packet loss 2 ip:::send (args[2]: 6 16, args[5]: 6 0 16) 2 ip:::send (args[2]: 6 16, args[5]: 6 0 16) From nobody Wed Jan 17 16:51:12 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFX2S6yrFz58BFq; Wed, 17 Jan 2024 16:51:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFX2S3dzCz4Lr8; Wed, 17 Jan 2024 16:51:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705510272; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vhz6xkKm5k9hyWEzRNU/B9oGjOn1ywAndDUgnRo44P0=; b=uLKJdX0rwxlbYw0BL8W/c8UjbBgIG3Uju7RkXDwWTTu4OsMO+uFAQE9g39P1hesmJic0jz Tg+FJvqnIS/EmQ2ziwie0x6sLWT4KIj0K7X22HDybjZZjZcNxOE4/rA6qYcSwWa94B1aIp OofSoynixJO9xK4/qGIhDNPwhOf/F25szAZHePPAp99Ze4QmtJB60zGJd/e0MXRbNBo/Al bDJB6ZoyE+jJdDDzlNXkEN1jr1h4nQ/awZPPFcQnu6YeE2lbkSmnwa9W5bpQd99JrCsPK3 uehDOlDajrCbjM2VeIBhtpACHDcMEjFH/NGNj6v+81/XUZNqFZ99pKUxXm6AuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705510272; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vhz6xkKm5k9hyWEzRNU/B9oGjOn1ywAndDUgnRo44P0=; b=Y1gvwnUH58iL5Xr2geUA6mrFpj7VeN+cL/6a1UCwxVX1mo9j1nCE2zbdjktOIpe64CCVk6 1xlbGOpgduGBFbDmHkgUhJdS3XOno6WAKQGt9mBkaaefyhNoqrRAxBTN+sVfgMxnUkpU84 E1Jd2cJhTTQLhOfQIY+frrDX30qzkoXyhIccNffrBsbq0pbnrFtcBTszLNURouzggYwbWL ZzmERIEvdgOnd7AE7ILfXR2MZikwG79mPAXK4hGifbZFqZ54jF8/mn/f76ggR4490KZA8s vtzGbQrVX26GlEOA2Gr1hEGAZm/MBXo+vC1Gcsh3xWIHZmBM6iH7fL6Gr49oAw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705510272; a=rsa-sha256; cv=none; b=dX03dXd9Z4MXV5ju8evXfkdy3+M6ZtuNXMvm6Y8TZiJBFx0qFXnTea04iVu5uSX0N5CDmg +SSr2o6aQ2PDHjZx8yu5Bvg0Y8qsihCm9gcZB0s1k5Ime4E6KPwI7522RvXte9r8KPGrx+ zQmp1xD6RrRvxE/K3HkKds4AUW4MPW8fwgIVf8lpGsSeuTPE6P1RYJM/5PiRkOSaXbqLWx QI5Vf+Rcr3806aHvuQ1HJIifh4IqBqNVsWXTWsOHN8WHnDzA10l2gOmxi6hVa9od+QFV7J 5PNP6mYNwZbIkMjQwACQlRqZDH1vGklsxNKJlphqBjLhf0Aywth14c1bYz5dUg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFX2S2kRfzXNK; Wed, 17 Jan 2024 16:51:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HGpCl0002802; Wed, 17 Jan 2024 16:51:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HGpCTQ002799; Wed, 17 Jan 2024 16:51:12 GMT (envelope-from git) Date: Wed, 17 Jan 2024 16:51:12 GMT Message-Id: <202401171651.40HGpCTQ002799@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: bde22cf630ab - stable/14 - dtrace tests: Diff expected and actual output upon a miscompare List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: bde22cf630aba34c65583291cd72ce0afad79ffc Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=bde22cf630aba34c65583291cd72ce0afad79ffc commit bde22cf630aba34c65583291cd72ce0afad79ffc Author: Mark Johnston AuthorDate: 2024-01-10 21:38:30 +0000 Commit: Mark Johnston CommitDate: 2024-01-17 16:50:57 +0000 dtrace tests: Diff expected and actual output upon a miscompare This makes quick diagnosis of test failures easier. MFC after: 1 week (cherry picked from commit a61d2c7fbd3c87126db93dfe83b9f96fea3156f8) --- cddl/usr.sbin/dtrace/tests/tools/dtest.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cddl/usr.sbin/dtrace/tests/tools/dtest.sh b/cddl/usr.sbin/dtrace/tests/tools/dtest.sh index 83f7a6c875da..d2f3dc4ed8df 100755 --- a/cddl/usr.sbin/dtrace/tests/tools/dtest.sh +++ b/cddl/usr.sbin/dtrace/tests/tools/dtest.sh @@ -119,6 +119,10 @@ test stdout: -- $(cat $STDOUT) -- +test stdout diff: +-- +$(diff -u $EXOUT $STDOUT) +-- __EOF__ fi if [ $(stat -f '%z' $STDERR) -gt 0 ]; then From nobody Wed Jan 17 18:28:33 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBn3zFSz56P0B; Wed, 17 Jan 2024 18:28:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBn3TlZz4c0Z; Wed, 17 Jan 2024 18:28:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516113; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7e5zpCQI3dZ1x0HqHlxPYX8YYtckzP9o2YUjUM2E93Y=; b=M9W442Vh0LxE1hafExhMx3iE3rBzYFQSZ60T+wGLgPjsW6GGLXg/IWYNw7M5D70FABbYEL icbHVb40NrAcQNhFjoZ/sJ5yE4fNFfLpIZr/i5NkM0KzHe2qKQHWxpC+jhGx1joxBz54VY JDZeriXWhOPoUwQVBOvm+PD0uQCX9Bd8IwUTLkcwXZWK7yC4X215DBA5QAGFC1fm9++YOs MHljVE/1+esLkXzMvpUEpsob/7pZfISHnPTg7xtepuqpYF6GTALWyMcUVgRrDU2UX2x3cu q6erAeIuYD7DSFK/CuFEkRHhIzNdB1Wyq03EsD9qU7kQcnbeKoxlIqoDRKMbiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516113; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7e5zpCQI3dZ1x0HqHlxPYX8YYtckzP9o2YUjUM2E93Y=; b=KM8PAn82hY0Pf5AuBNHUEesrmyLch7RXsuKBp7IBcwQyAMDySdekxU1giVALRKHhH3AKZ+ kL8eLuFl+TMY1BbleZlU4x2Y/Kje1DKpKOG+dNSYBus6nMfHjRKrexUYuQ4kBQ0ThG18Dm pV1KEGNh/ocMCHSCsyw1PGQ0QpI/QnIxiYBFITULGITBzJ/FQeighZs00kJZLYMreTbNco DG297pPFEUVLUx1Ph5ZOjJGpmshZwGWwQkO5Q1sJ3F3jEf6ZqIY+lCh8Ek8EfgUpQhfLH2 gAZhi8K7Cev5VpB9OukuJd0jdfjqk6vRJULcyko7gB/Z220462wJ6FWR0INOyg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516113; a=rsa-sha256; cv=none; b=CER6/znQaiP9T6XDmPP/MmkUCQtRJukRkBypU0fcBjIBAk7HSiE9iNgVM8wscgE69nOfSz 5dMX9NFHq0zpjb00Pu4pCRNe3Qx6zUl9MgFlkdaT5hhzkLxCW2cp7qd9S5zD4a0IuiI7Y/ I06yhqrxef7mPiB5WA1AUdFAy0R5Ui3dufzp4mdtKgxIWnXUh2O+kCJ2Iabo8ZF6Xnsaz6 oXTTC40uBVeTpcqsXaG/V4s2Woea2Q/iUsFv7c4zrz074EHzhqXkUC+1I0nbdz5AeePsf5 uiqTUyOg86amBxippM3fQiUOuo8V83NG7ZVaBVOWSOQgZd3xe/H7kCg1/+1C0g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBn2X0hzZ0v; Wed, 17 Jan 2024 18:28:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISXMK063233; Wed, 17 Jan 2024 18:28:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISXFo063230; Wed, 17 Jan 2024 18:28:33 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:33 GMT Message-Id: <202401171828.40HISXFo063230@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 0fcf3a6235ee - stable/14 - cp: Add -N flag, inspired by NetBSD's similar flag List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 0fcf3a6235eefde0c31a4dc6e16241319468fad9 Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=0fcf3a6235eefde0c31a4dc6e16241319468fad9 commit 0fcf3a6235eefde0c31a4dc6e16241319468fad9 Author: Warner Losh AuthorDate: 2023-12-07 19:32:27 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 18:28:22 +0000 cp: Add -N flag, inspired by NetBSD's similar flag Add -N to supress copying of file flags when -p is specified (explicitly or implicitly). Often times we don't care about the flags or wish to be able to copy to NFS, and this comes in handy for that. FreeBSD's and NetBSD's cp are somewhat different, so I had to reimplement all but one of the patch hunks... Obtained from: NetBSD (cp.1 1.25, cp.c 1.37, utils.c 1.28 by elad) Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42673 (cherry picked from commit 5a52e3d00dd5e0209f6fcb1e41b5985191e6f4e7) cp: Don't warn for chflags() failing with EOPNOTSUPP if flags == 0 From NetBSD's utils.c 1.5 importing importing BSDI change, with light formatting changes: Author: cgd Date: Wed Feb 26 14:40:51 1997 +0000 Patch from BSDI (via Keith Bostic): >NFS doesn't support chflags; ignore errors unless there's reason >to believe we're losing bits. (Note, this still won't be right >if the server supports flags and we were trying to *remove* flags >on a file that we copied, i.e., that we didn't create.) CVS Info: utils.c 1.6 Obtained from: NetBSD Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42674 (cherry picked from commit 3e7e3b5bdf902a375decc11b95179fd2fbc0da2a) --- bin/cp/cp.1 | 14 +++++++++----- bin/cp/cp.c | 7 +++++-- bin/cp/extern.h | 2 +- bin/cp/utils.c | 15 ++++++++++++--- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/bin/cp/cp.1 b/bin/cp/cp.1 index b67718bd39b1..3862babafe7f 100644 --- a/bin/cp/cp.1 +++ b/bin/cp/cp.1 @@ -31,7 +31,7 @@ .\" .\" @(#)cp.1 8.3 (Berkeley) 4/18/94 .\" -.Dd February 23, 2022 +.Dd December 7, 2023 .Dt CP 1 .Os .Sh NAME @@ -44,7 +44,7 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpsvx +.Op Fl alNpsvx .Ar source_file target_file .Nm .Oo @@ -52,15 +52,15 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpsvx +.Op Fl alNpsvx .Ar source_file ... target_directory .Nm .Op Fl f | i | n -.Op Fl alPpsvx +.Op Fl alNPpsvx .Ar source_file target_file .Nm .Op Fl f | i | n -.Op Fl alPpsvx +.Op Fl alNPpsvx .Ar source_file ... target_directory .Sh DESCRIPTION In the first synopsis form, the @@ -90,6 +90,10 @@ option is specified, symbolic links on the command line are followed. If the .Fl R option is specified, all symbolic links are followed. +.It Fl N +When used with +.Fl p , +suppress copying file flags. .It Fl P No symbolic links are followed. This is the default if the diff --git a/bin/cp/cp.c b/bin/cp/cp.c index 24156e4b4a0b..8217a1e5d3c9 100644 --- a/bin/cp/cp.c +++ b/bin/cp/cp.c @@ -84,7 +84,7 @@ static char emptystring[] = ""; PATH_T to = { to.p_path, emptystring, "" }; -int fflag, iflag, lflag, nflag, pflag, sflag, vflag; +int Nflag, fflag, iflag, lflag, nflag, pflag, sflag, vflag; static int Hflag, Lflag, Rflag, rflag; volatile sig_atomic_t info; @@ -103,7 +103,7 @@ main(int argc, char *argv[]) fts_options = FTS_NOCHDIR | FTS_PHYSICAL; Pflag = 0; - while ((ch = getopt(argc, argv, "HLPRafilnprsvx")) != -1) + while ((ch = getopt(argc, argv, "HLNPRafilnprsvx")) != -1) switch (ch) { case 'H': Hflag = 1; @@ -113,6 +113,9 @@ main(int argc, char *argv[]) Lflag = 1; Hflag = Pflag = 0; break; + case 'N': + Nflag = 1; + break; case 'P': Pflag = 1; Hflag = Lflag = 0; diff --git a/bin/cp/extern.h b/bin/cp/extern.h index a5b86c12b2f9..2b302db7fff4 100644 --- a/bin/cp/extern.h +++ b/bin/cp/extern.h @@ -38,7 +38,7 @@ typedef struct { } PATH_T; extern PATH_T to; -extern int fflag, iflag, lflag, nflag, pflag, sflag, vflag; +extern int Nflag, fflag, iflag, lflag, nflag, pflag, sflag, vflag; extern volatile sig_atomic_t info; __BEGIN_DECLS diff --git a/bin/cp/utils.c b/bin/cp/utils.c index 02d78350067c..f43902eab3e6 100644 --- a/bin/cp/utils.c +++ b/bin/cp/utils.c @@ -355,13 +355,22 @@ setfile(struct stat *fs, int fd) rval = 1; } - if (!gotstat || fs->st_flags != ts.st_flags) + if (!Nflag && (!gotstat || fs->st_flags != ts.st_flags)) if (fdval ? fchflags(fd, fs->st_flags) : (islink ? lchflags(to.p_path, fs->st_flags) : chflags(to.p_path, fs->st_flags))) { - warn("chflags: %s", to.p_path); - rval = 1; + /* + * NFS doesn't support chflags; ignore errors unless + * there's reason to believe we're losing bits. (Note, + * this still won't be right if the server supports + * flags and we were trying to *remove* flags on a file + * that we copied, i.e., that we didn't create.) + */ + if (errno != EOPNOTSUPP || fs->st_flags != 0) { + warn("chflags: %s", to.p_path); + rval = 1; + } } return (rval); From nobody Wed Jan 17 18:28:34 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBp5984z56P96; Wed, 17 Jan 2024 18:28:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBp4Qxsz4c4w; Wed, 17 Jan 2024 18:28:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516114; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e03MNRVww2t5pHlzg6CxjEZ2zrIfR3nOs/+0HfVij4k=; b=mIiDdoEGdAXGIDAVU4P595hbxRNAgL6ZxIXnYKz0OdryosTdTJB18ev3uxejPbv+C0zUFC 2treBq78Ml6ftsdso+0L9dZX9XJeZ0o113a3gpnEbOQf0bFjhOVN8N0Pb+m9jditKsHPvB Po+1vCGG3uPey4p8JZNk62/Ec+utU/tgdTA6mBtZP1VZqevSJPJkHILRIqSd50bOLyWlPW 8grqUjTRqjkmE++fk7qRcCg1T17ORbQi83RMm1YpDhCHvN1NRe/9d3OMYCiASVYes6eAC9 I8SH05SNH9D2pQHg2kgwUMeIBc01pqRhWjVhCbtjwm01cbPw3J4MN2njfM+L9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516114; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e03MNRVww2t5pHlzg6CxjEZ2zrIfR3nOs/+0HfVij4k=; b=I/lTOhqjunkXz4ABGgYtZCN0dwfguuMxcHhEMGj9aSSx5egBlchN0Xp1+u3UXgdrbJvOlJ o80OPNVkUwIrDr8fA4A6akXeNnUqW+FUuF1+LvS3HF1GYDbBKxBQUDG6QdS7MpvxDsq8N9 siKPyAJCjQYl1HEOhVnzGzxn0i6v/bZpXIecjr+12E8fTskAJhjPKD7/0jAjgKN5r0xgLD 6R527kMHRPc+B4Ew7PDxNRuhUo3gAlLecVjPkTSSHQ1PaNtH70jYbeLjyCeiz6rr9k7515 5nJqppP7E/sXwqZdD4S4+B8kIsaJjA0hydv73j+aeFfMMbEdcU/MOArHPGsHSw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516114; a=rsa-sha256; cv=none; b=a5jY0lJMhMQPpsY3U4zL+oWWA85nMHO5hcQ90Ip1iAsU3dHqoviqK1z9qSdyrTXD7mdRDm jcRlZg2t+DJRpg8Uu2F5XdZXftZgKmr9/lGiKs/3tecWjISd0eVZjy1J1guAs2graYEAlg tzCTjeDF13uUucGEvaP5fYjKXHmYhiGYfEsO0iO5DQ0uZoPtBjKlNpvtVbE1CZHP4eQpaE vhqCW0H04kksJFRJRKQn+sSVTNtkUqJQrDydtom35SbFCR/xwCusw5PNlgL0YattFGSekB vO7ILMNjfqkJq54S1/dDmRCPeloiOw2MJjYWex92SnkTepJSz3z7gH/p9Zzikg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBp3PkbzZk1; Wed, 17 Jan 2024 18:28:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISY6l063293; Wed, 17 Jan 2024 18:28:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISYEe063290; Wed, 17 Jan 2024 18:28:34 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:34 GMT Message-Id: <202401171828.40HISYEe063290@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: d514cadacc50 - stable/14 - cp: Add tests for hard link case. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d514cadacc50bfcdef76214b2499bcef464b324e Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=d514cadacc50bfcdef76214b2499bcef464b324e commit d514cadacc50bfcdef76214b2499bcef464b324e Author: Dag-Erling Smørgrav AuthorDate: 2023-12-13 21:31:05 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 18:28:22 +0000 cp: Add tests for hard link case. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43052 (cherry picked from commit 1fead66b64822f3f8106ad09bef0b9656836fa1a) cp: Add tests for symbolic link case. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans, allanjude Differential Revision: https://reviews.freebsd.org/D43054 (cherry picked from commit d3a8e9b43b4cef5b80e3845dfa8fd1fec6e568f9) cp: Refactor the core logic. Rewrite `copy_file()` so the lflag and sflag are handled as early as possible instead of constantly checking that they're not set and then handling them at the end. This also opens the door to changing the failure logic at some future point (for instance, we might decide to fall back to copying if `errno` indicates that the file system does not support links). MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans, allanjude Differential Revision: https://reviews.freebsd.org/D43055 (cherry picked from commit d002316fd7bf0b359ea2f5518f3c10f6ad89a9ac) cp: Split the basic_symlink test case in two. This test case tests two different things: first, that copying a symlink results in a file with the same contents as the target of the symlink, rather than a second symlink, and second, that cp will refuse to copy a file to itself, or to a link to itself, or a link to its target. Leave the first part in basic_symlink, move the second part to a new test case named samefile, and slightly expand both cases. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43062 (cherry picked from commit ac56b9d83c75f548667912ffe422be6bd4f5c27e) cp: Move the flags around a bit. - The HLPR flags are grouped together at the beginning because they are the standard flags for programs using FTS. Move the N flag out from among them to its correct place in the sequence. - The Pflag variable isn't used outside main(), but moving it out lets us skip initialization and keeps it with its friends H, L and R. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43063 (cherry picked from commit 0f4467ce444b201468d2268958130f495951ca3c) cp: Further simplify the core logic. If the destination file exists but we decide unlink it, set the dne flag. This means we don't need to re-check the conditions that would have caused us to delete the file when we later need to decide whether to create or replace it. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43064 (cherry picked from commit 38509270663f336103273878cc8ddc88a225b9d8) cp: Move the -N flag in the manual page. This accidentally got left out of 0f4467ce444b. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans, allanjude Differential Revision: https://reviews.freebsd.org/D43067 (cherry picked from commit 53fc8e190241233d94e183f8a39ec39f2154dfa8) --- bin/cp/cp.1 | 10 ++-- bin/cp/cp.c | 13 +++--- bin/cp/tests/cp_test.sh | 87 ++++++++++++++++++++++++++++++++-- bin/cp/utils.c | 122 ++++++++++++++++++++++++------------------------ 4 files changed, 154 insertions(+), 78 deletions(-) diff --git a/bin/cp/cp.1 b/bin/cp/cp.1 index 3862babafe7f..d8d62ef076a1 100644 --- a/bin/cp/cp.1 +++ b/bin/cp/cp.1 @@ -31,7 +31,7 @@ .\" .\" @(#)cp.1 8.3 (Berkeley) 4/18/94 .\" -.Dd December 7, 2023 +.Dd December 14, 2023 .Dt CP 1 .Os .Sh NAME @@ -90,10 +90,6 @@ option is specified, symbolic links on the command line are followed. If the .Fl R option is specified, all symbolic links are followed. -.It Fl N -When used with -.Fl p , -suppress copying file flags. .It Fl P No symbolic links are followed. This is the default if the @@ -161,6 +157,10 @@ or options.) .It Fl l Create hard links to regular files in a hierarchy instead of copying. +.It Fl N +When used with +.Fl p , +suppress copying file flags. .It Fl n Do not overwrite an existing file. (The diff --git a/bin/cp/cp.c b/bin/cp/cp.c index 8217a1e5d3c9..852868e65dcb 100644 --- a/bin/cp/cp.c +++ b/bin/cp/cp.c @@ -85,7 +85,7 @@ static char emptystring[] = ""; PATH_T to = { to.p_path, emptystring, "" }; int Nflag, fflag, iflag, lflag, nflag, pflag, sflag, vflag; -static int Hflag, Lflag, Rflag, rflag; +static int Hflag, Lflag, Pflag, Rflag, rflag; volatile sig_atomic_t info; enum op { FILE_TO_FILE, FILE_TO_DIR, DIR_TO_DNE }; @@ -98,12 +98,11 @@ main(int argc, char *argv[]) { struct stat to_stat, tmp_stat; enum op type; - int Pflag, ch, fts_options, r, have_trailing_slash; + int ch, fts_options, r, have_trailing_slash; char *target; fts_options = FTS_NOCHDIR | FTS_PHYSICAL; - Pflag = 0; - while ((ch = getopt(argc, argv, "HLNPRafilnprsvx")) != -1) + while ((ch = getopt(argc, argv, "HLPRafilNnprsvx")) != -1) switch (ch) { case 'H': Hflag = 1; @@ -113,9 +112,6 @@ main(int argc, char *argv[]) Lflag = 1; Hflag = Pflag = 0; break; - case 'N': - Nflag = 1; - break; case 'P': Pflag = 1; Hflag = Lflag = 0; @@ -140,6 +136,9 @@ main(int argc, char *argv[]) case 'l': lflag = 1; break; + case 'N': + Nflag = 1; + break; case 'n': nflag = 1; fflag = iflag = 0; diff --git a/bin/cp/tests/cp_test.sh b/bin/cp/tests/cp_test.sh index f995d709cc3c..397c06d75bbb 100755 --- a/bin/cp/tests/cp_test.sh +++ b/bin/cp/tests/cp_test.sh @@ -51,10 +51,7 @@ basic_symlink_body() atf_check cp baz foo atf_check test '!' -L foo - atf_check -e inline:"cp: baz and baz are identical (not copied).\n" \ - -s exit:1 cp baz baz - atf_check -e inline:"cp: bar and baz are identical (not copied).\n" \ - -s exit:1 cp baz bar + atf_check cmp foo bar } atf_test_case chrdev @@ -71,6 +68,35 @@ chrdev_body() check_size trunc 0 } +atf_test_case hardlink +hardlink_body() +{ + echo "foo" >foo + atf_check cp -l foo bar + atf_check -o inline:"foo\n" cat bar + atf_check_equal "$(stat -f%d,%i foo)" "$(stat -f%d,%i bar)" +} + +atf_test_case hardlink_exists +hardlink_exists_body() +{ + echo "foo" >foo + echo "bar" >bar + atf_check -s not-exit:0 -e match:exists cp -l foo bar + atf_check -o inline:"bar\n" cat bar + atf_check_not_equal "$(stat -f%d,%i foo)" "$(stat -f%d,%i bar)" +} + +atf_test_case hardlink_exists_force +hardlink_exists_force_body() +{ + echo "foo" >foo + echo "bar" >bar + atf_check cp -fl foo bar + atf_check -o inline:"foo\n" cat bar + atf_check_equal "$(stat -f%d,%i foo)" "$(stat -f%d,%i bar)" +} + atf_test_case matching_srctgt matching_srctgt_body() { @@ -198,6 +224,22 @@ recursive_link_Lflag_body() '(' ! -L foo-mirror/foo/baz ')' } +atf_test_case samefile +samefile_body() +{ + echo "foo" >foo + ln foo bar + ln -s bar baz + atf_check -e match:"baz and baz are identical" \ + -s exit:1 cp baz baz + atf_check -e match:"bar and baz are identical" \ + -s exit:1 cp baz bar + atf_check -e match:"foo and baz are identical" \ + -s exit:1 cp baz foo + atf_check -e match:"bar and foo are identical" \ + -s exit:1 cp foo bar +} + file_is_sparse() { atf_check ${0%/*}/sparse "$1" @@ -205,7 +247,7 @@ file_is_sparse() files_are_equal() { - atf_check test "$(stat -f "%d %i" "$1")" != "$(stat -f "%d %i" "$2")" + atf_check_not_equal "$(stat -f%d,%i "$1")" "$(stat -f%d,%i "$2")" atf_check cmp "$1" "$2" } @@ -293,11 +335,42 @@ standalone_Pflag_body() atf_check -o inline:'Symbolic Link\n' stat -f %SHT baz } +atf_test_case symlink +symlink_body() +{ + echo "foo" >foo + atf_check cp -s foo bar + atf_check -o inline:"foo\n" cat bar + atf_check -o inline:"foo\n" readlink bar +} + +atf_test_case symlink_exists +symlink_exists_body() +{ + echo "foo" >foo + echo "bar" >bar + atf_check -s not-exit:0 -e match:exists cp -s foo bar + atf_check -o inline:"bar\n" cat bar +} + +atf_test_case symlink_exists_force +symlink_exists_force_body() +{ + echo "foo" >foo + echo "bar" >bar + atf_check cp -fs foo bar + atf_check -o inline:"foo\n" cat bar + atf_check -o inline:"foo\n" readlink bar +} + atf_init_test_cases() { atf_add_test_case basic atf_add_test_case basic_symlink atf_add_test_case chrdev + atf_add_test_case hardlink + atf_add_test_case hardlink_exists + atf_add_test_case hardlink_exists_force atf_add_test_case matching_srctgt atf_add_test_case matching_srctgt_contained atf_add_test_case matching_srctgt_link @@ -305,10 +378,14 @@ atf_init_test_cases() atf_add_test_case recursive_link_dflt atf_add_test_case recursive_link_Hflag atf_add_test_case recursive_link_Lflag + atf_add_test_case samefile atf_add_test_case sparse_leading_hole atf_add_test_case sparse_multiple_holes atf_add_test_case sparse_only_hole atf_add_test_case sparse_to_dev atf_add_test_case sparse_trailing_hole atf_add_test_case standalone_Pflag + atf_add_test_case symlink + atf_add_test_case symlink_exists + atf_add_test_case symlink_exists_force } diff --git a/bin/cp/utils.c b/bin/cp/utils.c index f43902eab3e6..0bb5157e3f57 100644 --- a/bin/cp/utils.c +++ b/bin/cp/utils.c @@ -68,6 +68,11 @@ static char sccsid[] = "@(#)utils.c 8.3 (Berkeley) 4/1/94"; */ #define BUFSIZE_SMALL (MAXPHYS) +/* + * Prompt used in -i case. + */ +#define YESNO "(y/n [n]) " + static ssize_t copy_fallback(int from_fd, int to_fd) { @@ -125,7 +130,6 @@ copy_file(const FTSENT *entp, int dne) * modified by the umask.) */ if (!dne) { -#define YESNO "(y/n [n]) " if (nflag) { if (vflag) printf("%s not overwritten\n", to.p_path); @@ -145,70 +149,69 @@ copy_file(const FTSENT *entp, int dne) } if (fflag) { - /* - * Remove existing destination file name create a new - * file. - */ + /* remove existing destination file */ (void)unlink(to.p_path); - if (!lflag && !sflag) { - to_fd = open(to.p_path, - O_WRONLY | O_TRUNC | O_CREAT, - fs->st_mode & ~(S_ISUID | S_ISGID)); - } - } else if (!lflag && !sflag) { - /* Overwrite existing destination file name. */ - to_fd = open(to.p_path, O_WRONLY | O_TRUNC, 0); + dne = 1; + } + } + + rval = 0; + + if (lflag) { + if (link(entp->fts_path, to.p_path) != 0) { + warn("%s", to.p_path); + rval = 1; + } + goto done; + } + + if (sflag) { + if (symlink(entp->fts_path, to.p_path) != 0) { + warn("%s", to.p_path); + rval = 1; } - } else if (!lflag && !sflag) { + goto done; + } + + if (!dne) { + /* overwrite existing destination file */ + to_fd = open(to.p_path, O_WRONLY | O_TRUNC, 0); + } else { + /* create new destination file */ to_fd = open(to.p_path, O_WRONLY | O_TRUNC | O_CREAT, fs->st_mode & ~(S_ISUID | S_ISGID)); } - - if (!lflag && !sflag && to_fd == -1) { + if (to_fd == -1) { warn("%s", to.p_path); rval = 1; goto done; } - rval = 0; - - if (!lflag && !sflag) { - wtotal = 0; - do { - if (use_copy_file_range) { - wcount = copy_file_range(from_fd, NULL, - to_fd, NULL, SSIZE_MAX, 0); - if (wcount < 0 && errno == EINVAL) { - /* Prob a non-seekable FD */ - use_copy_file_range = 0; - } - } - if (!use_copy_file_range) { - wcount = copy_fallback(from_fd, to_fd); + wtotal = 0; + do { + if (use_copy_file_range) { + wcount = copy_file_range(from_fd, NULL, + to_fd, NULL, SSIZE_MAX, 0); + if (wcount < 0 && errno == EINVAL) { + /* probably a non-seekable descriptor */ + use_copy_file_range = 0; } - wtotal += wcount; - if (info) { - info = 0; - (void)fprintf(stderr, - "%s -> %s %3d%%\n", - entp->fts_path, to.p_path, - cp_pct(wtotal, fs->st_size)); - } - } while (wcount > 0); - if (wcount < 0) { - warn("%s", entp->fts_path); - rval = 1; } - } else if (lflag) { - if (link(entp->fts_path, to.p_path)) { - warn("%s", to.p_path); - rval = 1; + if (!use_copy_file_range) { + wcount = copy_fallback(from_fd, to_fd); } - } else if (sflag) { - if (symlink(entp->fts_path, to.p_path)) { - warn("%s", to.p_path); - rval = 1; + wtotal += wcount; + if (info) { + info = 0; + (void)fprintf(stderr, + "%s -> %s %3d%%\n", + entp->fts_path, to.p_path, + cp_pct(wtotal, fs->st_size)); } + } while (wcount > 0); + if (wcount < 0) { + warn("%s", entp->fts_path); + rval = 1; } /* @@ -217,16 +220,13 @@ copy_file(const FTSENT *entp, int dne) * or its contents might be irreplaceable. It would only be safe * to remove it if we created it and its length is 0. */ - - if (!lflag && !sflag) { - if (pflag && setfile(fs, to_fd)) - rval = 1; - if (pflag && preserve_fd_acls(from_fd, to_fd) != 0) - rval = 1; - if (close(to_fd)) { - warn("%s", to.p_path); - rval = 1; - } + if (pflag && setfile(fs, to_fd)) + rval = 1; + if (pflag && preserve_fd_acls(from_fd, to_fd) != 0) + rval = 1; + if (close(to_fd)) { + warn("%s", to.p_path); + rval = 1; } done: From nobody Wed Jan 17 18:28:34 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBq2qglz56P4Y; Wed, 17 Jan 2024 18:28:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBq17HBz4cLj; Wed, 17 Jan 2024 18:28:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/RL4tOzwtVm5aEkueNqsrcg2FXEf+BT9ALJtH5/6yWU=; b=lefgm23YdYft0WV63FAbyuc70mkmmAjy2j6bAL6xnyFL1mKp4/N9B+3QLExO/PaH5Kgbf3 rwjZCn9064v/pH/rwx/h15RsVL4jZGwaCZln5671/hwFxOM/EmMFh2YThy98vdA5ttpluL 3Ql1IpJEQZYndq6VuohYHF8FL9OjT3OadlA8u73j57d2xz281O26v3Vqpdn557s8JPcPo9 XL5QO0vwkLQwY6UeyXS2Scghzh59jTY2ZZVNdrt7a1dmPuwZNvEcSHPWODCypZW5y1JV4a 87KaQGRaZscgguKfGF7uG7q46WP3MLovut6NkF+oV0EXk0W2XigsvP+FaZc0ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/RL4tOzwtVm5aEkueNqsrcg2FXEf+BT9ALJtH5/6yWU=; b=CS786y8Dd7DFDSPHS9MU0qqqpvJxNb4qmf909uf2tA06iLwuCCsQHO6pKCqGkqaefzPEzo FMjyC7ATxFsZHzYjou2/ZK/kJzuJ8ek0pQSfuyAJFrH0scB39hSa0Nu6/eY0itT7KLU6ec Q4+64JErOfWVftkz73xDQXMOlair2OBlG1Asgn+l5hbGvEVFsQq6Yo3IBfWu9E+pcKTAJ9 Eqm53nZcVER/VEZdpCS5mul8VehC8XiF0pp3i7jOXfs8MDXCHXXxSp/o0V/Tkdk9fRA5JF qTUfbk/zV6UtwqNnCHctaERoBxTI+54zNPmHApFVHPmNSUU58EaFtGVtVhGLkg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516115; a=rsa-sha256; cv=none; b=d/phuFUk8s727zPs17wptXBQwdd5phVGKSHNgdpTB5ajOckQiwPcpRejvfp9K3zPUxzmys i/8WZisnD6vDWIK6kRNE2NV59z0zrw5KI22Top8j86OaB2GGW2wpejDGD+uvxCf/+4+bzP Wan23H3+8eAMg3rpP56rBDllxYgRQ7JKwRlRPml2DcX7761IyO0WQ+h2GR05g62qDOdbFJ NmDNtNokCG4jfRh5UYMw8EWqtAXNZI2+AvzTi4zi/59nkRmGwQY1sJG7zuGkGrOW+SnGu+ LUjrspdyB3mrhDmz52+jv4cWaLYFIvDV0KvKJXEOIMeGxz6O/BS4bwOciu491Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBq092TzZcb; Wed, 17 Jan 2024 18:28:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISYIb063429; Wed, 17 Jan 2024 18:28:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISYpq063427; Wed, 17 Jan 2024 18:28:34 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:34 GMT Message-Id: <202401171828.40HISYpq063427@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: a64518b35f6e - stable/13 - cp: Add -N flag, inspired by NetBSD's similar flag List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a64518b35f6e0c1aaf3c4f8f1efadf2273b9d981 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=a64518b35f6e0c1aaf3c4f8f1efadf2273b9d981 commit a64518b35f6e0c1aaf3c4f8f1efadf2273b9d981 Author: Warner Losh AuthorDate: 2023-12-07 19:32:27 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 16:15:57 +0000 cp: Add -N flag, inspired by NetBSD's similar flag Add -N to supress copying of file flags when -p is specified (explicitly or implicitly). Often times we don't care about the flags or wish to be able to copy to NFS, and this comes in handy for that. FreeBSD's and NetBSD's cp are somewhat different, so I had to reimplement all but one of the patch hunks... Obtained from: NetBSD (cp.1 1.25, cp.c 1.37, utils.c 1.28 by elad) Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42673 (cherry picked from commit 5a52e3d00dd5e0209f6fcb1e41b5985191e6f4e7) cp: Don't warn for chflags() failing with EOPNOTSUPP if flags == 0 From NetBSD's utils.c 1.5 importing importing BSDI change, with light formatting changes: Author: cgd Date: Wed Feb 26 14:40:51 1997 +0000 Patch from BSDI (via Keith Bostic): >NFS doesn't support chflags; ignore errors unless there's reason >to believe we're losing bits. (Note, this still won't be right >if the server supports flags and we were trying to *remove* flags >on a file that we copied, i.e., that we didn't create.) CVS Info: utils.c 1.6 Obtained from: NetBSD Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42674 (cherry picked from commit 3e7e3b5bdf902a375decc11b95179fd2fbc0da2a) --- bin/cp/cp.1 | 14 +++++++++----- bin/cp/cp.c | 7 +++++-- bin/cp/extern.h | 2 +- bin/cp/utils.c | 15 ++++++++++++--- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/bin/cp/cp.1 b/bin/cp/cp.1 index b67718bd39b1..3862babafe7f 100644 --- a/bin/cp/cp.1 +++ b/bin/cp/cp.1 @@ -31,7 +31,7 @@ .\" .\" @(#)cp.1 8.3 (Berkeley) 4/18/94 .\" -.Dd February 23, 2022 +.Dd December 7, 2023 .Dt CP 1 .Os .Sh NAME @@ -44,7 +44,7 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpsvx +.Op Fl alNpsvx .Ar source_file target_file .Nm .Oo @@ -52,15 +52,15 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpsvx +.Op Fl alNpsvx .Ar source_file ... target_directory .Nm .Op Fl f | i | n -.Op Fl alPpsvx +.Op Fl alNPpsvx .Ar source_file target_file .Nm .Op Fl f | i | n -.Op Fl alPpsvx +.Op Fl alNPpsvx .Ar source_file ... target_directory .Sh DESCRIPTION In the first synopsis form, the @@ -90,6 +90,10 @@ option is specified, symbolic links on the command line are followed. If the .Fl R option is specified, all symbolic links are followed. +.It Fl N +When used with +.Fl p , +suppress copying file flags. .It Fl P No symbolic links are followed. This is the default if the diff --git a/bin/cp/cp.c b/bin/cp/cp.c index 24156e4b4a0b..8217a1e5d3c9 100644 --- a/bin/cp/cp.c +++ b/bin/cp/cp.c @@ -84,7 +84,7 @@ static char emptystring[] = ""; PATH_T to = { to.p_path, emptystring, "" }; -int fflag, iflag, lflag, nflag, pflag, sflag, vflag; +int Nflag, fflag, iflag, lflag, nflag, pflag, sflag, vflag; static int Hflag, Lflag, Rflag, rflag; volatile sig_atomic_t info; @@ -103,7 +103,7 @@ main(int argc, char *argv[]) fts_options = FTS_NOCHDIR | FTS_PHYSICAL; Pflag = 0; - while ((ch = getopt(argc, argv, "HLPRafilnprsvx")) != -1) + while ((ch = getopt(argc, argv, "HLNPRafilnprsvx")) != -1) switch (ch) { case 'H': Hflag = 1; @@ -113,6 +113,9 @@ main(int argc, char *argv[]) Lflag = 1; Hflag = Pflag = 0; break; + case 'N': + Nflag = 1; + break; case 'P': Pflag = 1; Hflag = Lflag = 0; diff --git a/bin/cp/extern.h b/bin/cp/extern.h index 314cfc086ecb..f242d11cd418 100644 --- a/bin/cp/extern.h +++ b/bin/cp/extern.h @@ -38,7 +38,7 @@ typedef struct { } PATH_T; extern PATH_T to; -extern int fflag, iflag, lflag, nflag, pflag, sflag, vflag; +extern int Nflag, fflag, iflag, lflag, nflag, pflag, sflag, vflag; extern volatile sig_atomic_t info; __BEGIN_DECLS diff --git a/bin/cp/utils.c b/bin/cp/utils.c index 02d78350067c..f43902eab3e6 100644 --- a/bin/cp/utils.c +++ b/bin/cp/utils.c @@ -355,13 +355,22 @@ setfile(struct stat *fs, int fd) rval = 1; } - if (!gotstat || fs->st_flags != ts.st_flags) + if (!Nflag && (!gotstat || fs->st_flags != ts.st_flags)) if (fdval ? fchflags(fd, fs->st_flags) : (islink ? lchflags(to.p_path, fs->st_flags) : chflags(to.p_path, fs->st_flags))) { - warn("chflags: %s", to.p_path); - rval = 1; + /* + * NFS doesn't support chflags; ignore errors unless + * there's reason to believe we're losing bits. (Note, + * this still won't be right if the server supports + * flags and we were trying to *remove* flags on a file + * that we copied, i.e., that we didn't create.) + */ + if (errno != EOPNOTSUPP || fs->st_flags != 0) { + warn("chflags: %s", to.p_path); + rval = 1; + } } return (rval); From nobody Wed Jan 17 18:28:35 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBr0wDLz56P0M; Wed, 17 Jan 2024 18:28:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBq543bz4cLr; Wed, 17 Jan 2024 18:28:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=icm6lLt8alUn4/AGfzSjC5+eSUwsooQe8CZ6GKDAGvM=; b=G+aqNV0ofvnj4Ytrf6jrZa4Qi/8ZQP/wf5MI/DklegS+dGv46pCpYK0Fduq+XbA4dqHIP4 5xH2DrYGSUdBgV9vgeIdPWxs1+E0E9N9CH7my4eHunjB6DEonoVjjfoQyPsnx2/dClu42A 2Suvu8hnyeLLxGgIu+VrkvAb4nMJvk+vQl+P85n/hugRlbGmvdnyEyXXOcjz63wLSDnmch Yh3bz0nKHtDthULaN7aXLX+srATjZny8i5HJZuNHnsuNIHw4fx71dOT8LgySUYvfR4Oft2 Zg7uoF4DdlgrjoJXK81kZKLk+mjiq8CouwM1wY8JVyc6a2fq5zJVyYLqlictHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=icm6lLt8alUn4/AGfzSjC5+eSUwsooQe8CZ6GKDAGvM=; b=cqVTIZt5F6MoA0F6vvySrKGC2oZY2a1vFoDhuSY/OPSAyqOW2YyEkgMLrQFXgpAYLo5nDf GhmM4JKbEDahMXIYjGu1AYofi6UbDUik9bziIUY4blT/E+Hx4xyjwAi6P2V3xKEz8inp5g Eu0Oscs3DHY97Rsd7B+53gvq5ES9D9mks7oHOizOfhgmgatbGzV9qP7Z/Zad4lfD9P1ESb QcbdbbP0vInM5/SfDX6WoJPStygcSU2gQnsZtS5Mo1FQK1SltqZWPbjUieZU4AEJWwoaH8 S/1+PRDkClSJ1Jg7vKvkjT/x3dVrx8grmytfLMKY/5zMeGggxArpqbhqRhp2Og== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516115; a=rsa-sha256; cv=none; b=Ys9mNFVpvCu2ytCAsEgqSLtOExan83OaMFFA29ZV42RvT7+29p3S9b7/DcFrQj5bl9Daly WjHS4s2IkiGN2Iv6OvjcAiR2fum1tiPZmW7YtKwdFNk7pDj+MsowEHiBze2rqRoBEbkN+g dp2whNNk5Ec+l7spcpc7dN4pr8sAY1LtXx0kGpoqiy7EpTtPbFzqbMmtpkDG8xYvvMcWrp rbG02RKrFl/UBRVt+UQtJHHkEa/o/4OMRgINFpf0sk0g7a6H5bgJ7fyLnKvfR0EHkqldYw 681s1zPU1WguyYv/69O0jYKpnkT1S5c9nGH4oeCM7nj2SdiMELq2gVuOzvR5ww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBq49zYzZnB; Wed, 17 Jan 2024 18:28:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISZTa063480; Wed, 17 Jan 2024 18:28:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISZjG063477; Wed, 17 Jan 2024 18:28:35 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:35 GMT Message-Id: <202401171828.40HISZjG063477@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 2ba859e1996a - stable/14 - find: Add a warning about -delete. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2ba859e1996a59a7ee9bed6871556c8f9fa8c57a Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=2ba859e1996a59a7ee9bed6871556c8f9fa8c57a commit 2ba859e1996a59a7ee9bed6871556c8f9fa8c57a Author: Dag-Erling Smørgrav AuthorDate: 2023-12-21 23:41:05 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 18:28:22 +0000 find: Add a warning about -delete. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: pauamma_gundo.com Differential Revision: https://reviews.freebsd.org/D43162 (cherry picked from commit 45438f9c8b5b91ebf5606b4a98e891559913d25b) --- usr.bin/find/find.1 | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/usr.bin/find/find.1 b/usr.bin/find/find.1 index 5f559a12ec50..afa4c7ab8215 100644 --- a/usr.bin/find/find.1 +++ b/usr.bin/find/find.1 @@ -30,7 +30,7 @@ .\" .\" @(#)find.1 8.7 (Berkeley) 5/9/95 .\" -.Dd January 23, 2023 +.Dd December 22, 2023 .Dt FIND 1 .Os .Sh NAME @@ -349,6 +349,22 @@ The .Ic -delete primary will fail to delete a directory if it is not empty. Following symlinks is incompatible with this option. +.Pp +.Em WARNING : +The +.Ic -delete +primary will immediately attempt to delete the current path when +evaluated. +Be mindful of its place in the expression; as a general rule, it +should almost always come last. +If in doubt, try running with +.Ic -print +in place of +.Ic -delete +first. +See +.Sx OPERATORS +below for additional information on the order of evaluation. .It Ic -depth Always true; same as the non-portable From nobody Wed Jan 17 18:28:36 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBr3xwcz56P2G; Wed, 17 Jan 2024 18:28:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBr2Rxcz4cP7; Wed, 17 Jan 2024 18:28:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516116; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IFVtzZxdamw8efRd5pKNjt/7CTLIre0MaemqGKcsKMU=; b=iIHsKoWfDEvMhVT5ZuQeUG85BnPnjkSASUAtgqsLm7Fv9URRTDZc+SEp5HTQqMdJCaufX1 azgsu+MFX7gqmrxXty4OtaSyvC3unBDYwFqNnsvb09cy5aX9lSivYlsUiwh4qCOfOlM6UE RAigSUKeHK8NuiIWYqAqUz4k1DZUVR98tmcDSl4tyEgDrJPfeF0JmuthjRt4OERT2mNlrz O2FTL29Lw3auKHGEciTDVvf45njLTVWZXDULMSNdLyu9Nu+ovlOxJ9gQgizCwQQUM8rSll RR8yIQhEYrvRjzwLTbU5kHb2lmUzpxxV2XEjhZ1vLjUs1W1YbmgrugH5/Bdm7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516116; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IFVtzZxdamw8efRd5pKNjt/7CTLIre0MaemqGKcsKMU=; b=DKljFGr5YiJxaHIC4QzIaijeoB413rz9nSsPP/AQH5PoQJUsoTKrUUK208DaxFfeC0pSzl bBNqd87ZmuXmClJjKBDzokjjGftPHUJf9DM12t7Zym4lLkl6qZvIVcxKeAAtnYxl07I/oz 4VE91Cz3+LyYPnUZUxKw299viZEAto86ST6rViueaGjroMer84eS4KKXQn0D7a0fVZNvzA sfPd3628Sc/nXawga9hFqvTs7Y/JHW4VMUviT46wdbVcLIfi+IqL+4h6CrSTQ12g/cOMIQ uvnzu3HpnqcmZ5PqTTt+wq/O7o2OvvZ4Uy/7D+ZcgIHltDd0ZXlG9xsSPgWqkw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516116; a=rsa-sha256; cv=none; b=spHZgB4A/f5liIsW0kZVSPSkh9g3/tYyhyDzsBwAwROIU0RrftRFo7RWDR2b4CHRBwQDfW DE4tFi9XHQ3YrsAc6xZvjLV9o0Ri/LqZy00SzyvGi7tWG4z5Genr674o16ndNB4kSCPqHz IHlxdzgi0tCF5fOODj2MC7T1RtB4P/yVFUxq3QmzkXEzezzWU+MQmqi84hetn9dJGbmY7a 5xoUaau1JH1+f+0wFSzHJ9Ii9KCKdRxwT0K36Vi5E7uzTnuDJtRnILIVLjpl9aMq/DSO+x hD3A6MpU/8yoaqigzDePcvL5VT0lziVWy3RiDW6GjwkzeFGFIzCxTess0kgBIg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBr1FV8zZnC; Wed, 17 Jan 2024 18:28:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISaut063534; Wed, 17 Jan 2024 18:28:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISa8b063531; Wed, 17 Jan 2024 18:28:36 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:36 GMT Message-Id: <202401171828.40HISa8b063531@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 006017419bea - stable/13 - cp: Add tests for hard link case. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 006017419beab30f45131ca3953c7e4273e9aa65 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=006017419beab30f45131ca3953c7e4273e9aa65 commit 006017419beab30f45131ca3953c7e4273e9aa65 Author: Dag-Erling Smørgrav AuthorDate: 2023-12-13 21:31:05 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 16:15:59 +0000 cp: Add tests for hard link case. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43052 (cherry picked from commit 1fead66b64822f3f8106ad09bef0b9656836fa1a) cp: Add tests for symbolic link case. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans, allanjude Differential Revision: https://reviews.freebsd.org/D43054 (cherry picked from commit d3a8e9b43b4cef5b80e3845dfa8fd1fec6e568f9) cp: Refactor the core logic. Rewrite `copy_file()` so the lflag and sflag are handled as early as possible instead of constantly checking that they're not set and then handling them at the end. This also opens the door to changing the failure logic at some future point (for instance, we might decide to fall back to copying if `errno` indicates that the file system does not support links). MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans, allanjude Differential Revision: https://reviews.freebsd.org/D43055 (cherry picked from commit d002316fd7bf0b359ea2f5518f3c10f6ad89a9ac) cp: Split the basic_symlink test case in two. This test case tests two different things: first, that copying a symlink results in a file with the same contents as the target of the symlink, rather than a second symlink, and second, that cp will refuse to copy a file to itself, or to a link to itself, or a link to its target. Leave the first part in basic_symlink, move the second part to a new test case named samefile, and slightly expand both cases. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43062 (cherry picked from commit ac56b9d83c75f548667912ffe422be6bd4f5c27e) cp: Move the flags around a bit. - The HLPR flags are grouped together at the beginning because they are the standard flags for programs using FTS. Move the N flag out from among them to its correct place in the sequence. - The Pflag variable isn't used outside main(), but moving it out lets us skip initialization and keeps it with its friends H, L and R. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43063 (cherry picked from commit 0f4467ce444b201468d2268958130f495951ca3c) cp: Further simplify the core logic. If the destination file exists but we decide unlink it, set the dne flag. This means we don't need to re-check the conditions that would have caused us to delete the file when we later need to decide whether to create or replace it. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43064 (cherry picked from commit 38509270663f336103273878cc8ddc88a225b9d8) cp: Move the -N flag in the manual page. This accidentally got left out of 0f4467ce444b. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans, allanjude Differential Revision: https://reviews.freebsd.org/D43067 (cherry picked from commit 53fc8e190241233d94e183f8a39ec39f2154dfa8) --- bin/cp/cp.1 | 10 ++-- bin/cp/cp.c | 13 +++--- bin/cp/tests/cp_test.sh | 87 ++++++++++++++++++++++++++++++++-- bin/cp/utils.c | 122 ++++++++++++++++++++++++------------------------ 4 files changed, 154 insertions(+), 78 deletions(-) diff --git a/bin/cp/cp.1 b/bin/cp/cp.1 index 3862babafe7f..d8d62ef076a1 100644 --- a/bin/cp/cp.1 +++ b/bin/cp/cp.1 @@ -31,7 +31,7 @@ .\" .\" @(#)cp.1 8.3 (Berkeley) 4/18/94 .\" -.Dd December 7, 2023 +.Dd December 14, 2023 .Dt CP 1 .Os .Sh NAME @@ -90,10 +90,6 @@ option is specified, symbolic links on the command line are followed. If the .Fl R option is specified, all symbolic links are followed. -.It Fl N -When used with -.Fl p , -suppress copying file flags. .It Fl P No symbolic links are followed. This is the default if the @@ -161,6 +157,10 @@ or options.) .It Fl l Create hard links to regular files in a hierarchy instead of copying. +.It Fl N +When used with +.Fl p , +suppress copying file flags. .It Fl n Do not overwrite an existing file. (The diff --git a/bin/cp/cp.c b/bin/cp/cp.c index 8217a1e5d3c9..852868e65dcb 100644 --- a/bin/cp/cp.c +++ b/bin/cp/cp.c @@ -85,7 +85,7 @@ static char emptystring[] = ""; PATH_T to = { to.p_path, emptystring, "" }; int Nflag, fflag, iflag, lflag, nflag, pflag, sflag, vflag; -static int Hflag, Lflag, Rflag, rflag; +static int Hflag, Lflag, Pflag, Rflag, rflag; volatile sig_atomic_t info; enum op { FILE_TO_FILE, FILE_TO_DIR, DIR_TO_DNE }; @@ -98,12 +98,11 @@ main(int argc, char *argv[]) { struct stat to_stat, tmp_stat; enum op type; - int Pflag, ch, fts_options, r, have_trailing_slash; + int ch, fts_options, r, have_trailing_slash; char *target; fts_options = FTS_NOCHDIR | FTS_PHYSICAL; - Pflag = 0; - while ((ch = getopt(argc, argv, "HLNPRafilnprsvx")) != -1) + while ((ch = getopt(argc, argv, "HLPRafilNnprsvx")) != -1) switch (ch) { case 'H': Hflag = 1; @@ -113,9 +112,6 @@ main(int argc, char *argv[]) Lflag = 1; Hflag = Pflag = 0; break; - case 'N': - Nflag = 1; - break; case 'P': Pflag = 1; Hflag = Lflag = 0; @@ -140,6 +136,9 @@ main(int argc, char *argv[]) case 'l': lflag = 1; break; + case 'N': + Nflag = 1; + break; case 'n': nflag = 1; fflag = iflag = 0; diff --git a/bin/cp/tests/cp_test.sh b/bin/cp/tests/cp_test.sh index f995d709cc3c..397c06d75bbb 100755 --- a/bin/cp/tests/cp_test.sh +++ b/bin/cp/tests/cp_test.sh @@ -51,10 +51,7 @@ basic_symlink_body() atf_check cp baz foo atf_check test '!' -L foo - atf_check -e inline:"cp: baz and baz are identical (not copied).\n" \ - -s exit:1 cp baz baz - atf_check -e inline:"cp: bar and baz are identical (not copied).\n" \ - -s exit:1 cp baz bar + atf_check cmp foo bar } atf_test_case chrdev @@ -71,6 +68,35 @@ chrdev_body() check_size trunc 0 } +atf_test_case hardlink +hardlink_body() +{ + echo "foo" >foo + atf_check cp -l foo bar + atf_check -o inline:"foo\n" cat bar + atf_check_equal "$(stat -f%d,%i foo)" "$(stat -f%d,%i bar)" +} + +atf_test_case hardlink_exists +hardlink_exists_body() +{ + echo "foo" >foo + echo "bar" >bar + atf_check -s not-exit:0 -e match:exists cp -l foo bar + atf_check -o inline:"bar\n" cat bar + atf_check_not_equal "$(stat -f%d,%i foo)" "$(stat -f%d,%i bar)" +} + +atf_test_case hardlink_exists_force +hardlink_exists_force_body() +{ + echo "foo" >foo + echo "bar" >bar + atf_check cp -fl foo bar + atf_check -o inline:"foo\n" cat bar + atf_check_equal "$(stat -f%d,%i foo)" "$(stat -f%d,%i bar)" +} + atf_test_case matching_srctgt matching_srctgt_body() { @@ -198,6 +224,22 @@ recursive_link_Lflag_body() '(' ! -L foo-mirror/foo/baz ')' } +atf_test_case samefile +samefile_body() +{ + echo "foo" >foo + ln foo bar + ln -s bar baz + atf_check -e match:"baz and baz are identical" \ + -s exit:1 cp baz baz + atf_check -e match:"bar and baz are identical" \ + -s exit:1 cp baz bar + atf_check -e match:"foo and baz are identical" \ + -s exit:1 cp baz foo + atf_check -e match:"bar and foo are identical" \ + -s exit:1 cp foo bar +} + file_is_sparse() { atf_check ${0%/*}/sparse "$1" @@ -205,7 +247,7 @@ file_is_sparse() files_are_equal() { - atf_check test "$(stat -f "%d %i" "$1")" != "$(stat -f "%d %i" "$2")" + atf_check_not_equal "$(stat -f%d,%i "$1")" "$(stat -f%d,%i "$2")" atf_check cmp "$1" "$2" } @@ -293,11 +335,42 @@ standalone_Pflag_body() atf_check -o inline:'Symbolic Link\n' stat -f %SHT baz } +atf_test_case symlink +symlink_body() +{ + echo "foo" >foo + atf_check cp -s foo bar + atf_check -o inline:"foo\n" cat bar + atf_check -o inline:"foo\n" readlink bar +} + +atf_test_case symlink_exists +symlink_exists_body() +{ + echo "foo" >foo + echo "bar" >bar + atf_check -s not-exit:0 -e match:exists cp -s foo bar + atf_check -o inline:"bar\n" cat bar +} + +atf_test_case symlink_exists_force +symlink_exists_force_body() +{ + echo "foo" >foo + echo "bar" >bar + atf_check cp -fs foo bar + atf_check -o inline:"foo\n" cat bar + atf_check -o inline:"foo\n" readlink bar +} + atf_init_test_cases() { atf_add_test_case basic atf_add_test_case basic_symlink atf_add_test_case chrdev + atf_add_test_case hardlink + atf_add_test_case hardlink_exists + atf_add_test_case hardlink_exists_force atf_add_test_case matching_srctgt atf_add_test_case matching_srctgt_contained atf_add_test_case matching_srctgt_link @@ -305,10 +378,14 @@ atf_init_test_cases() atf_add_test_case recursive_link_dflt atf_add_test_case recursive_link_Hflag atf_add_test_case recursive_link_Lflag + atf_add_test_case samefile atf_add_test_case sparse_leading_hole atf_add_test_case sparse_multiple_holes atf_add_test_case sparse_only_hole atf_add_test_case sparse_to_dev atf_add_test_case sparse_trailing_hole atf_add_test_case standalone_Pflag + atf_add_test_case symlink + atf_add_test_case symlink_exists + atf_add_test_case symlink_exists_force } diff --git a/bin/cp/utils.c b/bin/cp/utils.c index f43902eab3e6..0bb5157e3f57 100644 --- a/bin/cp/utils.c +++ b/bin/cp/utils.c @@ -68,6 +68,11 @@ static char sccsid[] = "@(#)utils.c 8.3 (Berkeley) 4/1/94"; */ #define BUFSIZE_SMALL (MAXPHYS) +/* + * Prompt used in -i case. + */ +#define YESNO "(y/n [n]) " + static ssize_t copy_fallback(int from_fd, int to_fd) { @@ -125,7 +130,6 @@ copy_file(const FTSENT *entp, int dne) * modified by the umask.) */ if (!dne) { -#define YESNO "(y/n [n]) " if (nflag) { if (vflag) printf("%s not overwritten\n", to.p_path); @@ -145,70 +149,69 @@ copy_file(const FTSENT *entp, int dne) } if (fflag) { - /* - * Remove existing destination file name create a new - * file. - */ + /* remove existing destination file */ (void)unlink(to.p_path); - if (!lflag && !sflag) { - to_fd = open(to.p_path, - O_WRONLY | O_TRUNC | O_CREAT, - fs->st_mode & ~(S_ISUID | S_ISGID)); - } - } else if (!lflag && !sflag) { - /* Overwrite existing destination file name. */ - to_fd = open(to.p_path, O_WRONLY | O_TRUNC, 0); + dne = 1; + } + } + + rval = 0; + + if (lflag) { + if (link(entp->fts_path, to.p_path) != 0) { + warn("%s", to.p_path); + rval = 1; + } + goto done; + } + + if (sflag) { + if (symlink(entp->fts_path, to.p_path) != 0) { + warn("%s", to.p_path); + rval = 1; } - } else if (!lflag && !sflag) { + goto done; + } + + if (!dne) { + /* overwrite existing destination file */ + to_fd = open(to.p_path, O_WRONLY | O_TRUNC, 0); + } else { + /* create new destination file */ to_fd = open(to.p_path, O_WRONLY | O_TRUNC | O_CREAT, fs->st_mode & ~(S_ISUID | S_ISGID)); } - - if (!lflag && !sflag && to_fd == -1) { + if (to_fd == -1) { warn("%s", to.p_path); rval = 1; goto done; } - rval = 0; - - if (!lflag && !sflag) { - wtotal = 0; - do { - if (use_copy_file_range) { - wcount = copy_file_range(from_fd, NULL, - to_fd, NULL, SSIZE_MAX, 0); - if (wcount < 0 && errno == EINVAL) { - /* Prob a non-seekable FD */ - use_copy_file_range = 0; - } - } - if (!use_copy_file_range) { - wcount = copy_fallback(from_fd, to_fd); + wtotal = 0; + do { + if (use_copy_file_range) { + wcount = copy_file_range(from_fd, NULL, + to_fd, NULL, SSIZE_MAX, 0); + if (wcount < 0 && errno == EINVAL) { + /* probably a non-seekable descriptor */ + use_copy_file_range = 0; } - wtotal += wcount; - if (info) { - info = 0; - (void)fprintf(stderr, - "%s -> %s %3d%%\n", - entp->fts_path, to.p_path, - cp_pct(wtotal, fs->st_size)); - } - } while (wcount > 0); - if (wcount < 0) { - warn("%s", entp->fts_path); - rval = 1; } - } else if (lflag) { - if (link(entp->fts_path, to.p_path)) { - warn("%s", to.p_path); - rval = 1; + if (!use_copy_file_range) { + wcount = copy_fallback(from_fd, to_fd); } - } else if (sflag) { - if (symlink(entp->fts_path, to.p_path)) { - warn("%s", to.p_path); - rval = 1; + wtotal += wcount; + if (info) { + info = 0; + (void)fprintf(stderr, + "%s -> %s %3d%%\n", + entp->fts_path, to.p_path, + cp_pct(wtotal, fs->st_size)); } + } while (wcount > 0); + if (wcount < 0) { + warn("%s", entp->fts_path); + rval = 1; } /* @@ -217,16 +220,13 @@ copy_file(const FTSENT *entp, int dne) * or its contents might be irreplaceable. It would only be safe * to remove it if we created it and its length is 0. */ - - if (!lflag && !sflag) { - if (pflag && setfile(fs, to_fd)) - rval = 1; - if (pflag && preserve_fd_acls(from_fd, to_fd) != 0) - rval = 1; - if (close(to_fd)) { - warn("%s", to.p_path); - rval = 1; - } + if (pflag && setfile(fs, to_fd)) + rval = 1; + if (pflag && preserve_fd_acls(from_fd, to_fd) != 0) + rval = 1; + if (close(to_fd)) { + warn("%s", to.p_path); + rval = 1; } done: From nobody Wed Jan 17 18:28:36 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBs1f47z56P4j; Wed, 17 Jan 2024 18:28:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBr6MT2z4c84; Wed, 17 Jan 2024 18:28:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516116; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YFxhqtY8rGaiszZlAVTBHSR7PzM+2iDF80TAHVmu0co=; b=DLO7NdcfkN6mZ3llDa9hbTLUNCQ5Vm6SVW9auAWo+Kr2MUx+3ZiIjg+aEnFxHVZA3dYBJ7 0OfMicVKyHoICq91g19wrJtgWNlQGnT5gqCYLgH4mPct+Vguj0nnI50pqVCd0w7ttMT0qA s8YeYsTZEUoWg//MwO+aNu8szoW1RS82n4GtO1QVHsHWM7Qure8RAiO5N6xFju8SmsKD79 cEF3mpXcVoWjf7/zgu1wiUKZoxWeuKa26uhVR96RdKS2NQCPceT23smNjLrnHLdb5oD1fR CMBKVuq5qaFQOLzh5VAjBMDUe2EU6lR7urrU4ScA4P2D6eiQMrtF4rUod7QCNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516116; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YFxhqtY8rGaiszZlAVTBHSR7PzM+2iDF80TAHVmu0co=; b=V/U53rqL15vMvtaE4T75gIzdBJgzEFqbkJ2e+JDFbqFjC0aKq0b/ADGWEiwX36ILd1HnbG +ztib8y6zTW3nS32xPdLdKSDBhZeJjN9Nsr+E+ZN9kfbdU4RCregbNRKNSP7R5zX+FjeBF hCXjBMJgkEkEhtX0h9a7XPumxGTx2RbXlYX9XGl/o3PmSywOiR/frYRQcrZdfF/xqkk6Sg tOD2wSFK8NgFivUAIrVCtvIQgIXP+0YbRAUEP6Is2UDIdrwMAQSvOi+WJMwcqc2uBI6xR/ IsTMd8kzIevs1W/r9O3oR5gCpID1XswEU55cKLHzwMtjxBZQTwNccgBNY+aCKQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516116; a=rsa-sha256; cv=none; b=wDJhza1uorq7YJKxLDumsFPDmqEqkpBreSTLEUKJ8eE8rCBTI8Ye9/GrCLVGrYvYsqkn1+ KzMa2+3jS/MZ2fB4U061LbVpVmSYZNu6VGyu10SX0tH5dtQIwkpmNvNClrU3dBbTobeDRi nRqihQp3//dc2XREXj+9eq0UdCNAj4X5ps9aBYrduObvutL/sQG9WkK1mXn+mSTVnm5iZM Uy+WCHohwYgTwr07dA5xbtggDVN9lSX22O2ULEbtFE8/wuVhD0iVZdJ7J8UkzkY9Obpsen EgHkEg0rhNIbXfSlP9FQ/RI1JWa0dQd4WOXgsenvhvUKJwoo5uweUS/hLSsGrg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBr5QzCzZRT; Wed, 17 Jan 2024 18:28:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISaXP063585; Wed, 17 Jan 2024 18:28:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISaxP063582; Wed, 17 Jan 2024 18:28:36 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:36 GMT Message-Id: <202401171828.40HISaxP063582@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 93805b27eacc - stable/14 - asa: Rewrite to fix line termination issue. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 93805b27eacceeccccf545081fdc1c82c8473bff Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=93805b27eacceeccccf545081fdc1c82c8473bff commit 93805b27eacceeccccf545081fdc1c82c8473bff Author: Dag-Erling Smørgrav AuthorDate: 2024-01-09 14:09:41 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 18:28:22 +0000 asa: Rewrite to fix line termination issue. The standard is somewhat unclear, but on the balance, I believe that the phrase “the rest of the input line” should be interpreted to mean the rest of the input line including the terminating newline if and only if there is one. This means the current implementation is incorrect on two points: - First, it suppresses the previous line's newline in the '1' case. - Second, it unconditionally emits a newline at the end of the output for non-empty input, even if the input did not end with a newline. Resolve this by rewriting the main loop. Instead of special-casing the first line and then assuming that every line ends with a newline, we remember how each line ends and emit that either at the beginning of the next line or at the end of the file except in the one case ('+') where the standard explicitly says not to. While here, try to reduce diff to upstream a little and update their RCS tag to reflect the fact that while we've diverged significantly from them, we've incorporated all their changes. Remove the useless second RCS tag. We also update the tests to account for the change in interpretation of the '1' case and add a test case for unterminated input. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43326 (cherry picked from commit c2356a440db91c106867d45c94b3d6d7bc0e50f0) --- usr.bin/asa/asa.c | 102 +++++++++++++++++++----------------------- usr.bin/asa/tests/asa_test.sh | 15 ++++++- 2 files changed, 59 insertions(+), 58 deletions(-) diff --git a/usr.bin/asa/asa.c b/usr.bin/asa/asa.c index 757278442a52..9839dbf8a722 100644 --- a/usr.bin/asa/asa.c +++ b/usr.bin/asa/asa.c @@ -1,4 +1,4 @@ -/* $NetBSD: asa.c,v 1.11 1997/09/20 14:55:00 lukem Exp $ */ +/* $NetBSD: asa.c,v 1.17 2016/09/05 00:40:28 sevan Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -32,13 +32,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#if 0 -#ifndef lint -__RCSID("$NetBSD: asa.c,v 1.11 1997/09/20 14:55:00 lukem Exp $"); -#endif -#endif #include +#include #include #include #include @@ -50,38 +45,33 @@ static void usage(void) __dead2; int main(int argc, char *argv[]) { - int ch, exval; FILE *fp; - const char *fn; + int ch, exval; while ((ch = getopt(argc, argv, "")) != -1) { switch (ch) { - case '?': default: usage(); - /*NOTREACHED*/ } } argc -= optind; argv += optind; exval = 0; - if (argc == 0) + if (*argv == NULL) { asa(stdin); - else { - while ((fn = *argv++) != NULL) { - if (strcmp(fn, "-") == 0) { + } else { + do { + if (strcmp(*argv, "-") == 0) { asa(stdin); + } else if ((fp = fopen(*argv, "r")) == NULL) { + warn("%s", *argv); + exval = 1; } else { - if ((fp = fopen(fn, "r")) == NULL) { - warn("%s", fn); - exval = 1; - continue; - } asa(fp); fclose(fp); } - } + } while (*++argv != NULL); } if (fflush(stdout) != 0) @@ -93,7 +83,6 @@ main(int argc, char *argv[]) static void usage(void) { - fprintf(stderr, "usage: asa [file ...]\n"); exit(1); } @@ -101,52 +90,53 @@ usage(void) static void asa(FILE *f) { - size_t len; char *buf; + size_t len; + bool eol = false; - if ((buf = fgetln(f, &len)) != NULL) { - if (buf[len - 1] == '\n') - buf[--len] = '\0'; - /* special case the first line */ + while ((buf = fgetln(f, &len)) != NULL) { + /* in all cases but '+', terminate previous line, if any */ + if (buf[0] != '+' && eol) + putchar('\n'); + /* examine and translate the control character */ switch (buf[0]) { + default: + /* + * “It is suggested that implementations treat + * characters other than 0, 1, and '+' as + * in the absence of any compelling reason to do + * otherwise” (POSIX.1-2017) + */ + case ' ': + /* nothing */ + break; case '0': putchar('\n'); break; case '1': putchar('\f'); break; - } - - if (len > 1 && buf[0] && buf[1]) - printf("%.*s", (int)(len - 1), buf + 1); - - while ((buf = fgetln(f, &len)) != NULL) { - if (buf[len - 1] == '\n') - buf[--len] = '\0'; - switch (buf[0]) { - default: - case ' ': - putchar('\n'); - break; - case '0': - putchar('\n'); - putchar('\n'); - break; - case '1': - putchar('\f'); - break; - case '+': + case '+': + /* + * “If the '+' is the first character in the + * input, it shall be equivalent to .” + * (POSIX.1-2017) + */ + if (eol) putchar('\r'); - break; - } - - if (len > 1 && buf[0] && buf[1]) - printf("%.*s", (int)(len - 1), buf + 1); + break; } - - putchar('\n'); + /* trim newline if there is one */ + if ((eol = (buf[len - 1] == '\n'))) + --len; + /* print the rest of the input line */ + if (len > 1 && buf[0] && buf[1]) + fwrite(buf + 1, 1, len - 1, stdout); } - + /* terminate the last line, if any */ + if (eol) + putchar('\n'); + /* check for output errors */ if (ferror(stdout) != 0) err(1, "stdout"); } diff --git a/usr.bin/asa/tests/asa_test.sh b/usr.bin/asa/tests/asa_test.sh index 429342d530e4..91515bb55d95 100644 --- a/usr.bin/asa/tests/asa_test.sh +++ b/usr.bin/asa/tests/asa_test.sh @@ -38,8 +38,8 @@ one_head() { atf_set descr "First character on line is '1'" } one_body() { - printf " %s\n1%s\n" "$a" "$b" >infile - printf "%s\f%s\n" "$a" "$b" >outfile + printf "1%s\n1%s\n" "$a" "$b" >infile + printf "\f%s\n\f%s\n" "$a" "$b" >outfile atf_check_asa infile outfile } @@ -87,6 +87,16 @@ dashdash_body() { atf_check -o inline:"$a $b\n" asa -- -infile } +atf_test_case unterminated +unterminated_head() { + atf_set descr "Unterminated input" +} +unterminated_body() { + printf " %s\n %s" "$a" "$b" >infile + printf "%s\n%s" "$a" "$b" >outfile + atf_check_asa infile outfile +} + atf_init_test_cases() { atf_add_test_case space @@ -96,4 +106,5 @@ atf_init_test_cases() atf_add_test_case plus_top atf_add_test_case stdout atf_add_test_case dashdash + atf_add_test_case unterminated } From nobody Wed Jan 17 18:28:38 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBt5RmZz56P99; Wed, 17 Jan 2024 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBt4LRlz4c5k; Wed, 17 Jan 2024 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HebBYh6OSCqGAcrH08zYERSeSdmeLv/i7uicQbFbPUk=; b=tTVRddHRO3rgpQHRYH7L0vc/hf43e8LkL7DCGwMkbiZso09tgW8nHEFWaJSzVsZrmk0AMp zVqh0ejkL2gk7jWshIj2Fpj9Z46DixQTuqSy+izW2KJHHwyXrykgV00DOgHSeD4np+SRrr uNH4jJQL02w86M8u20pwvODcPqUMigv1Htewx3+scJfiSouLNvIM6BAarqly0M5w31sbBT 5oeNsprTazXbEhxSRgBlq40p/e3TU9MzJSV0dLiMfsVLXIEPlb/AgnlWHEt1aPSJhjUIH1 h2tLvsc01loJRory0SbgFv3/WjRZdCN0LBGO/Uwq/8mSADPBfeByLPnoBjpl9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HebBYh6OSCqGAcrH08zYERSeSdmeLv/i7uicQbFbPUk=; b=i24G+P2IkCKUDiKsLFIPEEeJWYIC1iN2dLrryBuXVLy2conABSbvDzNVAdffL0EPHCGwwH b81f7SBUbcSp0Y4Rkhd+9Pz26NQgK//jjGdm4G9aI8XEqp6sZCNCwbiX8ag4Igb9wpZHRf 209oVIbAR+QePZeLMvDVClBPxtfxgMDuP29FTTwSGRmiKiXAZGssO5wYZ/U4MfHPkU8vkJ MpyrAly1aCV/IOFsCUHkl7m8daHa8niF+tUN1YVcCoYeLmpCSMgKEYGdfOTNz7RuuzHCNA s1jy41e+ZVVxq3rNGblakfWMpQrdvMbkkxZe3y9239uSjqTJ+h92gZQ2oaydNw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516118; a=rsa-sha256; cv=none; b=kuuaJAnesHk2lOIpBHrbilrcSPOVukK3X5H/qISczxLus9lA9vAxwP4MDMw/vCPLLEzW3T yj0L9LPzHzNhYf5YmbEIgXhiNjfu9zERj1x78O2s6c8je5D/z5lXaI5qs0hlmZrA62XPAJ BhZYqxUQPyjoNWT6BPZqWXO2Lc88tMcYf11/pOVLC6Kz6K2ix+iiRGjJth1p9ci9DKbrd7 HOWZaAP6aJ4fu6AXtOHveXjx5z6Qe8Bb4lK/67irgunxNB/IRP71TVnesv4W+1grs6desS nyTv58tVBS4MB/+n2/hQ4LruNpAjlAmDV9k99YH5py2MF+xITOwIleBiYCXHJw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBt3MDBzZ5T; Wed, 17 Jan 2024 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISc8S063732; Wed, 17 Jan 2024 18:28:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HIScw9063729; Wed, 17 Jan 2024 18:28:38 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:38 GMT Message-Id: <202401171828.40HIScw9063729@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: ed1967df2de8 - stable/13 - asa: Rewrite to fix line termination issue. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ed1967df2de8887793b93b3a4a86dc108a082cd5 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ed1967df2de8887793b93b3a4a86dc108a082cd5 commit ed1967df2de8887793b93b3a4a86dc108a082cd5 Author: Dag-Erling Smørgrav AuthorDate: 2024-01-09 14:09:41 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 16:16:00 +0000 asa: Rewrite to fix line termination issue. The standard is somewhat unclear, but on the balance, I believe that the phrase “the rest of the input line” should be interpreted to mean the rest of the input line including the terminating newline if and only if there is one. This means the current implementation is incorrect on two points: - First, it suppresses the previous line's newline in the '1' case. - Second, it unconditionally emits a newline at the end of the output for non-empty input, even if the input did not end with a newline. Resolve this by rewriting the main loop. Instead of special-casing the first line and then assuming that every line ends with a newline, we remember how each line ends and emit that either at the beginning of the next line or at the end of the file except in the one case ('+') where the standard explicitly says not to. While here, try to reduce diff to upstream a little and update their RCS tag to reflect the fact that while we've diverged significantly from them, we've incorporated all their changes. Remove the useless second RCS tag. We also update the tests to account for the change in interpretation of the '1' case and add a test case for unterminated input. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43326 (cherry picked from commit c2356a440db91c106867d45c94b3d6d7bc0e50f0) --- usr.bin/asa/asa.c | 102 +++++++++++++++++++----------------------- usr.bin/asa/tests/asa_test.sh | 15 ++++++- 2 files changed, 59 insertions(+), 58 deletions(-) diff --git a/usr.bin/asa/asa.c b/usr.bin/asa/asa.c index 2033bc1ee63c..34365b671f00 100644 --- a/usr.bin/asa/asa.c +++ b/usr.bin/asa/asa.c @@ -1,4 +1,4 @@ -/* $NetBSD: asa.c,v 1.11 1997/09/20 14:55:00 lukem Exp $ */ +/* $NetBSD: asa.c,v 1.17 2016/09/05 00:40:28 sevan Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -32,13 +32,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#if 0 -#ifndef lint -__RCSID("$NetBSD: asa.c,v 1.11 1997/09/20 14:55:00 lukem Exp $"); -#endif -#endif #include +#include #include #include #include @@ -50,38 +45,33 @@ static void usage(void); int main(int argc, char *argv[]) { - int ch, exval; FILE *fp; - const char *fn; + int ch, exval; while ((ch = getopt(argc, argv, "")) != -1) { switch (ch) { - case '?': default: usage(); - /*NOTREACHED*/ } } argc -= optind; argv += optind; exval = 0; - if (argc == 0) + if (*argv == NULL) { asa(stdin); - else { - while ((fn = *argv++) != NULL) { - if (strcmp(fn, "-") == 0) { + } else { + do { + if (strcmp(*argv, "-") == 0) { asa(stdin); + } else if ((fp = fopen(*argv, "r")) == NULL) { + warn("%s", *argv); + exval = 1; } else { - if ((fp = fopen(fn, "r")) == NULL) { - warn("%s", fn); - exval = 1; - continue; - } asa(fp); fclose(fp); } - } + } while (*++argv != NULL); } if (fflush(stdout) != 0) @@ -93,7 +83,6 @@ main(int argc, char *argv[]) static void usage(void) { - fprintf(stderr, "usage: asa [file ...]\n"); exit(1); } @@ -101,52 +90,53 @@ usage(void) static void asa(FILE *f) { - size_t len; char *buf; + size_t len; + bool eol = false; - if ((buf = fgetln(f, &len)) != NULL) { - if (buf[len - 1] == '\n') - buf[--len] = '\0'; - /* special case the first line */ + while ((buf = fgetln(f, &len)) != NULL) { + /* in all cases but '+', terminate previous line, if any */ + if (buf[0] != '+' && eol) + putchar('\n'); + /* examine and translate the control character */ switch (buf[0]) { + default: + /* + * “It is suggested that implementations treat + * characters other than 0, 1, and '+' as + * in the absence of any compelling reason to do + * otherwise” (POSIX.1-2017) + */ + case ' ': + /* nothing */ + break; case '0': putchar('\n'); break; case '1': putchar('\f'); break; - } - - if (len > 1 && buf[0] && buf[1]) - printf("%.*s", (int)(len - 1), buf + 1); - - while ((buf = fgetln(f, &len)) != NULL) { - if (buf[len - 1] == '\n') - buf[--len] = '\0'; - switch (buf[0]) { - default: - case ' ': - putchar('\n'); - break; - case '0': - putchar('\n'); - putchar('\n'); - break; - case '1': - putchar('\f'); - break; - case '+': + case '+': + /* + * “If the '+' is the first character in the + * input, it shall be equivalent to .” + * (POSIX.1-2017) + */ + if (eol) putchar('\r'); - break; - } - - if (len > 1 && buf[0] && buf[1]) - printf("%.*s", (int)(len - 1), buf + 1); + break; } - - putchar('\n'); + /* trim newline if there is one */ + if ((eol = (buf[len - 1] == '\n'))) + --len; + /* print the rest of the input line */ + if (len > 1 && buf[0] && buf[1]) + fwrite(buf + 1, 1, len - 1, stdout); } - + /* terminate the last line, if any */ + if (eol) + putchar('\n'); + /* check for output errors */ if (ferror(stdout) != 0) err(1, "stdout"); } diff --git a/usr.bin/asa/tests/asa_test.sh b/usr.bin/asa/tests/asa_test.sh index 429342d530e4..91515bb55d95 100644 --- a/usr.bin/asa/tests/asa_test.sh +++ b/usr.bin/asa/tests/asa_test.sh @@ -38,8 +38,8 @@ one_head() { atf_set descr "First character on line is '1'" } one_body() { - printf " %s\n1%s\n" "$a" "$b" >infile - printf "%s\f%s\n" "$a" "$b" >outfile + printf "1%s\n1%s\n" "$a" "$b" >infile + printf "\f%s\n\f%s\n" "$a" "$b" >outfile atf_check_asa infile outfile } @@ -87,6 +87,16 @@ dashdash_body() { atf_check -o inline:"$a $b\n" asa -- -infile } +atf_test_case unterminated +unterminated_head() { + atf_set descr "Unterminated input" +} +unterminated_body() { + printf " %s\n %s" "$a" "$b" >infile + printf "%s\n%s" "$a" "$b" >outfile + atf_check_asa infile outfile +} + atf_init_test_cases() { atf_add_test_case space @@ -96,4 +106,5 @@ atf_init_test_cases() atf_add_test_case plus_top atf_add_test_case stdout atf_add_test_case dashdash + atf_add_test_case unterminated } From nobody Wed Jan 17 18:28:37 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBt3gFNz56Nlr; Wed, 17 Jan 2024 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBt0DZSz4cKg; Wed, 17 Jan 2024 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hTDtJnj79pSTUSrT5bN8Ukv3dTP8rYKvj7HNYZ3LDJQ=; b=b3w+eJmI9gOzZ243aYg2ooVzbRstgpUyxuIGCkXE7w0wcQijyZg41BngARyVA090f/+Nh+ TS0FaW7oPzvfTVMzexoCC9ggVk1z57xLFeVdGM4c8TCnHW4EJQ8LpXdzPPIoiK6Ahz9Oph pO0LR/GIUxXDxDNZdrg8rfYnbHOiwKCKBY68ULowzmobreZTX8VtCCCmOhQDS386bQiouI 6o1f8Q6IaaAglnJrkGt7clKY3rrQQMw+7uTBGHIadc30m0+9NEffFo6gU6Mcn7d0BSXGVG q9wLGl8SVeQ+llJRnpVvhgLleqd+EvUgPUMLuK10vRzkbE7SIIiGCL172LU9lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hTDtJnj79pSTUSrT5bN8Ukv3dTP8rYKvj7HNYZ3LDJQ=; b=EP0PfnlQMRsYkXiIkKAUxIrGosRK0pOairtzWxld7e68D1kDqUi/Bt4vTHXQVAqmOUV/44 0zl+lgQgPQxGQNcYtKE6WK/AD7ibFkJzf3CRAAbWt8jopReQReKyUESrNQ3D4igy0Duuvy 0CXJP43IN1qebXzFxsqp5xC3PCCLNfefyNHwGvzjmWzNBI4MXaDaNEA2/gmKpbN3x9zUl6 AQJEyp+y91ZOP5rJ6TLL7NFqOjIeaonuQqWyR7Egd3ib9d+PDyGvBOLhD4MpxN1jf7KVme 8dOQ5fEt+yMmKfpFubCtQGXlAlq9wEKFUpEATj9XdtAe/wgR7lwh47+H9oqP9Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516118; a=rsa-sha256; cv=none; b=s4LLuCMbA1G4ynWMwWJTSc2/ewquDRWV1NP23Pc3h9YgPgrF/wMqst8zOeiL/Hs7iFgIfa B2cS5B7NSbG+i7fVgkOSakgABDSqYMwOJXEjrAskgXJVleU5/z+mb+mFl/I0v2a96OJ77a o0ZpvtyPPqAu9RrUTlPgL4cdkAjmxSjeJU5C437cpEuTrLOHrckpNWDnkCQymCKJ4tOIyd T9aADn0dx/iNMCz311bngF66CUC9eoTUiFHW6u0d48IDbuT+MRwp0ncHg8A7LXz1woh2e/ r/djPmwr5iZ+q5t+GLh3ujpXKKqSWPxcAeDZM9IsMYZK0p3XnYDVHIEmYEkWuQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBs6RjYzZcc; Wed, 17 Jan 2024 18:28:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISb19063681; Wed, 17 Jan 2024 18:28:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISbLS063678; Wed, 17 Jan 2024 18:28:37 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:37 GMT Message-Id: <202401171828.40HISbLS063678@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: e3057ee0bf46 - stable/14 - login: Use getpwnam_r() instead of getpwnam(). List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e3057ee0bf461580f2d2e9570b205a8ea56225f0 Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=e3057ee0bf461580f2d2e9570b205a8ea56225f0 commit e3057ee0bf461580f2d2e9570b205a8ea56225f0 Author: Dag-Erling Smørgrav AuthorDate: 2024-01-12 15:40:22 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 18:28:22 +0000 login: Use getpwnam_r() instead of getpwnam(). Since we expect the entry to still be valid after calling into PAM, which may call getpwnam() itself, we need to use getpwnam_r(). MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans, imp, allanjude, markj Differential Revision: https://reviews.freebsd.org/D43376 (cherry picked from commit a3d80dd8aa6ac15877e00102ab174b417ac81d79) login: Missed an instance of getpwnam(). Fixes: a3d80dd8aa6ac15877e00102ab174b417ac81d79 MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: allanjude Differential Revision: https://reviews.freebsd.org/D43423 (cherry picked from commit 1e25eb287f3fdd763df98065dbf2e1eb201e4000) --- usr.bin/login/login.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/usr.bin/login/login.c b/usr.bin/login/login.c index c96738151151..d0d4bb4a2394 100644 --- a/usr.bin/login/login.c +++ b/usr.bin/login/login.c @@ -116,6 +116,8 @@ static u_int timeout = 300; /* Buffer for signal handling of timeout */ static jmp_buf timeout_buf; +char pwbuf[1024]; +struct passwd pwres; struct passwd *pwd; static int failures; @@ -321,7 +323,7 @@ main(int argc, char *argv[]) bail(NO_SLEEP_EXIT, 1); } - pwd = getpwnam(username); + (void)getpwnam_r(username, &pwres, pwbuf, sizeof(pwbuf), &pwd); if (pwd != NULL && pwd->pw_uid == 0) rootlogin = 1; @@ -344,7 +346,7 @@ main(int argc, char *argv[]) (void)setpriority(PRIO_PROCESS, 0, 0); } - if (pwd && rval == 0) + if (pwd != NULL && rval == 0) break; pam_cleanup(); @@ -708,8 +710,10 @@ auth_pam(void) pam_err = pam_get_item(pamh, PAM_USER, &item); if (pam_err == PAM_SUCCESS) { tmpl_user = (const char *)item; - if (strcmp(username, tmpl_user) != 0) - pwd = getpwnam(tmpl_user); + if (strcmp(username, tmpl_user) != 0) { + (void)getpwnam_r(tmpl_user, &pwres, pwbuf, + sizeof(pwbuf), &pwd); + } } else { pam_syslog("pam_get_item(PAM_USER)"); } From nobody Wed Jan 17 18:28:38 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBv3DyWz56P78; Wed, 17 Jan 2024 18:28:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBv0kn0z4cHQ; Wed, 17 Jan 2024 18:28:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516119; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pb9h92T2FGY6b3rsmcvXhwgC0waZgnkP7nxAmAQ1dBE=; b=VrM5bHbT/Te5+WF9kHb5kSGSz9bnut+nQ9aq+hN90x25qT2Bwb49thozKVMKn4w5D3Tue+ Hqb77nrhVsstB3SRgOCfzBh83ACtYxB6lEPR5dFJBpXa1II1LIF0hRU8lbyo4HoQUQFROC sk6FrUxEc0aJ4pxPct8Ii9pR1gZ0LGCX/Zfwv3iVA7GJqrhhFfoNz+XaLdThkPYYWxbQOW rQz8l0xIA0YX3fDF/EKUmRUbgwWVsh1RLrS7hBAbgVgWIhkEg/qIOeWqzEbEjXci3h6wC/ RSoqh7KuvqBcqxXefSw7WEFKr7d3jm1HJ7bxBUEd1r2Z5FstfmqCVfKMpuqx9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516119; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pb9h92T2FGY6b3rsmcvXhwgC0waZgnkP7nxAmAQ1dBE=; b=sa93ZsHjfwHvZg4lZSNcTcNp6pjYbXupY0uG3izV7HGhEBUkyE1qdjcbyjTeUxQZ23OdE6 MVFz2kxkXDqDBmfLLfGJVmrgpxPcl4V3sXZPAHNnux4KsAIhDCHX6MtxyjjTp4G79Jj8YT l5GwlhN4t25lBxa3eP9DVk7aCOA4H84zsQAPI9zUs6+OwEAUsUe5ZIxQtTdydiKJPKFANi z5raRmLPckBobMjmCZwPS9Rw4bEt3+x5STP75m4zUnTpQnttAQNgps3NSdaMr1kqsrxoIJ +FIODWN5lcvldAR7nIPGeWdO5EDqWcxZvF0SrgLPRGwaw7YzW8bRJLqlR6NLEQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516119; a=rsa-sha256; cv=none; b=CVx4gqNWEFsA4kLfc5o7mFp81G8/C7fhoKDjYyGvyIYrTHk5rcHkGqLeDQJ7fBEXZoMILt C94DWEL2D7Gs/Kn24MVXr6RVsRkZtn35X3NEGZhQ0NWMtT/+sOyeZu/+uRNnC+qFl/EQW5 33SrmrjB+Y4gMnSyITHqaGrvB1CqbNHRHDqD4kU+4s5qIi5ZIS6sqURCsEIg068VJK6n3B SM+pzTsq91BFkzCC2cTOeKb98BPI94ny1q/t9RbBPe2hxH73eIG1RIAlAruHdI8F6Xdq7R gPFpsIQkIXePa4uMfGCWqamffyqO7mFaKFx5L0HVRpFLAoU5tL5nemW9B4nPEQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBt6x66zZkn; Wed, 17 Jan 2024 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HIScqx063790; Wed, 17 Jan 2024 18:28:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HIScKl063786; Wed, 17 Jan 2024 18:28:38 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:38 GMT Message-Id: <202401171828.40HIScKl063786@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: cef433d3fb38 - stable/14 - uniq: Replace NetBSD's unit tests with our own. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: cef433d3fb38a705f950c4a59b2439084c933139 Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=cef433d3fb38a705f950c4a59b2439084c933139 commit cef433d3fb38a705f950c4a59b2439084c933139 Author: Dag-Erling Smørgrav AuthorDate: 2024-01-12 15:40:26 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 18:28:23 +0000 uniq: Replace NetBSD's unit tests with our own. These new tests cover more functionality and are easier to extend. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D43381 (cherry picked from commit e762fd81e253d4ae9b9f7d2e65cf448633bbe527) uniq: Fix interactive use. Output a line as soon as it is possible to determine that it will have to be output. For the basic case, this means output each line as it is read unless it is identical to the previous one. For the -d case, it means output the first instance as soon as the second is read, unless the -c option was also given. The -D and -u cases were already fine. Add test cases for interactive use with no options and with -d. Explicitly ignore -d when -D is also specified. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: rew, kevans Differential Revision: https://reviews.freebsd.org/D43382 (cherry picked from commit 11715600e626cf6cc4b4f564af97f6ae1e5fb0be) uniq: Clean up and test obsolete options. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43402 (cherry picked from commit e2ec8ee02a33e39b8ff86a56e8a1ef5e84ac7e62) uniq: Error out if writing to the output failed. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43407 (cherry picked from commit 899837e8f5741f9a847b63d9e7c8b76ccc033ab5) --- ObsoleteFiles.inc | 8 ++ usr.bin/uniq/tests/Makefile | 13 +-- usr.bin/uniq/tests/uniq_test.sh | 193 ++++++++++++++++++++++++++++++++++++++++ usr.bin/uniq/uniq.1 | 5 +- usr.bin/uniq/uniq.c | 68 +++++++------- 5 files changed, 244 insertions(+), 43 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 26d6e20ab0d4..afbfb877ebfd 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,14 @@ # xargs -n1 | sort | uniq -d; # done +# 20240117: replaced NetBSD tests for uniq with our own +OLD_FILES+=usr/tests/usr.bin/uniq/d_basic.in +OLD_FILES+=usr/tests/usr.bin/uniq/d_basic.out +OLD_FILES+=usr/tests/usr.bin/uniq/d_counts.out +OLD_FILES+=usr/tests/usr.bin/uniq/d_input.in +OLD_FILES+=usr/tests/usr.bin/uniq/d_show_duplicates.out +OLD_FILES+=usr/tests/usr.bin/uniq/d_show_uniques.out + # 20240107: new clang import which bumps version from 16 to 17 OLD_FILES+=usr/lib/clang/16/include/__clang_cuda_builtin_vars.h OLD_FILES+=usr/lib/clang/16/include/__clang_cuda_cmath.h diff --git a/usr.bin/uniq/tests/Makefile b/usr.bin/uniq/tests/Makefile index d9c839aa35b6..55bb98e98c34 100644 --- a/usr.bin/uniq/tests/Makefile +++ b/usr.bin/uniq/tests/Makefile @@ -1,15 +1,4 @@ - PACKAGE= tests - -NETBSD_ATF_TESTS_SH= uniq_test - -${PACKAGE}FILES+= d_basic.in -${PACKAGE}FILES+= d_basic.out -${PACKAGE}FILES+= d_counts.out -${PACKAGE}FILES+= d_input.in -${PACKAGE}FILES+= d_show_duplicates.out -${PACKAGE}FILES+= d_show_uniques.out - -.include +ATF_TESTS_SH= uniq_test .include diff --git a/usr.bin/uniq/tests/uniq_test.sh b/usr.bin/uniq/tests/uniq_test.sh new file mode 100755 index 000000000000..804e82ce7766 --- /dev/null +++ b/usr.bin/uniq/tests/uniq_test.sh @@ -0,0 +1,193 @@ +# +# Copyright (c) 2024 Klara, Inc. +# +# SPDX-License-Identifier: BSD-2-Clause +# + +atf_check_uniq() { + atf_check uniq "$@" input actual + atf_check diff -u actual expected + atf_check uniq "$@" - actual input + printf "a\nb\na\n" >expected + atf_check_uniq +} + +atf_test_case count +count_head() { + atf_set descr "basic test showing counts" +} +count_body() { + printf "a\na\nb\nb\nb\na\na\na\na\n" >input + printf " 2 a\n 3 b\n 4 a\n" >expected + atf_check_uniq -c + atf_check_uniq --count +} + +atf_test_case repeated +repeated_head() { + atf_set descr "print repeated lines only" +} +repeated_body() { + printf "a\na\nb\na\na\n" >input + printf "a\na\n" >expected + atf_check_uniq -d + atf_check_uniq --repeated +} + +atf_test_case count_repeated +count_repeated_head() { + atf_set descr "count and print repeated lines only" +} +count_repeated_body() { + printf "a\na\nb\nb\na\n" >input + printf " 2 a\n 2 b\n" >expected + atf_check_uniq --count --repeated +} + +atf_test_case all_repeated +all_repeated_head() { + atf_set descr "print every instance of repeated lines" +} +all_repeated_body() { + printf "a\na\nb\na\na\n" >input + printf "a\na\na\na\n" >expected + atf_check_uniq -D + atf_check_uniq --all-repeated +} + +atf_test_case skip_fields +skip_fields_head() { + atf_set descr "skip fields" +} +skip_fields_body() { + printf "1 a\n2 a\n3 b\n4 b\n5 a\n6 a\n" >input + printf "1 a\n3 b\n5 a\n" >expected + atf_check_uniq -1 + atf_check_uniq -f 1 + atf_check_uniq --skip-fields 1 +} + +atf_test_case skip_fields_tab +skip_fields_tab_head() { + atf_set descr "skip fields (with tabs)" +} +skip_fields_tab_body() { + printf "1\ta\n2\ta\n3\tb\n4\tb\n5\ta\n6\ta\n" >input + printf "1\ta\n3\tb\n5\ta\n" >expected + atf_check_uniq -1 + atf_check_uniq -f 1 + atf_check_uniq --skip-fields 1 +} + +atf_test_case ignore_case +ignore_case_head() { + atf_set descr "ignore case" +} +ignore_case_body() { + printf "a\nA\nb\nB\na\nA\n" >input + printf "a\nb\na\n" >expected + atf_check_uniq -i + atf_check_uniq --ignore-case +} + +atf_test_case skip_chars +skip_chars_head() { + atf_set descr "skip chars" +} +skip_chars_body() { + printf "1 a\n2 a\n3 b\n4 b\n5 a\n6 a\n" >input + printf "1 a\n3 b\n5 a\n" >expected + atf_check_uniq +2 + atf_check_uniq -s 2 + atf_check_uniq --skip-chars 2 +} + +atf_test_case unique +unique_head() { + atf_set descr "print non-repeated lines only" +} +unique_body() { + printf "a\na\nb\na\na\n" >input + printf "b\n" >expected + atf_check_uniq -u + atf_check_uniq --unique +} + +atf_test_case count_unique +count_unique_head() { + atf_set descr "print non-repeated lines with count" +} +count_unique_body() { + printf "a\na\nb\n" >input + printf " 1 b\n" >expected + atf_check_uniq --unique --count + atf_check_uniq --count --unique +} + +atf_test_case interactive +interactive_head() { + atf_set descr "test interactive use" +} +interactive_body() { + sh -c 'yes | stdbuf -oL uniq >actual' & + pid=$! + sleep 1 + kill $! + atf_check -o inline:"y\n" cat actual +} + +atf_test_case interactive_repeated +interactive_repeated_head() { + atf_set descr "test interactive use with -d" +} +interactive_repeated_body() { + sh -c 'yes | stdbuf -oL uniq -d >actual' & + pid=$! + sleep 1 + kill $! + atf_check -o inline:"y\n" cat actual +} + +atf_test_case stdout +stdout_head() { + atf_set descr "error writing to stdout" +} +stdout_body() { + ( + trap "" PIPE + echo a | uniq 2>stderr + echo $? >result + ) | true + atf_check -o inline:"1\n" cat result + atf_check -o match:"stdout" cat stderr +} + +atf_init_test_cases() +{ + atf_add_test_case basic + atf_add_test_case count + atf_add_test_case repeated + atf_add_test_case count_repeated + atf_add_test_case all_repeated + atf_add_test_case skip_fields + atf_add_test_case skip_fields_tab + atf_add_test_case ignore_case + atf_add_test_case skip_chars + atf_add_test_case unique + atf_add_test_case count_unique + atf_add_test_case interactive + atf_add_test_case interactive_repeated + atf_add_test_case stdout +} diff --git a/usr.bin/uniq/uniq.1 b/usr.bin/uniq/uniq.1 index 285e13d901a7..3fc1d26774ca 100644 --- a/usr.bin/uniq/uniq.1 +++ b/usr.bin/uniq/uniq.1 @@ -30,7 +30,7 @@ .\" .\" From: @(#)uniq.1 8.1 (Berkeley) 6/6/93 .\" -.Dd June 7, 2020 +.Dd January 12, 2024 .Dt UNIQ 1 .Os .Sh NAME @@ -74,6 +74,9 @@ Precede each output line with the count of the number of times the line occurred in the input, followed by a single space. .It Fl d , Fl -repeated Output a single copy of each line that is repeated in the input. +Ignored if +.Fl D +is also specified. .It Fl D , Fl -all-repeated Op Ar septype Output all lines that are repeated (like .Fl d , diff --git a/usr.bin/uniq/uniq.c b/usr.bin/uniq/uniq.c index 1513ae185bcf..5b675600e56c 100644 --- a/usr.bin/uniq/uniq.c +++ b/usr.bin/uniq/uniq.c @@ -54,6 +54,7 @@ static char sccsid[] = "@(#)uniq.c 8.3 (Berkeley) 5/4/95"; #include #include #include +#include #include #include #include @@ -63,14 +64,9 @@ static char sccsid[] = "@(#)uniq.c 8.3 (Berkeley) 5/4/95"; #include #include -static int Dflag, cflag, dflag, uflag, iflag; -static int numchars, numfields, repeats; - -/* Dflag values */ -#define DF_NONE 0 -#define DF_NOSEP 1 -#define DF_PRESEP 2 -#define DF_POSTSEP 3 +static enum { DF_NONE, DF_NOSEP, DF_PRESEP, DF_POSTSEP } Dflag; +static bool cflag, dflag, uflag, iflag; +static long long numchars, numfields, repeats; static const struct option long_opts[] = { @@ -100,7 +96,7 @@ main (int argc, char *argv[]) int ch, comp; size_t prevbuflen, thisbuflen, b1; char *prevline, *thisline, *p; - const char *ifn, *errstr;; + const char *errstr, *ifn, *ofn; cap_rights_t rights; (void) setlocale(LC_ALL, ""); @@ -120,13 +116,13 @@ main (int argc, char *argv[]) usage(); break; case 'c': - cflag = 1; + cflag = true; break; case 'd': - dflag = 1; + dflag = true; break; case 'i': - iflag = 1; + iflag = true; break; case 'f': numfields = strtonum(optarg, 0, INT_MAX, &errstr); @@ -139,7 +135,7 @@ main (int argc, char *argv[]) errx(1, "character skip value is %s: %s", errstr, optarg); break; case 'u': - uflag = 1; + uflag = true; break; case '?': default: @@ -152,9 +148,13 @@ main (int argc, char *argv[]) if (argc > 2) usage(); + if (Dflag && dflag) + dflag = false; + ifp = stdin; ifn = "stdin"; ofp = stdout; + ofn = "stdout"; if (argc > 0 && strcmp(argv[0], "-") != 0) ifp = file(ifn = argv[0], "r"); cap_rights_init(&rights, CAP_FSTAT, CAP_READ); @@ -162,7 +162,7 @@ main (int argc, char *argv[]) err(1, "unable to limit rights for %s", ifn); cap_rights_init(&rights, CAP_FSTAT, CAP_WRITE); if (argc > 1) - ofp = file(argv[1], "w"); + ofp = file(ofn = argv[1], "w"); else cap_rights_set(&rights, CAP_IOCTL); if (caph_rights_limit(fileno(ofp), &rights) < 0) { @@ -192,6 +192,8 @@ main (int argc, char *argv[]) err(1, "%s", ifn); exit(0); } + if (!cflag && !Dflag && !dflag && !uflag) + show(ofp, prevline); tprev = convert(prevline); tthis = NULL; @@ -211,7 +213,11 @@ main (int argc, char *argv[]) /* If different, print; set previous to new value. */ if (Dflag == DF_POSTSEP && repeats > 0) fputc('\n', ofp); - if (!Dflag) + if (!cflag && !Dflag && !dflag && !uflag) + show(ofp, thisline); + else if (!Dflag && + (!dflag || (cflag && repeats > 0)) && + (!uflag || repeats == 0)) show(ofp, prevline); p = prevline; b1 = prevbuflen; @@ -232,14 +238,23 @@ main (int argc, char *argv[]) show(ofp, prevline); } show(ofp, thisline); + } else if (dflag && !cflag) { + if (repeats == 0) + show(ofp, prevline); } ++repeats; } } if (ferror(ifp)) err(1, "%s", ifn); - if (!Dflag) + if (!cflag && !Dflag && !dflag && !uflag) + /* already printed */ ; + else if (!Dflag && + (!dflag || (cflag && repeats > 0)) && + (!uflag || repeats == 0)) show(ofp, prevline); + if (fflush(ofp) != 0) + err(1, "%s", ofn); exit(0); } @@ -303,11 +318,8 @@ inlcmp(const char *s1, const char *s2) static void show(FILE *ofp, const char *str) { - - if ((!Dflag && dflag && repeats == 0) || (uflag && repeats > 0)) - return; if (cflag) - (void)fprintf(ofp, "%4d %s", repeats + 1, str); + (void)fprintf(ofp, "%4lld %s", repeats + 1, str); else (void)fprintf(ofp, "%s", str); } @@ -315,7 +327,7 @@ show(FILE *ofp, const char *str) static wchar_t * skip(wchar_t *str) { - int nchars, nfields; + long long nchars, nfields; for (nfields = 0; *str != L'\0' && nfields++ != numfields; ) { while (iswblank(*str)) @@ -341,29 +353,25 @@ file(const char *name, const char *mode) static void obsolete(char *argv[]) { - int len; - char *ap, *p, *start; + char *ap, *p; while ((ap = *++argv)) { /* Return if "--" or not an option of any form. */ if (ap[0] != '-') { if (ap[0] != '+') return; - } else if (ap[1] == '-') + } else if (ap[1] == '-') { return; + } if (!isdigit((unsigned char)ap[1])) continue; /* * Digit signifies an old-style option. Malloc space for dash, * new option and argument. */ - len = strlen(ap); - if ((start = p = malloc(len + 3)) == NULL) + if (asprintf(&p, "-%c%s", ap[0] == '+' ? 's' : 'f', ap + 1) < 0) err(1, "malloc"); - *p++ = '-'; - *p++ = ap[0] == '+' ? 's' : 'f'; - (void)strcpy(p, ap + 1); - *argv = start; + *argv = p; } } From nobody Wed Jan 17 18:28:37 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBs53qvz56P4k; Wed, 17 Jan 2024 18:28:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBs3GQsz4cPG; Wed, 17 Jan 2024 18:28:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516117; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=js/1+f2g0OnOQPFitjrCzRvkFMUYam6JrmPnZFymh3s=; b=T17rx++wzcJOOE3CTI+/Dd1YJe9W7MpYNrZSuIJkIAMiut0ImBINEz2griD2RLWNzOkasB NxoGjwk4SuPo65jcqzJHL9/EP5VD0ogl4vy/tbZhYnioIn3ElHuA2ykdy/I3mXOiLRMznO I8pBy9MSaLR8g/1PMeLWVanU6FcepIBJvtPduhX3iXW64t4bjQf1ouZuqEk7/G8sumEM9S EkYIFt8l4us3ENqpN/UG/YD0ztZtT9VGYM7NAjQXVtSvePXyXa3cznl1UAXPba+JWBg7OD T+4BUwFErzvaB3QgKowFAAuk1DOzvwOuPeu/z1mCMyafUpwckabNAfq8eYQcMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516117; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=js/1+f2g0OnOQPFitjrCzRvkFMUYam6JrmPnZFymh3s=; b=GGKnZxWxvEvfUuFOll4ck6uLR2AQEiPE8CCgMTFtoiCwDSdwTzbTfR6fK7Z1SC1TE/X5qG Dn5qQU91N1KJGX7/sXholatglExSvCkKhA2m0lGfJWrahxDKrL6ZT0MBh28vdoJwlJKWju Q7YhT4KZpMT9MTfSGQCjObWSpehzyvurQ0D1EHSs/VOXX8mZ5TEUFPRk34rQM0EfVZHDtR 5ceFmq1DTjdpy7oWEXO6QzS9msznvOND0+JbD8aBPFgXp+K3u8SekwQ5lsCU+OoXQZpe64 /L4auQEWMLeFqdBHqgd1drRYJewsblBaZTRmZiY3xnHJ2iJPXVpfogI8gvUdww== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516117; a=rsa-sha256; cv=none; b=C95LO6NxYSsSC4AjQyDt3o8ofwBu19tOJgoGBz3P+Qch5OA0pNQaoA6TdcbNfDSKeVaTay D/wuTxFFwONDbuDCpI8x5HjBQ+KfReACs41SsQOXNMoupYwPTfN2AxoFycwUew1b756qIz xKY0w/pFIUI2wucMdyuX7BCay+dHxGlfbBbuP0fzvMfUjNJB/nLy4iPukI0tdbxZXRPZil UXivkdSEfwZRRK3vuI2bwuzWvLVPVGKeGr/vG7YNI7qHfZUg1Z24ur1q6RalxI5rfuwQz6 KZV0UYArG23ZBdufDH94tCyqMGLXfzctnd6f6mM4dsmqietHv5HYzRTPm3uxLQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBs2MXJzZnD; Wed, 17 Jan 2024 18:28:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISb1q063633; Wed, 17 Jan 2024 18:28:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISbKa063630; Wed, 17 Jan 2024 18:28:37 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:37 GMT Message-Id: <202401171828.40HISbKa063630@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 282a377c0926 - stable/13 - find: Add a warning about -delete. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 282a377c0926cd39fe37bd7842155ae4e13aaac0 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=282a377c0926cd39fe37bd7842155ae4e13aaac0 commit 282a377c0926cd39fe37bd7842155ae4e13aaac0 Author: Dag-Erling Smørgrav AuthorDate: 2023-12-21 23:41:05 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 16:16:00 +0000 find: Add a warning about -delete. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: pauamma_gundo.com Differential Revision: https://reviews.freebsd.org/D43162 (cherry picked from commit 45438f9c8b5b91ebf5606b4a98e891559913d25b) --- usr.bin/find/find.1 | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/usr.bin/find/find.1 b/usr.bin/find/find.1 index 5f559a12ec50..afa4c7ab8215 100644 --- a/usr.bin/find/find.1 +++ b/usr.bin/find/find.1 @@ -30,7 +30,7 @@ .\" .\" @(#)find.1 8.7 (Berkeley) 5/9/95 .\" -.Dd January 23, 2023 +.Dd December 22, 2023 .Dt FIND 1 .Os .Sh NAME @@ -349,6 +349,22 @@ The .Ic -delete primary will fail to delete a directory if it is not empty. Following symlinks is incompatible with this option. +.Pp +.Em WARNING : +The +.Ic -delete +primary will immediately attempt to delete the current path when +evaluated. +Be mindful of its place in the expression; as a general rule, it +should almost always come last. +If in doubt, try running with +.Ic -print +in place of +.Ic -delete +first. +See +.Sx OPERATORS +below for additional information on the order of evaluation. .It Ic -depth Always true; same as the non-portable From nobody Wed Jan 17 18:28:39 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBw2vhmz56P4n; Wed, 17 Jan 2024 18:28:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBv70DYz4cRq; Wed, 17 Jan 2024 18:28:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516120; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ntt31lBbi2SqkBLVoepNqSY0VQg6CfAe/8sZOjww+O4=; b=h7nq1g2paUOdV7derlwZO9FqON9fnr5PJowR2IIlnh0V/9Xgw4s1cxjhZYl1AsmOwZO3Uv op54wBQS0w0d6jPDaWNmnaRNGHykTIqrEOp2UOnH8thAqR2P4RQMb1sOY04p1kOt+RQ2do KMK8paJvoanFzzlV9dAlo8R7LaBpF0NKnJm8U+iitNiSSonUbOhGf8zRFd/a62WTCKHJX7 KEJ6E1TYrcTv57vWh2m7l3owOJCumib8DgZ5laH6FwUq7JkF1pb+gLPo1Nsw0JPGl2XAmU 7wsizRTeomDnE3tyZov8K8exZFz6Dr+NiRDiPDA40MyjpRhO3sjok/XpXjdX3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516120; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ntt31lBbi2SqkBLVoepNqSY0VQg6CfAe/8sZOjww+O4=; b=uhTS4cECLbWPT9bAH1ELnf08RrM7WHFgiU5q+e5oWVdOOY9WX6H8gQwBO1pikhnZd9l4DN VGXeHx46Db4mGOOKwhQexyOyqhVaq/d7qVtv0J8hIYxw/fy43p8LAR1mSyuGx1XcVpl1x+ Lwutmt6nZTpSCnucAg2V0MG9TmzBjj1WcjoE6sHqOGpZPHj2GTy5cesyatPgQLOqxKPTSg Kqi8sC7VroJYd0AtisgsNR6p6uYQRFRL7KE4ioesLq3g6yeRHX8A4bMRxxt65juLgjag8D KUCEdoSXyD0x4oU4LB/eETLZ/NIgZBGywEzQ9zGpnk8ZVNvATUvakHqlV+Bf+w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516120; a=rsa-sha256; cv=none; b=KRkESQb1QHv1oOrEJMd3ndSyaROTEAOj2PrGARjQi1Sz5714GywGU99gj39OH76tiYMp5v LFv1qjKqCN0Hm+x0/i2lnUXtsGECWBS2xBtyUdnS8bd6YrsTfjJ7OwU1MLrDDrT0zDyoW6 nGyticSdJtaAWAhydQuV0nu+jwHLXk/ht3tZMawC7z85vPB7jC5a7/vya3+USEJTnHmTQO UTewM8a/m1d39Nh/kYdRe6Wi8CU9vvl6D2Mk9hI8Zz73h7xc41jV1hcFipbcPjm7kVu6HR tdZbQfhGmcVcBjFlkXh/XnhBfSUJK9bFkaCVM72lQM4xjJW8tUGQZxBFzRYT4w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBv47DZzZnF; Wed, 17 Jan 2024 18:28:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISdKk063842; Wed, 17 Jan 2024 18:28:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISd38063839; Wed, 17 Jan 2024 18:28:39 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:39 GMT Message-Id: <202401171828.40HISd38063839@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 9c738c4bca57 - stable/13 - login: Use getpwnam_r() instead of getpwnam(). List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 9c738c4bca57354f9f66ebde0c4b625fa6d6c743 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=9c738c4bca57354f9f66ebde0c4b625fa6d6c743 commit 9c738c4bca57354f9f66ebde0c4b625fa6d6c743 Author: Dag-Erling Smørgrav AuthorDate: 2024-01-12 15:40:22 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 16:16:00 +0000 login: Use getpwnam_r() instead of getpwnam(). Since we expect the entry to still be valid after calling into PAM, which may call getpwnam() itself, we need to use getpwnam_r(). MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans, imp, allanjude, markj Differential Revision: https://reviews.freebsd.org/D43376 (cherry picked from commit a3d80dd8aa6ac15877e00102ab174b417ac81d79) login: Missed an instance of getpwnam(). Fixes: a3d80dd8aa6ac15877e00102ab174b417ac81d79 MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: allanjude Differential Revision: https://reviews.freebsd.org/D43423 (cherry picked from commit 1e25eb287f3fdd763df98065dbf2e1eb201e4000) --- usr.bin/login/login.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/usr.bin/login/login.c b/usr.bin/login/login.c index c96738151151..d0d4bb4a2394 100644 --- a/usr.bin/login/login.c +++ b/usr.bin/login/login.c @@ -116,6 +116,8 @@ static u_int timeout = 300; /* Buffer for signal handling of timeout */ static jmp_buf timeout_buf; +char pwbuf[1024]; +struct passwd pwres; struct passwd *pwd; static int failures; @@ -321,7 +323,7 @@ main(int argc, char *argv[]) bail(NO_SLEEP_EXIT, 1); } - pwd = getpwnam(username); + (void)getpwnam_r(username, &pwres, pwbuf, sizeof(pwbuf), &pwd); if (pwd != NULL && pwd->pw_uid == 0) rootlogin = 1; @@ -344,7 +346,7 @@ main(int argc, char *argv[]) (void)setpriority(PRIO_PROCESS, 0, 0); } - if (pwd && rval == 0) + if (pwd != NULL && rval == 0) break; pam_cleanup(); @@ -708,8 +710,10 @@ auth_pam(void) pam_err = pam_get_item(pamh, PAM_USER, &item); if (pam_err == PAM_SUCCESS) { tmpl_user = (const char *)item; - if (strcmp(username, tmpl_user) != 0) - pwd = getpwnam(tmpl_user); + if (strcmp(username, tmpl_user) != 0) { + (void)getpwnam_r(tmpl_user, &pwres, pwbuf, + sizeof(pwbuf), &pwd); + } } else { pam_syslog("pam_get_item(PAM_USER)"); } From nobody Wed Jan 17 18:28:40 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBx01mcz56PGC; Wed, 17 Jan 2024 18:28:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBw6Cc4z4cHx; Wed, 17 Jan 2024 18:28:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516120; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NOE95pvyqqiAs+KeGc1YWdjTBrpJ+Lu0yGu/AI475cY=; b=YZ4MEQHFGsYIOV2xCaTWsRzazwT+20f3FjXPJFA6jPNXpjRRGQQ1R57l5rX6VLTkcS0Sre 1KMEOjXr6lmo/kFd7Y4WaXlpGbG6XbFZMCbgvaCBhC/IQXmwXhcVRqI/wwzAheI56UEF5E g/zCKqg/5KWZ3adkNEi2OHbV+SrMk1zmZl82O/FgTFwa8J6wOvcQ70Xaqj7HZR9bmwz3RQ H9BVdHaVvEIbFfCv+bo2YOzeJc0wSxIJk6c1cuhrStRp34Mrz2TISP0aWmIuZL/oq5G3h1 8UwYW4M7gWM3v1Z6z+z9Uusitwli35cpMS/gPo9q7LP4dpNwBDJKcYDVSGjCBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516120; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NOE95pvyqqiAs+KeGc1YWdjTBrpJ+Lu0yGu/AI475cY=; b=Lr6FdETB5Zrh1puhJbyPrTdbjbCxdOAnD4nkv0v6y1cbSGRC7AilGtJqmNCdDdxymH6uSG fRgNGMuiBRoE8LESbS4b/2K2dfl+Dbh7MQAQ5BSTSiqbn8ye1HRAHSLm+pc40jRbJYVjeN ZzL5DT47qHndPD3CX+NG3uv1QYyDqiGZH/uZvf6PzrgHtvMXh9eedPVKm2XmpzQANQbmNV auvRswB8ZN77WqHWNu1MZD9GNDfpbK5BSkRrxQTfXwMXtbUH212cCcizg8r/7ROpum8R+H ViAZjzI4G9sx8xxgagbMacVegIA/JZMr9B5gNpTNGS/82FBjTDCDdTTaOwravw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516120; a=rsa-sha256; cv=none; b=Bx3O/X7Q8s0s7H9W23uMkdL8bSOPRMCaCveHQUyT8frO0zmJbVbKBBpm141LS7GwWruBGv /2Lv/z3gtqalxgS1u7jFN0lHPhP6GxbCWz2Yp2AjYyUpegxaakHCqEIsuaMDWuV/j0Xj4b FtHDEvlZeRHl5uP0l0V6A5VqkanL9g2ekQjNfiyvo9KWW9AVrC+Lr6d5Xuom67x+cCBpzW e8bol5VUZ6jgg847t5/GwI+MEcq3ntmcjMOkvpENHxDd6LkchFyAorH5okxaBHJb3mKQ7c eSTlWkvsQ4DMx+6z7fB6YglvyBM4vuoBiJelYW5cNQVy3dBqic2ivyrH4KGrUw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBw5KJZzZkp; Wed, 17 Jan 2024 18:28:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISekr063938; Wed, 17 Jan 2024 18:28:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISerV063935; Wed, 17 Jan 2024 18:28:40 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:40 GMT Message-Id: <202401171828.40HISerV063935@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 4cf7301e9683 - stable/13 - uniq(1): use strtonum to parse options List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 4cf7301e96833970cc42c6f75b8068eb51abdd37 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=4cf7301e96833970cc42c6f75b8068eb51abdd37 commit 4cf7301e96833970cc42c6f75b8068eb51abdd37 Author: Daniel Tameling AuthorDate: 2023-02-25 17:25:51 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 16:16:01 +0000 uniq(1): use strtonum to parse options Previously strtol was used and the result was directly cast to an int without checking for an overflow. Use strtonum instead since it is safer and tells us what went wrong. Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/643 (cherry picked from commit e052829e3e16dfd82d0adcbb69fd0e30f47a3a6c) --- usr.bin/uniq/uniq.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/usr.bin/uniq/uniq.c b/usr.bin/uniq/uniq.c index 59676a26e1f8..1513ae185bcf 100644 --- a/usr.bin/uniq/uniq.c +++ b/usr.bin/uniq/uniq.c @@ -100,7 +100,7 @@ main (int argc, char *argv[]) int ch, comp; size_t prevbuflen, thisbuflen, b1; char *prevline, *thisline, *p; - const char *ifn; + const char *ifn, *errstr;; cap_rights_t rights; (void) setlocale(LC_ALL, ""); @@ -129,14 +129,14 @@ main (int argc, char *argv[]) iflag = 1; break; case 'f': - numfields = strtol(optarg, &p, 10); - if (numfields < 0 || *p) - errx(1, "illegal field skip value: %s", optarg); + numfields = strtonum(optarg, 0, INT_MAX, &errstr); + if (errstr) + errx(1, "field skip value is %s: %s", errstr, optarg); break; case 's': - numchars = strtol(optarg, &p, 10); - if (numchars < 0 || *p) - errx(1, "illegal character skip value: %s", optarg); + numchars = strtonum(optarg, 0, INT_MAX, &errstr); + if (errstr != NULL) + errx(1, "character skip value is %s: %s", errstr, optarg); break; case 'u': uflag = 1; From nobody Wed Jan 17 18:28:41 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFZBy1mWMz56P2P; Wed, 17 Jan 2024 18:28:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFZBy04Q6z4cXk; Wed, 17 Jan 2024 18:28:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516122; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rIrFnSJtVvnXUhRuu7VwV6Np+ehliwyOkYiVbk4UY7I=; b=qKN4uPtCtx17IYIzL4NkyJWSLPTTqLcrhk21hoQRZ3jIKEcd2jhOnlAmk3YWdYqUm2plUS 7/X269EPKd93ABvWiMlV67LmxKS9jkQpopAcOX5Aoy/M65v3PoGJFgXPs9owqz8tevNQ2s pxrXt+B054ZRr4WdYw0ILPnLU4nsCKutuEeS0yvEYmGq0Bm9LU0oeHW1CemFQtNe/6fwt2 x3lqwaea0TBnLKnlPwhJypLP4jnl/owwpq/CyQ4mKTzXwrGfSDZlV6ul9yDw2HLXRpitWb XxUslwFbYMXGWdRSJhxMbDci26EhD+2TYbG3Vg95zE8xaSh1JfPzDokrXHhlsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705516122; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rIrFnSJtVvnXUhRuu7VwV6Np+ehliwyOkYiVbk4UY7I=; b=ZuRcpqYdfSkbb3uv8Ud+Z6jNRAGLlCyWh83ZofqqyEVkl0n0AnDS02uoGysm96QkA7GPBH unTe+EHItwm27MWmiPfsivr0ALJpMoTSIgNVTKHhkwko3NCc0tfZhvjicdAt+p9IDBHFjP mOdB9mbTwltbk+SWBZ0q/Rt4Qvkf97fhCH1b2kqpjS/PKEz18TkQNGfWuRYAbXeyiJq/sB vJnWfDYg9xIFUnGmgXCwdihAQHvP/YaSV1DTurm1pMla5QH7AiNrfzA/NqKamOWHnW+8wq oPms3ckSLvtWE+wQVjE6gJKB0NRNGyCqdABJalXWyTFyEkn0SNoSnGN58bH9aw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705516122; a=rsa-sha256; cv=none; b=TqWHu9elttM2lvsJvEOmLK6+aN/G4W3P0/c2mBX2BKFlVQlZOPE2xcR6HjbD92MbRp00Jf D2WcuCJAVyavtc0P1pBybrSYYF3f8SMziM2+0ycL1VwmN7u2rVNeLSa+wVdgFxwhJyEtms GWJYZAjyZqneEUmQxzn8wiZhbT2k81aG/A/VTuM5kGLi1bYoegmBBCSSHkV5kgSuNlsiWm 21BdL8cf+yh3jC5tHFJHZfjpGR+hCNvA/uENuaaz4jPWp1bflO3W+K1YF9P3FXL+1GWpBt NQuI+7W6AIrxfq2hhjM+mUn8Vsm1FXjxU5p9WeObxcF9u4GUOmpbcHQQZClbmw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFZBx6HL0zZkq; Wed, 17 Jan 2024 18:28:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40HISfQh063992; Wed, 17 Jan 2024 18:28:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40HISfZG063989; Wed, 17 Jan 2024 18:28:41 GMT (envelope-from git) Date: Wed, 17 Jan 2024 18:28:41 GMT Message-Id: <202401171828.40HISfZG063989@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 0efd4b792290 - stable/13 - uniq: Replace NetBSD's unit tests with our own. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0efd4b792290f55f9873d12b0a2dadd1400c5d25 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=0efd4b792290f55f9873d12b0a2dadd1400c5d25 commit 0efd4b792290f55f9873d12b0a2dadd1400c5d25 Author: Dag-Erling Smørgrav AuthorDate: 2024-01-12 15:40:26 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-17 16:16:01 +0000 uniq: Replace NetBSD's unit tests with our own. These new tests cover more functionality and are easier to extend. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D43381 (cherry picked from commit e762fd81e253d4ae9b9f7d2e65cf448633bbe527) uniq: Fix interactive use. Output a line as soon as it is possible to determine that it will have to be output. For the basic case, this means output each line as it is read unless it is identical to the previous one. For the -d case, it means output the first instance as soon as the second is read, unless the -c option was also given. The -D and -u cases were already fine. Add test cases for interactive use with no options and with -d. Explicitly ignore -d when -D is also specified. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: rew, kevans Differential Revision: https://reviews.freebsd.org/D43382 (cherry picked from commit 11715600e626cf6cc4b4f564af97f6ae1e5fb0be) uniq: Clean up and test obsolete options. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43402 (cherry picked from commit e2ec8ee02a33e39b8ff86a56e8a1ef5e84ac7e62) uniq: Error out if writing to the output failed. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D43407 (cherry picked from commit 899837e8f5741f9a847b63d9e7c8b76ccc033ab5) --- ObsoleteFiles.inc | 8 ++ usr.bin/uniq/tests/Makefile | 13 +-- usr.bin/uniq/tests/uniq_test.sh | 193 ++++++++++++++++++++++++++++++++++++++++ usr.bin/uniq/uniq.1 | 5 +- usr.bin/uniq/uniq.c | 68 +++++++------- 5 files changed, 244 insertions(+), 43 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index b87ee2e82b91..73435961164c 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,14 @@ # xargs -n1 | sort | uniq -d; # done +# 20240112: replaced NetBSD tests for uniq with our own +OLD_FILES+=usr/tests/usr.bin/uniq/d_basic.in +OLD_FILES+=usr/tests/usr.bin/uniq/d_basic.out +OLD_FILES+=usr/tests/usr.bin/uniq/d_counts.out +OLD_FILES+=usr/tests/usr.bin/uniq/d_input.in +OLD_FILES+=usr/tests/usr.bin/uniq/d_show_duplicates.out +OLD_FILES+=usr/tests/usr.bin/uniq/d_show_uniques.out + # 20240107: new clang import which bumps version from 16 to 17 OLD_FILES+=usr/lib/clang/16/include/__clang_cuda_builtin_vars.h OLD_FILES+=usr/lib/clang/16/include/__clang_cuda_cmath.h diff --git a/usr.bin/uniq/tests/Makefile b/usr.bin/uniq/tests/Makefile index d9c839aa35b6..55bb98e98c34 100644 --- a/usr.bin/uniq/tests/Makefile +++ b/usr.bin/uniq/tests/Makefile @@ -1,15 +1,4 @@ - PACKAGE= tests - -NETBSD_ATF_TESTS_SH= uniq_test - -${PACKAGE}FILES+= d_basic.in -${PACKAGE}FILES+= d_basic.out -${PACKAGE}FILES+= d_counts.out -${PACKAGE}FILES+= d_input.in -${PACKAGE}FILES+= d_show_duplicates.out -${PACKAGE}FILES+= d_show_uniques.out - -.include +ATF_TESTS_SH= uniq_test .include diff --git a/usr.bin/uniq/tests/uniq_test.sh b/usr.bin/uniq/tests/uniq_test.sh new file mode 100755 index 000000000000..804e82ce7766 --- /dev/null +++ b/usr.bin/uniq/tests/uniq_test.sh @@ -0,0 +1,193 @@ +# +# Copyright (c) 2024 Klara, Inc. +# +# SPDX-License-Identifier: BSD-2-Clause +# + +atf_check_uniq() { + atf_check uniq "$@" input actual + atf_check diff -u actual expected + atf_check uniq "$@" - actual input + printf "a\nb\na\n" >expected + atf_check_uniq +} + +atf_test_case count +count_head() { + atf_set descr "basic test showing counts" +} +count_body() { + printf "a\na\nb\nb\nb\na\na\na\na\n" >input + printf " 2 a\n 3 b\n 4 a\n" >expected + atf_check_uniq -c + atf_check_uniq --count +} + +atf_test_case repeated +repeated_head() { + atf_set descr "print repeated lines only" +} +repeated_body() { + printf "a\na\nb\na\na\n" >input + printf "a\na\n" >expected + atf_check_uniq -d + atf_check_uniq --repeated +} + +atf_test_case count_repeated +count_repeated_head() { + atf_set descr "count and print repeated lines only" +} +count_repeated_body() { + printf "a\na\nb\nb\na\n" >input + printf " 2 a\n 2 b\n" >expected + atf_check_uniq --count --repeated +} + +atf_test_case all_repeated +all_repeated_head() { + atf_set descr "print every instance of repeated lines" +} +all_repeated_body() { + printf "a\na\nb\na\na\n" >input + printf "a\na\na\na\n" >expected + atf_check_uniq -D + atf_check_uniq --all-repeated +} + +atf_test_case skip_fields +skip_fields_head() { + atf_set descr "skip fields" +} +skip_fields_body() { + printf "1 a\n2 a\n3 b\n4 b\n5 a\n6 a\n" >input + printf "1 a\n3 b\n5 a\n" >expected + atf_check_uniq -1 + atf_check_uniq -f 1 + atf_check_uniq --skip-fields 1 +} + +atf_test_case skip_fields_tab +skip_fields_tab_head() { + atf_set descr "skip fields (with tabs)" +} +skip_fields_tab_body() { + printf "1\ta\n2\ta\n3\tb\n4\tb\n5\ta\n6\ta\n" >input + printf "1\ta\n3\tb\n5\ta\n" >expected + atf_check_uniq -1 + atf_check_uniq -f 1 + atf_check_uniq --skip-fields 1 +} + +atf_test_case ignore_case +ignore_case_head() { + atf_set descr "ignore case" +} +ignore_case_body() { + printf "a\nA\nb\nB\na\nA\n" >input + printf "a\nb\na\n" >expected + atf_check_uniq -i + atf_check_uniq --ignore-case +} + +atf_test_case skip_chars +skip_chars_head() { + atf_set descr "skip chars" +} +skip_chars_body() { + printf "1 a\n2 a\n3 b\n4 b\n5 a\n6 a\n" >input + printf "1 a\n3 b\n5 a\n" >expected + atf_check_uniq +2 + atf_check_uniq -s 2 + atf_check_uniq --skip-chars 2 +} + +atf_test_case unique +unique_head() { + atf_set descr "print non-repeated lines only" +} +unique_body() { + printf "a\na\nb\na\na\n" >input + printf "b\n" >expected + atf_check_uniq -u + atf_check_uniq --unique +} + +atf_test_case count_unique +count_unique_head() { + atf_set descr "print non-repeated lines with count" +} +count_unique_body() { + printf "a\na\nb\n" >input + printf " 1 b\n" >expected + atf_check_uniq --unique --count + atf_check_uniq --count --unique +} + +atf_test_case interactive +interactive_head() { + atf_set descr "test interactive use" +} +interactive_body() { + sh -c 'yes | stdbuf -oL uniq >actual' & + pid=$! + sleep 1 + kill $! + atf_check -o inline:"y\n" cat actual +} + +atf_test_case interactive_repeated +interactive_repeated_head() { + atf_set descr "test interactive use with -d" +} +interactive_repeated_body() { + sh -c 'yes | stdbuf -oL uniq -d >actual' & + pid=$! + sleep 1 + kill $! + atf_check -o inline:"y\n" cat actual +} + +atf_test_case stdout +stdout_head() { + atf_set descr "error writing to stdout" +} +stdout_body() { + ( + trap "" PIPE + echo a | uniq 2>stderr + echo $? >result + ) | true + atf_check -o inline:"1\n" cat result + atf_check -o match:"stdout" cat stderr +} + +atf_init_test_cases() +{ + atf_add_test_case basic + atf_add_test_case count + atf_add_test_case repeated + atf_add_test_case count_repeated + atf_add_test_case all_repeated + atf_add_test_case skip_fields + atf_add_test_case skip_fields_tab + atf_add_test_case ignore_case + atf_add_test_case skip_chars + atf_add_test_case unique + atf_add_test_case count_unique + atf_add_test_case interactive + atf_add_test_case interactive_repeated + atf_add_test_case stdout +} diff --git a/usr.bin/uniq/uniq.1 b/usr.bin/uniq/uniq.1 index 285e13d901a7..3fc1d26774ca 100644 --- a/usr.bin/uniq/uniq.1 +++ b/usr.bin/uniq/uniq.1 @@ -30,7 +30,7 @@ .\" .\" From: @(#)uniq.1 8.1 (Berkeley) 6/6/93 .\" -.Dd June 7, 2020 +.Dd January 12, 2024 .Dt UNIQ 1 .Os .Sh NAME @@ -74,6 +74,9 @@ Precede each output line with the count of the number of times the line occurred in the input, followed by a single space. .It Fl d , Fl -repeated Output a single copy of each line that is repeated in the input. +Ignored if +.Fl D +is also specified. .It Fl D , Fl -all-repeated Op Ar septype Output all lines that are repeated (like .Fl d , diff --git a/usr.bin/uniq/uniq.c b/usr.bin/uniq/uniq.c index 1513ae185bcf..5b675600e56c 100644 --- a/usr.bin/uniq/uniq.c +++ b/usr.bin/uniq/uniq.c @@ -54,6 +54,7 @@ static char sccsid[] = "@(#)uniq.c 8.3 (Berkeley) 5/4/95"; #include #include #include +#include #include #include #include @@ -63,14 +64,9 @@ static char sccsid[] = "@(#)uniq.c 8.3 (Berkeley) 5/4/95"; #include #include -static int Dflag, cflag, dflag, uflag, iflag; -static int numchars, numfields, repeats; - -/* Dflag values */ -#define DF_NONE 0 -#define DF_NOSEP 1 -#define DF_PRESEP 2 -#define DF_POSTSEP 3 +static enum { DF_NONE, DF_NOSEP, DF_PRESEP, DF_POSTSEP } Dflag; +static bool cflag, dflag, uflag, iflag; +static long long numchars, numfields, repeats; static const struct option long_opts[] = { @@ -100,7 +96,7 @@ main (int argc, char *argv[]) int ch, comp; size_t prevbuflen, thisbuflen, b1; char *prevline, *thisline, *p; - const char *ifn, *errstr;; + const char *errstr, *ifn, *ofn; cap_rights_t rights; (void) setlocale(LC_ALL, ""); @@ -120,13 +116,13 @@ main (int argc, char *argv[]) usage(); break; case 'c': - cflag = 1; + cflag = true; break; case 'd': - dflag = 1; + dflag = true; break; case 'i': - iflag = 1; + iflag = true; break; case 'f': numfields = strtonum(optarg, 0, INT_MAX, &errstr); @@ -139,7 +135,7 @@ main (int argc, char *argv[]) errx(1, "character skip value is %s: %s", errstr, optarg); break; case 'u': - uflag = 1; + uflag = true; break; case '?': default: @@ -152,9 +148,13 @@ main (int argc, char *argv[]) if (argc > 2) usage(); + if (Dflag && dflag) + dflag = false; + ifp = stdin; ifn = "stdin"; ofp = stdout; + ofn = "stdout"; if (argc > 0 && strcmp(argv[0], "-") != 0) ifp = file(ifn = argv[0], "r"); cap_rights_init(&rights, CAP_FSTAT, CAP_READ); @@ -162,7 +162,7 @@ main (int argc, char *argv[]) err(1, "unable to limit rights for %s", ifn); cap_rights_init(&rights, CAP_FSTAT, CAP_WRITE); if (argc > 1) - ofp = file(argv[1], "w"); + ofp = file(ofn = argv[1], "w"); else cap_rights_set(&rights, CAP_IOCTL); if (caph_rights_limit(fileno(ofp), &rights) < 0) { @@ -192,6 +192,8 @@ main (int argc, char *argv[]) err(1, "%s", ifn); exit(0); } + if (!cflag && !Dflag && !dflag && !uflag) + show(ofp, prevline); tprev = convert(prevline); tthis = NULL; @@ -211,7 +213,11 @@ main (int argc, char *argv[]) /* If different, print; set previous to new value. */ if (Dflag == DF_POSTSEP && repeats > 0) fputc('\n', ofp); - if (!Dflag) + if (!cflag && !Dflag && !dflag && !uflag) + show(ofp, thisline); + else if (!Dflag && + (!dflag || (cflag && repeats > 0)) && + (!uflag || repeats == 0)) show(ofp, prevline); p = prevline; b1 = prevbuflen; @@ -232,14 +238,23 @@ main (int argc, char *argv[]) show(ofp, prevline); } show(ofp, thisline); + } else if (dflag && !cflag) { + if (repeats == 0) + show(ofp, prevline); } ++repeats; } } if (ferror(ifp)) err(1, "%s", ifn); - if (!Dflag) + if (!cflag && !Dflag && !dflag && !uflag) + /* already printed */ ; + else if (!Dflag && + (!dflag || (cflag && repeats > 0)) && + (!uflag || repeats == 0)) show(ofp, prevline); + if (fflush(ofp) != 0) + err(1, "%s", ofn); exit(0); } @@ -303,11 +318,8 @@ inlcmp(const char *s1, const char *s2) static void show(FILE *ofp, const char *str) { - - if ((!Dflag && dflag && repeats == 0) || (uflag && repeats > 0)) - return; if (cflag) - (void)fprintf(ofp, "%4d %s", repeats + 1, str); + (void)fprintf(ofp, "%4lld %s", repeats + 1, str); else (void)fprintf(ofp, "%s", str); } @@ -315,7 +327,7 @@ show(FILE *ofp, const char *str) static wchar_t * skip(wchar_t *str) { - int nchars, nfields; + long long nchars, nfields; for (nfields = 0; *str != L'\0' && nfields++ != numfields; ) { while (iswblank(*str)) @@ -341,29 +353,25 @@ file(const char *name, const char *mode) static void obsolete(char *argv[]) { - int len; - char *ap, *p, *start; + char *ap, *p; while ((ap = *++argv)) { /* Return if "--" or not an option of any form. */ if (ap[0] != '-') { if (ap[0] != '+') return; - } else if (ap[1] == '-') + } else if (ap[1] == '-') { return; + } if (!isdigit((unsigned char)ap[1])) continue; /* * Digit signifies an old-style option. Malloc space for dash, * new option and argument. */ - len = strlen(ap); - if ((start = p = malloc(len + 3)) == NULL) + if (asprintf(&p, "-%c%s", ap[0] == '+' ? 's' : 'f', ap + 1) < 0) err(1, "malloc"); - *p++ = '-'; - *p++ = ap[0] == '+' ? 's' : 'f'; - (void)strcpy(p, ap + 1); - *argv = start; + *argv = p; } } From nobody Thu Jan 18 01:02:39 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFkxX0RhLz57DCD; Thu, 18 Jan 2024 01:02:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFkxW6l9Zz4XYc; Thu, 18 Jan 2024 01:02:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705539759; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hIHSYG1cnmwqclpkBiwHxlK3FcyKpjyHegtYFBDtVp4=; b=tKN5w8Rmc1ZcssRnXVbNPbDJyxsr2vnEfjJW3bPyfKEo06JZPHMekunpeVv7GfemD8LeZl qbbiVQUxp/vQ7yEB0VFdllHpjNrsS0FbGxcRmuDd261o3VHGWVKNhA49mVTl7nK1sqX2DM OR/rBEfV8p4gOMDKY6jZ7daaOi8ZUxKDmxPefassXYrswajQZDKM/6tK/ew3ktgXQ/Hssn H+kEQI1z17WFzDPEAnMNo8nXC9Fe+opRIZGx0h1TUQ7FkO3WYNG121/yjyKwDuorrfbhal V8shpqmbbMu8LDJWYqa4OGIuX+ivEZrbyUbn2NmPkMeJ6Ng3nZIhl2RGbU7sPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705539759; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hIHSYG1cnmwqclpkBiwHxlK3FcyKpjyHegtYFBDtVp4=; b=jnpMbqaWtDJVcL+iNoFL0/t5T+Ix6k/EguXKYCf/iRn2Y1Xb3NDqhh8Zy/X6/6Bt0ATOvV 9RHHIJX2fmLAAy59qve80ljIhCDdVBBdBbjX02ua2WuJXHJSsYGcY/FPMhC2vw7+h9m0VG YDCBBgqavi83cyT4ml4CHRkTmwNzdFagmP3PUyW9xRDHRgREhZwbVJb59JMJ5uh4iWFKU1 Li1PNlKIu+T/Vcux1HgMKPyY5mGA+qo69RMs77gb54G2wWA4rqdIokFBrLV5KiLpqw/5QA w+0uErb/luVlTjb8kvA20X6cDzghPCppE6Ot7MDWhrykr2bUM2NO328EcDjrJQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705539759; a=rsa-sha256; cv=none; b=hspUL70QGjfAauE57C+4FcVpWTSMCkTSxk0m+1mLnZqa28cmeuhRpqWrnCeJ6C1sOTY8A9 6A0JTcuy37HchqhmA+/k0uehVODYMz0OVA9rkqOzXWE0XJ8TFRUOjYilqL0To2Q+bKUbHa 1rTiu/ABQYWH0CV6H5YpM0ZHxJQ2Vz96w4S3f1qwHfmlzYnYmqS4jLlMvKroJnuRBaDDfF jsjB+SaoCZvcI6Mww4ucKB9ERGL77/Omuky/5rMQaJhrOXR5q2SJPfL+XExp2JVaomo4J8 lBuD5BMdrOHkKTgwDaAJhE5KFYSosRLPIchAFz36GPCzMCcQGtdYhn+W0AGqng== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFkxW5pGzzmYM; Thu, 18 Jan 2024 01:02:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40I12dmI036659; Thu, 18 Jan 2024 01:02:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40I12dLk036656; Thu, 18 Jan 2024 01:02:39 GMT (envelope-from git) Date: Thu, 18 Jan 2024 01:02:39 GMT Message-Id: <202401180102.40I12dLk036656@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 8ecd7bfd6c7c - stable/14 - vnode_pager_generic_putpages(): correctly handle clean block at EOF List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8ecd7bfd6c7cd1b66ef62b8e8fc8ca99c4f26669 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8ecd7bfd6c7cd1b66ef62b8e8fc8ca99c4f26669 commit 8ecd7bfd6c7cd1b66ef62b8e8fc8ca99c4f26669 Author: Konstantin Belousov AuthorDate: 2024-01-08 13:21:06 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-18 00:51:32 +0000 vnode_pager_generic_putpages(): correctly handle clean block at EOF PR: 276191 (cherry picked from commit bdb46c21a3e68d4395d6e0b6a205187e655532b0) --- sys/vm/vnode_pager.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index 4f4a5c0c176e..013b371964db 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -1466,12 +1466,13 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, start_write: if (next_offset > poffset + maxsize) next_offset = poffset + maxsize; + if (prev_offset == next_offset) + goto write_done; /* * Getting here requires finding a dirty block in the * 'skip clean blocks' loop. */ - MPASS(prev_offset < next_offset); aiov.iov_base = NULL; auio.uio_iovcnt = 1; From nobody Thu Jan 18 01:02:40 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFkxY17WKz57DTf; Thu, 18 Jan 2024 01:02:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFkxY0dVtz4Xby; Thu, 18 Jan 2024 01:02:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705539761; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8Bn3PUARMica/1PvkQwcFkNf0sRdYpsWdUunxJH9duM=; b=k174HNpMy/prlX39E2CD0tkk287il2qyCQZVyGXAeEz2OrPcJnyE0j2gqfnUpOZB7pLLOM FpuONg2aDZy9kttu8BWHu+dQ3WPDFMpXZmw4OCfPrbU0l30OiLxFNFIXgJvt6hNr6C85ua Mg33zTLGhAE4U8ylazuYrw50qMbRMjHXOM75BrJAL+FSjEk6XFJkXam3ewmfmGvR27FwpJ Rig0mqusrKZ6jR7Xn8VR11G3UZ2SSHUwV0Q+jSI4+yvtUmP0Lwhebv2BIkzcFEmXfgUj1n pqUT6UFOFHzOP4+r59Kx8lOKJNt+C4hyUpxR6daBz3PY8dwtPOge6ke9Wj5e9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705539761; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8Bn3PUARMica/1PvkQwcFkNf0sRdYpsWdUunxJH9duM=; b=yFLjPPW6tjcwi5Cl9DlSxZwIrGykr2WP5Tx4ubrsMRLpXURKiMx76/s8jBkTwn9Onj9h9f v7P3um/4PF4ZH6I10V2LsBo5AsAzZND6wHIya9tBZgnABTYdtuxbo3OUWnw4nnqlBWeXEs j6TE/asom7Mnu9PjUBmLuZ05je8PLigV9EaiuoQWcrZ/7IRXXhTxwNJY+TWAcbtLMd1/2O uStia9IasJCPIxjJGrHgds3I0+AgVVEC/KMy2XqGZlm3i0Lwrokxl5Bh8cyh0TXLL5fQon Ycukpw+e6t6w3zwoJTBMpWqWGGzoIqjCIF1WXizYJM8mVlitnP+/HKmFE8gfyA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705539761; a=rsa-sha256; cv=none; b=D6PoeKn+apQHEeJxhJ1FXSdG+8oQ3N7WZaIBRZNVYOBwWQ70/RTEk0ij7l1QUupHz474uV V6eMi9HYzC9H1hJQnufZ/pTXvf0nA4AOqTdpWYCveULxfK6+ba48rBngULcEFxXk4lXqOd y4sR7eI9auZxKQSZLZor9hMQ2KcIZqKGXvPjlp7LW4wxo8L8rdOb/jBkNzawrqUVPe6HS2 DBdWe9lzDqEhGkoZYbulA+g19c3rpphCZK5DyWFnATvfedk3JmORzZHbfVmudMWTObepw6 6iopkHhrwHxbfBKviCvbNz8iQThtz9d9GMskIQ8txgJUiHHRCMQoZSnbZyk4Lw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFkxX6pkJzlgk; Thu, 18 Jan 2024 01:02:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40I12eLE036704; Thu, 18 Jan 2024 01:02:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40I12ecg036701; Thu, 18 Jan 2024 01:02:40 GMT (envelope-from git) Date: Thu, 18 Jan 2024 01:02:40 GMT Message-Id: <202401180102.40I12ecg036701@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: c4c138072ae6 - stable/14 - vnode_pager_generic_putpages(): rename maxblksz local to max_offset List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c4c138072ae6623661af9392f86e5c347bfb97dd Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=c4c138072ae6623661af9392f86e5c347bfb97dd commit c4c138072ae6623661af9392f86e5c347bfb97dd Author: Konstantin Belousov AuthorDate: 2024-01-09 11:32:39 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-18 00:51:33 +0000 vnode_pager_generic_putpages(): rename maxblksz local to max_offset (cherry picked from commit ed1a88a3116a59b4fd37912099a575b4c8f559dc) --- sys/vm/vnode_pager.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index 013b371964db..5bfaea3d4ff1 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -1358,7 +1358,7 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, { vm_object_t object; vm_page_t m; - vm_ooffset_t maxblksz, next_offset, poffset, prev_offset; + vm_ooffset_t max_offset, next_offset, poffset, prev_offset; struct uio auio; struct iovec aiov; off_t prev_resid, wrsz; @@ -1433,15 +1433,15 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, auio.uio_segflg = UIO_NOCOPY; auio.uio_rw = UIO_WRITE; auio.uio_td = NULL; - maxblksz = roundup2(poffset + maxsize, DEV_BSIZE); + max_offset = roundup2(poffset + maxsize, DEV_BSIZE); - for (prev_offset = poffset; prev_offset < maxblksz;) { + for (prev_offset = poffset; prev_offset < max_offset;) { /* Skip clean blocks. */ - for (in_hole = true; in_hole && prev_offset < maxblksz;) { + for (in_hole = true; in_hole && prev_offset < max_offset;) { m = ma[OFF_TO_IDX(prev_offset - poffset)]; for (i = vn_off2bidx(prev_offset); i < sizeof(vm_page_bits_t) * NBBY && - prev_offset < maxblksz; i++) { + prev_offset < max_offset; i++) { if (vn_dirty_blk(m, prev_offset)) { in_hole = false; break; @@ -1453,11 +1453,11 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, goto write_done; /* Find longest run of dirty blocks. */ - for (next_offset = prev_offset; next_offset < maxblksz;) { + for (next_offset = prev_offset; next_offset < max_offset;) { m = ma[OFF_TO_IDX(next_offset - poffset)]; for (i = vn_off2bidx(next_offset); i < sizeof(vm_page_bits_t) * NBBY && - next_offset < maxblksz; i++) { + next_offset < max_offset; i++) { if (!vn_dirty_blk(m, next_offset)) goto start_write; next_offset += DEV_BSIZE; From nobody Thu Jan 18 01:02:42 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFkxZ3kQ5z57D9Q; Thu, 18 Jan 2024 01:02:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFkxZ1gszz4X8t; Thu, 18 Jan 2024 01:02:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705539762; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HRuc+6cKHplQN6/koRFfU5msx3Abhasv49r74KefKIQ=; b=QpezZlFevvnnP0LKD+lkhnx3zFLUA4adFschKMQ0g+wFsomjlqrZgJPfLQhZyqIK3Fj57b P6zHkl32AVgO9xegkIYAD6p6Qu0VykVUEvRhZnTgf4tcA1cdrcM9r8xIHY0dH8M3GuS98u x9NtHWdzQ7MCD0d2V8qraA+Li+T5p8Gc7xIkiRmj53gWfjroA498T8FC7iNzuk0baGAzz4 +wiONADgc4/FHbxlCd+Ry+OA0fH5NUciKHZo8nQAQhDK7YRr5ED0h+ReOw0rgbFkZtmdnP zamfJrwAOgSipUSHdtDnZqAFPU9S88I/gJMqrCUirxI3/cPyHilCq2YrULL8YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705539762; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HRuc+6cKHplQN6/koRFfU5msx3Abhasv49r74KefKIQ=; b=Xvm9j/8rPYr5RnYzJnsb0u4Nt42FiFFSAL9xhmMKJkMjKqt9Noqm7lmMDNSxXaXw9qVsfT 6QFPYKnbj+KBF1vc6TDIwjStGr+/uUBl58Tspbs55L8MwgpBpSSSeQ5pmQOUCzammk2Ob3 yRou0WA0EOl6GX6DtSEvSmf1TwDEclbHa5Ww7kAlElhl5rjU+PioGA6fugp78Sqyu1B3IB TfG/T82aQtJRRriLillWXSP+CbNnvc5T28JuGfmDt3X2fiE38TrP4vNnSW1SuK6wKaXEBs XhwXAXnyt9Bs47ylNKIA8wyNR4OtqwgfOKkkvBVxsF7SApM/HB6jISsSx/zPSg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705539762; a=rsa-sha256; cv=none; b=w8JM7pDpPsB59Px7MwIOANq9mOvMvB9PH35Cu50+4L7A9eMwXXLx+BZUEY51XoR0z1bOtk IuQFaQcxyblBvKM7SeoIXIlyFA2mNsk+exykSCV3yrYANiDXjYEzAz6aexjdGXDeLP4bST zqBWtB0RcnThi12KGffRZw+60blVqPiuGIk3G/2l516sJq6CbbFBNgCc1QgfmVOoAQWFTS +Wh0kGzrji6IbGv+Uwzj0/5KrwOpv+SZioQ/cCmgGXmvucrUbpfUXFBWScaB+snNybW8My anIOb5Ex+uCLhsL6N6mpHYiunbYS2plXSh92ONo2vXrBMFJmTsMG34uEpFp2Sw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFkxZ0M3fzmWZ; Thu, 18 Jan 2024 01:02:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40I12goC036737; Thu, 18 Jan 2024 01:02:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40I12gDX036734; Thu, 18 Jan 2024 01:02:42 GMT (envelope-from git) Date: Thu, 18 Jan 2024 01:02:42 GMT Message-Id: <202401180102.40I12gDX036734@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 64e869e9b93c - stable/14 - Add vnode_pager_clean_{a,}sync(9) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 64e869e9b93c8ce47f874b770df696c06bcba0d3 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=64e869e9b93c8ce47f874b770df696c06bcba0d3 commit 64e869e9b93c8ce47f874b770df696c06bcba0d3 Author: Konstantin Belousov AuthorDate: 2024-01-08 05:18:40 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-18 00:51:33 +0000 Add vnode_pager_clean_{a,}sync(9) (cherry picked from commit b068bb09a1a82d9fef0e939ad6135443a959e290) --- .../openzfs/include/os/freebsd/spl/sys/vnode.h | 9 +++--- sys/fs/fuse/fuse_io.c | 7 ++-- sys/fs/nfsclient/nfs_clbio.c | 8 ++--- sys/fs/nfsclient/nfs_clnode.c | 17 +++------- sys/fs/nfsclient/nfs_clvnops.c | 27 ++++------------ sys/fs/nfsserver/nfs_nfsdport.c | 8 ++--- sys/fs/smbfs/smbfs_io.c | 7 +--- sys/kern/vfs_aio.c | 9 ++---- sys/kern/vfs_subr.c | 37 ++++++++-------------- sys/kern/vfs_syscalls.c | 7 ++-- sys/kern/vfs_vnops.c | 9 ++---- sys/sys/param.h | 2 +- sys/ufs/ffs/ffs_rawread.c | 14 +++----- sys/ufs/ufs/ufs_bmap.c | 9 ++---- sys/vm/vnode_pager.c | 27 ++++++++++++++++ sys/vm/vnode_pager.h | 3 ++ 16 files changed, 82 insertions(+), 118 deletions(-) diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h index 75c32f221ffd..7a3b38736a58 100644 --- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h +++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h @@ -66,6 +66,7 @@ enum symfollow { NO_FOLLOW = NOFOLLOW }; #include #include #include +#include typedef struct vop_vector vnodeops_t; #define VOP_FID VOP_VPTOFH @@ -100,11 +101,11 @@ vn_flush_cached_data(vnode_t *vp, boolean_t sync) #else if (vp->v_object->flags & OBJ_MIGHTBEDIRTY) { #endif - int flags = sync ? OBJPC_SYNC : 0; vn_lock(vp, LK_SHARED | LK_RETRY); - zfs_vmobject_wlock(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, flags); - zfs_vmobject_wunlock(vp->v_object); + if (sync) + vnode_pager_clean_sync(vp); + else + vnode_pager_clean_async(vp); VOP_UNLOCK1(vp); } } diff --git a/sys/fs/fuse/fuse_io.c b/sys/fs/fuse/fuse_io.c index 8bb90d68a462..877da90b580b 100644 --- a/sys/fs/fuse/fuse_io.c +++ b/sys/fs/fuse/fuse_io.c @@ -96,6 +96,7 @@ #include #include #include +#include #include "fuse.h" #include "fuse_file.h" @@ -946,11 +947,7 @@ fuse_io_invalbuf(struct vnode *vp, struct thread *td) } fvdat->flag |= FN_FLUSHINPROG; - if (vp->v_bufobj.bo_object != NULL) { - VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); - vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); - } + vnode_pager_clean_sync(vp); error = vinvalbuf(vp, V_SAVE, PCATCH, 0); while (error) { if (error == ERESTART || error == EINTR) { diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c index f6b8cc0a70a4..9a471f6681ca 100644 --- a/sys/fs/nfsclient/nfs_clbio.c +++ b/sys/fs/nfsclient/nfs_clbio.c @@ -1439,11 +1439,9 @@ ncl_vinvalbuf(struct vnode *vp, int flags, struct thread *td, int intrflg) /* * Now, flush as required. */ - if ((flags & (V_SAVE | V_VMIO)) == V_SAVE && - vp->v_bufobj.bo_object != NULL) { - VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); - vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); + if ((flags & (V_SAVE | V_VMIO)) == V_SAVE) { + vnode_pager_clean_sync(vp); + /* * If the page clean was interrupted, fail the invalidation. * Not doing so, we run the risk of losing dirty pages in the diff --git a/sys/fs/nfsclient/nfs_clnode.c b/sys/fs/nfsclient/nfs_clnode.c index 00e25472f856..ba76fe5a62af 100644 --- a/sys/fs/nfsclient/nfs_clnode.c +++ b/sys/fs/nfsclient/nfs_clnode.c @@ -48,6 +48,8 @@ #include #include +#include +#include #include #include @@ -237,7 +239,6 @@ ncl_inactive(struct vop_inactive_args *ap) struct vnode *vp = ap->a_vp; struct nfsnode *np; struct thread *td; - boolean_t retv; td = curthread; np = VTONFS(vp); @@ -251,17 +252,9 @@ ncl_inactive(struct vop_inactive_args *ap) * buffers/pages must be flushed before the close, so that the * stateid is available for the writes. */ - if (vp->v_object != NULL) { - VM_OBJECT_WLOCK(vp->v_object); - retv = vm_object_page_clean(vp->v_object, 0, 0, - OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_object); - } else - retv = TRUE; - if (retv == TRUE) { - (void)ncl_flush(vp, MNT_WAIT, td, 1, 0); - (void)nfsrpc_close(vp, 1, td); - } + vnode_pager_clean_sync(vp); + (void)ncl_flush(vp, MNT_WAIT, td, 1, 0); + (void)nfsrpc_close(vp, 1, td); } NFSLOCKNODE(np); diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c index 3f1ab9741673..0014f8a26d20 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -67,6 +67,7 @@ #include #include #include +#include #include #include @@ -766,9 +767,7 @@ nfs_open(struct vop_open_args *ap) if (VN_IS_DOOMED(vp)) return (EBADF); } - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); + vnode_pager_clean_sync(vp); } /* Now, flush the buffer cache. */ @@ -854,9 +853,7 @@ nfs_close(struct vop_close_args *ap) if (VN_IS_DOOMED(vp) && ap->a_fflag != FNONBLOCK) return (EBADF); } - VM_OBJECT_WLOCK(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, 0); - VM_OBJECT_WUNLOCK(vp->v_object); + vnode_pager_clean_async(vp); } NFSLOCKNODE(np); if (np->n_flag & NMODIFIED) { @@ -3637,7 +3634,6 @@ nfs_allocate(struct vop_allocate_args *ap) { struct vnode *vp = ap->a_vp; struct thread *td = curthread; - vm_object_t obj; struct nfsvattr nfsva; struct nfsmount *nmp; struct nfsnode *np; @@ -3667,12 +3663,7 @@ nfs_allocate(struct vop_allocate_args *ap) * file's allocation on the server. */ if (error == 0) { - obj = vp->v_object; - if (obj != NULL) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); - } + vnode_pager_clean_sync(vp); error = ncl_flush(vp, MNT_WAIT, td, 1, 0); } if (error == 0) @@ -3908,9 +3899,7 @@ relock: vn_finished_write(mp); goto relock; } - VM_OBJECT_WLOCK(invp_obj); - vm_object_page_clean(invp_obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(invp_obj); + vnode_pager_clean_sync(invp); } error = ncl_flush(invp, MNT_WAIT, curthread, 1, 0); } @@ -4069,7 +4058,6 @@ static int nfs_ioctl(struct vop_ioctl_args *ap) { struct vnode *vp = ap->a_vp; - vm_object_t obj; struct nfsvattr nfsva; struct nfsmount *nmp; int attrflag, content, error, ret; @@ -4114,10 +4102,7 @@ nfs_ioctl(struct vop_ioctl_args *ap) * size is up to date on the Metadata Server. */ - obj = vp->v_object; - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); + vnode_pager_clean_sync(vp); error = ncl_flush(vp, MNT_WAIT, ap->a_td, 1, 0); if (error == 0) error = nfsrpc_seek(vp, (off_t *)ap->a_data, &eof, diff --git a/sys/fs/nfsserver/nfs_nfsdport.c b/sys/fs/nfsserver/nfs_nfsdport.c index 776d5c50861c..f8c2ddfd2a59 100644 --- a/sys/fs/nfsserver/nfs_nfsdport.c +++ b/sys/fs/nfsserver/nfs_nfsdport.c @@ -52,6 +52,8 @@ #include #include #include +#include +#include FEATURE(nfsd, "NFSv4 server"); @@ -1716,11 +1718,7 @@ nfsvno_fsync(struct vnode *vp, u_int64_t off, int cnt, struct ucred *cred, /* * Give up and do the whole thing */ - if (vp->v_object && vm_object_mightbedirty(vp->v_object)) { - VM_OBJECT_WLOCK(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_object); - } + vnode_pager_clean_sync(vp); error = VOP_FSYNC(vp, MNT_WAIT, td); } else { /* diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c index f09254289769..324f38abd10e 100644 --- a/sys/fs/smbfs/smbfs_io.c +++ b/sys/fs/smbfs/smbfs_io.c @@ -636,12 +636,7 @@ smbfs_vinvalbuf(struct vnode *vp, struct thread *td) } np->n_flag |= NFLUSHINPROG; - if (vp->v_bufobj.bo_object != NULL) { - VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); - vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); - } - + vnode_pager_clean_sync(vp); error = vinvalbuf(vp, V_SAVE, PCATCH, 0); while (error) { if (error == ERESTART || error == EINTR) { diff --git a/sys/kern/vfs_aio.c b/sys/kern/vfs_aio.c index 20efff89913d..8a0375a9f002 100644 --- a/sys/kern/vfs_aio.c +++ b/sys/kern/vfs_aio.c @@ -68,6 +68,7 @@ #include #include #include +#include #include #include @@ -718,7 +719,6 @@ static int aio_fsync_vnode(struct thread *td, struct vnode *vp, int op) { struct mount *mp; - vm_object_t obj; int error; for (;;) { @@ -726,12 +726,7 @@ aio_fsync_vnode(struct thread *td, struct vnode *vp, int op) if (error != 0) break; vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); - obj = vp->v_object; - if (obj != NULL) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, 0); - VM_OBJECT_WUNLOCK(obj); - } + vnode_pager_clean_async(vp); if (op == LIO_DSYNC) error = VOP_FDATASYNC(vp, td); else diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 3928cde7a719..b9e92b5b9812 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -96,6 +96,7 @@ #include #include #include +#include #include #if defined(DEBUG_VFS_LOCKS) && (!defined(INVARIANTS) || !defined(WITNESS)) @@ -4004,7 +4005,6 @@ vdrop_recycle(struct vnode *vp) static int vinactivef(struct vnode *vp) { - struct vm_object *obj; int error; ASSERT_VOP_ELOCKED(vp, "vinactive"); @@ -4014,6 +4014,7 @@ vinactivef(struct vnode *vp) vp->v_iflag |= VI_DOINGINACT; vp->v_iflag &= ~VI_OWEINACT; VI_UNLOCK(vp); + /* * Before moving off the active list, we must be sure that any * modified pages are converted into the vnode's dirty @@ -4024,12 +4025,9 @@ vinactivef(struct vnode *vp) * point that VOP_INACTIVE() is called, there could still be * pending I/O and dirty pages in the object. */ - if ((obj = vp->v_object) != NULL && (vp->v_vflag & VV_NOSYNC) == 0 && - vm_object_mightbedirty(obj)) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, 0); - VM_OBJECT_WUNLOCK(obj); - } + if ((vp->v_vflag & VV_NOSYNC) == 0) + vnode_pager_clean_async(vp); + error = VOP_INACTIVE(vp); VI_LOCK(vp); VNPASS(vp->v_iflag & VI_DOINGINACT, vp); @@ -4127,11 +4125,7 @@ loop: * vnodes open for writing. */ if (flags & WRITECLOSE) { - if (vp->v_object != NULL) { - VM_OBJECT_WLOCK(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, 0); - VM_OBJECT_WUNLOCK(vp->v_object); - } + vnode_pager_clean_async(vp); do { error = VOP_FSYNC(vp, MNT_WAIT, td); } while (error == ERELOOKUP); @@ -5109,17 +5103,12 @@ static void __noinline vfs_periodic_msync_inactive(struct mount *mp, int flags) { struct vnode *vp, *mvp; - struct vm_object *obj; - int lkflags, objflags; + int lkflags; bool seen_defer; lkflags = LK_EXCLUSIVE | LK_INTERLOCK; - if (flags != MNT_WAIT) { + if (flags != MNT_WAIT) lkflags |= LK_NOWAIT; - objflags = OBJPC_NOSYNC; - } else { - objflags = OBJPC_SYNC; - } MNT_VNODE_FOREACH_LAZY(vp, mp, mvp, vfs_periodic_msync_inactive_filter, NULL) { seen_defer = false; @@ -5135,11 +5124,11 @@ vfs_periodic_msync_inactive(struct mount *mp, int flags) continue; } if (vget(vp, lkflags) == 0) { - obj = vp->v_object; - if (obj != NULL && (vp->v_vflag & VV_NOSYNC) == 0) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, objflags); - VM_OBJECT_WUNLOCK(obj); + if ((vp->v_vflag & VV_NOSYNC) == 0) { + if (flags == MNT_WAIT) + vnode_pager_clean_sync(vp); + else + vnode_pager_clean_async(vp); } vput(vp); if (seen_defer) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 9d85a295a6ef..d735a8a4929b 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -85,6 +85,7 @@ #include #include #include +#include #include #include @@ -3548,11 +3549,7 @@ retry: goto drop; vn_lock(vp, vn_lktype_write(mp, vp) | LK_RETRY); AUDIT_ARG_VNODE1(vp); - if (vp->v_object != NULL) { - VM_OBJECT_WLOCK(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, 0); - VM_OBJECT_WUNLOCK(vp->v_object); - } + vnode_pager_clean_async(vp); error = fullsync ? VOP_FSYNC(vp, MNT_WAIT, td) : VOP_FDATASYNC(vp, td); VOP_UNLOCK(vp); vn_finished_write(mp); diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 20632a3c4703..50f202d6ea1a 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -90,6 +90,7 @@ #include #include #include +#include #ifdef HWPMC_HOOKS #include @@ -2577,7 +2578,6 @@ int vn_bmap_seekhole_locked(struct vnode *vp, u_long cmd, off_t *off, struct ucred *cred) { - vm_object_t obj; off_t size; daddr_t bn, bnp; uint64_t bsize; @@ -2602,12 +2602,7 @@ vn_bmap_seekhole_locked(struct vnode *vp, u_long cmd, off_t *off, } /* See the comment in ufs_bmap_seekdata(). */ - obj = vp->v_object; - if (obj != NULL) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); - } + vnode_pager_clean_sync(vp); bsize = vp->v_mount->mnt_stat.f_iosize; for (bn = noff / bsize; noff < size; bn++, noff += bsize - diff --git a/sys/sys/param.h b/sys/sys/param.h index fc684f525aaf..d273886a79be 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -75,7 +75,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1400504 +#define __FreeBSD_version 1400505 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, diff --git a/sys/ufs/ffs/ffs_rawread.c b/sys/ufs/ffs/ffs_rawread.c index ef93c1ab6783..3a415d766303 100644 --- a/sys/ufs/ffs/ffs_rawread.c +++ b/sys/ufs/ffs/ffs_rawread.c @@ -52,6 +52,7 @@ #include #include #include +#include static int ffs_rawread_readahead(struct vnode *vp, caddr_t udata, @@ -132,15 +133,10 @@ ffs_rawread_sync(struct vnode *vp) vn_finished_write(mp); return (EIO); } - /* Attempt to msync mmap() regions to clean dirty mmap */ - if ((obj = vp->v_object) != NULL && - vm_object_mightbedirty(obj)) { - VI_UNLOCK(vp); - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); - } else - VI_UNLOCK(vp); + VI_UNLOCK(vp); + + /* Attempt to msync mmap() regions to clean dirty mmap */ + vnode_pager_clean_sync(vp); /* Wait for pending writes to complete */ BO_LOCK(bo); diff --git a/sys/ufs/ufs/ufs_bmap.c b/sys/ufs/ufs/ufs_bmap.c index 44aeefe17d13..4311f771409f 100644 --- a/sys/ufs/ufs/ufs_bmap.c +++ b/sys/ufs/ufs/ufs_bmap.c @@ -51,6 +51,7 @@ #include #include +#include #include #include @@ -350,7 +351,6 @@ ufs_bmap_seekdata(struct vnode *vp, off_t *offp) struct inode *ip; struct mount *mp; struct ufsmount *ump; - vm_object_t obj; ufs2_daddr_t bn, daddr, nextbn; uint64_t bsize; off_t numblks; @@ -373,12 +373,7 @@ ufs_bmap_seekdata(struct vnode *vp, off_t *offp) * pages into buffer writes to ensure that we see all * allocated data. */ - obj = vp->v_object; - if (obj != NULL) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); - } + vnode_pager_clean_sync(vp); bsize = mp->mnt_stat.f_iosize; for (bn = *offp / bsize, numblks = howmany(ip->i_size, bsize); diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index 5bfaea3d4ff1..a690e48e07ee 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -1692,3 +1692,30 @@ vnode_pager_getvp(vm_object_t object, struct vnode **vpp, bool *vp_heldp) { *vpp = object->handle; } + +static void +vnode_pager_clean1(struct vnode *vp, int sync_flags) +{ + struct vm_object *obj; + + ASSERT_VOP_LOCKED(vp, "needs lock for writes"); + obj = vp->v_object; + if (obj == NULL) + return; + + VM_OBJECT_WLOCK(obj); + vm_object_page_clean(obj, 0, 0, sync_flags); + VM_OBJECT_WUNLOCK(obj); +} + +void +vnode_pager_clean_sync(struct vnode *vp) +{ + vnode_pager_clean1(vp, OBJPC_SYNC); +} + +void +vnode_pager_clean_async(struct vnode *vp) +{ + vnode_pager_clean1(vp, 0); +} diff --git a/sys/vm/vnode_pager.h b/sys/vm/vnode_pager.h index 558d080717b7..ca98cf9cdd24 100644 --- a/sys/vm/vnode_pager.h +++ b/sys/vm/vnode_pager.h @@ -41,6 +41,9 @@ #ifdef _KERNEL +struct vnode; +void vnode_pager_clean_sync(struct vnode *vp); +void vnode_pager_clean_async(struct vnode *vp); int vnode_pager_generic_getpages(struct vnode *vp, vm_page_t *m, int count, int *rbehind, int *rahead, vop_getpages_iodone_t iodone, void *arg); From nobody Thu Jan 18 01:13:59 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFlBb5zZWz57FF4; Thu, 18 Jan 2024 01:13:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFlBb5TrSz4ZPZ; Thu, 18 Jan 2024 01:13:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705540439; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n4t55m4wyHkfFL87UyDFRv5h8JruaWpYkRpI/gAdKYY=; b=CSQQfuCYka4OpHJrRqQyJF0u8cH8nCNJgizGb3IONZJZu5WSgSOzft0ScQguahAPouk2Fm CaSP4c9287wQZJky5oKNsLqK7AQpzLvooOHvsdDEeAzXqVb7pLiBWWdOZN01MiWtJ83Y1x FBeicTDJg9feFY6x54GWR4aqFvnmHvoVeJMcs8vCueMvvweUtmM7/Hdgxf6gCu9rDl24dS 6zuFRZgTEAza6i8Iw9RUl3iZROTBorma+zuQVYKrkMwr115lN4ZPXxnEnNaJgCeLYq1fuu mBk06z9QOouqBgP1dbE3tdh/9tPA/vxuDpgl2kF5zLT704oG1cehVCDUMzGEUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705540439; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n4t55m4wyHkfFL87UyDFRv5h8JruaWpYkRpI/gAdKYY=; b=nV+VOJLCyx/Pi/xxzcoC5hjhXyqDiD/pmyMTxrGIADWqGOEwK+DoS/ITmHGL6GlMAvi7a4 4TqV+0yCbWIe/cIU9/bs6M9iFfTOEqD7aB61gGxqoIlzhSKEMyQtO6rSwEHOCbYbclfVgM WoSLPFtvG/Dc36dMRpoUEMkIYIqEjRD4RLUQ3yZWVOI5mlP+NAEivcuT5Pq1PEzoDE8aH8 maUNPm5/0S/TTdwpVKeW0GrUIsT6p2cWqvxNQOx7N0fRm0uarKXyhf90YqYg3yqb8rcSwr t3sunAdWEO0bVukA1togFVOrh9TbCD7uz+5Mqt7+eT8LuhBKiZzLRMNiGT07zw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705540439; a=rsa-sha256; cv=none; b=Roip8TspfSyma51EP2trCdQrj4rgrMpiP6SbDaamMqjSf78cB63oC3A35oPCJCUHlWXORA mPtdoKMdftEEuqbT+UBIN7A1+m4v2vnXlPWAo7z01E7a47Z27dWo79AQeGtZvfJS6VMZ/E SMx/X1BksSoqBsed/qg3iouAdqP/owfkkKkiWMdQWz3LNMOjjmkQ7S0vBk7xUNJjogKD0Q s3r2rTdkQaFbPtT0a+ZLRaSDJIXlszMvL2EEptqK3Z4mS/QG+7bN1ttHnghrvt4RGfOwGm RaQqsZ5+AGfnyWJwBu+vM1kMIO2y0XSWzTs29/mtJfO2t/FvPzkV5XumNTocBw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFlBb4XhvzmmV; Thu, 18 Jan 2024 01:13:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40I1Dx4m053308; Thu, 18 Jan 2024 01:13:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40I1DxUc053305; Thu, 18 Jan 2024 01:13:59 GMT (envelope-from git) Date: Thu, 18 Jan 2024 01:13:59 GMT Message-Id: <202401180113.40I1DxUc053305@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: bfa9a16569ba - stable/13 - vnode_pager_generic_putpages(): correctly handle clean block at EOF List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: bfa9a16569bab5240a6fdebcd407fd143d0d5ac4 Auto-Submitted: auto-generated The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=bfa9a16569bab5240a6fdebcd407fd143d0d5ac4 commit bfa9a16569bab5240a6fdebcd407fd143d0d5ac4 Author: Konstantin Belousov AuthorDate: 2024-01-08 13:21:06 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-18 01:02:52 +0000 vnode_pager_generic_putpages(): correctly handle clean block at EOF PR: 276191 (cherry picked from commit bdb46c21a3e68d4395d6e0b6a205187e655532b0) --- sys/vm/vnode_pager.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index 7fe0a91b8cf5..79de90dca6a8 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -1394,12 +1394,13 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, start_write: if (next_offset > poffset + maxsize) next_offset = poffset + maxsize; + if (prev_offset == next_offset) + goto write_done; /* * Getting here requires finding a dirty block in the * 'skip clean blocks' loop. */ - MPASS(prev_offset < next_offset); aiov.iov_base = NULL; auio.uio_iovcnt = 1; From nobody Thu Jan 18 01:14:00 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFlBd0lcpz57F68; Thu, 18 Jan 2024 01:14:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFlBc6P3Gz4ZpH; Thu, 18 Jan 2024 01:14:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705540440; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rRSQD3zJRnaLwe8+Buo3jfYpEDjVGztCGGt7y35Dubk=; b=gzkEe+mSu21YArayt39NniQMGzcz2khqtZjjkRMAhDKM7wRvrLCRrtTk/cDIN8qdMkpsRJ fV60J9qiSHFEz3f0dseq9asy6l7NZ/SUDWqaRc50Vrg0qFqRZaQMZl+AoN5MKqRZCoXwsa NN8WtSiloFuSjyWvwMNCWAC5e5B7Xjfheu+zFywbbepfr8BZfRcK3d3205AdDywQVDX53V k4WWPuLmTUKcKvWY9KNw2dYSnyWB0Q817/fm25ZqT4bKboqAyM6LgfBBlr3CBoooVgxZMm rW4BhJgCNi/NT0o+ZQJxmFld6jdLiBcnz6/p32o2VMW8XsPYOgP0s6xXQ7B4DQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705540440; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rRSQD3zJRnaLwe8+Buo3jfYpEDjVGztCGGt7y35Dubk=; b=mOBj1HOOWJLZpQaNxX3Ntnj48mfTUm8Ad4y3hsgtBzhHb2XLOqzh0S9taIHLQc4WWttCEp TtpCMTqRYLJxgC0B9U7tshunnv6vzf6MZxx6DaDAbhLAHwRtWxMrjSSwaexAurVFfhFGj+ 6CdECggwttXAISel9GSx6XUtTCk78dIYiWudMG9sc1jTigppQBd9nAwSy4b270G7zlUKsb GTA4aPDHgfg7br7AqrTAzibIeeFTVpJhB7C1h/9lUS8z//7W8pM5LpQunrQ2a9wRD8MwuO oL8imsnqDtoAlhE8Znw+TpzBqgKhWG0AqORtOwiB+ISPVzso4gEp3rv5BVttIA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705540440; a=rsa-sha256; cv=none; b=wcjfHBybkakpz/UAAzlK1i3u1+/DegdQ6V7p+3kRz//w3sBTgloCsCwmFDZsT2DsHCzpfP uH0YcDPP6HcNw36XSxM4P7629IgbNZElhsFvSdQapltqbBetCDBuG0An3g+XwFMMQ0KPXc A/uTKS6T8f3GLtCCJtrGwtszaD1MTm3I7nkjOFwpvudN++OWDvy4MXFvaC7T9VLbmEU7+d k2/KRmkraPOWUQqPLOgJdmDUl3c1zwvwnHHN9Sh9XRKgcMscKhgaPqwtOrxTEweztxhIGC 5UX8ckNm/kgEZItlylX2rILz4eC4EyhnvQGc+kAiDevN7M+UB3b5YG3hFSlJww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFlBc5TCDzmsn; Thu, 18 Jan 2024 01:14:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40I1E0Di053359; Thu, 18 Jan 2024 01:14:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40I1E01X053356; Thu, 18 Jan 2024 01:14:00 GMT (envelope-from git) Date: Thu, 18 Jan 2024 01:14:00 GMT Message-Id: <202401180114.40I1E01X053356@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 8f0d5a7eb1b0 - stable/13 - vnode_pager_generic_putpages(): rename maxblksz local to max_offset List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8f0d5a7eb1b08e6175093fdc5fc4803f6a7bb638 Auto-Submitted: auto-generated The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8f0d5a7eb1b08e6175093fdc5fc4803f6a7bb638 commit 8f0d5a7eb1b08e6175093fdc5fc4803f6a7bb638 Author: Konstantin Belousov AuthorDate: 2024-01-09 11:32:39 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-18 01:02:52 +0000 vnode_pager_generic_putpages(): rename maxblksz local to max_offset (cherry picked from commit ed1a88a3116a59b4fd37912099a575b4c8f559dc) --- sys/vm/vnode_pager.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index 79de90dca6a8..b994de8592db 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -1286,7 +1286,7 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, { vm_object_t object; vm_page_t m; - vm_ooffset_t maxblksz, next_offset, poffset, prev_offset; + vm_ooffset_t max_offset, next_offset, poffset, prev_offset; struct uio auio; struct iovec aiov; off_t prev_resid, wrsz; @@ -1361,15 +1361,15 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, auio.uio_segflg = UIO_NOCOPY; auio.uio_rw = UIO_WRITE; auio.uio_td = NULL; - maxblksz = roundup2(poffset + maxsize, DEV_BSIZE); + max_offset = roundup2(poffset + maxsize, DEV_BSIZE); - for (prev_offset = poffset; prev_offset < maxblksz;) { + for (prev_offset = poffset; prev_offset < max_offset;) { /* Skip clean blocks. */ - for (in_hole = true; in_hole && prev_offset < maxblksz;) { + for (in_hole = true; in_hole && prev_offset < max_offset;) { m = ma[OFF_TO_IDX(prev_offset - poffset)]; for (i = vn_off2bidx(prev_offset); i < sizeof(vm_page_bits_t) * NBBY && - prev_offset < maxblksz; i++) { + prev_offset < max_offset; i++) { if (vn_dirty_blk(m, prev_offset)) { in_hole = false; break; @@ -1381,11 +1381,11 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, goto write_done; /* Find longest run of dirty blocks. */ - for (next_offset = prev_offset; next_offset < maxblksz;) { + for (next_offset = prev_offset; next_offset < max_offset;) { m = ma[OFF_TO_IDX(next_offset - poffset)]; for (i = vn_off2bidx(next_offset); i < sizeof(vm_page_bits_t) * NBBY && - next_offset < maxblksz; i++) { + next_offset < max_offset; i++) { if (!vn_dirty_blk(m, next_offset)) goto start_write; next_offset += DEV_BSIZE; From nobody Thu Jan 18 01:14:01 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TFlBf4DbYz57F8v; Thu, 18 Jan 2024 01:14:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TFlBf0G3zz4ZZv; Thu, 18 Jan 2024 01:14:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705540442; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=b7FSLpKKdWQopH7pnkqS7YXwz+JX/9EYbRZhJe9ReNA=; b=KlRC40dkVPfYzDGCsQpoavqoDWyNQklqu507deoJq/4zbzsfpBQ5BomdwXs5BfNJtZ4ZQz KmfeYw0y0LyN8dQqpEPweuFRbUGMbLzfF9ZQzyVYAsZ7cqo53wKgwIYkzdQ1XAVaJIvV+C jVbbBiURDC0x+ciXrIKQDX2j5jbKG4IqhkBmVLrHBM3QzqOynUaAFQu8D34XSZHl7p9mC4 GsuTTgNfZ5WfGC1rMYPGFsVQOaSpCZmWh1qhFltmlkvypCJ7Mt7KjniOUDNUWiFIOuLhYa WYdbz+wPKrFZVah7J+3wtfNBbOyO87Rn+c3KnKzKfbw+h1L0L+a1CgSNBntIxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705540442; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=b7FSLpKKdWQopH7pnkqS7YXwz+JX/9EYbRZhJe9ReNA=; b=wZdwRmqXWbEbY4ZxbtfFmP9pObh6iPipIldNHDYY4n9Kif5jWrwZZ2C7HtbGz6Nm5j3GUa 9LMgZsqknFuZdNg73zN/teZfttW2tUZdDbdfbXvwU8X+92vCWB05fg7n0tAbye3kPV3zoO XQgbmAyWO4xDPvHVsUvnkY6XAkLS2yVX18gzJix0iDrxRCvktwcsbNVsf0zCnsfy+J3G3O /ytp1D89l6jDGGzkmoCPD4a/5jnRIPJNG+d4bLI8ZZMId0mDDufUtMvz5hsSOsRUxQSq7H 4FVyqMurae+i5faZB1LAVOIECC+MWEizgkukoYDeAm5eLveehCMMT+68hYxD/w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705540442; a=rsa-sha256; cv=none; b=TzK5KhUixdKaMblvd0/pAhwflM7RiYCrvNkXMX15tG4koX3fSE7F2+HRRbIRMa/F6xWS+T wzjuRWbghE5Yi1nZMx4m/YlR6mS1IYy/ubrKxH+7uwXoy5XGBNwwzHRFLH6K8JXw6/bGrS gGmHM5wX+DTaJiAsbImGAO7jdBm9mBV5Bpb9tCamnDMtjyL78zbPW+7WJlM21Kz2H6YnJz VSeY6ZF5AcLOqTYpCO5CD4j/Xp7G8z6CtdRv/bPA0DnRf5YyimOCbmdPh89cac6FVqyV1f SnLoKWvxvl3wSZ0h0T3FHZur4ZXINcse8K1HNiq1c2ZxASzv+EEFVYHMIDt6gQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TFlBd6Lh5zmbH; Thu, 18 Jan 2024 01:14:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40I1E1iw053392; Thu, 18 Jan 2024 01:14:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40I1E1qm053389; Thu, 18 Jan 2024 01:14:01 GMT (envelope-from git) Date: Thu, 18 Jan 2024 01:14:01 GMT Message-Id: <202401180114.40I1E1qm053389@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 282fd2c39ee6 - stable/13 - Add vnode_pager_clean_{a,}sync(9) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 282fd2c39ee6df6104d54388f622471fe3e7ab3a Auto-Submitted: auto-generated The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=282fd2c39ee6df6104d54388f622471fe3e7ab3a commit 282fd2c39ee6df6104d54388f622471fe3e7ab3a Author: Konstantin Belousov AuthorDate: 2024-01-08 05:18:40 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-18 01:02:52 +0000 Add vnode_pager_clean_{a,}sync(9) (cherry picked from commit b068bb09a1a82d9fef0e939ad6135443a959e290) --- .../openzfs/include/os/freebsd/spl/sys/vnode.h | 9 +++--- sys/fs/fuse/fuse_io.c | 7 ++-- sys/fs/nfsclient/nfs_clbio.c | 8 ++--- sys/fs/nfsclient/nfs_clnode.c | 17 +++------- sys/fs/nfsclient/nfs_clvnops.c | 27 ++++------------ sys/fs/nfsserver/nfs_nfsdport.c | 8 ++--- sys/fs/smbfs/smbfs_io.c | 7 +--- sys/kern/vfs_aio.c | 9 ++---- sys/kern/vfs_subr.c | 37 ++++++++-------------- sys/kern/vfs_syscalls.c | 7 ++-- sys/kern/vfs_vnops.c | 9 ++---- sys/sys/param.h | 2 +- sys/ufs/ffs/ffs_rawread.c | 14 +++----- sys/ufs/ufs/ufs_bmap.c | 9 ++---- sys/vm/vnode_pager.c | 27 ++++++++++++++++ sys/vm/vnode_pager.h | 3 ++ 16 files changed, 82 insertions(+), 118 deletions(-) diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h index 00f718eadb3f..29f4642580c6 100644 --- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h +++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h @@ -61,6 +61,7 @@ enum symfollow { NO_FOLLOW = NOFOLLOW }; #include #include #include +#include typedef struct vop_vector vnodeops_t; #define VOP_FID VOP_VPTOFH @@ -95,11 +96,11 @@ vn_flush_cached_data(vnode_t *vp, boolean_t sync) #else if (vp->v_object->flags & OBJ_MIGHTBEDIRTY) { #endif - int flags = sync ? OBJPC_SYNC : 0; vn_lock(vp, LK_SHARED | LK_RETRY); - zfs_vmobject_wlock(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, flags); - zfs_vmobject_wunlock(vp->v_object); + if (sync) + vnode_pager_clean_sync(vp); + else + vnode_pager_clean_async(vp); VOP_UNLOCK(vp); } } diff --git a/sys/fs/fuse/fuse_io.c b/sys/fs/fuse/fuse_io.c index 5dffe44e95c0..0646246545cc 100644 --- a/sys/fs/fuse/fuse_io.c +++ b/sys/fs/fuse/fuse_io.c @@ -96,6 +96,7 @@ #include #include #include +#include #include "fuse.h" #include "fuse_file.h" @@ -945,11 +946,7 @@ fuse_io_invalbuf(struct vnode *vp, struct thread *td) } fvdat->flag |= FN_FLUSHINPROG; - if (vp->v_bufobj.bo_object != NULL) { - VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); - vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); - } + vnode_pager_clean_sync(vp); error = vinvalbuf(vp, V_SAVE, PCATCH, 0); while (error) { if (error == ERESTART || error == EINTR) { diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c index f6b8cc0a70a4..9a471f6681ca 100644 --- a/sys/fs/nfsclient/nfs_clbio.c +++ b/sys/fs/nfsclient/nfs_clbio.c @@ -1439,11 +1439,9 @@ ncl_vinvalbuf(struct vnode *vp, int flags, struct thread *td, int intrflg) /* * Now, flush as required. */ - if ((flags & (V_SAVE | V_VMIO)) == V_SAVE && - vp->v_bufobj.bo_object != NULL) { - VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); - vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); + if ((flags & (V_SAVE | V_VMIO)) == V_SAVE) { + vnode_pager_clean_sync(vp); + /* * If the page clean was interrupted, fail the invalidation. * Not doing so, we run the risk of losing dirty pages in the diff --git a/sys/fs/nfsclient/nfs_clnode.c b/sys/fs/nfsclient/nfs_clnode.c index a7ace3cdadc9..203c3360e792 100644 --- a/sys/fs/nfsclient/nfs_clnode.c +++ b/sys/fs/nfsclient/nfs_clnode.c @@ -48,6 +48,8 @@ #include #include +#include +#include #include #include @@ -236,7 +238,6 @@ ncl_inactive(struct vop_inactive_args *ap) struct vnode *vp = ap->a_vp; struct nfsnode *np; struct thread *td; - boolean_t retv; td = curthread; np = VTONFS(vp); @@ -250,17 +251,9 @@ ncl_inactive(struct vop_inactive_args *ap) * buffers/pages must be flushed before the close, so that the * stateid is available for the writes. */ - if (vp->v_object != NULL) { - VM_OBJECT_WLOCK(vp->v_object); - retv = vm_object_page_clean(vp->v_object, 0, 0, - OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_object); - } else - retv = TRUE; - if (retv == TRUE) { - (void)ncl_flush(vp, MNT_WAIT, td, 1, 0); - (void)nfsrpc_close(vp, 1, td); - } + vnode_pager_clean_sync(vp); + (void)ncl_flush(vp, MNT_WAIT, td, 1, 0); + (void)nfsrpc_close(vp, 1, td); } NFSLOCKNODE(np); diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c index 05948b4d6ef6..411b7f82a445 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -67,6 +67,7 @@ #include #include #include +#include #include #include @@ -764,9 +765,7 @@ nfs_open(struct vop_open_args *ap) if (VN_IS_DOOMED(vp)) return (EBADF); } - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); + vnode_pager_clean_sync(vp); } /* Now, flush the buffer cache. */ @@ -852,9 +851,7 @@ nfs_close(struct vop_close_args *ap) if (VN_IS_DOOMED(vp) && ap->a_fflag != FNONBLOCK) return (EBADF); } - VM_OBJECT_WLOCK(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, 0); - VM_OBJECT_WUNLOCK(vp->v_object); + vnode_pager_clean_async(vp); } NFSLOCKNODE(np); if (np->n_flag & NMODIFIED) { @@ -3663,7 +3660,6 @@ nfs_allocate(struct vop_allocate_args *ap) { struct vnode *vp = ap->a_vp; struct thread *td = curthread; - vm_object_t obj; struct nfsvattr nfsva; struct nfsmount *nmp; struct nfsnode *np; @@ -3693,12 +3689,7 @@ nfs_allocate(struct vop_allocate_args *ap) * file's allocation on the server. */ if (error == 0) { - obj = vp->v_object; - if (obj != NULL) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); - } + vnode_pager_clean_sync(vp); error = ncl_flush(vp, MNT_WAIT, td, 1, 0); } if (error == 0) @@ -3833,9 +3824,7 @@ relock: vn_finished_write(mp); goto relock; } - VM_OBJECT_WLOCK(invp_obj); - vm_object_page_clean(invp_obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(invp_obj); + vnode_pager_clean_sync(invp); } error = ncl_flush(invp, MNT_WAIT, curthread, 1, 0); } @@ -3980,7 +3969,6 @@ static int nfs_ioctl(struct vop_ioctl_args *ap) { struct vnode *vp = ap->a_vp; - vm_object_t obj; struct nfsvattr nfsva; struct nfsmount *nmp; int attrflag, content, error, ret; @@ -4025,10 +4013,7 @@ nfs_ioctl(struct vop_ioctl_args *ap) * size is up to date on the Metadata Server. */ - obj = vp->v_object; - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); + vnode_pager_clean_sync(vp); error = ncl_flush(vp, MNT_WAIT, ap->a_td, 1, 0); if (error == 0) error = nfsrpc_seek(vp, (off_t *)ap->a_data, &eof, diff --git a/sys/fs/nfsserver/nfs_nfsdport.c b/sys/fs/nfsserver/nfs_nfsdport.c index 05cebdd13f7d..ebc560836205 100644 --- a/sys/fs/nfsserver/nfs_nfsdport.c +++ b/sys/fs/nfsserver/nfs_nfsdport.c @@ -52,6 +52,8 @@ #include #include #include +#include +#include FEATURE(nfsd, "NFSv4 server"); @@ -1735,11 +1737,7 @@ nfsvno_fsync(struct vnode *vp, u_int64_t off, int cnt, struct ucred *cred, /* * Give up and do the whole thing */ - if (vp->v_object && vm_object_mightbedirty(vp->v_object)) { - VM_OBJECT_WLOCK(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_object); - } + vnode_pager_clean_sync(vp); error = VOP_FSYNC(vp, MNT_WAIT, td); } else { /* diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c index f09254289769..324f38abd10e 100644 --- a/sys/fs/smbfs/smbfs_io.c +++ b/sys/fs/smbfs/smbfs_io.c @@ -636,12 +636,7 @@ smbfs_vinvalbuf(struct vnode *vp, struct thread *td) } np->n_flag |= NFLUSHINPROG; - if (vp->v_bufobj.bo_object != NULL) { - VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); - vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); - } - + vnode_pager_clean_sync(vp); error = vinvalbuf(vp, V_SAVE, PCATCH, 0); while (error) { if (error == ERESTART || error == EINTR) { diff --git a/sys/kern/vfs_aio.c b/sys/kern/vfs_aio.c index 1bdd32ed7969..a5b179e9d7d3 100644 --- a/sys/kern/vfs_aio.c +++ b/sys/kern/vfs_aio.c @@ -68,6 +68,7 @@ #include #include #include +#include #include #include @@ -718,7 +719,6 @@ static int aio_fsync_vnode(struct thread *td, struct vnode *vp, int op) { struct mount *mp; - vm_object_t obj; int error; for (;;) { @@ -726,12 +726,7 @@ aio_fsync_vnode(struct thread *td, struct vnode *vp, int op) if (error != 0) break; vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); - obj = vp->v_object; - if (obj != NULL) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, 0); - VM_OBJECT_WUNLOCK(obj); - } + vnode_pager_clean_async(vp); if (op == LIO_DSYNC) error = VOP_FDATASYNC(vp, td); else diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 1166fd6c5389..33232987705e 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -95,6 +95,7 @@ #include #include #include +#include #include #if defined(DEBUG_VFS_LOCKS) && (!defined(INVARIANTS) || !defined(WITNESS)) @@ -4016,7 +4017,6 @@ vdrop_recycle(struct vnode *vp) static int vinactivef(struct vnode *vp) { - struct vm_object *obj; int error; ASSERT_VOP_ELOCKED(vp, "vinactive"); @@ -4027,6 +4027,7 @@ vinactivef(struct vnode *vp) vp->v_iflag |= VI_DOINGINACT; vp->v_iflag &= ~VI_OWEINACT; VI_UNLOCK(vp); + /* * Before moving off the active list, we must be sure that any * modified pages are converted into the vnode's dirty @@ -4037,12 +4038,9 @@ vinactivef(struct vnode *vp) * point that VOP_INACTIVE() is called, there could still be * pending I/O and dirty pages in the object. */ - if ((obj = vp->v_object) != NULL && (vp->v_vflag & VV_NOSYNC) == 0 && - vm_object_mightbedirty(obj)) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, 0); - VM_OBJECT_WUNLOCK(obj); - } + if ((vp->v_vflag & VV_NOSYNC) == 0) + vnode_pager_clean_async(vp); + error = VOP_INACTIVE(vp); VI_LOCK(vp); VNASSERT(vp->v_iflag & VI_DOINGINACT, vp, @@ -4141,11 +4139,7 @@ loop: * vnodes open for writing. */ if (flags & WRITECLOSE) { - if (vp->v_object != NULL) { - VM_OBJECT_WLOCK(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, 0); - VM_OBJECT_WUNLOCK(vp->v_object); - } + vnode_pager_clean_async(vp); do { error = VOP_FSYNC(vp, MNT_WAIT, td); } while (error == ERELOOKUP); @@ -5208,17 +5202,12 @@ static void __noinline vfs_periodic_msync_inactive(struct mount *mp, int flags) { struct vnode *vp, *mvp; - struct vm_object *obj; - int lkflags, objflags; + int lkflags; bool seen_defer; lkflags = LK_EXCLUSIVE | LK_INTERLOCK; - if (flags != MNT_WAIT) { + if (flags != MNT_WAIT) lkflags |= LK_NOWAIT; - objflags = OBJPC_NOSYNC; - } else { - objflags = OBJPC_SYNC; - } MNT_VNODE_FOREACH_LAZY(vp, mp, mvp, vfs_periodic_msync_inactive_filter, NULL) { seen_defer = false; @@ -5234,11 +5223,11 @@ vfs_periodic_msync_inactive(struct mount *mp, int flags) continue; } if (vget(vp, lkflags) == 0) { - obj = vp->v_object; - if (obj != NULL && (vp->v_vflag & VV_NOSYNC) == 0) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, objflags); - VM_OBJECT_WUNLOCK(obj); + if ((vp->v_vflag & VV_NOSYNC) == 0) { + if (flags == MNT_WAIT) + vnode_pager_clean_sync(vp); + else + vnode_pager_clean_async(vp); } vput(vp); if (seen_defer) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index cf733133bec0..830f0d008aca 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -82,6 +82,7 @@ #include #include #include +#include #include #include @@ -3529,11 +3530,7 @@ retry: goto drop; vn_lock(vp, vn_lktype_write(mp, vp) | LK_RETRY); AUDIT_ARG_VNODE1(vp); - if (vp->v_object != NULL) { - VM_OBJECT_WLOCK(vp->v_object); - vm_object_page_clean(vp->v_object, 0, 0, 0); - VM_OBJECT_WUNLOCK(vp->v_object); - } + vnode_pager_clean_async(vp); error = fullsync ? VOP_FSYNC(vp, MNT_WAIT, td) : VOP_FDATASYNC(vp, td); VOP_UNLOCK(vp); vn_finished_write(mp); diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index be3739f41086..d2df3e2c5e4d 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -90,6 +90,7 @@ #include #include #include +#include #ifdef HWPMC_HOOKS #include @@ -2551,7 +2552,6 @@ vn_pages_remove_valid(struct vnode *vp, vm_pindex_t start, vm_pindex_t end) int vn_bmap_seekhole(struct vnode *vp, u_long cmd, off_t *off, struct ucred *cred) { - vm_object_t obj; struct vattr va; daddr_t bn, bnp; uint64_t bsize; @@ -2577,12 +2577,7 @@ vn_bmap_seekhole(struct vnode *vp, u_long cmd, off_t *off, struct ucred *cred) } /* See the comment in ufs_bmap_seekdata(). */ - obj = vp->v_object; - if (obj != NULL) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); - } + vnode_pager_clean_sync(vp); bsize = vp->v_mount->mnt_stat.f_iosize; for (bn = noff / bsize; noff < va.va_size; bn++, noff += bsize - diff --git a/sys/sys/param.h b/sys/sys/param.h index f1c0d969b369..bf8697633d18 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -59,7 +59,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1302510 /* Master, propagated to newvers */ +#define __FreeBSD_version 1302511 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, diff --git a/sys/ufs/ffs/ffs_rawread.c b/sys/ufs/ffs/ffs_rawread.c index ef93c1ab6783..3a415d766303 100644 --- a/sys/ufs/ffs/ffs_rawread.c +++ b/sys/ufs/ffs/ffs_rawread.c @@ -52,6 +52,7 @@ #include #include #include +#include static int ffs_rawread_readahead(struct vnode *vp, caddr_t udata, @@ -132,15 +133,10 @@ ffs_rawread_sync(struct vnode *vp) vn_finished_write(mp); return (EIO); } - /* Attempt to msync mmap() regions to clean dirty mmap */ - if ((obj = vp->v_object) != NULL && - vm_object_mightbedirty(obj)) { - VI_UNLOCK(vp); - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); - } else - VI_UNLOCK(vp); + VI_UNLOCK(vp); + + /* Attempt to msync mmap() regions to clean dirty mmap */ + vnode_pager_clean_sync(vp); /* Wait for pending writes to complete */ BO_LOCK(bo); diff --git a/sys/ufs/ufs/ufs_bmap.c b/sys/ufs/ufs/ufs_bmap.c index 44aeefe17d13..4311f771409f 100644 --- a/sys/ufs/ufs/ufs_bmap.c +++ b/sys/ufs/ufs/ufs_bmap.c @@ -51,6 +51,7 @@ #include #include +#include #include #include @@ -350,7 +351,6 @@ ufs_bmap_seekdata(struct vnode *vp, off_t *offp) struct inode *ip; struct mount *mp; struct ufsmount *ump; - vm_object_t obj; ufs2_daddr_t bn, daddr, nextbn; uint64_t bsize; off_t numblks; @@ -373,12 +373,7 @@ ufs_bmap_seekdata(struct vnode *vp, off_t *offp) * pages into buffer writes to ensure that we see all * allocated data. */ - obj = vp->v_object; - if (obj != NULL) { - VM_OBJECT_WLOCK(obj); - vm_object_page_clean(obj, 0, 0, OBJPC_SYNC); - VM_OBJECT_WUNLOCK(obj); - } + vnode_pager_clean_sync(vp); bsize = mp->mnt_stat.f_iosize; for (bn = *offp / bsize, numblks = howmany(ip->i_size, bsize); diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index b994de8592db..62cc9d35b653 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -1622,3 +1622,30 @@ vnode_pager_getvp(vm_object_t object, struct vnode **vpp, bool *vp_heldp) { *vpp = object->handle; } + +static void +vnode_pager_clean1(struct vnode *vp, int sync_flags) +{ + struct vm_object *obj; + + ASSERT_VOP_LOCKED(vp, "needs lock for writes"); + obj = vp->v_object; + if (obj == NULL) + return; + + VM_OBJECT_WLOCK(obj); + vm_object_page_clean(obj, 0, 0, sync_flags); + VM_OBJECT_WUNLOCK(obj); +} + +void +vnode_pager_clean_sync(struct vnode *vp) +{ + vnode_pager_clean1(vp, OBJPC_SYNC); +} + +void +vnode_pager_clean_async(struct vnode *vp) +{ + vnode_pager_clean1(vp, 0); +} diff --git a/sys/vm/vnode_pager.h b/sys/vm/vnode_pager.h index 558d080717b7..ca98cf9cdd24 100644 --- a/sys/vm/vnode_pager.h +++ b/sys/vm/vnode_pager.h @@ -41,6 +41,9 @@ #ifdef _KERNEL +struct vnode; +void vnode_pager_clean_sync(struct vnode *vp); +void vnode_pager_clean_async(struct vnode *vp); int vnode_pager_generic_getpages(struct vnode *vp, vm_page_t *m, int count, int *rbehind, int *rahead, vop_getpages_iodone_t iodone, void *arg); From nobody Thu Jan 18 15:52:37 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TG6hP6fxZz56Lhl; Thu, 18 Jan 2024 15:52:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TG6hP6CW8z4pM5; Thu, 18 Jan 2024 15:52:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705593157; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JKzuj4yukLLPEticj7K0gTjxXS1/gp2TX3WLn4zME3o=; b=sKT/UDYCy8BaCBU53zMCTs3xUl+pNmsABmgyVuGWLZZR7PfZQAuUc982cwOHCs7WSzOn6/ XfaV3eyHpwcde94nRsTYrAAoqrd6jc0jyWFCOYtDIoETVlvLOJV63eFMID2A61UxiL0PTQ yWmBj1OKhfwtJBYaFyXh8/NP3FQJ5Hdv+NwyThASQC7EqTOdqIuRxB4pjMDOfmPIWA+i92 MgwLvSmebyAWSH8H67kTvCrg+dvtn9GU6ktpMzCReZj4oDsyltTEkWE0qNNlGaxGWDOJpp LXts5oso08Ei4BlyHO+8FVeCo8lddGK3wreDdWCmEmXwiPg/HEDdf4mJ03Tp5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705593157; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JKzuj4yukLLPEticj7K0gTjxXS1/gp2TX3WLn4zME3o=; b=X2yeuxp1l4IWGd0ccIMiTx5lhQKnoOlEjQu0bbmUJTO1yJV4R5MYm3Yf83SmQSTVPL4mpn wRGs0fqu5p4/3nstlheH6HekzYvjBU1lTrQsXfElLQKhAe7eE7BUCPtYb7ZXB4aHAj9i/i R0xXRQVvRMMqlB9NvZpZDB8ZhA1pXDANWELUDLxXl+h0HNZoqXyvXFFTqFD9XZWGjPQ8hO SOcPlJGqWrDbbGy1ZsXYV3R/W9clYmQVH6FaomFSylPOQnDUAGDGY7a6bSlbepaHd+7OmR YuPYq2ZU9dkNCImXD2F09j+6kb5w3CJ573zNF/UshHTAC1wu8CizsnekmP9lBg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705593157; a=rsa-sha256; cv=none; b=dR2qjoJgXOS7HnpFha6abvkRZee3iHr43gAmRv/hmPm9sEEe/2gwfAUWKoPS0RVvYcZWW6 XrQBWNGWFucuEOJXMhKp1hJpGoK68QYp7At0X1D9lRAA8nIVPmR0YA9wQYbU5pznfYnoOf dINEcwgKDZhQchkVmMHubId3EunsHbaoZ6sEPKTtoN+KUEw71tQe04PtsjdwKeEaO5yJq2 vew1eAMuijrWlPHsHcJhgz8VJt9tyn8VPCQvlsPzf6dmKiSU2NDLLItofV+DXM8Ih8zM4x AwMpjOzhEaTow716yixIF8pZz4fnX9+qNBQlqyapMLWKkWyClW0MZpVV02ls9A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TG6hP54wMz1CHL; Thu, 18 Jan 2024 15:52:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IFqbiY026971; Thu, 18 Jan 2024 15:52:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IFqbks026968; Thu, 18 Jan 2024 15:52:37 GMT (envelope-from git) Date: Thu, 18 Jan 2024 15:52:37 GMT Message-Id: <202401181552.40IFqbks026968@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: c7c7faa614ee - stable/14 - rc.d: Process autobridge_* in vnet jails List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c7c7faa614eed9433d6693cb651302a95e7463f3 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=c7c7faa614eed9433d6693cb651302a95e7463f3 commit c7c7faa614eed9433d6693cb651302a95e7463f3 Author: Mark Johnston AuthorDate: 2024-01-04 17:10:35 +0000 Commit: Mark Johnston CommitDate: 2024-01-18 15:52:15 +0000 rc.d: Process autobridge_* in vnet jails Reviewed by: kp MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D43316 (cherry picked from commit 1809089a9613c6ebdb6861ee142fba90d6a20c45) --- libexec/rc/rc.d/bridge | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libexec/rc/rc.d/bridge b/libexec/rc/rc.d/bridge index eba43a7d2e2a..a42d82adacc5 100755 --- a/libexec/rc/rc.d/bridge +++ b/libexec/rc/rc.d/bridge @@ -26,7 +26,7 @@ # PROVIDE: bridge # REQUIRE: netif ppp stf -# KEYWORD: nojail +# KEYWORD: nojailvnet . /etc/rc.subr . /etc/network.subr From nobody Thu Jan 18 15:52:38 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TG6hR0W61z56LHq; Thu, 18 Jan 2024 15:52:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TG6hQ73SLz4pM6; Thu, 18 Jan 2024 15:52:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705593159; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0sTkqijgBZRoWQwnwhvEAb3EahLk4JUPBBiQjwEAmFk=; b=GODKOdTtBU6RiqtDyFS9O0g5SOP3KO1vjqwTfpumZY4ETiRj3220SfQdIrVK+g0XlVwL9d CJDZqUm/wWK0kI/8s4Rzujh6t5gLmVj157jCdD4ZjoqemV3Cp2obaE/aUyy+bNePZGOGiP cgBUY/uwJ8aUGuBWzGBLA601zY680ldfFYcRJBavP08AWHAvlo89m7jlyxhtmqQcce+QiK uDkaVbcd8/5P4DiK7mLAKJGmLG/8C3DaTs0AI74bGXcbnkG8jkK+Jr8iXwbqGg0bL9BFMG 0SwuFotpxU5ESDx8p9EBA64oRTiVJ0igxlWBTiTGGWWeVVGJM6XWZaiHhm8YIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705593159; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0sTkqijgBZRoWQwnwhvEAb3EahLk4JUPBBiQjwEAmFk=; b=eDUQBKs3uBAofiyoP9X3aW4ICOh5q3SDEGk5/8JF9sD9z4f7DYe8HpyozmxreqfaJvWUwp +WheBLdH5ZRjDdFMR2uWCTK0Rl7SM5gVDbMloFinQjYRsLV7HW4dGjxoREcyBRshAyZfps Da6xJ0c1StU914M1wfKbaVW2/rCqN2NxY2MoEq90xx7wyd+PCTEzIA5kUHgdV1TgUNz6wA J4130WvasE53sP8pJAjZ6/yb1gvyC80QjSQELc53L7vLTUvY1BJG7sXc2WyqxiTr7SbmNh THLfeiizYXyz7DqG9q6Vj08JyAlTidYkCFOtm+MtTCsBYXAtGLSvONckV72dGQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705593159; a=rsa-sha256; cv=none; b=noZVfNJG1I38FgSTyRyucYCsmlonPFDdxO6z7Fwz40xwtDBfgmKDN0ZWOivmsEcuKRpend lzftSyGPs6osCmj0dtRy9CmHlwntHuTEP+jkTHUL2jzGHnxjvjrshnEADv3D6YHbNKrtR9 c6l/7pn03lMgi5emwMdSHaqqP3xsa1wjzaGYa0BUcXn+LFMZvFOEyNsV8cAqtLH1PDOWyh tyYRR3xDgLrjDnhTFLbYsy8R0dV/TgnqhidTfxngBm9JnNUzmK9tQplJ+7VchQe/o+BZmL GGxQJ0uREWwQfauGuGm6mZL602CaG7Ufpj70Njz8g69XUxh7zEr3Cc41d01QAA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TG6hQ6807z1CMZ; Thu, 18 Jan 2024 15:52:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IFqcW4027028; Thu, 18 Jan 2024 15:52:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IFqcVM027025; Thu, 18 Jan 2024 15:52:38 GMT (envelope-from git) Date: Thu, 18 Jan 2024 15:52:38 GMT Message-Id: <202401181552.40IFqcVM027025@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: f0f93607eea3 - stable/14 - conf: Do not set -fno-sanitize-memory-param-retval for old compilers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f0f93607eea35925145a98fef0608343a4f1ca56 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f0f93607eea35925145a98fef0608343a4f1ca56 commit f0f93607eea35925145a98fef0608343a4f1ca56 Author: Mark Johnston AuthorDate: 2024-01-11 16:42:47 +0000 Commit: Mark Johnston CommitDate: 2024-01-18 15:52:25 +0000 conf: Do not set -fno-sanitize-memory-param-retval for old compilers The option was introduced in LLVM 16. Fixes: b6c653c97463 ("kmsan: Set -fno-sanitize-memory-param-retval for now") MFC after: 1 week Sponsored by: Klara, Inc. Sponsored by: Juniper Networks, Inc. (cherry picked from commit d682a91726d72eaf7ba8dddeb4d9ce161ab8b93a) --- sys/conf/kern.pre.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk index 158175eb6899..6bf647f5c3ea 100644 --- a/sys/conf/kern.pre.mk +++ b/sys/conf/kern.pre.mk @@ -125,8 +125,10 @@ KMSAN_ENABLED!= grep KMSAN opt_global.h || true ; echo # Disable -fno-sanitize-memory-param-retval until interceptors have been # updated to work properly with it. SAN_CFLAGS+= -DSAN_NEEDS_INTERCEPTORS -DSAN_INTERCEPTOR_PREFIX=kmsan \ - -fsanitize=kernel-memory \ - -fno-sanitize-memory-param-retval + -fsanitize=kernel-memory +.if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 160000 +SAN_CFLAGS+= -fno-sanitize-memory-param-retval +.endif .endif KUBSAN_ENABLED!= grep KUBSAN opt_global.h || true ; echo From nobody Thu Jan 18 15:56:25 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TG6mp11Gsz56M6P; Thu, 18 Jan 2024 15:56:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TG6mn73YHz4pq2; Thu, 18 Jan 2024 15:56:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705593386; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=l1sKBtLKmL+PBiNdAHWUSP9V+1roxewiJJoCLiXl+kU=; b=KzH0WX6PRCshFDWjQdk7wPXNCk2T2HZZXrIc6n8OvcKsXnLw3NKkz8IpIS0Up/iZowF/nM 46PUZ3+klTzqppZOTraIopkjIZ14SbOKM/VgcnlNTfb9Z4sZo8IWq9kXP/zKFKM7R1uURD jxcKdw4XVrWlOd4iIFtrcBNSqRfKc8JjesGadjoqpcE96pB/4vuw4o+dpHaLeuFqktxilU T4RNa88dtZHgRzXTJjRIJnH59D2VpZKLlmZwlT5wqvCXlElA7vSd0XRsVWhdFZcgVDU+LA 5fq6fX/C7a0QQDeHFFU1exHn4AFYc4JJ64BCptWwYXc3liHYFPEqoqucIkwEhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705593386; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=l1sKBtLKmL+PBiNdAHWUSP9V+1roxewiJJoCLiXl+kU=; b=BlKZsgmZpPzqytVWMkLa5JMKbb/zhO5RxLQs5AloUdH8rTod8F5Ro0tC8MsfYahZebCS4r s2nAbcAyD0d4bHp1hOLLkOU2L+oZk29/dQuwAFhkkzgo4H6V43oDJKJjBv1EVW0jmUugt5 ssGWMfRsrHT8oOvKisCuIZywupJYf2/56MHLyFxebPikhTm1V+ZJq7BnPqkXeFhCZ1VVYw HMtwX9l3qmBkyt+0LCXLF69skw0UlB4SgVMsJ2JWELrQs0PHCpFoa+HJfVHLdPRbSczkFA 3hA4E9gGqNkNyL0UNpDYM+SsMtNIxHzmdAd95DP0VnmIp3AxyCd54T0xugyzqw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705593386; a=rsa-sha256; cv=none; b=gYbyZRU3NUUHkl9XvNaYV0hJpnYGLjBoeORtJ1ULnSxRU09AK4gYC0QNzpgPBczQxBcyJG vQJrocWkC2hgKEkB6zNRzFsteuEUDdoZ3wo92ZPSXG5/OcBgqg0VRL+CwWSQzI159QTKXH 92P8f/dBU6bBDat3KbpBZmqS4d6uwtjNozPOFYo2L7YaD+/eb/Je3wvVtholwpVxfAoJoE nH100X5E4uMqtQT1IU89T8OS/Lbvq5U4TfMhdVHJKxhNuCP8O1sSAqh3gvEhZWSm5yNlPM Ne8C6m6yYK5v2Y402TjQoh82xRVjyVsAB7GuSEpRHuZV3dxBL6w12zeDNpQP6w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TG6mn5rczz1CMc; Thu, 18 Jan 2024 15:56:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IFuPfC027722; Thu, 18 Jan 2024 15:56:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IFuPcA027719; Thu, 18 Jan 2024 15:56:25 GMT (envelope-from git) Date: Thu, 18 Jan 2024 15:56:25 GMT Message-Id: <202401181556.40IFuPcA027719@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: b3ed2b808658 - stable/14 - bnxt: Handle errors from copyout() in ioctl handlers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b3ed2b808658cbf7d687d6a1a949da54909d0776 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=b3ed2b808658cbf7d687d6a1a949da54909d0776 commit b3ed2b808658cbf7d687d6a1a949da54909d0776 Author: Mark Johnston AuthorDate: 2024-01-04 13:34:49 +0000 Commit: Mark Johnston CommitDate: 2024-01-18 15:53:37 +0000 bnxt: Handle errors from copyout() in ioctl handlers This is in preparation for annotating copyin() and related functions with __result_use_check. MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D43178 (cherry picked from commit 243e3ab3d34ada9da4f202f8cab90da2d6c49e5e) --- sys/dev/bnxt/if_bnxt.c | 112 +++++++++++++++++++------------------------------ 1 file changed, 44 insertions(+), 68 deletions(-) diff --git a/sys/dev/bnxt/if_bnxt.c b/sys/dev/bnxt/if_bnxt.c index 25715756ce29..70d699d4b419 100644 --- a/sys/dev/bnxt/if_bnxt.c +++ b/sys/dev/bnxt/if_bnxt.c @@ -2569,15 +2569,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) &find->fw_ver); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_NVM_READ: @@ -2602,22 +2600,20 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) rd->offset + offset, csize, &dma_data); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); break; - } - else { - copyout(dma_data.idi_vaddr, + } else { + rc = copyout(dma_data.idi_vaddr, rd->data + offset, csize); - iod->hdr.rc = 0; + iod->hdr.rc = rc; } remain -= csize; } - if (iod->hdr.rc == 0) - copyout(iod, ioh, iol); + if (rc == 0) + rc = copyout(iod, ioh, iol); iflib_dma_free(&dma_data); - rc = 0; goto exit; } case BNXT_HWRM_FW_RESET: @@ -2629,15 +2625,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) &rst->selfreset); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_FW_QSTATUS: @@ -2649,15 +2643,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) &qstat->selfreset); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_NVM_WRITE: @@ -2671,15 +2663,14 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) &wr->item_length, &wr->index); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_NVM_ERASE_DIR_ENTRY: @@ -2690,15 +2681,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) rc = bnxt_hwrm_nvm_erase_dir_entry(softc, erase->index); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_NVM_GET_DIR_INFO: @@ -2710,15 +2699,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) &info->entry_length); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_NVM_GET_DIR_ENTRIES: @@ -2735,18 +2722,17 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) &get->entry_length, &dma_data); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { - copyout(dma_data.idi_vaddr, get->data, + } else { + rc = copyout(dma_data.idi_vaddr, get->data, get->entry_length * get->entries); - iod->hdr.rc = 0; - copyout(iod, ioh, iol); + iod->hdr.rc = rc; + if (rc == 0) + rc = copyout(iod, ioh, iol); } iflib_dma_free(&dma_data); - rc = 0; goto exit; } case BNXT_HWRM_NVM_VERIFY_UPDATE: @@ -2758,15 +2744,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) vrfy->ordinal, vrfy->ext); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_NVM_INSTALL_UPDATE: @@ -2780,15 +2764,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) &inst->reset_required); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_NVM_MODIFY: @@ -2799,15 +2781,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) mod->offset, mod->data, true, mod->length); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_FW_GET_TIME: @@ -2820,15 +2800,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) >m->second, >m->millisecond, >m->zone); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } case BNXT_HWRM_FW_SET_TIME: @@ -2841,15 +2819,13 @@ bnxt_priv_ioctl(if_ctx_t ctx, u_long command, caddr_t data) stm->second, stm->millisecond, stm->zone); if (rc) { iod->hdr.rc = rc; - copyout(&iod->hdr.rc, &ioh->rc, + rc = copyout(&iod->hdr.rc, &ioh->rc, sizeof(ioh->rc)); - } - else { + } else { iod->hdr.rc = 0; - copyout(iod, ioh, iol); + rc = copyout(iod, ioh, iol); } - rc = 0; goto exit; } } From nobody Thu Jan 18 17:44:53 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TG99x65m4z56b02; Thu, 18 Jan 2024 17:44:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TG99x5J7fz49Tx; Thu, 18 Jan 2024 17:44:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705599893; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ll4gbe/czefMllyvjV21OkI8d1qk7hEAkVA5XOiRz8w=; b=AY19FDaQ6RYOvfLScIEd0IbRwfvJ9i0Mu6jW0eF6n1DayRlm0GLMFWQLiwMd0fcNOyKvYj D7iAABLK6HlOKYg+5cbXVW7SOGwl9ZdUnBkEHxwUTLo1yl8qoUTFESuYGWRtJzpKGk7obx 3FrrdsondsBtqkcRw1L0R2jt5TS5z3yipPyIOPaUjOeYqF3CTwBV5PGF1cwafs2boxRlO6 rBuJTzlXx5lslkgJUMp0N0ROhR2zT8zs2SUL78fj+TzoDSS+6srPX9+dyAvt7wz4AYgCmE ZJ6yFMzpbuAV3NAO+znA3dc61bYpqy2zSFNeRwMNUrA6Bn2C1Ru6kO3vkke7aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705599893; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ll4gbe/czefMllyvjV21OkI8d1qk7hEAkVA5XOiRz8w=; b=EN8nKFo6S6qcgCDbykCHqMvlE+1E9e+sMWR8zqQ+4uuR/5Ayn490ABKHSVUQjuYfT4cmS8 Jn3A4X85jj+5SZWDHZtpfGM+Q9g1BWl/QPs4Bp7piHKmcm8yp/ccy/KgYrWPEXxBDIq0Oc 3RMB5Ly8YuU5jqVWmSo9js6E1QmLo2pG9GoV3ZwBPdv10sHsGphoERQmC0a5K8Hn80zpv9 O18yBAxq0EEBzfANPBVxVujhi2j7icqi58NCVKLB619IkyJILN4y8uSlwfEUFK+9Jdh2iv aUU75NMR64N8EZjvsVo3kZqGo7tPJ0gpN2uTy42+KcA+NbrzvhW8ZIDX4T5Cww== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705599893; a=rsa-sha256; cv=none; b=x3RZM4ZgkfJnGf40ww0U3/RRpnCdyFqMuwU/cD0u9jHg9jkYzDduiiym1w6IvF+VFaC20z FrM6B24lpg2UzyopDXATMnxUPbccS4j/Ig1FvuvLIPu/nl/TrTuQ1i+SdGMxj5QHkIjut1 1BwYZM2vHDSAgWm6J3bVgAx1cgWLKNXqh0sajIRXeFMeM0nvHAbl0K91TTuLxtxjmBZKjU kkX/rGyvp36WdM5rBn4PYVao2+plbMtcjbMzkj3fPLUOFn8sxEZqRWh3R396HqmSyqv6GZ +pUvRXUaKH/Jx320/UPwRrG9ci8P5SEtZcc0wFMIYdafmz0/Op/AZ+TwBJgrEg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TG99x4L2YzGJ4; Thu, 18 Jan 2024 17:44:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IHirCS013622; Thu, 18 Jan 2024 17:44:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IHir6B013619; Thu, 18 Jan 2024 17:44:53 GMT (envelope-from git) Date: Thu, 18 Jan 2024 17:44:53 GMT Message-Id: <202401181744.40IHir6B013619@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Stefan =?utf-8?Q?E=C3=9Fer?= Subject: git: c1e3f1fd1107 - stable/13 - vendor/bc: MFC upgrade from version 6,6.0 to 6.7.5 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: se X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c1e3f1fd1107ee6ae3c84557a990fc3f4238f714 Auto-Submitted: auto-generated The branch stable/13 has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=c1e3f1fd1107ee6ae3c84557a990fc3f4238f714 commit c1e3f1fd1107ee6ae3c84557a990fc3f4238f714 Author: Stefan Eßer AuthorDate: 2023-10-30 09:10:24 +0000 Commit: Stefan Eßer CommitDate: 2024-01-18 17:39:29 +0000 vendor/bc: MFC upgrade from version 6,6.0 to 6.7.5 This is a squashed updated consisting of: vendor/bc: upgrade to version 6.7.2 This update improves the implementation of the power function p() and adds 3 new functions to the extended math library: min(), max(), and i2rand(). (cherry picked from commit aa339f1d5df9e38f36a34eb522355c4eebcae6c4) vendor/bc: upgrade to version 6.7.4 Documentation updates only, no functional changes to the software. (cherry picked from commit e6857bd4d7b4bf39ea32b9dcd34f8371164c356e) vendor/bc: upgrade to version 6.7.5 This update fixes a bug where line breaks in printed numbers may not match the line length set by the user. The value is printed correctly, just not split as specified in some situations. (cherry picked from commit f4fbc49d201f81c481a33fac6ba28e19faf96260) --- contrib/bc/Makefile.in | 2 +- contrib/bc/NEWS.md | 45 +- contrib/bc/configure.sh | 26 +- contrib/bc/gen/lib2.bc | 45 +- contrib/bc/include/bc.h | 2 +- contrib/bc/include/bcl.h | 3 - contrib/bc/include/history.h | 4 - contrib/bc/include/num.h | 6 +- contrib/bc/include/version.h | 2 +- contrib/bc/manuals/algorithms.md | 69 +++ contrib/bc/manuals/bc/A.1 | 174 +++--- contrib/bc/manuals/bc/A.1.md | 48 +- contrib/bc/manuals/bc/E.1 | 115 +--- contrib/bc/manuals/bc/E.1.md | 2 +- contrib/bc/manuals/bc/EH.1 | 113 +--- contrib/bc/manuals/bc/EH.1.md | 2 +- contrib/bc/manuals/bc/EHN.1 | 112 +--- contrib/bc/manuals/bc/EHN.1.md | 2 +- contrib/bc/manuals/bc/EN.1 | 114 +--- contrib/bc/manuals/bc/EN.1.md | 2 +- contrib/bc/manuals/bc/H.1 | 172 +++--- contrib/bc/manuals/bc/H.1.md | 48 +- contrib/bc/manuals/bc/HN.1 | 171 +++--- contrib/bc/manuals/bc/HN.1.md | 48 +- contrib/bc/manuals/bc/N.1 | 173 +++--- contrib/bc/manuals/bc/N.1.md | 48 +- contrib/bc/manuals/bcl.3 | 43 +- contrib/bc/manuals/dc/A.1 | 49 +- contrib/bc/manuals/dc/E.1 | 48 +- contrib/bc/manuals/dc/EH.1 | 46 +- contrib/bc/manuals/dc/EHN.1 | 45 +- contrib/bc/manuals/dc/EN.1 | 47 +- contrib/bc/manuals/dc/H.1 | 47 +- contrib/bc/manuals/dc/HN.1 | 46 +- contrib/bc/manuals/dc/N.1 | 48 +- contrib/bc/scripts/sqrt_frac_guess.bc | 126 ++++ contrib/bc/scripts/sqrt_int_guess.bc | 94 +++ contrib/bc/scripts/sqrt_random.bc | 129 ++++ contrib/bc/scripts/sqrt_random.sh | 77 +++ contrib/bc/src/num.c | 51 +- contrib/bc/src/program.c | 4 +- contrib/bc/src/vm.c | 2 +- contrib/bc/tests/bc/lib2.txt | 1 + contrib/bc/tests/bc/lib2_results.txt | 4 +- contrib/bc/tests/bc/scripts/all.txt | 2 + contrib/bc/tests/bc/scripts/i2rand.bc | 29 + contrib/bc/tests/bc/scripts/i2rand.txt | 1000 ++++++++++++++++++++++++++++++++ contrib/bc/tests/bc/scripts/print2.bc | 63 ++ contrib/bc/tests/bc/scripts/print2.txt | 650 +++++++++++++++++++++ contrib/bc/tests/bc/sqrt.txt | 2 + contrib/bc/tests/bc/sqrt_results.txt | 2 + contrib/bc/tests/script.sh | 2 +- contrib/bc/vs/bc.vcxproj | 4 + contrib/bc/vs/bcl.vcxproj | 6 + 54 files changed, 2980 insertions(+), 1235 deletions(-) diff --git a/contrib/bc/Makefile.in b/contrib/bc/Makefile.in index 55e2e4a6270a..e1309cd6d6b3 100644 --- a/contrib/bc/Makefile.in +++ b/contrib/bc/Makefile.in @@ -554,7 +554,7 @@ clean_config: clean clean_benchmarks clean_coverage: @printf 'Cleaning coverage files...\n' @$(RM) -f *.gcov - @$(RM) -f *.html + @$(RM) -f *.html *.css @$(RM) -f *.gcda *.gcno @$(RM) -f *.profraw @$(RM) -f $(GCDA) $(GCNO) diff --git a/contrib/bc/NEWS.md b/contrib/bc/NEWS.md index de3b35026fea..32e74de31231 100644 --- a/contrib/bc/NEWS.md +++ b/contrib/bc/NEWS.md @@ -1,5 +1,48 @@ # News +## 6.7.5 + +This is a production release to fix one small bug. + +The bug is that sometimes numbers are printed to incorrect line lengths. The +number is always correct; the line is just longer than the limit. + +Users who do not care do not need to update. + +## 6.7.4 + +This is a production release to fix problems in the `bc` manual. + +Users only need to update if desired. + +## 6.7.3 + +This is a production release to fix the library build on Mac OSX. + +Users on other platforms do *not* need to update. + +## 6.7.2 + +This is a production release to remove some debugging code that I accidentally +committed. + +## 6.7.1 + +This is a production release with a bug fix for `SIGINT` only being handled +once. + +## 6.7.0 + +This is a production release with three new functions in the [extended math +library][16]: `min()`, `max()`, and `i2rand()`. + +## 6.6.1 + +This is a production release with an improved `p()` function in the [extended +math library][16]. + +Users who don't care do not need to upgrade. + ## 6.6.0 This is a production release with two bug fixes and one change. @@ -751,7 +794,7 @@ function, `strdup()`, which is not in POSIX 2001, and it is in the X/Open System Interfaces group 2001. It is, however, in POSIX 2008, and since POSIX 2008 is old enough to be supported anywhere that I care, that should be the requirement. -Second, the BcVm global variable was put into `bss`. This actually slightly +Second, the `BcVm` global variable was put into `bss`. This actually slightly reduces the size of the executable from a massive code shrink, and it will stop `bc` from allocating a large set of memory when `bc` starts. diff --git a/contrib/bc/configure.sh b/contrib/bc/configure.sh index 4ba957131d52..9292f094bb17 100755 --- a/contrib/bc/configure.sh +++ b/contrib/bc/configure.sh @@ -461,7 +461,7 @@ find_src_files() { fi - _find_src_files_files=$(find "$scriptdir/src/" -depth -name "*.c" -print | LC_ALL=C sort) + _find_src_files_files=$(find "$scriptdir/src" -depth -name "*.c" -print | LC_ALL=C sort) _find_src_files_result="" @@ -772,7 +772,7 @@ predefined_build() { dc_default_digit_clamp=0;; GDH) - CFLAGS="-flto -Weverything -Wno-padded -Wno-unsafe-buffer-usage -Werror -pedantic -std=c11" + CFLAGS="-flto -Weverything -Wno-padded -Wno-unsafe-buffer-usage -Wno-poison-system-directories -Werror -pedantic -std=c11" bc_only=0 dc_only=0 coverage=0 @@ -806,7 +806,7 @@ predefined_build() { dc_default_digit_clamp=1;; DBG) - CFLAGS="-Weverything -Wno-padded -Wno-unsafe-buffer-usage -Werror -pedantic -std=c11" + CFLAGS="-Weverything -Wno-padded -Wno-unsafe-buffer-usage -Wno-poison-system-directories -Werror -pedantic -std=c11" bc_only=0 dc_only=0 coverage=0 @@ -1364,21 +1364,10 @@ if [ "$debug" -eq 1 ]; then CFLAGS="-O0" fi - ccbase=$(basename "$CC") - - if [ "$ccbase" = "clang" ]; then - CFLAGS="-gdwarf-4 $CFLAGS" - else - CFLAGS="-g $CFLAGS" - fi + CFLAGS="-g $CFLAGS" else - CPPFLAGS="-DNDEBUG $CPPFLAGS" - - if [ "$strip_bin" -ne 0 ]; then - LDFLAGS="-s $LDFLAGS" - fi fi # Set optimization CFLAGS. @@ -1700,6 +1689,11 @@ else apple="" fi +# We can't use the linker's strip flag on Mac OSX. +if [ "$debug" -eq 0 ] && [ "$apple" == "" ] && [ "$strip_bin" -ne 0 ]; then + LDFLAGS="-s $LDFLAGS" +fi + # Test OpenBSD. This is not in an if statement because regardless of whatever # the user says, we need to know if we are on OpenBSD to activate _BSD_SOURCE. # No, I cannot `#define _BSD_SOURCE` in a header because OpenBSD's patched GCC @@ -1872,6 +1866,8 @@ dc_tests=$(gen_std_test_targets dc) dc_script_tests=$(gen_script_test_targets dc) dc_err_tests=$(gen_err_test_targets dc) +printf 'unneeded: %s\n' "$unneeded" + # Print out the values; this is for debugging. printf 'Version: %s\n' "$version" diff --git a/contrib/bc/gen/lib2.bc b/contrib/bc/gen/lib2.bc index ba3f76b1803a..df51d0c07a8d 100644 --- a/contrib/bc/gen/lib2.bc +++ b/contrib/bc/gen/lib2.bc @@ -34,10 +34,34 @@ */ define p(x,y){ - auto a + auto a,i,s,z + if(y==0)return 1@scale + if(x==0){ + if(y>0)return 0 + return 1/0 + } a=y$ if(y==a)return(x^a)@scale - return e(y*l(x)) + z=0 + if(x<1){ + y=-y + a=-a + z=x + x=1/x + } + if(y<0){ + return e(y*l(x)) + } + i=x^a + s=scale + scale+=length(i)+5 + if(z){ + x=1/z + i=x^a + } + i*=e((y-a)*l(x)) + scale=s + return i@scale } define r(x,p){ auto t,n @@ -66,6 +90,14 @@ define f(n){ for(r=1;n>1;--n)r*=n return r } +define max(a,b){ + if(a>b)return a + return b +} +define min(a,b){ + if(an)return 0 @@ -242,6 +274,15 @@ define frand(p){ return irand(A^p)>>p } define ifrand(i,p){return irand(abs(i)$)+frand(p)} +define i2rand(a,b){ + auto n,x + a=a$ + b=b$ + if(a==b)return a + n=min(a,b) + x=max(a,b) + return irand(x-n+1)+n +} define srand(x){ if(irand(2))return -x return x diff --git a/contrib/bc/include/bc.h b/contrib/bc/include/bc.h index 73a85aa406a0..17fd0b9d171f 100644 --- a/contrib/bc/include/bc.h +++ b/contrib/bc/include/bc.h @@ -276,7 +276,7 @@ bc_lex_token(BcLex* l); * @return True if i is an expression token, false otherwise. */ #define BC_PARSE_EXPR(i) \ - (bc_parse_exprs[(((i) & (uchar) ~(0x07)) >> 3)] & (1 << (7 - ((i) &0x07)))) + (bc_parse_exprs[(((i) & (uchar) ~(0x07)) >> 3)] & (1 << (7 - ((i) & 0x07)))) /** * Returns the operator (by lex token) that is at the top of the operator diff --git a/contrib/bc/include/bcl.h b/contrib/bc/include/bcl.h index 0908e215182c..d3a9f42cdcf8 100644 --- a/contrib/bc/include/bcl.h +++ b/contrib/bc/include/bcl.h @@ -36,9 +36,6 @@ #ifndef BC_BCL_H #define BC_BCL_H -// TODO: Add a generation index when building with Valgrind to check for -// use-after-free's or double frees. - #include #include #include diff --git a/contrib/bc/include/history.h b/contrib/bc/include/history.h index 19c5a0fe27f7..64402c4dffa1 100644 --- a/contrib/bc/include/history.h +++ b/contrib/bc/include/history.h @@ -173,10 +173,6 @@ typedef struct BcHistory #include #include -#if BC_DEBUG_CODE -#include -#endif // BC_DEBUG_CODE - /// Default columns. #define BC_HIST_DEF_COLS (80) diff --git a/contrib/bc/include/num.h b/contrib/bc/include/num.h index d24c206cbe51..6c9dee107f2f 100644 --- a/contrib/bc/include/num.h +++ b/contrib/bc/include/num.h @@ -211,9 +211,9 @@ struct BcRNG; #define BC_NUM_KARATSUBA_ALLOCS (6) /** - * Rounds @a s (scale) up to the next power of BC_BASE_DIGS. This also check for - * overflow and gives a fatal error if that happens because we just can't go - * over the limits we have imposed. + * Rounds @a s (scale) up to the next power of BC_BASE_DIGS. This will also + * check for overflow and gives a fatal error if that happens because we just + * can't go over the limits we have imposed. * @param s The scale to round up. * @return @a s rounded up to the next power of BC_BASE_DIGS. */ diff --git a/contrib/bc/include/version.h b/contrib/bc/include/version.h index a4df383e284a..e2576269345d 100644 --- a/contrib/bc/include/version.h +++ b/contrib/bc/include/version.h @@ -37,6 +37,6 @@ #define BC_VERSION_H /// The current version. -#define VERSION 6.6.0 +#define VERSION 6.7.5 #endif // BC_VERSION_H diff --git a/contrib/bc/manuals/algorithms.md b/contrib/bc/manuals/algorithms.md index 4d7a0edc54c4..ce27bf026b69 100644 --- a/contrib/bc/manuals/algorithms.md +++ b/contrib/bc/manuals/algorithms.md @@ -193,6 +193,74 @@ The algorithm used is to use the formula `e(y*l(x))`. It has a complexity of `O(n^3)` because both `e()` and `l()` do. +However, there are details to this algorithm, described by the author, +TediusTimmy, in GitHub issue [#69][12]. + +First, check if the exponent is 0. If it is, return 1 at the appropriate +`scale`. + +Next, check if the number is 0. If so, check if the exponent is greater than +zero; if it is, return 0. If the exponent is less than 0, error (with a divide +by 0) because that is undefined. + +Next, check if the exponent is actually an integer, and if it is, use the +exponentiation operator. + +At the `z=0` line is the start of the meat of the new code. + +`z` is set to zero as a flag and as a value. What I mean by that will be clear +later. + +Then we check if the number is less than 0. If it is, we negate the exponent +(and the integer version of the exponent, which we calculated earlier to check +if it was an integer). We also save the number in `z`; being non-zero is a flag +for later and a value to be used. Then we store the reciprocal of the number in +itself. + +All of the above paragraph will not make sense unless you remember the +relationship `l(x) == -l(1/x)`; we negated the exponent, which is equivalent to +the negative sign in that relationship, and we took the reciprocal of the +number, which is equivalent to the reciprocal in the relationship. + +But what if the number is negative? We ignore that for now because we eventually +call `l(x)`, which will raise an error if `x` is negative. + +Now, we can keep going. + +If at this point, the exponent is negative, we need to use the original formula +(`e(y * l(x))`) and return that result because the result will go to zero +anyway. + +But if we did *not* return, we know the exponent is *not* negative, so we can +get clever. + +We then compute the integral portion of the power by computing the number to +power of the integral portion of the exponent. + +Then we have the most clever trick: we add the length of that integer power (and +a little extra) to the `scale`. Why? Because this will ensure that the next part +is calculated to at least as many digits as should be in the integer *plus* any +extra `scale` that was wanted. + +Then we check `z`, which, if it is not zero, is the original value of the +number. If it is not zero, we need to take the take the reciprocal *again* +because now we have the correct `scale`. And we *also* have to calculate the +integer portion of the power again. + +Then we need to calculate the fractional portion of the number. We do this by +using the original formula, but we instead of calculating `e(y * l(x))`, we +calculate `e((y - a) * l(x))`, where `a` is the integer portion of `y`. It's +easy to see that `y - a` will be just the fractional portion of `y` (the +exponent), so this makes sense. + +But then we *multiply* it into the integer portion of the power. Why? Because +remember: we're dealing with an exponent and a power; the relationship is +`x^(y+z) == (x^y)*(x^z)`. + +So we multiply it into the integer portion of the power. + +Finally, we set the result to the `scale`. + ### Rounding (`bc` Math Library 2 Only) This is implemented in the function `r(x,p)`. @@ -327,3 +395,4 @@ It has a complexity of `O(n^3)` because of arctangent. [9]: https://en.wikipedia.org/wiki/Root-finding_algorithms#Newton's_method_(and_similar_derivative-based_methods) [10]: https://en.wikipedia.org/wiki/Euclidean_algorithm [11]: https://en.wikipedia.org/wiki/Atan2#Definition_and_computation +[12]: https://github.com/gavinhoward/bc/issues/69 diff --git a/contrib/bc/manuals/bc/A.1 b/contrib/bc/manuals/bc/A.1 index 5de2d3529bcf..1810beaf9291 100644 --- a/contrib/bc/manuals/bc/A.1 +++ b/contrib/bc/manuals/bc/A.1 @@ -25,14 +25,12 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.TH "BC" "1" "February 2023" "Gavin D. Howard" "General Commands Manual" +.TH "BC" "1" "November 2023" "Gavin D. Howard" "General Commands Manual" .nh .ad l .SH NAME -.PP bc - arbitrary-precision decimal arithmetic language and calculator .SH SYNOPSIS -.PP \f[B]bc\f[R] [\f[B]-cCghilPqRsvVw\f[R]] [\f[B]--digit-clamp\f[R]] [\f[B]--no-digit-clamp\f[R]] [\f[B]--global-stacks\f[R]] [\f[B]--help\f[R]] [\f[B]--interactive\f[R]] [\f[B]--mathlib\f[R]] @@ -48,7 +46,6 @@ bc - arbitrary-precision decimal arithmetic language and calculator [\f[B]-S\f[R] \f[I]scale\f[R]] [\f[B]--scale\f[R]=\f[I]scale\f[R]] [\f[B]-E\f[R] \f[I]seed\f[R]] [\f[B]--seed\f[R]=\f[I]seed\f[R]] .SH DESCRIPTION -.PP bc(1) is an interactive processor for a language first standardized in 1991 by POSIX. (See the \f[B]STANDARDS\f[R] section.) @@ -77,7 +74,6 @@ If parsing scripts meant for other bc(1) implementations still does not work, that is a bug and should be reported. See the \f[B]BUGS\f[R] section. .SH OPTIONS -.PP The following are the options that bc(1) accepts. .TP \f[B]-C\f[R], \f[B]--no-digit-clamp\f[R] @@ -189,19 +185,16 @@ without worrying that the change will affect other functions. Thus, a hypothetical function named \f[B]output(x,b)\f[R] that simply printed \f[B]x\f[R] in base \f[B]b\f[R] could be written like this: .IP -.nf -\f[C] +.EX define void output(x, b) { obase=b x } -\f[R] -.fi +.EE .PP instead of like this: .IP -.nf -\f[C] +.EX define void output(x, b) { auto c c=obase @@ -209,8 +202,7 @@ define void output(x, b) { x obase=c } -\f[R] -.fi +.EE .PP This makes writing functions much easier. .PP @@ -228,12 +220,10 @@ converter, it is possible to replace that capability with various shell aliases. Examples: .IP -.nf -\f[C] +.EX alias d2o=\[dq]bc -e ibase=A -e obase=8\[dq] alias h2b=\[dq]bc -e ibase=G -e obase=2\[dq] -\f[R] -.fi +.EE .PP Second, if the purpose of a function is to set \f[B]ibase\f[R], \f[B]obase\f[R], \f[B]scale\f[R], or \f[B]seed\f[R] globally for any @@ -251,11 +241,9 @@ If a function desires to not affect the sequence of pseudo-random numbers of its parents, but wants to use the same \f[B]seed\f[R], it can use the following line: .IP -.nf -\f[C] +.EX seed = seed -\f[R] -.fi +.EE .PP If the behavior of this option is desired for every run of bc(1), then users could make sure to define \f[B]BC_ENV_ARGS\f[R] and include this @@ -485,7 +473,6 @@ This is a \f[B]non-portable extension\f[R]. .PP All long options are \f[B]non-portable extensions\f[R]. .SH STDIN -.PP If no files or expressions are given by the \f[B]-f\f[R], \f[B]--file\f[R], \f[B]-e\f[R], or \f[B]--expression\f[R] options, then bc(1) reads from \f[B]stdin\f[R]. @@ -502,7 +489,6 @@ Second, after an \f[B]if\f[R] statement, bc(1) doesn\[cq]t know if an \f[B]else\f[R] statement will follow, so it will not execute until it knows there will not be an \f[B]else\f[R] statement. .SH STDOUT -.PP Any non-error output is written to \f[B]stdout\f[R]. In addition, if history (see the \f[B]HISTORY\f[R] section) and the prompt (see the \f[B]TTY MODE\f[R] section) are enabled, both are output @@ -511,7 +497,7 @@ to \f[B]stdout\f[R]. \f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot write to \f[B]stdout\f[R], so if \f[B]stdout\f[R] is closed, as in -\f[B]bc >&-\f[R], it will quit with an error. +\f[B]bc >&-\f[R], it will quit with an error. This is done so that bc(1) can report problems when \f[B]stdout\f[R] is redirected to a file. .PP @@ -519,13 +505,12 @@ If there are scripts that depend on the behavior of other bc(1) implementations, it is recommended that those scripts be changed to redirect \f[B]stdout\f[R] to \f[B]/dev/null\f[R]. .SH STDERR -.PP Any error output is written to \f[B]stderr\f[R]. .PP \f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot write to \f[B]stderr\f[R], so if \f[B]stderr\f[R] is closed, as in -\f[B]bc 2>&-\f[R], it will quit with an error. +\f[B]bc 2>&-\f[R], it will quit with an error. This is done so that bc(1) can exit with an error code when \f[B]stderr\f[R] is redirected to a file. .PP @@ -533,7 +518,6 @@ If there are scripts that depend on the behavior of other bc(1) implementations, it is recommended that those scripts be changed to redirect \f[B]stderr\f[R] to \f[B]/dev/null\f[R]. .SH SYNTAX -.PP The syntax for bc(1) programs is mostly C-like, with some differences. This bc(1) follows the POSIX standard (see the \f[B]STANDARDS\f[R] section), which is a much more thorough resource for the language this @@ -618,7 +602,6 @@ These are \f[B]non-portable extensions\f[R]. .PP Either semicolons or newlines may separate statements. .SS Comments -.PP There are two kinds of comments: .IP "1." 3 Block comments are enclosed in \f[B]/*\f[R] and \f[B]*/\f[R]. @@ -627,7 +610,6 @@ Line comments go from \f[B]#\f[R] until, and not including, the next newline. This is a \f[B]non-portable extension\f[R]. .SS Named Expressions -.PP The following are named expressions in bc(1): .IP "1." 3 Variables: \f[B]I\f[R] @@ -684,7 +666,6 @@ Named expressions are required as the operand of of \f[B]assignment\f[R] operators (see the \f[I]Operators\f[R] subsection). .SS Operands -.PP The following are valid operands in bc(1): .IP " 1." 4 Numbers (see the \f[I]Numbers\f[R] subsection below). @@ -829,7 +810,6 @@ where a reproducible stream of pseudo-random numbers is \f[I]ESSENTIAL\f[R]. In any other case, use a non-seeded pseudo-random number generator. .SS Numbers -.PP Numbers are strings made up of digits, uppercase letters, and at most \f[B]1\f[R] period for a radix. Numbers can have up to \f[B]BC_NUM_MAX\f[R] digits. @@ -901,7 +881,6 @@ number string \f[B]FFeA\f[R], the resulting decimal number will be Accepting input as scientific notation is a \f[B]non-portable extension\f[R]. .SS Operators -.PP The following arithmetic and logical operators can be used. They are listed in order of decreasing precedence. Operators in the same group have the same precedence. @@ -1018,9 +997,9 @@ The operators will be described in more detail below. .TP \f[B]++\f[R] \f[B]--\f[R] The prefix and postfix \f[B]increment\f[R] and \f[B]decrement\f[R] -operators behave exactly like they would in C. -They require a named expression (see the \f[I]Named Expressions\f[R] -subsection) as an operand. +operators behave exactly like they would in C. They require a named +expression (see the \f[I]Named Expressions\f[R] subsection) as an +operand. .RS .PP The prefix versions of these operators are more efficient; use them @@ -1192,7 +1171,6 @@ This is \f[I]not\f[R] a short-circuit operator. This is a \f[B]non-portable extension\f[R]. .RE .SS Statements -.PP The following items are statements: .IP " 1." 4 \f[B]E\f[R] @@ -1270,11 +1248,9 @@ occur before the \f[B]quit\f[R] statement before exiting. .PP In other words, for the bc(1) code below: .IP -.nf -\f[C] +.EX for (i = 0; i < 3; ++i) i; quit -\f[R] -.fi +.EE .PP Other bc(1) implementations will print nothing, and this bc(1) will print \f[B]0\f[R], \f[B]1\f[R], and \f[B]2\f[R] on successive lines @@ -1305,7 +1281,6 @@ run with either the \f[B]-s\f[R] or \f[B]-w\f[R] command-line options Printing numbers in scientific notation and/or engineering notation is a \f[B]non-portable extension\f[R]. .SS Strings -.PP If strings appear as a statement by themselves, they are printed without a trailing newline. .PP @@ -1324,7 +1299,6 @@ resets (see the \f[B]RESET\f[R] section). Assigning strings to variables and array elements and passing them to functions are \f[B]non-portable extensions\f[R]. .SS Print Statement -.PP The \[lq]expressions\[rq] in a \f[B]print\f[R] statement may also be strings. If they are, there are backslash escape sequences that are interpreted @@ -1356,9 +1330,7 @@ character to be printed as-is. Any non-string expression in a print statement shall be assigned to \f[B]last\f[R], like any other expression that is printed. .SS Stream Statement -.PP -The \[lq]expressions in a \f[B]stream\f[R] statement may also be -strings. +The expressions in a \f[B]stream\f[R] statement may also be strings. .PP If a \f[B]stream\f[R] statement is given a string, it prints the string as though the string had appeared as its own statement. @@ -1371,17 +1343,14 @@ The result is then printed as though \f[B]obase\f[R] is \f[B]256\f[R] and each digit is interpreted as an 8-bit ASCII character, making it a byte stream. .SS Order of Evaluation -.PP All expressions in a statment are evaluated left to right, except as necessary to maintain order of operations. This means, for example, assuming that \f[B]i\f[R] is equal to \f[B]0\f[R], in the expression .IP -.nf -\f[C] +.EX a[i++] = i++ -\f[R] -.fi +.EE .PP the first (or 0th) element of \f[B]a\f[R] is set to \f[B]1\f[R], and \f[B]i\f[R] is equal to \f[B]2\f[R] at the end of the expression. @@ -1390,28 +1359,23 @@ This includes function arguments. Thus, assuming \f[B]i\f[R] is equal to \f[B]0\f[R], this means that in the expression .IP -.nf -\f[C] +.EX x(i++, i++) -\f[R] -.fi +.EE .PP the first argument passed to \f[B]x()\f[R] is \f[B]0\f[R], and the second argument is \f[B]1\f[R], while \f[B]i\f[R] is equal to \f[B]2\f[R] before the function starts executing. .SH FUNCTIONS -.PP Function definitions are as follows: .IP -.nf -\f[C] +.EX define I(I,...,I){ auto I,...,I S;...;S return(E) } -\f[R] -.fi +.EE .PP Any \f[B]I\f[R] in the parameter list or \f[B]auto\f[R] list may be replaced with \f[B]I[]\f[R] to make a parameter or \f[B]auto\f[R] var an @@ -1439,18 +1403,15 @@ equivalent to \f[B]return (0)\f[R], unless the function is a \f[B]void\f[R] function (see the \f[I]Void Functions\f[R] subsection below). .SS Void Functions -.PP Functions can also be \f[B]void\f[R] functions, defined as follows: .IP -.nf -\f[C] +.EX define void I(I,...,I){ auto I,...,I S;...;S return } -\f[R] -.fi +.EE .PP They can only be used as standalone expressions, where such an expression would be printed alone, except in a print statement. @@ -1466,15 +1427,12 @@ The word \[lq]void\[rq] is only treated specially right after the .PP This is a \f[B]non-portable extension\f[R]. .SS Array References -.PP For any array in the parameter list, if the array is declared in the form .IP -.nf -\f[C] +.EX *I[] -\f[R] -.fi +.EE .PP it is a \f[B]reference\f[R]. Any changes to the array in the function are reflected, when the @@ -1484,7 +1442,6 @@ Other than this, all function arguments are passed by value. .PP This is a \f[B]non-portable extension\f[R]. .SH LIBRARY -.PP All of the functions below, including the functions in the extended math library (see the \f[I]Extended Library\f[R] subsection below), are available when the \f[B]-l\f[R] or \f[B]--mathlib\f[R] command-line @@ -1492,7 +1449,6 @@ flags are given, except that the extended math library is not available when the \f[B]-s\f[R] option, the \f[B]-w\f[R] option, or equivalents are given. .SS Standard Library -.PP The standard (see the \f[B]STANDARDS\f[R] section) defines the following functions for the math library: .TP @@ -1545,7 +1501,6 @@ This is a transcendental function (see the \f[I]Transcendental Functions\f[R] subsection below). .RE .SS Extended Library -.PP The extended library is \f[I]not\f[R] loaded when the \f[B]-s\f[R]/\f[B]--standard\f[R] or \f[B]-w\f[R]/\f[B]--warn\f[R] options are given since they are not part of the library defined by the @@ -1579,6 +1534,14 @@ the rounding mode round away from \f[B]0\f[R] \f[B]f(x)\f[R] Returns the factorial of the truncated absolute value of \f[B]x\f[R]. .TP +\f[B]max(a, b)\f[R] +Returns \f[B]a\f[R] if \f[B]a\f[R] is greater than \f[B]b\f[R]; +otherwise, returns \f[B]b\f[R]. +.TP +\f[B]min(a, b)\f[R] +Returns \f[B]a\f[R] if \f[B]a\f[R] is less than \f[B]b\f[R]; otherwise, +returns \f[B]b\f[R]. +.TP \f[B]perm(n, k)\f[R] Returns the permutation of the truncated absolute value of \f[B]n\f[R] of the truncated absolute value of \f[B]k\f[R], if \f[B]k <= n\f[R]. @@ -1589,6 +1552,10 @@ Returns the combination of the truncated absolute value of \f[B]n\f[R] of the truncated absolute value of \f[B]k\f[R], if \f[B]k <= n\f[R]. If not, it returns \f[B]0\f[R]. .TP +\f[B]fib(n)\f[R] +Returns the Fibonacci number of the truncated absolute value of +\f[B]n\f[R]. +.TP \f[B]l2(x)\f[R] Returns the logarithm base \f[B]2\f[R] of \f[B]x\f[R]. .RS @@ -1759,7 +1726,7 @@ Functions\f[R] subsection below). .RE .TP \f[B]frand(p)\f[R] -Generates a pseudo-random number between \f[B]0\f[R] (inclusive) and +Generates a pseudo-random integer between \f[B]0\f[R] (inclusive) and \f[B]1\f[R] (exclusive) with the number of decimal digits after the decimal point equal to the truncated absolute value of \f[B]p\f[R]. If \f[B]p\f[R] is not \f[B]0\f[R], then calling this function will @@ -1768,14 +1735,22 @@ If \f[B]p\f[R] is \f[B]0\f[R], then \f[B]0\f[R] is returned, and \f[B]seed\f[R] is \f[I]not\f[R] changed. .TP \f[B]ifrand(i, p)\f[R] -Generates a pseudo-random number that is between \f[B]0\f[R] (inclusive) -and the truncated absolute value of \f[B]i\f[R] (exclusive) with the -number of decimal digits after the decimal point equal to the truncated -absolute value of \f[B]p\f[R]. +Generates a pseudo-random integer that is between \f[B]0\f[R] +(inclusive) and the truncated absolute value of \f[B]i\f[R] (exclusive) +with the number of decimal digits after the decimal point equal to the +truncated absolute value of \f[B]p\f[R]. If the absolute value of \f[B]i\f[R] is greater than or equal to \f[B]2\f[R], and \f[B]p\f[R] is not \f[B]0\f[R], then calling this function will change the value of \f[B]seed\f[R]; otherwise, \f[B]0\f[R] -is returned and \f[B]seed\f[R] is not changed. +is returned, and \f[B]seed\f[R] is not changed. +.TP +\f[B]i2rand(a, b)\f[R] +Takes the truncated value of \f[B]a\f[R] and \f[B]b\f[R] and uses them +as inclusive bounds to enerate a pseudo-random integer. +If the difference of the truncated values of \f[B]a\f[R] and \f[B]b\f[R] +is \f[B]0\f[R], then the truncated value is returned, and \f[B]seed\f[R] +is \f[I]not\f[R] changed. +Otherwise, this function will change the value of \f[B]seed\f[R]. .TP \f[B]srand(x)\f[R] Returns \f[B]x\f[R] with its sign flipped with probability @@ -1847,7 +1822,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]bnot8(x)\f[R] Does a bitwise not of the truncated absolute value of \f[B]x\f[R] as -though it has \f[B]8\f[R] binary digits (1 unsigned byte). +though it has \f[B]8\f[R] binary digits (\f[B]1\f[R] unsigned byte). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1856,7 +1831,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]bnot16(x)\f[R] Does a bitwise not of the truncated absolute value of \f[B]x\f[R] as -though it has \f[B]16\f[R] binary digits (2 unsigned bytes). +though it has \f[B]16\f[R] binary digits (\f[B]2\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1865,7 +1840,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]bnot32(x)\f[R] Does a bitwise not of the truncated absolute value of \f[B]x\f[R] as -though it has \f[B]32\f[R] binary digits (4 unsigned bytes). +though it has \f[B]32\f[R] binary digits (\f[B]4\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1874,7 +1849,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]bnot64(x)\f[R] Does a bitwise not of the truncated absolute value of \f[B]x\f[R] as -though it has \f[B]64\f[R] binary digits (8 unsigned bytes). +though it has \f[B]64\f[R] binary digits (\f[B]8\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1902,7 +1877,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brev8(x)\f[R] Runs a bit reversal on the truncated absolute value of \f[B]x\f[R] as -though it has 8 binary digits (1 unsigned byte). +though it has 8 binary digits (\f[B]1\f[R] unsigned byte). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1911,7 +1886,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brev16(x)\f[R] Runs a bit reversal on the truncated absolute value of \f[B]x\f[R] as -though it has 16 binary digits (2 unsigned bytes). +though it has 16 binary digits (\f[B]2\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1920,7 +1895,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brev32(x)\f[R] Runs a bit reversal on the truncated absolute value of \f[B]x\f[R] as -though it has 32 binary digits (4 unsigned bytes). +though it has 32 binary digits (\f[B]4\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1929,7 +1904,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brev64(x)\f[R] Runs a bit reversal on the truncated absolute value of \f[B]x\f[R] as -though it has 64 binary digits (8 unsigned bytes). +though it has 64 binary digits (\f[B]8\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1982,7 +1957,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brol32(x, p)\f[R] Does a left bitwise rotatation of the truncated absolute value of -\f[B]x\f[R], as though it has \f[B]32\f[R] binary digits (\f[B]2\f[R] +\f[B]x\f[R], as though it has \f[B]32\f[R] binary digits (\f[B]4\f[R] unsigned bytes), by the number of places equal to the truncated absolute value of \f[B]p\f[R] modded by \f[B]2\f[R] to the power of \f[B]32\f[R]. .RS @@ -1993,7 +1968,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brol64(x, p)\f[R] Does a left bitwise rotatation of the truncated absolute value of -\f[B]x\f[R], as though it has \f[B]64\f[R] binary digits (\f[B]2\f[R] +\f[B]x\f[R], as though it has \f[B]64\f[R] binary digits (\f[B]8\f[R] unsigned bytes), by the number of places equal to the truncated absolute value of \f[B]p\f[R] modded by \f[B]2\f[R] to the power of \f[B]64\f[R]. .RS *** 9633 LINES SKIPPED *** From nobody Thu Jan 18 17:48:17 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TG9Ft1dBhz56bMy; Thu, 18 Jan 2024 17:48:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TG9Fs6Qq2z49wx; Thu, 18 Jan 2024 17:48:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705600097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=X0h0HyOQIMFppHTX1V9oYAPBmEbzhtzLrIJm9oWeNGs=; b=wW5ysIE/lGzVh0cSBFnAAvByjGcgwoiH2l/s4VWJRZE3W/Qgw+m8AUfz0MrzeTYU0Amwi2 A2V/qmukIn50tUoK7MChPKn36Hr4AoV1fl/iCk9lebhS4B+7GoPmeQTkLgqT5p5D7yAY7o 7JCc+sfV9JnGtf8AwOTS0ap/74R+9yQlp/zOOD9LTqje59inQuCTjDyobHS1s5uc9R3bFR qbnFo1OwSTwxWWWf8C0og02fmVxBb+WdpHDHca5Ayrk/bRAhMNa4qcgbkLBAKxxcsqtrDe fCirqRSGkhgn0m30VLjwMM0Ihd64DDerMCwgk5oF1OOavAYJwEawFNYww5xB/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705600097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=X0h0HyOQIMFppHTX1V9oYAPBmEbzhtzLrIJm9oWeNGs=; b=nYWD9gac9fjYAvJnf2ToLKikjXIybZrpAYMXAaA+xFScl/bP+VR5Gkk+MRMoMRSq2T5eSK fZpcBqD3lqqMIAouv1R6ntp6CFSCa/maueXO5SzFQAFAnKHG3wXhX+U67QlM7mS4mOoCy3 KDdKv9obtaa1nXVbCtDb3BRQ93pleNid+l8HdWnFF51G1KsBEttTyyhF73+j9PYsTOOW2Z 4sLDJaHmo4TVRpQahEZw1AUadbdyEll1IuOtnQX9bskyTY17xYHiiDUsQlmsJtSTEK2JiP BwwlsBvXXzEXYiJRJyghys3MC7jAFlgpFG4/L16znNkUDMGDVu6qaMVI6/YLNA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705600097; a=rsa-sha256; cv=none; b=mb34Lobp4NSMwBHaYiN9YFrv+onw4yx8ePO2WrCoRX6ta5+L29QsRGPFAl6l49MJGZJaQH 7z1+/LKBAzWW/JeQlFk+gPl3Msyotw+uEC+HCKDtLbWlNyKOkao224pZa4UUPeJzCMZ4Wq /Gt6IbD+FQAKUtfA58f1P+6p8/yZLif/728bsWgMb7lf+oslbtNbohWyR+fJyxYghgiH1+ diiaqGuKOUeMHnApyXRjcnT9uhlCKlVBx7EhvW+6lorxHwe5pt3pZAoVNChSt6wuj3Jt2J I03uVhB6hkl6kjSKuhRFwETot8xF/sepkA+L4Z8ScA4d1HOOn1LxFfDCGlGkDA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TG9Fs5QRgzGmV; Thu, 18 Jan 2024 17:48:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IHmHRP014219; Thu, 18 Jan 2024 17:48:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IHmHIw014216; Thu, 18 Jan 2024 17:48:17 GMT (envelope-from git) Date: Thu, 18 Jan 2024 17:48:17 GMT Message-Id: <202401181748.40IHmHIw014216@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Stefan =?utf-8?Q?E=C3=9Fer?= Subject: git: ece15876b8a8 - stable/13 - usr.bin/gh-bc: fix Makefile for WITHOUT_NLS_CATALOGS case List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: se X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ece15876b8a86031afa7c1e37fdda341ad65089d Auto-Submitted: auto-generated The branch stable/13 has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=ece15876b8a86031afa7c1e37fdda341ad65089d commit ece15876b8a86031afa7c1e37fdda341ad65089d Author: Stefan Eßer AuthorDate: 2023-07-29 18:52:53 +0000 Commit: Stefan Eßer CommitDate: 2024-01-18 17:47:06 +0000 usr.bin/gh-bc: fix Makefile for WITHOUT_NLS_CATALOGS case Some macro definitions had been moved into a Makefile section that depends on MK_NLS_CATALOGS != "no", leading to LTO and the installation of tests being disabled in the WITHOUT_NLS_CATALOGS case. Reported by: Yuri (cherry picked from commit 382af2f8d7bf576ff583543737e1134701ccc63d) --- usr.bin/gh-bc/Makefile | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/usr.bin/gh-bc/Makefile b/usr.bin/gh-bc/Makefile index c7fdc3c5a797..e78ab4b2994b 100644 --- a/usr.bin/gh-bc/Makefile +++ b/usr.bin/gh-bc/Makefile @@ -60,6 +60,14 @@ CFLAGS+= -DNDEBUG CFLAGS+= -DNLSPATH=/usr/share/nls/%L/%N.cat CFLAGS+= -I${BCDIR}/include +# prevent floating point incompatibilities caused by -flto on some architectures +.if ${MACHINE_ARCH} != riscv64 +CFLAGS+= -flto +.endif + +HAS_TESTS= yes +SUBDIR.${MK_TESTS}+= tests + .if ${MK_NLS_CATALOGS} == "no" CFLAGS+= -DBC_ENABLE_NLS=0 MAN_SRC_BC= bc/N.1 @@ -69,15 +77,6 @@ CFLAGS+= -DBC_ENABLE_NLS=1 MAN_SRC_BC= bc/A.1 MAN_SRC_DC= dc/A.1 -# prevent floating point incompatibilities caused by -flto on some architectures -.if ${MACHINE_ARCH:Mmips*} == "" && ${MACHINE_ARCH} != powerpc64 && \ - ${MACHINE_ARCH} != riscv64 -CFLAGS+= -flto -.endif - -HAS_TESTS= yes -SUBDIR.${MK_TESTS}+= tests - .for catalog in ${CATALOGS} NLS+= ${catalog:C/.*://} NLSSRCFILES_${catalog:C/.*://}= ${catalog:C/.*://}.msg From nobody Thu Jan 18 17:56:18 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TG9R72nTSz56bSw; Thu, 18 Jan 2024 17:56:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TG9R719PXz4Cds; Thu, 18 Jan 2024 17:56:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705600579; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NVii1WLyo2vGWAtvnB6Aee/HBvBgjMbsNOmFK+0nsjs=; b=mUqJrCYEpxyg2ZR8gb9MDZA5zQEyt6tE+5nVnWhj7A9gC8uJJGbGTtKCrEIAbtB27P+P9F H5a5lptp1fu1CQ6Qjdc2nnK9OtLsDy1f3OVdbds6dV24qFQOcUTV8rNL8Y2B5/ap4epQ9a PBRIgObl4BbMDk5EqqY5EwUkwfblDmLCnP/k3DCPN30+IDCY0Hb8hkPUqcNenDc75IGwXZ 1QoGQOVUZ1CZBv54A/ctA7snV48R9uwlPFm0XVSd51EvpTk2BD3eWCUKPZyG11yjEzFJtU 4lDX+paOZsLBfqWZYmBJ3ecay0NOQY24byLG+BHz7Io6fWgQjz5B1i0708JEVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705600579; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NVii1WLyo2vGWAtvnB6Aee/HBvBgjMbsNOmFK+0nsjs=; b=RGpYn7ODgvEOh6AJS5+s74VizmUmJvhkRg3icn9xaHu20YGfxFxjxaJ5G/FERQ376YNZ7A yrYB9ISZZr6LxhTcwTldxe3IlprhXsopiBAq63Ea+rBnWN99NWLY2bYM/kFFguCvn0rFtg PBR4XbT0MAKLMpo7J/N9z7DeI900yLTKYyoJfYNEQ7BOzdHbfCwWHVNqyhA8yzvj3QX9S0 Jw8xtXgv1C0DJ/SyDMncF/W4ndrDmIxYdHDpXrTS/Ukman+9qEXiwmiarv0TbNvIvLL3ET dpMh7X4lBg7oY7tpUuyCFLgWFMwA/E7YBNPsEyvjo0/JH4SzwRtEcwEZ24wV4A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705600579; a=rsa-sha256; cv=none; b=lwcpPXn9N+h2blmyW7IqWq2IJzJN+qf9BJWI79+eJ/NULDAon3oSMvlkk4rlmWMKozTHx6 5kLolqc7JUMPFT7uGkCdlzk5MgCfNGVrv2XvF/IkAkOLPND+6/MoBn2oQCRxoQu71DXr8w +rrhcsmXeZ+Zgl92uh8fibvVEx137nR8kT3mbmizlfELStTOSZTvyhHk8iG1Xz9x9yhc7C Ij42Yfb30NH269cSfALv1Ffce8kVuq66IMfcyYiac1hxA6ambsu6DMuO8gf4i3hH2nZIlB YL3HtuYnX5E0kU9N12m02/TLSkCx88t2dGG8xEkPD5kgOHHBP0d1RuQ0+HKleQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TG9R67317zH8Z; Thu, 18 Jan 2024 17:56:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IHuIoP030528; Thu, 18 Jan 2024 17:56:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IHuIeF030525; Thu, 18 Jan 2024 17:56:18 GMT (envelope-from git) Date: Thu, 18 Jan 2024 17:56:18 GMT Message-Id: <202401181756.40IHuIeF030525@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Stefan =?utf-8?Q?E=C3=9Fer?= Subject: git: a1684fc734ef - stable/14 - vendor/bc: MFC upgrade from version 6,6.0 to 6.7.5 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: se X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a1684fc734efd8cd4352cfd014a02ad9a95cc7cb Auto-Submitted: auto-generated The branch stable/14 has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=a1684fc734efd8cd4352cfd014a02ad9a95cc7cb commit a1684fc734efd8cd4352cfd014a02ad9a95cc7cb Author: Stefan Eßer AuthorDate: 2023-10-30 09:10:24 +0000 Commit: Stefan Eßer CommitDate: 2024-01-18 17:51:39 +0000 vendor/bc: MFC upgrade from version 6,6.0 to 6.7.5 This is a squashed updated consisting of: vendor/bc: upgrade to version 6.7.2 This update improves the implementation of the power function p() and adds 3 new functions to the extended math library: min(), max(), and i2rand(). (cherry picked from commit aa339f1d5df9e38f36a34eb522355c4eebcae6c4) vendor/bc: upgrade to version 6.7.4 Documentation updates only, no functional changes to the software. (cherry picked from commit e6857bd4d7b4bf39ea32b9dcd34f8371164c356e) vendor/bc: upgrade to version 6.7.5 This update fixes a bug that line breaks in printed numbers may not match the line length set by the user. The value is printed correctly, just not split as specified in some situations. (cherry picked from commit f4fbc49d201f81c481a33fac6ba28e19faf96260) --- contrib/bc/Makefile.in | 2 +- contrib/bc/NEWS.md | 45 +- contrib/bc/configure.sh | 26 +- contrib/bc/gen/lib2.bc | 45 +- contrib/bc/include/bc.h | 2 +- contrib/bc/include/bcl.h | 3 - contrib/bc/include/history.h | 4 - contrib/bc/include/num.h | 6 +- contrib/bc/include/version.h | 2 +- contrib/bc/manuals/algorithms.md | 69 +++ contrib/bc/manuals/bc/A.1 | 174 +++--- contrib/bc/manuals/bc/A.1.md | 48 +- contrib/bc/manuals/bc/E.1 | 115 +--- contrib/bc/manuals/bc/E.1.md | 2 +- contrib/bc/manuals/bc/EH.1 | 113 +--- contrib/bc/manuals/bc/EH.1.md | 2 +- contrib/bc/manuals/bc/EHN.1 | 112 +--- contrib/bc/manuals/bc/EHN.1.md | 2 +- contrib/bc/manuals/bc/EN.1 | 114 +--- contrib/bc/manuals/bc/EN.1.md | 2 +- contrib/bc/manuals/bc/H.1 | 172 +++--- contrib/bc/manuals/bc/H.1.md | 48 +- contrib/bc/manuals/bc/HN.1 | 171 +++--- contrib/bc/manuals/bc/HN.1.md | 48 +- contrib/bc/manuals/bc/N.1 | 173 +++--- contrib/bc/manuals/bc/N.1.md | 48 +- contrib/bc/manuals/bcl.3 | 43 +- contrib/bc/manuals/dc/A.1 | 49 +- contrib/bc/manuals/dc/E.1 | 48 +- contrib/bc/manuals/dc/EH.1 | 46 +- contrib/bc/manuals/dc/EHN.1 | 45 +- contrib/bc/manuals/dc/EN.1 | 47 +- contrib/bc/manuals/dc/H.1 | 47 +- contrib/bc/manuals/dc/HN.1 | 46 +- contrib/bc/manuals/dc/N.1 | 48 +- contrib/bc/scripts/sqrt_frac_guess.bc | 126 ++++ contrib/bc/scripts/sqrt_int_guess.bc | 94 +++ contrib/bc/scripts/sqrt_random.bc | 129 ++++ contrib/bc/scripts/sqrt_random.sh | 77 +++ contrib/bc/src/num.c | 51 +- contrib/bc/src/program.c | 4 +- contrib/bc/src/vm.c | 2 +- contrib/bc/tests/bc/lib2.txt | 1 + contrib/bc/tests/bc/lib2_results.txt | 4 +- contrib/bc/tests/bc/scripts/all.txt | 2 + contrib/bc/tests/bc/scripts/i2rand.bc | 29 + contrib/bc/tests/bc/scripts/i2rand.txt | 1000 ++++++++++++++++++++++++++++++++ contrib/bc/tests/bc/scripts/print2.bc | 63 ++ contrib/bc/tests/bc/scripts/print2.txt | 650 +++++++++++++++++++++ contrib/bc/tests/bc/sqrt.txt | 2 + contrib/bc/tests/bc/sqrt_results.txt | 2 + contrib/bc/tests/script.sh | 2 +- contrib/bc/vs/bc.vcxproj | 4 + contrib/bc/vs/bcl.vcxproj | 6 + 54 files changed, 2980 insertions(+), 1235 deletions(-) diff --git a/contrib/bc/Makefile.in b/contrib/bc/Makefile.in index 55e2e4a6270a..e1309cd6d6b3 100644 --- a/contrib/bc/Makefile.in +++ b/contrib/bc/Makefile.in @@ -554,7 +554,7 @@ clean_config: clean clean_benchmarks clean_coverage: @printf 'Cleaning coverage files...\n' @$(RM) -f *.gcov - @$(RM) -f *.html + @$(RM) -f *.html *.css @$(RM) -f *.gcda *.gcno @$(RM) -f *.profraw @$(RM) -f $(GCDA) $(GCNO) diff --git a/contrib/bc/NEWS.md b/contrib/bc/NEWS.md index de3b35026fea..32e74de31231 100644 --- a/contrib/bc/NEWS.md +++ b/contrib/bc/NEWS.md @@ -1,5 +1,48 @@ # News +## 6.7.5 + +This is a production release to fix one small bug. + +The bug is that sometimes numbers are printed to incorrect line lengths. The +number is always correct; the line is just longer than the limit. + +Users who do not care do not need to update. + +## 6.7.4 + +This is a production release to fix problems in the `bc` manual. + +Users only need to update if desired. + +## 6.7.3 + +This is a production release to fix the library build on Mac OSX. + +Users on other platforms do *not* need to update. + +## 6.7.2 + +This is a production release to remove some debugging code that I accidentally +committed. + +## 6.7.1 + +This is a production release with a bug fix for `SIGINT` only being handled +once. + +## 6.7.0 + +This is a production release with three new functions in the [extended math +library][16]: `min()`, `max()`, and `i2rand()`. + +## 6.6.1 + +This is a production release with an improved `p()` function in the [extended +math library][16]. + +Users who don't care do not need to upgrade. + ## 6.6.0 This is a production release with two bug fixes and one change. @@ -751,7 +794,7 @@ function, `strdup()`, which is not in POSIX 2001, and it is in the X/Open System Interfaces group 2001. It is, however, in POSIX 2008, and since POSIX 2008 is old enough to be supported anywhere that I care, that should be the requirement. -Second, the BcVm global variable was put into `bss`. This actually slightly +Second, the `BcVm` global variable was put into `bss`. This actually slightly reduces the size of the executable from a massive code shrink, and it will stop `bc` from allocating a large set of memory when `bc` starts. diff --git a/contrib/bc/configure.sh b/contrib/bc/configure.sh index 4ba957131d52..9292f094bb17 100755 --- a/contrib/bc/configure.sh +++ b/contrib/bc/configure.sh @@ -461,7 +461,7 @@ find_src_files() { fi - _find_src_files_files=$(find "$scriptdir/src/" -depth -name "*.c" -print | LC_ALL=C sort) + _find_src_files_files=$(find "$scriptdir/src" -depth -name "*.c" -print | LC_ALL=C sort) _find_src_files_result="" @@ -772,7 +772,7 @@ predefined_build() { dc_default_digit_clamp=0;; GDH) - CFLAGS="-flto -Weverything -Wno-padded -Wno-unsafe-buffer-usage -Werror -pedantic -std=c11" + CFLAGS="-flto -Weverything -Wno-padded -Wno-unsafe-buffer-usage -Wno-poison-system-directories -Werror -pedantic -std=c11" bc_only=0 dc_only=0 coverage=0 @@ -806,7 +806,7 @@ predefined_build() { dc_default_digit_clamp=1;; DBG) - CFLAGS="-Weverything -Wno-padded -Wno-unsafe-buffer-usage -Werror -pedantic -std=c11" + CFLAGS="-Weverything -Wno-padded -Wno-unsafe-buffer-usage -Wno-poison-system-directories -Werror -pedantic -std=c11" bc_only=0 dc_only=0 coverage=0 @@ -1364,21 +1364,10 @@ if [ "$debug" -eq 1 ]; then CFLAGS="-O0" fi - ccbase=$(basename "$CC") - - if [ "$ccbase" = "clang" ]; then - CFLAGS="-gdwarf-4 $CFLAGS" - else - CFLAGS="-g $CFLAGS" - fi + CFLAGS="-g $CFLAGS" else - CPPFLAGS="-DNDEBUG $CPPFLAGS" - - if [ "$strip_bin" -ne 0 ]; then - LDFLAGS="-s $LDFLAGS" - fi fi # Set optimization CFLAGS. @@ -1700,6 +1689,11 @@ else apple="" fi +# We can't use the linker's strip flag on Mac OSX. +if [ "$debug" -eq 0 ] && [ "$apple" == "" ] && [ "$strip_bin" -ne 0 ]; then + LDFLAGS="-s $LDFLAGS" +fi + # Test OpenBSD. This is not in an if statement because regardless of whatever # the user says, we need to know if we are on OpenBSD to activate _BSD_SOURCE. # No, I cannot `#define _BSD_SOURCE` in a header because OpenBSD's patched GCC @@ -1872,6 +1866,8 @@ dc_tests=$(gen_std_test_targets dc) dc_script_tests=$(gen_script_test_targets dc) dc_err_tests=$(gen_err_test_targets dc) +printf 'unneeded: %s\n' "$unneeded" + # Print out the values; this is for debugging. printf 'Version: %s\n' "$version" diff --git a/contrib/bc/gen/lib2.bc b/contrib/bc/gen/lib2.bc index ba3f76b1803a..df51d0c07a8d 100644 --- a/contrib/bc/gen/lib2.bc +++ b/contrib/bc/gen/lib2.bc @@ -34,10 +34,34 @@ */ define p(x,y){ - auto a + auto a,i,s,z + if(y==0)return 1@scale + if(x==0){ + if(y>0)return 0 + return 1/0 + } a=y$ if(y==a)return(x^a)@scale - return e(y*l(x)) + z=0 + if(x<1){ + y=-y + a=-a + z=x + x=1/x + } + if(y<0){ + return e(y*l(x)) + } + i=x^a + s=scale + scale+=length(i)+5 + if(z){ + x=1/z + i=x^a + } + i*=e((y-a)*l(x)) + scale=s + return i@scale } define r(x,p){ auto t,n @@ -66,6 +90,14 @@ define f(n){ for(r=1;n>1;--n)r*=n return r } +define max(a,b){ + if(a>b)return a + return b +} +define min(a,b){ + if(an)return 0 @@ -242,6 +274,15 @@ define frand(p){ return irand(A^p)>>p } define ifrand(i,p){return irand(abs(i)$)+frand(p)} +define i2rand(a,b){ + auto n,x + a=a$ + b=b$ + if(a==b)return a + n=min(a,b) + x=max(a,b) + return irand(x-n+1)+n +} define srand(x){ if(irand(2))return -x return x diff --git a/contrib/bc/include/bc.h b/contrib/bc/include/bc.h index 73a85aa406a0..17fd0b9d171f 100644 --- a/contrib/bc/include/bc.h +++ b/contrib/bc/include/bc.h @@ -276,7 +276,7 @@ bc_lex_token(BcLex* l); * @return True if i is an expression token, false otherwise. */ #define BC_PARSE_EXPR(i) \ - (bc_parse_exprs[(((i) & (uchar) ~(0x07)) >> 3)] & (1 << (7 - ((i) &0x07)))) + (bc_parse_exprs[(((i) & (uchar) ~(0x07)) >> 3)] & (1 << (7 - ((i) & 0x07)))) /** * Returns the operator (by lex token) that is at the top of the operator diff --git a/contrib/bc/include/bcl.h b/contrib/bc/include/bcl.h index 0908e215182c..d3a9f42cdcf8 100644 --- a/contrib/bc/include/bcl.h +++ b/contrib/bc/include/bcl.h @@ -36,9 +36,6 @@ #ifndef BC_BCL_H #define BC_BCL_H -// TODO: Add a generation index when building with Valgrind to check for -// use-after-free's or double frees. - #include #include #include diff --git a/contrib/bc/include/history.h b/contrib/bc/include/history.h index 19c5a0fe27f7..64402c4dffa1 100644 --- a/contrib/bc/include/history.h +++ b/contrib/bc/include/history.h @@ -173,10 +173,6 @@ typedef struct BcHistory #include #include -#if BC_DEBUG_CODE -#include -#endif // BC_DEBUG_CODE - /// Default columns. #define BC_HIST_DEF_COLS (80) diff --git a/contrib/bc/include/num.h b/contrib/bc/include/num.h index d24c206cbe51..6c9dee107f2f 100644 --- a/contrib/bc/include/num.h +++ b/contrib/bc/include/num.h @@ -211,9 +211,9 @@ struct BcRNG; #define BC_NUM_KARATSUBA_ALLOCS (6) /** - * Rounds @a s (scale) up to the next power of BC_BASE_DIGS. This also check for - * overflow and gives a fatal error if that happens because we just can't go - * over the limits we have imposed. + * Rounds @a s (scale) up to the next power of BC_BASE_DIGS. This will also + * check for overflow and gives a fatal error if that happens because we just + * can't go over the limits we have imposed. * @param s The scale to round up. * @return @a s rounded up to the next power of BC_BASE_DIGS. */ diff --git a/contrib/bc/include/version.h b/contrib/bc/include/version.h index a4df383e284a..e2576269345d 100644 --- a/contrib/bc/include/version.h +++ b/contrib/bc/include/version.h @@ -37,6 +37,6 @@ #define BC_VERSION_H /// The current version. -#define VERSION 6.6.0 +#define VERSION 6.7.5 #endif // BC_VERSION_H diff --git a/contrib/bc/manuals/algorithms.md b/contrib/bc/manuals/algorithms.md index 4d7a0edc54c4..ce27bf026b69 100644 --- a/contrib/bc/manuals/algorithms.md +++ b/contrib/bc/manuals/algorithms.md @@ -193,6 +193,74 @@ The algorithm used is to use the formula `e(y*l(x))`. It has a complexity of `O(n^3)` because both `e()` and `l()` do. +However, there are details to this algorithm, described by the author, +TediusTimmy, in GitHub issue [#69][12]. + +First, check if the exponent is 0. If it is, return 1 at the appropriate +`scale`. + +Next, check if the number is 0. If so, check if the exponent is greater than +zero; if it is, return 0. If the exponent is less than 0, error (with a divide +by 0) because that is undefined. + +Next, check if the exponent is actually an integer, and if it is, use the +exponentiation operator. + +At the `z=0` line is the start of the meat of the new code. + +`z` is set to zero as a flag and as a value. What I mean by that will be clear +later. + +Then we check if the number is less than 0. If it is, we negate the exponent +(and the integer version of the exponent, which we calculated earlier to check +if it was an integer). We also save the number in `z`; being non-zero is a flag +for later and a value to be used. Then we store the reciprocal of the number in +itself. + +All of the above paragraph will not make sense unless you remember the +relationship `l(x) == -l(1/x)`; we negated the exponent, which is equivalent to +the negative sign in that relationship, and we took the reciprocal of the +number, which is equivalent to the reciprocal in the relationship. + +But what if the number is negative? We ignore that for now because we eventually +call `l(x)`, which will raise an error if `x` is negative. + +Now, we can keep going. + +If at this point, the exponent is negative, we need to use the original formula +(`e(y * l(x))`) and return that result because the result will go to zero +anyway. + +But if we did *not* return, we know the exponent is *not* negative, so we can +get clever. + +We then compute the integral portion of the power by computing the number to +power of the integral portion of the exponent. + +Then we have the most clever trick: we add the length of that integer power (and +a little extra) to the `scale`. Why? Because this will ensure that the next part +is calculated to at least as many digits as should be in the integer *plus* any +extra `scale` that was wanted. + +Then we check `z`, which, if it is not zero, is the original value of the +number. If it is not zero, we need to take the take the reciprocal *again* +because now we have the correct `scale`. And we *also* have to calculate the +integer portion of the power again. + +Then we need to calculate the fractional portion of the number. We do this by +using the original formula, but we instead of calculating `e(y * l(x))`, we +calculate `e((y - a) * l(x))`, where `a` is the integer portion of `y`. It's +easy to see that `y - a` will be just the fractional portion of `y` (the +exponent), so this makes sense. + +But then we *multiply* it into the integer portion of the power. Why? Because +remember: we're dealing with an exponent and a power; the relationship is +`x^(y+z) == (x^y)*(x^z)`. + +So we multiply it into the integer portion of the power. + +Finally, we set the result to the `scale`. + ### Rounding (`bc` Math Library 2 Only) This is implemented in the function `r(x,p)`. @@ -327,3 +395,4 @@ It has a complexity of `O(n^3)` because of arctangent. [9]: https://en.wikipedia.org/wiki/Root-finding_algorithms#Newton's_method_(and_similar_derivative-based_methods) [10]: https://en.wikipedia.org/wiki/Euclidean_algorithm [11]: https://en.wikipedia.org/wiki/Atan2#Definition_and_computation +[12]: https://github.com/gavinhoward/bc/issues/69 diff --git a/contrib/bc/manuals/bc/A.1 b/contrib/bc/manuals/bc/A.1 index 5de2d3529bcf..1810beaf9291 100644 --- a/contrib/bc/manuals/bc/A.1 +++ b/contrib/bc/manuals/bc/A.1 @@ -25,14 +25,12 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.TH "BC" "1" "February 2023" "Gavin D. Howard" "General Commands Manual" +.TH "BC" "1" "November 2023" "Gavin D. Howard" "General Commands Manual" .nh .ad l .SH NAME -.PP bc - arbitrary-precision decimal arithmetic language and calculator .SH SYNOPSIS -.PP \f[B]bc\f[R] [\f[B]-cCghilPqRsvVw\f[R]] [\f[B]--digit-clamp\f[R]] [\f[B]--no-digit-clamp\f[R]] [\f[B]--global-stacks\f[R]] [\f[B]--help\f[R]] [\f[B]--interactive\f[R]] [\f[B]--mathlib\f[R]] @@ -48,7 +46,6 @@ bc - arbitrary-precision decimal arithmetic language and calculator [\f[B]-S\f[R] \f[I]scale\f[R]] [\f[B]--scale\f[R]=\f[I]scale\f[R]] [\f[B]-E\f[R] \f[I]seed\f[R]] [\f[B]--seed\f[R]=\f[I]seed\f[R]] .SH DESCRIPTION -.PP bc(1) is an interactive processor for a language first standardized in 1991 by POSIX. (See the \f[B]STANDARDS\f[R] section.) @@ -77,7 +74,6 @@ If parsing scripts meant for other bc(1) implementations still does not work, that is a bug and should be reported. See the \f[B]BUGS\f[R] section. .SH OPTIONS -.PP The following are the options that bc(1) accepts. .TP \f[B]-C\f[R], \f[B]--no-digit-clamp\f[R] @@ -189,19 +185,16 @@ without worrying that the change will affect other functions. Thus, a hypothetical function named \f[B]output(x,b)\f[R] that simply printed \f[B]x\f[R] in base \f[B]b\f[R] could be written like this: .IP -.nf -\f[C] +.EX define void output(x, b) { obase=b x } -\f[R] -.fi +.EE .PP instead of like this: .IP -.nf -\f[C] +.EX define void output(x, b) { auto c c=obase @@ -209,8 +202,7 @@ define void output(x, b) { x obase=c } -\f[R] -.fi +.EE .PP This makes writing functions much easier. .PP @@ -228,12 +220,10 @@ converter, it is possible to replace that capability with various shell aliases. Examples: .IP -.nf -\f[C] +.EX alias d2o=\[dq]bc -e ibase=A -e obase=8\[dq] alias h2b=\[dq]bc -e ibase=G -e obase=2\[dq] -\f[R] -.fi +.EE .PP Second, if the purpose of a function is to set \f[B]ibase\f[R], \f[B]obase\f[R], \f[B]scale\f[R], or \f[B]seed\f[R] globally for any @@ -251,11 +241,9 @@ If a function desires to not affect the sequence of pseudo-random numbers of its parents, but wants to use the same \f[B]seed\f[R], it can use the following line: .IP -.nf -\f[C] +.EX seed = seed -\f[R] -.fi +.EE .PP If the behavior of this option is desired for every run of bc(1), then users could make sure to define \f[B]BC_ENV_ARGS\f[R] and include this @@ -485,7 +473,6 @@ This is a \f[B]non-portable extension\f[R]. .PP All long options are \f[B]non-portable extensions\f[R]. .SH STDIN -.PP If no files or expressions are given by the \f[B]-f\f[R], \f[B]--file\f[R], \f[B]-e\f[R], or \f[B]--expression\f[R] options, then bc(1) reads from \f[B]stdin\f[R]. @@ -502,7 +489,6 @@ Second, after an \f[B]if\f[R] statement, bc(1) doesn\[cq]t know if an \f[B]else\f[R] statement will follow, so it will not execute until it knows there will not be an \f[B]else\f[R] statement. .SH STDOUT -.PP Any non-error output is written to \f[B]stdout\f[R]. In addition, if history (see the \f[B]HISTORY\f[R] section) and the prompt (see the \f[B]TTY MODE\f[R] section) are enabled, both are output @@ -511,7 +497,7 @@ to \f[B]stdout\f[R]. \f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot write to \f[B]stdout\f[R], so if \f[B]stdout\f[R] is closed, as in -\f[B]bc >&-\f[R], it will quit with an error. +\f[B]bc >&-\f[R], it will quit with an error. This is done so that bc(1) can report problems when \f[B]stdout\f[R] is redirected to a file. .PP @@ -519,13 +505,12 @@ If there are scripts that depend on the behavior of other bc(1) implementations, it is recommended that those scripts be changed to redirect \f[B]stdout\f[R] to \f[B]/dev/null\f[R]. .SH STDERR -.PP Any error output is written to \f[B]stderr\f[R]. .PP \f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot write to \f[B]stderr\f[R], so if \f[B]stderr\f[R] is closed, as in -\f[B]bc 2>&-\f[R], it will quit with an error. +\f[B]bc 2>&-\f[R], it will quit with an error. This is done so that bc(1) can exit with an error code when \f[B]stderr\f[R] is redirected to a file. .PP @@ -533,7 +518,6 @@ If there are scripts that depend on the behavior of other bc(1) implementations, it is recommended that those scripts be changed to redirect \f[B]stderr\f[R] to \f[B]/dev/null\f[R]. .SH SYNTAX -.PP The syntax for bc(1) programs is mostly C-like, with some differences. This bc(1) follows the POSIX standard (see the \f[B]STANDARDS\f[R] section), which is a much more thorough resource for the language this @@ -618,7 +602,6 @@ These are \f[B]non-portable extensions\f[R]. .PP Either semicolons or newlines may separate statements. .SS Comments -.PP There are two kinds of comments: .IP "1." 3 Block comments are enclosed in \f[B]/*\f[R] and \f[B]*/\f[R]. @@ -627,7 +610,6 @@ Line comments go from \f[B]#\f[R] until, and not including, the next newline. This is a \f[B]non-portable extension\f[R]. .SS Named Expressions -.PP The following are named expressions in bc(1): .IP "1." 3 Variables: \f[B]I\f[R] @@ -684,7 +666,6 @@ Named expressions are required as the operand of of \f[B]assignment\f[R] operators (see the \f[I]Operators\f[R] subsection). .SS Operands -.PP The following are valid operands in bc(1): .IP " 1." 4 Numbers (see the \f[I]Numbers\f[R] subsection below). @@ -829,7 +810,6 @@ where a reproducible stream of pseudo-random numbers is \f[I]ESSENTIAL\f[R]. In any other case, use a non-seeded pseudo-random number generator. .SS Numbers -.PP Numbers are strings made up of digits, uppercase letters, and at most \f[B]1\f[R] period for a radix. Numbers can have up to \f[B]BC_NUM_MAX\f[R] digits. @@ -901,7 +881,6 @@ number string \f[B]FFeA\f[R], the resulting decimal number will be Accepting input as scientific notation is a \f[B]non-portable extension\f[R]. .SS Operators -.PP The following arithmetic and logical operators can be used. They are listed in order of decreasing precedence. Operators in the same group have the same precedence. @@ -1018,9 +997,9 @@ The operators will be described in more detail below. .TP \f[B]++\f[R] \f[B]--\f[R] The prefix and postfix \f[B]increment\f[R] and \f[B]decrement\f[R] -operators behave exactly like they would in C. -They require a named expression (see the \f[I]Named Expressions\f[R] -subsection) as an operand. +operators behave exactly like they would in C. They require a named +expression (see the \f[I]Named Expressions\f[R] subsection) as an +operand. .RS .PP The prefix versions of these operators are more efficient; use them @@ -1192,7 +1171,6 @@ This is \f[I]not\f[R] a short-circuit operator. This is a \f[B]non-portable extension\f[R]. .RE .SS Statements -.PP The following items are statements: .IP " 1." 4 \f[B]E\f[R] @@ -1270,11 +1248,9 @@ occur before the \f[B]quit\f[R] statement before exiting. .PP In other words, for the bc(1) code below: .IP -.nf -\f[C] +.EX for (i = 0; i < 3; ++i) i; quit -\f[R] -.fi +.EE .PP Other bc(1) implementations will print nothing, and this bc(1) will print \f[B]0\f[R], \f[B]1\f[R], and \f[B]2\f[R] on successive lines @@ -1305,7 +1281,6 @@ run with either the \f[B]-s\f[R] or \f[B]-w\f[R] command-line options Printing numbers in scientific notation and/or engineering notation is a \f[B]non-portable extension\f[R]. .SS Strings -.PP If strings appear as a statement by themselves, they are printed without a trailing newline. .PP @@ -1324,7 +1299,6 @@ resets (see the \f[B]RESET\f[R] section). Assigning strings to variables and array elements and passing them to functions are \f[B]non-portable extensions\f[R]. .SS Print Statement -.PP The \[lq]expressions\[rq] in a \f[B]print\f[R] statement may also be strings. If they are, there are backslash escape sequences that are interpreted @@ -1356,9 +1330,7 @@ character to be printed as-is. Any non-string expression in a print statement shall be assigned to \f[B]last\f[R], like any other expression that is printed. .SS Stream Statement -.PP -The \[lq]expressions in a \f[B]stream\f[R] statement may also be -strings. +The expressions in a \f[B]stream\f[R] statement may also be strings. .PP If a \f[B]stream\f[R] statement is given a string, it prints the string as though the string had appeared as its own statement. @@ -1371,17 +1343,14 @@ The result is then printed as though \f[B]obase\f[R] is \f[B]256\f[R] and each digit is interpreted as an 8-bit ASCII character, making it a byte stream. .SS Order of Evaluation -.PP All expressions in a statment are evaluated left to right, except as necessary to maintain order of operations. This means, for example, assuming that \f[B]i\f[R] is equal to \f[B]0\f[R], in the expression .IP -.nf -\f[C] +.EX a[i++] = i++ -\f[R] -.fi +.EE .PP the first (or 0th) element of \f[B]a\f[R] is set to \f[B]1\f[R], and \f[B]i\f[R] is equal to \f[B]2\f[R] at the end of the expression. @@ -1390,28 +1359,23 @@ This includes function arguments. Thus, assuming \f[B]i\f[R] is equal to \f[B]0\f[R], this means that in the expression .IP -.nf -\f[C] +.EX x(i++, i++) -\f[R] -.fi +.EE .PP the first argument passed to \f[B]x()\f[R] is \f[B]0\f[R], and the second argument is \f[B]1\f[R], while \f[B]i\f[R] is equal to \f[B]2\f[R] before the function starts executing. .SH FUNCTIONS -.PP Function definitions are as follows: .IP -.nf -\f[C] +.EX define I(I,...,I){ auto I,...,I S;...;S return(E) } -\f[R] -.fi +.EE .PP Any \f[B]I\f[R] in the parameter list or \f[B]auto\f[R] list may be replaced with \f[B]I[]\f[R] to make a parameter or \f[B]auto\f[R] var an @@ -1439,18 +1403,15 @@ equivalent to \f[B]return (0)\f[R], unless the function is a \f[B]void\f[R] function (see the \f[I]Void Functions\f[R] subsection below). .SS Void Functions -.PP Functions can also be \f[B]void\f[R] functions, defined as follows: .IP -.nf -\f[C] +.EX define void I(I,...,I){ auto I,...,I S;...;S return } -\f[R] -.fi +.EE .PP They can only be used as standalone expressions, where such an expression would be printed alone, except in a print statement. @@ -1466,15 +1427,12 @@ The word \[lq]void\[rq] is only treated specially right after the .PP This is a \f[B]non-portable extension\f[R]. .SS Array References -.PP For any array in the parameter list, if the array is declared in the form .IP -.nf -\f[C] +.EX *I[] -\f[R] -.fi +.EE .PP it is a \f[B]reference\f[R]. Any changes to the array in the function are reflected, when the @@ -1484,7 +1442,6 @@ Other than this, all function arguments are passed by value. .PP This is a \f[B]non-portable extension\f[R]. .SH LIBRARY -.PP All of the functions below, including the functions in the extended math library (see the \f[I]Extended Library\f[R] subsection below), are available when the \f[B]-l\f[R] or \f[B]--mathlib\f[R] command-line @@ -1492,7 +1449,6 @@ flags are given, except that the extended math library is not available when the \f[B]-s\f[R] option, the \f[B]-w\f[R] option, or equivalents are given. .SS Standard Library -.PP The standard (see the \f[B]STANDARDS\f[R] section) defines the following functions for the math library: .TP @@ -1545,7 +1501,6 @@ This is a transcendental function (see the \f[I]Transcendental Functions\f[R] subsection below). .RE .SS Extended Library -.PP The extended library is \f[I]not\f[R] loaded when the \f[B]-s\f[R]/\f[B]--standard\f[R] or \f[B]-w\f[R]/\f[B]--warn\f[R] options are given since they are not part of the library defined by the @@ -1579,6 +1534,14 @@ the rounding mode round away from \f[B]0\f[R] \f[B]f(x)\f[R] Returns the factorial of the truncated absolute value of \f[B]x\f[R]. .TP +\f[B]max(a, b)\f[R] +Returns \f[B]a\f[R] if \f[B]a\f[R] is greater than \f[B]b\f[R]; +otherwise, returns \f[B]b\f[R]. +.TP +\f[B]min(a, b)\f[R] +Returns \f[B]a\f[R] if \f[B]a\f[R] is less than \f[B]b\f[R]; otherwise, +returns \f[B]b\f[R]. +.TP \f[B]perm(n, k)\f[R] Returns the permutation of the truncated absolute value of \f[B]n\f[R] of the truncated absolute value of \f[B]k\f[R], if \f[B]k <= n\f[R]. @@ -1589,6 +1552,10 @@ Returns the combination of the truncated absolute value of \f[B]n\f[R] of the truncated absolute value of \f[B]k\f[R], if \f[B]k <= n\f[R]. If not, it returns \f[B]0\f[R]. .TP +\f[B]fib(n)\f[R] +Returns the Fibonacci number of the truncated absolute value of +\f[B]n\f[R]. +.TP \f[B]l2(x)\f[R] Returns the logarithm base \f[B]2\f[R] of \f[B]x\f[R]. .RS @@ -1759,7 +1726,7 @@ Functions\f[R] subsection below). .RE .TP \f[B]frand(p)\f[R] -Generates a pseudo-random number between \f[B]0\f[R] (inclusive) and +Generates a pseudo-random integer between \f[B]0\f[R] (inclusive) and \f[B]1\f[R] (exclusive) with the number of decimal digits after the decimal point equal to the truncated absolute value of \f[B]p\f[R]. If \f[B]p\f[R] is not \f[B]0\f[R], then calling this function will @@ -1768,14 +1735,22 @@ If \f[B]p\f[R] is \f[B]0\f[R], then \f[B]0\f[R] is returned, and \f[B]seed\f[R] is \f[I]not\f[R] changed. .TP \f[B]ifrand(i, p)\f[R] -Generates a pseudo-random number that is between \f[B]0\f[R] (inclusive) -and the truncated absolute value of \f[B]i\f[R] (exclusive) with the -number of decimal digits after the decimal point equal to the truncated -absolute value of \f[B]p\f[R]. +Generates a pseudo-random integer that is between \f[B]0\f[R] +(inclusive) and the truncated absolute value of \f[B]i\f[R] (exclusive) +with the number of decimal digits after the decimal point equal to the +truncated absolute value of \f[B]p\f[R]. If the absolute value of \f[B]i\f[R] is greater than or equal to \f[B]2\f[R], and \f[B]p\f[R] is not \f[B]0\f[R], then calling this function will change the value of \f[B]seed\f[R]; otherwise, \f[B]0\f[R] -is returned and \f[B]seed\f[R] is not changed. +is returned, and \f[B]seed\f[R] is not changed. +.TP +\f[B]i2rand(a, b)\f[R] +Takes the truncated value of \f[B]a\f[R] and \f[B]b\f[R] and uses them +as inclusive bounds to enerate a pseudo-random integer. +If the difference of the truncated values of \f[B]a\f[R] and \f[B]b\f[R] +is \f[B]0\f[R], then the truncated value is returned, and \f[B]seed\f[R] +is \f[I]not\f[R] changed. +Otherwise, this function will change the value of \f[B]seed\f[R]. .TP \f[B]srand(x)\f[R] Returns \f[B]x\f[R] with its sign flipped with probability @@ -1847,7 +1822,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]bnot8(x)\f[R] Does a bitwise not of the truncated absolute value of \f[B]x\f[R] as -though it has \f[B]8\f[R] binary digits (1 unsigned byte). +though it has \f[B]8\f[R] binary digits (\f[B]1\f[R] unsigned byte). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1856,7 +1831,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]bnot16(x)\f[R] Does a bitwise not of the truncated absolute value of \f[B]x\f[R] as -though it has \f[B]16\f[R] binary digits (2 unsigned bytes). +though it has \f[B]16\f[R] binary digits (\f[B]2\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1865,7 +1840,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]bnot32(x)\f[R] Does a bitwise not of the truncated absolute value of \f[B]x\f[R] as -though it has \f[B]32\f[R] binary digits (4 unsigned bytes). +though it has \f[B]32\f[R] binary digits (\f[B]4\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1874,7 +1849,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]bnot64(x)\f[R] Does a bitwise not of the truncated absolute value of \f[B]x\f[R] as -though it has \f[B]64\f[R] binary digits (8 unsigned bytes). +though it has \f[B]64\f[R] binary digits (\f[B]8\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1902,7 +1877,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brev8(x)\f[R] Runs a bit reversal on the truncated absolute value of \f[B]x\f[R] as -though it has 8 binary digits (1 unsigned byte). +though it has 8 binary digits (\f[B]1\f[R] unsigned byte). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1911,7 +1886,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brev16(x)\f[R] Runs a bit reversal on the truncated absolute value of \f[B]x\f[R] as -though it has 16 binary digits (2 unsigned bytes). +though it has 16 binary digits (\f[B]2\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1920,7 +1895,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brev32(x)\f[R] Runs a bit reversal on the truncated absolute value of \f[B]x\f[R] as -though it has 32 binary digits (4 unsigned bytes). +though it has 32 binary digits (\f[B]4\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1929,7 +1904,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brev64(x)\f[R] Runs a bit reversal on the truncated absolute value of \f[B]x\f[R] as -though it has 64 binary digits (8 unsigned bytes). +though it has 64 binary digits (\f[B]8\f[R] unsigned bytes). .RS .PP If you want to a use signed two\[cq]s complement argument, use @@ -1982,7 +1957,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brol32(x, p)\f[R] Does a left bitwise rotatation of the truncated absolute value of -\f[B]x\f[R], as though it has \f[B]32\f[R] binary digits (\f[B]2\f[R] +\f[B]x\f[R], as though it has \f[B]32\f[R] binary digits (\f[B]4\f[R] unsigned bytes), by the number of places equal to the truncated absolute value of \f[B]p\f[R] modded by \f[B]2\f[R] to the power of \f[B]32\f[R]. .RS @@ -1993,7 +1968,7 @@ If you want to a use signed two\[cq]s complement argument, use .TP \f[B]brol64(x, p)\f[R] Does a left bitwise rotatation of the truncated absolute value of -\f[B]x\f[R], as though it has \f[B]64\f[R] binary digits (\f[B]2\f[R] +\f[B]x\f[R], as though it has \f[B]64\f[R] binary digits (\f[B]8\f[R] unsigned bytes), by the number of places equal to the truncated absolute value of \f[B]p\f[R] modded by \f[B]2\f[R] to the power of \f[B]64\f[R]. .RS *** 9633 LINES SKIPPED *** From nobody Thu Jan 18 20:15:03 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGDWD2QKhz56sym; Thu, 18 Jan 2024 20:15:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGDWD1bwWz4XS5; Thu, 18 Jan 2024 20:15:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608904; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GRMU3eFserNETZtbhgUNFGAjSmMIpC2paL9TAcq/l5c=; b=eMU/mvS2m9RRNEcy3PYCiV4nWbs7yQSKe3YZ+1qYoaH3PTkFTskvU6gWDEI0KlVjJUJavH K9OTStl8ytGCuLqf79yKSMOJQF+rFzwKbazT+Xe48JxDyYGcv39LMrJmGqt5flyXulpvyB LHKD9m4XZFaaufqusjLME8+T3Ed4n/0V7d0bHJ7oweCDxj3eC7ktKhDkiLjVbOJ2XFw29n 3jeMm1t8Iy3yh8suX4C69r1i5xPl0W/E0VsTKAY3SBmwmWx3INzJD+Qa4t5ZWB1NGNyRT0 XI8Zjojdo2xF1ELsbXXvJdPmQw7IVU//tr6OVycZq/T/HLrArdJLP0eJI66G7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608904; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GRMU3eFserNETZtbhgUNFGAjSmMIpC2paL9TAcq/l5c=; b=pp2FnfwqagMIPo1HM/ZxSsSbbBa/fEWTPFddMAdDnoblXTwhDz+wBUCb+eqTBcvHRgXEQZ XTXAFk8XOf4ayeTDO1SH4wWMg92lUTiG6si4gnVipeUOk2tETsKzciWu3ZVum8zJx0A0PT grObXUk3/1UJXx/7100zGXvUpwxdIZ1cqUtZbOmJ4OhoAtRX/4e51vA2Ar7nu5NSkNicTR R+2X8FUt+6wZXaNTUiUeG5tizsvu49FQ5AbLzl1d6mAHVJ2vq0kZnV68USNGB624jcjA6W TQNIRgONFM5ER9cmee9ZKPftcnS+cMzOBC7MJNe3n/vcdfE+ngZ4r5tPnGvpUg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705608904; a=rsa-sha256; cv=none; b=U3jXD0ZeW4ZVvV9+c702KvVfTnSqS/Kr7aCINuepi7Hq6iLNEwCZExaPeiptoLlxS3NBz5 w/01ozR4d6M6oELcDqC+FlDI5VHIhFMbpIaV0KIMylUr2sPzjO9sVT5ZFYomzoDUzYjzx4 NeTlZy+Yn7jTl0INS9SLE3QCgNEmUNcs8Jx0lfua+rxIPFtNeO2kr5wsT0DtuleqhE+185 jIrJ++6LCqqkxybSoGUFXfLRB+m98PMEIlSdjCT74R7JXKzcocNxuZAWB6y/kinfjA4gIN +CSf6jqOHjpaqBek6Pv33BPhHwInub9qaXUSiLEyFbQuVw5BKQhdkbvv7R51wA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGDWD0fjdzLN8; Thu, 18 Jan 2024 20:15:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IKF3Np067928; Thu, 18 Jan 2024 20:15:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IKF3oU067925; Thu, 18 Jan 2024 20:15:03 GMT (envelope-from git) Date: Thu, 18 Jan 2024 20:15:03 GMT Message-Id: <202401182015.40IKF3oU067925@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marius Strobl Subject: git: c4e6ee658b94 - stable/14 - e1000(4): Remove disconnected SYSCTL List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c4e6ee658b9444d5fc56b768a6a254c9c9b66aa6 Auto-Submitted: auto-generated The branch stable/14 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=c4e6ee658b9444d5fc56b768a6a254c9c9b66aa6 commit c4e6ee658b9444d5fc56b768a6a254c9c9b66aa6 Author: Marius Strobl AuthorDate: 2024-01-09 21:41:49 +0000 Commit: Marius Strobl CommitDate: 2024-01-18 20:14:46 +0000 e1000(4): Remove disconnected SYSCTL The global hw.em.rx_process_limit knob has been replaced by the device- specific dev.IF.N.iflib.rx_budget along with the conversion to iflib(4). While at it, remove the - besides initialization of tx_process_limit - unused {r,t}x_process_limit members. (cherry picked from commit 0d6d28ce5650d1cd23dbe4bbac87fb103b3e2d3d) --- sys/dev/e1000/if_em.c | 11 ----------- sys/dev/e1000/if_em.h | 2 -- 2 files changed, 13 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 8488f72c4cde..690d6dfa3218 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -542,13 +542,6 @@ static int em_debug_sbp = false; SYSCTL_INT(_hw_em, OID_AUTO, sbp, CTLFLAG_RDTUN, &em_debug_sbp, 0, "Show bad packets in promiscuous mode"); -/* How many packets rxeof tries to clean at a time */ -static int em_rx_process_limit = 100; -SYSCTL_INT(_hw_em, OID_AUTO, rx_process_limit, CTLFLAG_RDTUN, - &em_rx_process_limit, 0, - "Maximum number of received packets to process " - "at a time, -1 means unlimited"); - /* Energy efficient ethernet - default to OFF */ static int eee_setting = 1; SYSCTL_INT(_hw_em, OID_AUTO, eee_setting, CTLFLAG_RDTUN, &eee_setting, 0, @@ -561,8 +554,6 @@ static int em_max_interrupt_rate = 8000; SYSCTL_INT(_hw_em, OID_AUTO, max_interrupt_rate, CTLFLAG_RDTUN, &em_max_interrupt_rate, 0, "Maximum interrupts per second"); - - /* Global used in WOL setup with multiport cards */ static int global_quad_port_a = 0; @@ -832,8 +823,6 @@ em_if_attach_pre(if_ctx_t ctx) sc->media = iflib_get_media(ctx); hw = &sc->hw; - sc->tx_process_limit = scctx->isc_ntxd[0]; - /* Determine hardware and mac info */ em_identify_hardware(ctx); diff --git a/sys/dev/e1000/if_em.h b/sys/dev/e1000/if_em.h index ebf0be7426a0..244762e8ed0d 100644 --- a/sys/dev/e1000/if_em.h +++ b/sys/dev/e1000/if_em.h @@ -480,8 +480,6 @@ struct e1000_softc { u16 num_vlans; u32 txd_cmd; - u32 tx_process_limit; - u32 rx_process_limit; u32 rx_mbuf_sz; /* Management and WOL features */ From nobody Thu Jan 18 20:15:05 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGDWF3RvZz56st4; Thu, 18 Jan 2024 20:15:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGDWF2scMz4XXp; Thu, 18 Jan 2024 20:15:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QCqVwGOWkrG7hoO3GFa9aOktd+bEvv6/VL5hgoZw0js=; b=hN7kP0IdBiPjreBvb1WmnBBZVrDwDPiZ7oFZjPmAhEgV5rMx9WLy2YiIzmEnJAZFkVkwwl yGcCmha56pfhQbf5H6euMog1RiBN60B9CEiBgnQ0HEsOdCpgJ8TX1c6jPVlSqghfK+G6B5 G0kRPqfZenyIQDEE1JliYqmne9Q93IN/eXaFMdS7L+1pMT6v0txy2Hh3qx24esCMrPne9S defREzQYIV7E7SOIO8m5sO394wmMAogldRL594AGl2xBDCVYFknZoX9FPs+rN+Qtfn4cF2 c1YORGq9VeNAL2VdMxNCgvesFzZ45tKsQPnm2CyeDDhrnedg3LnG0MSsbDXoTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QCqVwGOWkrG7hoO3GFa9aOktd+bEvv6/VL5hgoZw0js=; b=mhlr9X4zgQP/EQul+YNvbocLUBUuNiUteSLfE3ha8blMgHi8Hkz87O/gNLeKC8gB+WqEtF dSOFw+KGWoW/846/1pfq13NEuoMWJ2BaQWXVHNuCNu5+yqt8yq1Rk4G6QKTbjzbwhjRIWq OJGlapQ98lPI8tIlSqcvgkH1w0qX903NUvMFdlSIfRh1oyVFDWYuBzwDviSnOVfCBTSdni 3pizTP6Wbh2W7i4GvFtWBZl3X0A8CsCU13saxeTjTterdm2O+ui56AiusMaRm+ZKYMDLGK MW0oWE/Mc/mvDWrz501xDgd+PHDboaYDZOoMBZ59p9zMHjJiVn1VRoB9Y+KYKw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705608905; a=rsa-sha256; cv=none; b=qGnWKaafzi+8Yc4+w1OVYN2Cj1lSdwPpDNjL4Ajukz9stcyO57kBN4CZi4XO/v7jGKZeFb cs4qVlOZIGuy7IvgO4FBwRzdJ3VAQFnTz+O05+43gzBYcHwbBFwD28SKW+ObEthCx6yvJk 9Jqgy8XmwUMytg+v4D84MJ4uIyxZahl+D2kphUYrx2lhUINgUES1F37C/1wBQMU8Aq2+zT od14PtPq39xRz71GiRZDh3woXO7ykih8yQdMSZbVjJQ0Agi2Ka/fVkPUw8CklT18JEL3Tu vZfWqmXfLSKXfHStGilHe8aMRjM0nfd7cLIZ/PFWwGFpxFcMZH1vJKhv2b6bsw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGDWF1frmzLwl; Thu, 18 Jan 2024 20:15:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IKF5cJ067970; Thu, 18 Jan 2024 20:15:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IKF52r067967; Thu, 18 Jan 2024 20:15:05 GMT (envelope-from git) Date: Thu, 18 Jan 2024 20:15:05 GMT Message-Id: <202401182015.40IKF52r067967@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marius Strobl Subject: git: 6d150c4c3f02 - stable/14 - igb(4): Remove disconnected SYSCTL List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6d150c4c3f0258b7d0fbaf0375b328b6ae84a169 Auto-Submitted: auto-generated The branch stable/14 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=6d150c4c3f0258b7d0fbaf0375b328b6ae84a169 commit 6d150c4c3f0258b7d0fbaf0375b328b6ae84a169 Author: Marius Strobl AuthorDate: 2024-01-09 22:01:46 +0000 Commit: Marius Strobl CommitDate: 2024-01-18 20:14:46 +0000 igb(4): Remove disconnected SYSCTL The global hw.igb.rx_process_limit knob never was adhered to by the in-tree version of this driver but similar functionality is available via the device-specific dev.igb.N.iflib.rx_budget. While at it, remove the - besides initialization of tx_process_limit - unused {r,t}x_process_limit members. (cherry picked from commit f221d35be7a5749e2a1246c81adc9c03c1dc545c) --- share/man/man4/igc.4 | 6 +----- sys/dev/igc/if_igc.c | 9 --------- sys/dev/igc/if_igc.h | 2 -- 3 files changed, 1 insertion(+), 16 deletions(-) diff --git a/share/man/man4/igc.4 b/share/man/man4/igc.4 index f77581edd00b..cf36e584a679 100644 --- a/share/man/man4/igc.4 +++ b/share/man/man4/igc.4 @@ -3,7 +3,7 @@ .\" Copyright 2021 Rubicon Communications, LLC (Netgate) .\" SPDX-License-Identifier: BSD-3-Clause .\" -.Dd May 10, 2021 +.Dd January 9, 2023 .Dt IGC 4 .Os .Sh NAME @@ -118,10 +118,6 @@ maximum delay in which a transmit interrupt is generated. .It Va hw.igc.sbp Show bad packets when in promiscuous mode. Default is false. -.It Va hw.igc.rx_process_limit -Maximum number of received packets to process at a time. -Default is 100. -A value of -1 means unlimited. .It Va hw.igc.eee_setting Disable or enable Energy Efficient Ethernet. Default 1 (disabled). diff --git a/sys/dev/igc/if_igc.c b/sys/dev/igc/if_igc.c index a0f0906e30da..bfa33c82f7ba 100644 --- a/sys/dev/igc/if_igc.c +++ b/sys/dev/igc/if_igc.c @@ -254,13 +254,6 @@ static int igc_debug_sbp = true; SYSCTL_INT(_hw_igc, OID_AUTO, sbp, CTLFLAG_RDTUN, &igc_debug_sbp, 0, "Show bad packets in promiscuous mode"); -/* How many packets rxeof tries to clean at a time */ -static int igc_rx_process_limit = 100; -SYSCTL_INT(_hw_igc, OID_AUTO, rx_process_limit, CTLFLAG_RDTUN, - &igc_rx_process_limit, 0, - "Maximum number of received packets to process " - "at a time, -1 means unlimited"); - /* Energy efficient ethernet - default to OFF */ static int igc_eee_setting = 1; SYSCTL_INT(_hw_igc, OID_AUTO, eee_setting, CTLFLAG_RDTUN, &igc_eee_setting, 0, @@ -466,8 +459,6 @@ igc_if_attach_pre(if_ctx_t ctx) adapter->media = iflib_get_media(ctx); hw = &adapter->hw; - adapter->tx_process_limit = scctx->isc_ntxd[0]; - /* SYSCTL stuff */ SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), diff --git a/sys/dev/igc/if_igc.h b/sys/dev/igc/if_igc.h index 7a30f5956016..0c22ce9f76f4 100644 --- a/sys/dev/igc/if_igc.h +++ b/sys/dev/igc/if_igc.h @@ -372,8 +372,6 @@ struct igc_adapter { u32 txd_cmd; - u32 tx_process_limit; - u32 rx_process_limit; u32 rx_mbuf_sz; /* Management and WOL features */ From nobody Thu Jan 18 20:15:06 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGDWG4Y0Dz56sts; Thu, 18 Jan 2024 20:15:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGDWG3dXqz4XY0; Thu, 18 Jan 2024 20:15:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608906; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R3Nosa5AC+9sJg17uaYxhziDGYQT07VNq5ORPXuuAXY=; b=V9b0j+p/uJbE9J2cMoO1ENrE1PLD6shc2lCrxQdk23ZdePTYNk3Z6+6B+HXjlUSzN3JMgb 9vwXfeHLTFOTNjxv6A4jFyyV1K3NJs8efJk0O58Lh5o547QWFYOXsulgA8BBQLXqO4ZNTU A6qackhQyFGmXfgS//b1V2gVSAD9FfRAOCQE7QhYAsiH8Aw4PEv2KAZ7PmZyS6UM94MB1c gfYD/rt/8MXwwDzwck9LceLWlFr8Il9VzVurLKD8px5NJIhdAilXqGi1xBkgFzvS78O2gN YvBAaK5gVwhP8OAydg/nQKIfzwVnOa6T4mtHaDVqEGKpXhfzbcVhFMgHb0Suyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608906; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R3Nosa5AC+9sJg17uaYxhziDGYQT07VNq5ORPXuuAXY=; b=fT+l0TaWbNpWV3wTngULvouCnauFZAPvL3uadRq7TzI5QWVplHLK6yniMurk58o0k233WK q5BW6ZCEm4Vm/mj0S41LgG2mpPz1m/DQtuFQMfbPN7cbSGBqGz7sSJCerz39WN9bwkgLx5 yAjHYXZYJJdeJhhtx/IlBGZ8LeZRDZEHX8ZGj7QAsqrlfGYxHFuI160FzSEdHBzCWVjlEi AGhXvgF8lckK2gKhFZ74CbKXfpoyesgFDTp+0eVGj5GpBN19BLcyy8w3iUzxNcssIyVMmo zyE5JnO4yOFqqYXUajfTpGw1iFD10E700LKSARecJbWYMaXxiZaMgytLlShHog== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705608906; a=rsa-sha256; cv=none; b=BPb3jrUD42E9HfHVdSeVrLkfcdgfQACZoCJvjqCRzX0HlyCrZRpWCbQ5o5qvUhU4yIBaKk Do072pMa7fsYMIQS3IpnU2nn8sJ5/Hm8wyiCS6cc6kbO6/GLk3QK46WN1wf3MoKqakfArW rr/kHuPLW6CcqYijRvhhMeUYg0CjnVlhMnRgsttVs7MnX87f+aAJMmFBzBZSuOC55Gf+Bp IO2bIErNvgytuQ6C+rNiOh34YxI+JQrP4KlqsrLyAdX7eKEdIqA17FLBnw/zqZxjI286cy wwKsOAvOwvyeMbzClCstilS8TAoCGPlpS6BbPtX/c2Rt9gGgFYJcMJ3Kjmiqjg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGDWG2kLhzLvK; Thu, 18 Jan 2024 20:15:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IKF6gH068022; Thu, 18 Jan 2024 20:15:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IKF63V068019; Thu, 18 Jan 2024 20:15:06 GMT (envelope-from git) Date: Thu, 18 Jan 2024 20:15:06 GMT Message-Id: <202401182015.40IKF63V068019@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marius Strobl Subject: git: 8595e76a9f1a - stable/14 - uart(4): Honor hardware state of NS8250-class for tsw_busy List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8595e76a9f1a5bcf057afe6d28846099287a26b7 Auto-Submitted: auto-generated The branch stable/14 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=8595e76a9f1a5bcf057afe6d28846099287a26b7 commit 8595e76a9f1a5bcf057afe6d28846099287a26b7 Author: Marius Strobl AuthorDate: 2024-01-12 22:27:07 +0000 Commit: Marius Strobl CommitDate: 2024-01-18 20:14:46 +0000 uart(4): Honor hardware state of NS8250-class for tsw_busy In 9750d9e5, I brought the equivalent of the TS_BUSY flag back in a mostly hardware-agnostic way in order to fix tty_drain() and, thus, TIOCDRAIN for UARTs with TX FIFOs. This proved to be sufficient for fixing the regression reported. So in light of the release cycle of FreeBSD 10.3, I decided that this change was be good enough for the time being and opted to go with the smallest possible yet generic (for all UARTs driven by uart(4)) solution addressing the problem at hand. However, at least for the NS8250-class the above isn't a complete fix as these UARTs only trigger an interrupt when the TX FIFO became empty. At this point, there still can be an outstanding character left in the transmit shift register as indicated via the LSR. Thus, this change adds the 3rd (besides the tty(4) and generic uart(4) bits) part I had in my tree ever since, adding a uart_txbusy method to be queried in addition for tsw_busy and hooking it up as appropriate for the NS8250-class. As it turns out, the exact equivalent of this 3rd part later on was implemented for uftdi(4) in 9ad221a5. While at it, explain the rational behind the deliberately missing locking in uart_tty_busy() (also applying to the generic sc_txbusy testing already present). (cherry picked from commit 353e4c5a068d06b0d6dcfa9eb736ecb16e9eae45) --- sys/arm/nvidia/tegra_uart.c | 3 ++- sys/dev/uart/uart_dev_ns8250.c | 14 +++++++++++++- sys/dev/uart/uart_dev_ns8250.h | 1 + sys/dev/uart/uart_dev_snps.c | 1 + sys/dev/uart/uart_dev_ti8250.c | 1 + sys/dev/uart/uart_if.m | 21 +++++++++++++++++++++ sys/dev/uart/uart_tty.c | 14 ++++++++++++-- 7 files changed, 51 insertions(+), 4 deletions(-) diff --git a/sys/arm/nvidia/tegra_uart.c b/sys/arm/nvidia/tegra_uart.c index 05d1c46407f7..086cd6348b91 100644 --- a/sys/arm/nvidia/tegra_uart.c +++ b/sys/arm/nvidia/tegra_uart.c @@ -136,6 +136,7 @@ static kobj_method_t tegra_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD(uart_grab, tegra_uart_grab), KOBJMETHOD(uart_ungrab, tegra_uart_ungrab), KOBJMETHOD_END @@ -237,7 +238,7 @@ static device_method_t tegra_uart_bus_methods[] = { DEVMETHOD(device_probe, tegra_uart_probe), DEVMETHOD(device_attach, uart_bus_attach), DEVMETHOD(device_detach, tegra_uart_detach), - { 0, 0 } + DEVMETHOD_END }; static driver_t tegra_uart_driver = { diff --git a/sys/dev/uart/uart_dev_ns8250.c b/sys/dev/uart/uart_dev_ns8250.c index de9b67c6bef1..a49215218830 100644 --- a/sys/dev/uart/uart_dev_ns8250.c +++ b/sys/dev/uart/uart_dev_ns8250.c @@ -424,9 +424,10 @@ static kobj_method_t ns8250_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD(uart_grab, ns8250_bus_grab), KOBJMETHOD(uart_ungrab, ns8250_bus_ungrab), - { 0, 0 } + KOBJMETHOD_END }; struct uart_class uart_ns8250_class = { @@ -1081,6 +1082,17 @@ ns8250_bus_transmit(struct uart_softc *sc) return (0); } +bool +ns8250_bus_txbusy(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + + if ((uart_getreg(bas, REG_LSR) & (LSR_TEMT | LSR_THRE)) != + (LSR_TEMT | LSR_THRE)) + return (true); + return (false); +} + void ns8250_bus_grab(struct uart_softc *sc) { diff --git a/sys/dev/uart/uart_dev_ns8250.h b/sys/dev/uart/uart_dev_ns8250.h index 357f4e7f80df..324ff72f6e5d 100644 --- a/sys/dev/uart/uart_dev_ns8250.h +++ b/sys/dev/uart/uart_dev_ns8250.h @@ -57,6 +57,7 @@ int ns8250_bus_receive(struct uart_softc *); int ns8250_bus_setsig(struct uart_softc *, int); int ns8250_bus_transmit(struct uart_softc *); void ns8250_bus_grab(struct uart_softc *); +bool ns8250_bus_txbusy(struct uart_softc *); void ns8250_bus_ungrab(struct uart_softc *); #endif /* _DEV_UART_DEV_NS8250_H_ */ diff --git a/sys/dev/uart/uart_dev_snps.c b/sys/dev/uart/uart_dev_snps.c index 5bad59bfc875..f39591259271 100644 --- a/sys/dev/uart/uart_dev_snps.c +++ b/sys/dev/uart/uart_dev_snps.c @@ -102,6 +102,7 @@ static kobj_method_t snps_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD(uart_grab, ns8250_bus_grab), KOBJMETHOD(uart_ungrab, ns8250_bus_ungrab), KOBJMETHOD_END diff --git a/sys/dev/uart/uart_dev_ti8250.c b/sys/dev/uart/uart_dev_ti8250.c index 5a5fc97fd04e..96639f365a9d 100644 --- a/sys/dev/uart/uart_dev_ti8250.c +++ b/sys/dev/uart/uart_dev_ti8250.c @@ -106,6 +106,7 @@ static kobj_method_t ti8250_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD_END }; diff --git a/sys/dev/uart/uart_if.m b/sys/dev/uart/uart_if.m index 516e8b0811df..7efe63a10248 100644 --- a/sys/dev/uart/uart_if.m +++ b/sys/dev/uart/uart_if.m @@ -38,6 +38,17 @@ INTERFACE uart; +CODE { + static uart_txbusy_t uart_default_txbusy; + + static bool + uart_default_txbusy(struct uart_softc *this __unused) + { + + return (false); + } +}; + # attach() - attach hardware. # This method is called when the device is being attached. All resources # have been allocated. The transmit and receive buffers exist, but no @@ -141,6 +152,16 @@ METHOD int transmit { struct uart_softc *this; }; +# txbusy() - report if Tx is still busy. +# This method is called by the tty glue for reporting upward that output is +# still being drained despite sc_txbusy unset. Non-DEFAULT implementations +# allow for extra checks, i. e. beyond what can be determined in ipend(), +# that the Tx path actually is idle. For example, whether the last character +# has left the transmit shift register in addition to the FIFO being empty. +METHOD bool txbusy { + struct uart_softc *this; +} DEFAULT uart_default_txbusy; + # grab() - Up call from the console to the upper layers of the driver when # the kernel asks to grab the console. This is valid only for console # drivers. This method is responsible for transitioning the hardware diff --git a/sys/dev/uart/uart_tty.c b/sys/dev/uart/uart_tty.c index 0c69fa25f6cf..736c756322a4 100644 --- a/sys/dev/uart/uart_tty.c +++ b/sys/dev/uart/uart_tty.c @@ -389,9 +389,19 @@ uart_tty_busy(struct tty *tp) sc = tty_softc(tp); if (sc == NULL || sc->sc_leaving) - return (FALSE); + return (false); - return (sc->sc_txbusy); + /* + * The tty locking is sufficient here; we may lose the race against + * uart_bus_ihand()/uart_intr() clearing sc_txbusy underneath us, in + * which case we will incorrectly but non-fatally report a busy Tx + * path upward. However, tty locking ensures that no additional output + * is enqueued before UART_TXBUSY() returns, which means that there + * are no Tx interrupts to be lost. + */ + if (sc->sc_txbusy) + return (true); + return (UART_TXBUSY(sc)); } static struct ttydevsw uart_tty_class = { From nobody Thu Jan 18 20:15:07 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGDWH5D4Xz56tHd; Thu, 18 Jan 2024 20:15:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGDWH4FnPz4XrW; Thu, 18 Jan 2024 20:15:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EaaMviLjNMwXnllkpTQEeAsChoLwroBCOfKvsl+x9AE=; b=fbclPOiuXel7lvY2ZjEe+PIIdubDbhe5HSfF4gVh78Nu+udQwmtfp5FFZzQCJh+HOhPi9g jEZls+HODSKQLjIp3eUmkbED74eHquPoBwcXq9DFdtsdvCPC0hnf5ZWkW2KCsFbq3I2uvI +M197se+HiEl0uVvX/KIj9P4YakZj/uqf5gc0bFR2PuaZ5R2BWUkdOHNFrCmzhCyqoxhA8 CsirTikaSXjJa7nNSbpT8zMMRZLfPXDx60fyu3YzF7KEEdOyxhdKml/Z9Ad4pu5AuegHKN juvr1XMD7JmPUndPBJSfVJDZcj02NZ4c8kgMEtQOhLHoFRxNDc4oPDd0aYfBww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EaaMviLjNMwXnllkpTQEeAsChoLwroBCOfKvsl+x9AE=; b=Fh7LUPkyEiXlaRSbngFGnZr5DzJIt/OJtx1pziaZJ2WqLXVonMnMRUQt5etgRs8S0oWYwa j6MsA2bzPmKEfnMBcg2mH/zS7AFrdFUNYf5fPRLFh7rLqgZhVlRTk/u6R8zEwkQLvVcYEk 8prhDM1UcdXPLLmDS8qK+aIQLH7gtSy1xdcb/UJG+OpBaCDvSmRmd0zXzOSwq1WQXxvvxX 1Mk/sSX73XCxyYWYPYUphylLlQYvsnnRjZrQFAMTTNXHzC7OPSsZhhWro7LJrSrhXvRrPD NsPju/MGdiKc1KKdMM4FcRuAqs4UeCFOKCD+YdOevAlRycNliAQMB03CkwjvKg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705608907; a=rsa-sha256; cv=none; b=ptFHwAfBBt5FpOv/BXfLJhS8+iDsAM/ZK0VZ3LEVlsSh6sjSBiwZ1dxWJHpI84LocCCBmy XgMA/aUGUm+Gs7XthkRARTrQOB/u3L6tGbmSkPb3r0lhb/ZhKRHtygsJqtnIZ3WzpYXB2M sm6S77sru/BZopZVRgXKQIKmrx9fm1NI2FAp390UrgWhAgRXO5OvYNfTQaZJThGmYpUAEt 4CJyLeGHd06Du0WHRKxSN/eiNdyYGI699eMZhVObUsV1LsltEd8iOvZVX248cNNDBra14C 491Qaq1Yssd9wAtQgFTg8YiLHTamq9x1Jbx6viGmy/lB6lngeitwTgdjhMSokQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGDWH3MVNzM6h; Thu, 18 Jan 2024 20:15:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IKF753068071; Thu, 18 Jan 2024 20:15:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IKF7M7068068; Thu, 18 Jan 2024 20:15:07 GMT (envelope-from git) Date: Thu, 18 Jan 2024 20:15:07 GMT Message-Id: <202401182015.40IKF7M7068068@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marius Strobl Subject: git: d6ec20a30919 - stable/14 - geom_map(4): Garbage collect disconnected driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d6ec20a3091924793576ba3fd71f42d4fcd3371f Auto-Submitted: auto-generated The branch stable/14 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=d6ec20a3091924793576ba3fd71f42d4fcd3371f commit d6ec20a3091924793576ba3fd71f42d4fcd3371f Author: Marius Strobl AuthorDate: 2024-01-14 08:31:26 +0000 Commit: Marius Strobl CommitDate: 2024-01-18 20:14:46 +0000 geom_map(4): Garbage collect disconnected driver The last MIPS user has been removed in c09981f1 2 years ago, the last ARM one in 58d5c511 even 5.5 years ago. (cherry picked from commit 03e8d25b1f9218dcd52d13819dda14dbbaf622b7) --- ObsoleteFiles.inc | 3 + share/man/man4/Makefile | 1 - share/man/man4/geom_map.4 | 209 -------------------- sys/conf/files | 1 - sys/geom/geom_map.c | 393 ------------------------------------- sys/modules/geom/geom_map/Makefile | 7 - 6 files changed, 3 insertions(+), 611 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index afbfb877ebfd..cace8b72a03e 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -59,6 +59,9 @@ OLD_FILES+=usr/tests/usr.bin/uniq/d_input.in OLD_FILES+=usr/tests/usr.bin/uniq/d_show_duplicates.out OLD_FILES+=usr/tests/usr.bin/uniq/d_show_uniques.out +# 20240114: Removal of geom_map(4) +OLD_FILES+=usr/share/man/man4/geom_map.4 + # 20240107: new clang import which bumps version from 16 to 17 OLD_FILES+=usr/lib/clang/16/include/__clang_cuda_builtin_vars.h OLD_FILES+=usr/lib/clang/16/include/__clang_cuda_cmath.h diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 148670072757..820bfa456448 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -171,7 +171,6 @@ MAN= aac.4 \ genetlink.4 \ geom.4 \ geom_linux_lvm.4 \ - geom_map.4 \ geom_uzip.4 \ gif.4 \ ${_gve.4} \ diff --git a/share/man/man4/geom_map.4 b/share/man/man4/geom_map.4 deleted file mode 100644 index 5ae49500d6a9..000000000000 --- a/share/man/man4/geom_map.4 +++ /dev/null @@ -1,209 +0,0 @@ -.\" -.\" Copyright (c) 2011 Aleksandr Rybalko -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.Dd June 8, 2015 -.Dt GEOM_MAP 4 -.Os -.Sh NAME -.Nm geom_map -.Nd "GEOM module that maps defined items as separate partitions" -.Sh SYNOPSIS -To compile this driver into the kernel, -place the following line in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "options geom_map" -.Ed -.Sh DESCRIPTION -The -.Nm -framework provides support for mapping defined parts of the media. -Basically it is helpful for embedded devices where in the one continuous -flash are loader, kernel and rootfs parts. -.Nm -allows making them available as separate parts and protects the loader from -being overwritten. -.Pp -At boot time -.Nm -partitions are listed (only with bootverbose) as: -.Bd -literal -offset indent -MAP: 0x30000, data=0x30000 "/dev/map/bootloader" -MAP: 30000x10000, data=0x10000 "/dev/map/factory" -MAP: 40000x7a0000, data=0x7a0000 "/dev/map/upgrade" -MAP: search key ".!/bin/sh" from 0x100000, step 0x10000 -MAP: 40000x110000, data=0x110000 "/dev/map/kernel" -MAP: search key ".!/bin/sh" from 0x100000, step 0x10000 -MAP: 150000x690000, data=0x690000 "/dev/map/rootfs" -MAP: 7e0000x20000, data=0x20000 "/dev/map/config" -.Ed -.Pp -The current -.Nm -configuration can be accessed with the following -.Xr sysctl 8 -nodes: -.Va kern.geom.conftxt , kern.geom.confxml , -and -.Va kern.geom.confdot -or by using -.Dq Li "geom map list" . -.Bd -literal -offset indent -# sysctl -n kern.geom.conftxt -0 MD md0 10485760 512 u 0 s 512 f 0 fs 0 l 10485760 t malloc -0 DISK cfid0 8388608 4 hd 0 sc 0 -1 MAP map/config 131072 4 i 5 o 8257536 entry 0 dsize 131072 -1 MAP map/rootfs 6881280 4 i 4 o 1376256 entry 0 dsize 6881280 -2 UZIP map/rootfs.uzip 18677760 512 -1 MAP map/kernel 1114112 4 i 3 o 262144 entry 0 dsize 1114112 -1 MAP map/upgrade 7995392 4 i 2 o 262144 entry 0 dsize 7995392 -1 MAP map/factory 65536 4 i 1 o 196608 entry 0 dsize 65536 -1 MAP map/bootloader 196608 4 i 0 o 0 entry 0 dsize 196608 -.Ed -.Pp -Driver configuration can be done in -.Xr device.hints 5 . -List of used parameters: -.Bl -tag -width indent -.It Va at -select media to attach -.It Va name -name of partition (will create device -.Pa /dev/map/ Ns Ar that_name ) -.It Va start -offset from the beginning of the parent media to start of the mapped partition. -This field can also have a special value -.Qq Li search: Ns Ar searchstart Ns Li : Ns Ar searchstep Ns Li : Ns Ar searchkey , -where: -.Bl -tag -width indent -.It Ar searchstart -offset from the beginning of the parent media where search will be started -.It Ar searchstep -value of the increment used while searching for the partition boundary markers -.It Ar searchkey -key which will be used to find partition boundary markers. -The wildcard -.Ql .\& -can be used to match any character on that position -.El -.It Va end -offset from the beginning of the parent media to the end of the mapped partition. -This field can also have the special value -.Qq Li search: Ns Ar searchstart Ns Li : Ns Ar searchstep Ns Li : Ns Ar searchkey , -as described above. -.It Va offset -offset where the data of the mapped partition begins -.El -.Pp -Each record contains the start address (in bytes) from the media begin, size -(in bytes), offset where the data of mapped partition begins, and the name of -new device. -.Bd -literal -offset indent -MAP: 150000x690000, data=0x690000 "/dev/map/rootfs" -.Ed -.Bd -literal -00150000 - start address -00690000 - size -00000000 - data begin from zero offset -00690000 - data size -"map/rootfs" - new media will be accessible via /dev/map/rootfs dev. -.Ed -.Sh EXAMPLES -If we need to implement layout shown above, we need to define the following -hints: -.Bd -literal -offset indent -hint.map.0.at="cfid0" -hint.map.0.start=0x00000000 -hint.map.0.end=0x00030000 -hint.map.0.name="bootloader" -hint.map.0.readonly=1 -.Ed -.Pp -This defines -.Pa /dev/map/bootloader -at disk -.Pa cfid0 -starting at -.Li 0x00000000 -and ending at -.Li 0x00030000 , -it is also marked as readonly. -.Bd -literal -offset indent -hint.map.1.at="cfid0" -hint.map.1.start=0x00030000 -hint.map.1.end=0x00040000 -hint.map.1.name="factory" - -hint.map.2.at="cfid0" -hint.map.2.start=0x00040000 -hint.map.2.end=0x007e0000 -hint.map.2.name="upgrade" - -hint.map.3.at="cfid0" -hint.map.3.name="kernel" -hint.map.3.start=0x00040000 -hint.map.3.end="search:0x00100000:0x10000:.!/bin/sh" -.Ed -.Pp -This defines -.Pa /dev/map/kernel -at disk -.Pa cfid0 -starting at -.Li 0x00040000 , -but the end position must be searched by finding the key -.Dq Li ".!/bin/sh" , -from offset -.Li 0x00100000 -to the end of media with step -.Li 0x10000 . -The real marker in this case is -.Dq Li "#!/bin/sh" , -but -.Ql # -terminates the line when the hints file is parsed, so we need to use wildcard -.Ql .\& -instead of -.Ql # . -.Bd -literal -offset indent -hint.map.4.at="cfid0" -hint.map.4.name="rootfs" -hint.map.4.start="search:0x00100000:0x10000:.!/bin/sh" -hint.map.4.end=0x007e0000 - -hint.map.5.at="cfid0" -hint.map.5.start=0x007e0000 -hint.map.5.end=0x00800000 -hint.map.5.name="config" -.Ed -.Sh SEE ALSO -.Xr geom 4 , -.Xr geom 8 , -.Xr sysctl 8 -.Sh AUTHORS -The -.Nm -driver was written by -.An Aleksandr Rybalko Aq Mt ray@ddteam.net . diff --git a/sys/conf/files b/sys/conf/files index 8fc4edc9c118..22965765bbbe 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -3618,7 +3618,6 @@ geom/geom_event.c standard geom/geom_flashmap.c optional fdt cfi | fdt mx25l | mmcsd | fdt n25q | fdt at45d geom/geom_io.c standard geom/geom_kern.c standard -geom/geom_map.c optional geom_map geom/geom_redboot.c optional geom_redboot geom/geom_slice.c standard geom/geom_subr.c standard diff --git a/sys/geom/geom_map.c b/sys/geom/geom_map.c deleted file mode 100644 index 2932e93f6a5a..000000000000 --- a/sys/geom/geom_map.c +++ /dev/null @@ -1,393 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2010-2011 Aleksandr Rybalko - * based on geom_redboot.c - * Copyright (c) 2009 Sam Leffler, Errno Consulting - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce at minimum a disclaimer - * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any - * redistribution must be conditioned upon including a substantially - * similar Disclaimer requirement for further binary redistribution. - * - * NO WARRANTY - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGES. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#define MAP_CLASS_NAME "MAP" -#define MAP_MAXSLICE 64 -#define MAP_MAX_MARKER_LEN 64 - -struct g_map_softc { - off_t offset[MAP_MAXSLICE]; /* offset in flash */ - off_t size[MAP_MAXSLICE]; /* image size in bytes */ - off_t entry[MAP_MAXSLICE]; - off_t dsize[MAP_MAXSLICE]; - uint8_t readonly[MAP_MAXSLICE]; - g_access_t *parent_access; -}; - -static int -g_map_access(struct g_provider *pp, int dread, int dwrite, int dexcl) -{ - struct g_geom *gp; - struct g_slicer *gsp; - struct g_map_softc *sc; - - gp = pp->geom; - gsp = gp->softc; - sc = gsp->softc; - - if (dwrite > 0 && sc->readonly[pp->index]) - return (EPERM); - - return (sc->parent_access(pp, dread, dwrite, dexcl)); -} - -static int -g_map_start(struct bio *bp) -{ - struct g_provider *pp; - struct g_geom *gp; - struct g_map_softc *sc; - struct g_slicer *gsp; - int idx; - - pp = bp->bio_to; - idx = pp->index; - gp = pp->geom; - gsp = gp->softc; - sc = gsp->softc; - - if (bp->bio_cmd == BIO_GETATTR) { - if (g_handleattr_int(bp, MAP_CLASS_NAME "::entry", - sc->entry[idx])) { - return (1); - } - if (g_handleattr_int(bp, MAP_CLASS_NAME "::dsize", - sc->dsize[idx])) { - return (1); - } - } - - return (0); -} - -static void -g_map_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, - struct g_consumer *cp __unused, struct g_provider *pp) -{ - struct g_map_softc *sc; - struct g_slicer *gsp; - - gsp = gp->softc; - sc = gsp->softc; - g_slice_dumpconf(sb, indent, gp, cp, pp); - if (pp != NULL) { - if (indent == NULL) { - sbuf_printf(sb, " entry %jd", (intmax_t)sc->entry[pp->index]); - sbuf_printf(sb, " dsize %jd", (intmax_t)sc->dsize[pp->index]); - } else { - sbuf_printf(sb, "%s%jd\n", indent, - (intmax_t)sc->entry[pp->index]); - sbuf_printf(sb, "%s%jd\n", indent, - (intmax_t)sc->dsize[pp->index]); - } - } -} - -static int -find_marker(struct g_consumer *cp, const char *line, off_t *offset) -{ - off_t search_start, search_offset, search_step; - size_t sectorsize; - uint8_t *buf; - char *op, key[MAP_MAX_MARKER_LEN], search_key[MAP_MAX_MARKER_LEN]; - int ret, c; - - /* Try convert to numeric first */ - *offset = strtouq(line, &op, 0); - if (*op == '\0') - return (0); - - bzero(search_key, MAP_MAX_MARKER_LEN); - sectorsize = cp->provider->sectorsize; - -#ifdef __LP64__ - ret = sscanf(line, "search:%li:%li:%63c", - &search_start, &search_step, search_key); -#else - ret = sscanf(line, "search:%qi:%qi:%63c", - &search_start, &search_step, search_key); -#endif - if (ret < 3) - return (1); - - if (bootverbose) { - printf("MAP: search %s for key \"%s\" from 0x%jx, step 0x%jx\n", - cp->geom->name, search_key, (intmax_t)search_start, (intmax_t)search_step); - } - - /* error if search_key is empty */ - if (strlen(search_key) < 1) - return (1); - - /* sscanf successful, and we start marker search */ - for (search_offset = search_start; - search_offset < cp->provider->mediasize; - search_offset += search_step) { - g_topology_unlock(); - buf = g_read_data(cp, rounddown(search_offset, sectorsize), - roundup(strlen(search_key), sectorsize), NULL); - g_topology_lock(); - - /* - * Don't bother doing the rest if buf==NULL; eg derefencing - * to assemble 'key'. - */ - if (buf == NULL) - continue; - - /* Wildcard, replace '.' with byte from data */ - /* TODO: add support wildcard escape '\.' */ - - strncpy(key, search_key, MAP_MAX_MARKER_LEN); - - for (c = 0; c < MAP_MAX_MARKER_LEN && key[c]; c++) { - if (key[c] == '.') { - key[c] = ((char *)(buf + - (search_offset % sectorsize)))[c]; - } - } - - /* Assume buf != NULL here */ - if (memcmp(buf + search_offset % sectorsize, - key, strlen(search_key)) == 0) { - g_free(buf); - /* Marker found, so return their offset */ - *offset = search_offset; - return (0); - } - g_free(buf); - } - - /* Marker not found */ - return (1); -} - -static int -g_map_parse_part(struct g_class *mp, struct g_provider *pp, - struct g_consumer *cp, struct g_geom *gp, struct g_map_softc *sc, int i) -{ - const char *value, *name; - char *op; - off_t start, end, offset, size, dsize; - int readonly, ret; - - /* hint.map.0.at="cfid0" - bind to cfid0 media */ - if (resource_string_value("map", i, "at", &value) != 0) - return (1); - - /* Check if this correct provider */ - if (strcmp(pp->name, value) != 0) - return (1); - - /* - * hint.map.0.name="uboot" - name of partition, will be available - * as "/dev/map/uboot" - */ - if (resource_string_value("map", i, "name", &name) != 0) { - if (bootverbose) - printf("MAP: hint.map.%d has no name\n", i); - return (1); - } - - /* - * hint.map.0.start="0x00010000" - partition start at 0x00010000 - * or hint.map.0.start="search:0x00010000:0x200:marker text" - - * search for text "marker text", begin at 0x10000, step 0x200 - * until we found marker or end of media reached - */ - if (resource_string_value("map", i, "start", &value) != 0) { - if (bootverbose) - printf("MAP: \"%s\" has no start value\n", name); - return (1); - } - if (find_marker(cp, value, &start) != 0) { - if (bootverbose) { - printf("MAP: \"%s\" can't parse/use start value\n", - name); - } - return (1); - } - - /* like "start" */ - if (resource_string_value("map", i, "end", &value) != 0) { - if (bootverbose) - printf("MAP: \"%s\" has no end value\n", name); - return (1); - } - if (find_marker(cp, value, &end) != 0) { - if (bootverbose) { - printf("MAP: \"%s\" can't parse/use end value\n", - name); - } - return (1); - } - - /* variable readonly optional, disable write access */ - if (resource_int_value("map", i, "readonly", &readonly) != 0) - readonly = 0; - - /* offset of partition data, from partition begin */ - if (resource_string_value("map", i, "offset", &value) == 0) { - offset = strtouq(value, &op, 0); - if (*op != '\0') { - if (bootverbose) { - printf("MAP: \"%s\" can't parse offset\n", - name); - } - return (1); - } - } else { - offset = 0; - } - - /* partition data size */ - if (resource_string_value("map", i, "dsize", &value) == 0) { - dsize = strtouq(value, &op, 0); - if (*op != '\0') { - if (bootverbose) { - printf("MAP: \"%s\" can't parse dsize\n", - name); - } - return (1); - } - } else { - dsize = 0; - } - - size = end - start; - if (dsize == 0) - dsize = size - offset; - - /* end is 0 or size is 0, No MAP - so next */ - if (end < start) { - if (bootverbose) { - printf("MAP: \"%s\", \"end\" less than " - "\"start\"\n", name); - } - return (1); - } - - if (offset + dsize > size) { - if (bootverbose) { - printf("MAP: \"%s\", \"dsize\" bigger than " - "partition - offset\n", name); - } - return (1); - } - - ret = g_slice_config(gp, i, G_SLICE_CONFIG_SET, start + offset, - dsize, cp->provider->sectorsize, "map/%s", name); - if (ret != 0) { - if (bootverbose) { - printf("MAP: g_slice_config returns %d for \"%s\"\n", - ret, name); - } - return (1); - } - - if (bootverbose) { - printf("MAP: %s: %jxx%jx, data=%jxx%jx " - "\"/dev/map/%s\"\n", - cp->geom->name, (intmax_t)start, (intmax_t)size, (intmax_t)offset, - (intmax_t)dsize, name); - } - - sc->offset[i] = start; - sc->size[i] = size; - sc->entry[i] = offset; - sc->dsize[i] = dsize; - sc->readonly[i] = readonly ? 1 : 0; - - return (0); -} - -static struct g_geom * -g_map_taste(struct g_class *mp, struct g_provider *pp, int insist __unused) -{ - struct g_map_softc *sc; - struct g_consumer *cp; - struct g_geom *gp; - int i; - - g_trace(G_T_TOPOLOGY, "map_taste(%s,%s)", mp->name, pp->name); - g_topology_assert(); - if (strcmp(pp->geom->class->name, MAP_CLASS_NAME) == 0) - return (NULL); - - gp = g_slice_new(mp, MAP_MAXSLICE, pp, &cp, &sc, sizeof(*sc), - g_map_start); - if (gp == NULL) - return (NULL); - - /* interpose our access method */ - sc->parent_access = gp->access; - gp->access = g_map_access; - - for (i = 0; i < MAP_MAXSLICE; i++) - g_map_parse_part(mp, pp, cp, gp, sc, i); - - g_access(cp, -1, 0, 0); - if (LIST_EMPTY(&gp->provider)) { - if (bootverbose) - printf("MAP: No valid partition found at %s\n", pp->name); - g_slice_spoiled(cp); - return (NULL); - } - return (gp); -} - -static struct g_class g_map_class = { - .name = MAP_CLASS_NAME, - .version = G_VERSION, - .taste = g_map_taste, - .dumpconf = g_map_dumpconf, -}; -DECLARE_GEOM_CLASS(g_map_class, g_map); -MODULE_VERSION(geom_map, 0); diff --git a/sys/modules/geom/geom_map/Makefile b/sys/modules/geom/geom_map/Makefile deleted file mode 100644 index 85beccbf493e..000000000000 --- a/sys/modules/geom/geom_map/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -.PATH: ${SRCTOP}/sys/geom - -KMOD= geom_map -SRCS= geom_map.c bus_if.h device_if.h - -.include From nobody Thu Jan 18 20:15:08 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGDWJ6V9Sz56tHh; Thu, 18 Jan 2024 20:15:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGDWJ5KgVz4Xlr; Thu, 18 Jan 2024 20:15:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608908; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lb1tXwmCxvCkAbIODyKX00KMCF7s7yxE9wdkK7+UZcc=; b=lo588qhQSt2zUannosuNi5fmbzYsKSjfy21kheOkXwoIz1uQFUXtAddBtzmeYOTY0crg1q eBuszfW84vvMkblbspTN5ZIRhBE69+uPFmT2/ZOhNMxqPZnG7KWnq3mrVLHR7h2uWF7CWw ZN+cc6eKfkq1YCssh78stiX0r34WvC14029aznd6aBYMEEVwdomCapVClRiodODv8Ymf2e 4iH+0ezBbvZPeFzUoBcwCslZVqUoWmQtUI4pd6DpFAXowPV4Zc8SmqXWtcDgFIxOR4YsH/ EJwQHbzacfDKKz60Hf9vi0Qn1cnqFHjBScniCfbaCTfrh5V0f8eIvmHaFkDsEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608908; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lb1tXwmCxvCkAbIODyKX00KMCF7s7yxE9wdkK7+UZcc=; b=exGl66ZoDd63AVzJj/yfgfbhWBLh+yDk2mIjOp/mxa0UqkefuhxLIAks27yVzpibNNgri0 dLRf+SYYKOERXR74AfRBa0dvyUCCxMEVBFZotWBy519qltQ7G3XMe7BxmBQIyme3QL7Qua pDAaytBtOD7H5lj/jRtadNn/6L+fqmkgvSP9yHViLYLsZEuKqysIo/Adj2g2ySucDsHVEy cEv+z2ZEXzlsirXedRuEkIzuemQJ7S9Qmn2JNby/ZlKVhosKCTloeGXN3zAZJ/Dy39fz8y mvp147cnZlD7THy9rTM0UcMsYsssTlYuD2XYP364Sna5tUgGBDVorVOPO3Qlpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705608908; a=rsa-sha256; cv=none; b=xT0MMrWvpvFmX/IxC9dHuqw4bg1OKPO8SBIJKaoWDLXrPTm55uPONLZ+tp8pcs2MFYf8tu VRI5uncxxD29eBdz0pJpoRCw/cgrWQm0DtVhqKrJ4ZIpv/LWxPYWt0Ju+6N1f+HWnFEMoD cRyri6zO/Sfn9cd0KO8VtkTHCDknurG90tsBja38a1fr7K0mQmuZOjEMnduVuCXffI7vuu K4mfHAnH/j25zqQ/hUG110JZ8bwC4HVLd5S2PBYBwN3V/FWyy9GuRPFDyz0wIbQh7B+PMT yDohQzivr0zLzw0+yLAsJnobl3/obHYb1GKNY8/wsZ6CmoZS3GISI3VSwegJdw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGDWJ4PwGzLN9; Thu, 18 Jan 2024 20:15:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IKF8iV068113; Thu, 18 Jan 2024 20:15:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IKF88Q068110; Thu, 18 Jan 2024 20:15:08 GMT (envelope-from git) Date: Thu, 18 Jan 2024 20:15:08 GMT Message-Id: <202401182015.40IKF88Q068110@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marius Strobl Subject: git: 13673bca2f82 - stable/14 - geom_redboot(4): Garbage collect disconnected driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 13673bca2f8271881bb958e2437935fbdfb25df0 Auto-Submitted: auto-generated The branch stable/14 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=13673bca2f8271881bb958e2437935fbdfb25df0 commit 13673bca2f8271881bb958e2437935fbdfb25df0 Author: Marius Strobl AuthorDate: 2024-01-14 08:39:56 +0000 Commit: Marius Strobl CommitDate: 2024-01-18 20:14:46 +0000 geom_redboot(4): Garbage collect disconnected driver The last MIPS user has been removed in c09981f1 2 years ago, the last ARM one in ff945277 even 5.5 years ago. (cherry picked from commit 53df7e58cca7e6726b44f447f10ddc3451cfa851) --- sys/conf/files | 1 - sys/geom/geom_redboot.c | 343 ------------------------------------------------ 2 files changed, 344 deletions(-) diff --git a/sys/conf/files b/sys/conf/files index 22965765bbbe..366bbc9e43bb 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -3618,7 +3618,6 @@ geom/geom_event.c standard geom/geom_flashmap.c optional fdt cfi | fdt mx25l | mmcsd | fdt n25q | fdt at45d geom/geom_io.c standard geom/geom_kern.c standard -geom/geom_redboot.c optional geom_redboot geom/geom_slice.c standard geom/geom_subr.c standard geom/geom_vfs.c standard diff --git a/sys/geom/geom_redboot.c b/sys/geom/geom_redboot.c deleted file mode 100644 index f1628e08c118..000000000000 --- a/sys/geom/geom_redboot.c +++ /dev/null @@ -1,343 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2009 Sam Leffler, Errno Consulting - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce at minimum a disclaimer - * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any - * redistribution must be conditioned upon including a substantially - * similar Disclaimer requirement for further binary redistribution. - * - * NO WARRANTY - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGES. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#define REDBOOT_CLASS_NAME "REDBOOT" - -struct fis_image_desc { - uint8_t name[16]; /* null-terminated name */ - uint32_t offset; /* offset in flash */ - uint32_t addr; /* address in memory */ - uint32_t size; /* image size in bytes */ - uint32_t entry; /* offset in image for entry point */ - uint32_t dsize; /* data size in bytes */ - uint8_t pad[256-(16+7*sizeof(uint32_t)+sizeof(void*))]; - struct fis_image_desc *next; /* linked list (in memory) */ - uint32_t dsum; /* descriptor checksum */ - uint32_t fsum; /* checksum over image data */ -}; - -#define FISDIR_NAME "FIS directory" -#define REDBCFG_NAME "RedBoot config" -#define REDBOOT_NAME "RedBoot" - -#define REDBOOT_MAXSLICE 64 -#define REDBOOT_MAXOFF \ - (REDBOOT_MAXSLICE*sizeof(struct fis_image_desc)) - -struct g_redboot_softc { - uint32_t entry[REDBOOT_MAXSLICE]; - uint32_t dsize[REDBOOT_MAXSLICE]; - uint8_t readonly[REDBOOT_MAXSLICE]; - g_access_t *parent_access; -}; - -static void -g_redboot_print(int i, struct fis_image_desc *fd) -{ - - printf("[%2d] \"%-15.15s\" %08x:%08x", i, fd->name, - fd->offset, fd->size); - printf(" addr %08x entry %08x\n", fd->addr, fd->entry); - printf(" dsize 0x%x dsum 0x%x fsum 0x%x\n", fd->dsize, - fd->dsum, fd->fsum); -} - -static int -g_redboot_ioctl(struct g_provider *pp, u_long cmd, void *data, int fflag, struct thread *td) -{ - return (ENOIOCTL); -} - -static int -g_redboot_access(struct g_provider *pp, int dread, int dwrite, int dexcl) -{ - struct g_geom *gp = pp->geom; - struct g_slicer *gsp = gp->softc; - struct g_redboot_softc *sc = gsp->softc; - - if (dwrite > 0 && sc->readonly[pp->index]) - return (EPERM); - return (sc->parent_access(pp, dread, dwrite, dexcl)); -} - -static int -g_redboot_start(struct bio *bp) -{ - struct g_provider *pp; - struct g_geom *gp; - struct g_redboot_softc *sc; - struct g_slicer *gsp; - int idx; - - pp = bp->bio_to; - idx = pp->index; - gp = pp->geom; - gsp = gp->softc; - sc = gsp->softc; - if (bp->bio_cmd == BIO_GETATTR) { - if (g_handleattr_int(bp, REDBOOT_CLASS_NAME "::entry", - sc->entry[idx])) - return (1); - if (g_handleattr_int(bp, REDBOOT_CLASS_NAME "::dsize", - sc->dsize[idx])) - return (1); - } - - return (0); -} - -static void -g_redboot_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, - struct g_consumer *cp __unused, struct g_provider *pp) -{ - struct g_redboot_softc *sc; - struct g_slicer *gsp; - - gsp = gp->softc; - sc = gsp->softc; - g_slice_dumpconf(sb, indent, gp, cp, pp); - if (pp != NULL) { - if (indent == NULL) { - sbuf_printf(sb, " entry %d", sc->entry[pp->index]); - sbuf_printf(sb, " dsize %d", sc->dsize[pp->index]); - } else { - sbuf_printf(sb, "%s%d\n", indent, - sc->entry[pp->index]); - sbuf_printf(sb, "%s%d\n", indent, - sc->dsize[pp->index]); - } - } -} - -#include - -static int -nameok(const char name[16]) -{ - int i; - - /* descriptor names are null-terminated printable ascii */ - for (i = 0; i < 15; i++) - if (!isprint(name[i])) - break; - return (name[i] == '\0'); -} - -static struct fis_image_desc * -parse_fis_directory(u_char *buf, size_t bufsize, off_t offset, uint32_t offmask) -{ -#define match(a,b) (bcmp(a, b, sizeof(b)-1) == 0) - struct fis_image_desc *fd, *efd; - struct fis_image_desc *fisdir, *redbcfg; - struct fis_image_desc *head, **tail; - int i; - - fd = (struct fis_image_desc *)buf; - efd = fd + (bufsize / sizeof(struct fis_image_desc)); -#if 0 - /* - * Find the start of the FIS table. - */ - while (fd < efd && fd->name[0] != 0xff) - fd++; - if (fd == efd) - return (NULL); - if (bootverbose) - printf("RedBoot FIS table starts at 0x%jx\n", - offset + fd - (struct fis_image_desc *) buf); -#endif - /* - * Scan forward collecting entries in a list. - */ - fisdir = redbcfg = NULL; - *(tail = &head) = NULL; - for (i = 0; fd < efd; i++, fd++) { - if (fd->name[0] == 0xff) - continue; - if (match(fd->name, FISDIR_NAME)) - fisdir = fd; - else if (match(fd->name, REDBCFG_NAME)) - redbcfg = fd; - if (nameok(fd->name)) { - /* - * NB: flash address includes platform mapping; - * strip it so we have only a flash offset. - */ - fd->offset &= offmask; - if (bootverbose) - g_redboot_print(i, fd); - *tail = fd; - *(tail = &fd->next) = NULL; - } - } - if (fisdir == NULL) { - if (bootverbose) - printf("No RedBoot FIS table located at %lu\n", - (long) offset); - return (NULL); - } - if (redbcfg != NULL && - fisdir->offset + fisdir->size == redbcfg->offset) { - /* - * Merged FIS/RedBoot config directory. - */ - if (bootverbose) - printf("FIS/RedBoot merged at 0x%jx (not yet)\n", - offset + fisdir->offset); - /* XXX */ - } - return head; -#undef match -} - -static struct g_geom * -g_redboot_taste(struct g_class *mp, struct g_provider *pp, int insist) -{ - struct g_geom *gp; - struct g_consumer *cp; - struct g_redboot_softc *sc; - int error, sectorsize, i; - struct fis_image_desc *fd, *head; - uint32_t offmask; - off_t blksize; /* NB: flash block size stored as stripesize */ - u_char *buf; - off_t offset; - const char *value; - char *op; - - offset = 0; - if (resource_string_value("redboot", 0, "fisoffset", &value) == 0) { - offset = strtouq(value, &op, 0); - if (*op != '\0') { - offset = 0; - } - } - - g_trace(G_T_TOPOLOGY, "redboot_taste(%s,%s)", mp->name, pp->name); - g_topology_assert(); - if (!strcmp(pp->geom->class->name, REDBOOT_CLASS_NAME)) - return (NULL); - /* XXX only taste flash providers */ - if (strncmp(pp->name, "cfi", 3) && - strncmp(pp->name, "flash/spi", 9)) - return (NULL); - gp = g_slice_new(mp, REDBOOT_MAXSLICE, pp, &cp, &sc, sizeof(*sc), - g_redboot_start); - if (gp == NULL) - return (NULL); - /* interpose our access method */ - sc->parent_access = gp->access; - gp->access = g_redboot_access; - - sectorsize = cp->provider->sectorsize; - blksize = cp->provider->stripesize; - if (powerof2(cp->provider->mediasize)) - offmask = cp->provider->mediasize-1; - else - offmask = 0xffffffff; /* XXX */ - if (bootverbose) - printf("%s: mediasize %ld secsize %d blksize %ju offmask 0x%x\n", - __func__, (long) cp->provider->mediasize, sectorsize, - (uintmax_t)blksize, offmask); - if (sectorsize < sizeof(struct fis_image_desc) || - (sectorsize % sizeof(struct fis_image_desc))) - return (NULL); - g_topology_unlock(); - head = NULL; - if(offset == 0) - offset = cp->provider->mediasize - blksize; -again: - buf = g_read_data(cp, offset, blksize, NULL); - if (buf != NULL) - head = parse_fis_directory(buf, blksize, offset, offmask); - if (head == NULL && offset != 0) { - g_free(buf); - offset = 0; /* check the front */ - goto again; - } - g_topology_lock(); - if (head == NULL) { - g_free(buf); - return NULL; - } - /* - * Craft a slice for each entry. - */ - for (fd = head, i = 0; fd != NULL; fd = fd->next) { - if (fd->name[0] == '\0') - continue; - error = g_slice_config(gp, i, G_SLICE_CONFIG_SET, - fd->offset, fd->size, sectorsize, "redboot/%s", fd->name); - if (error) - printf("%s: g_slice_config returns %d for \"%s\"\n", - __func__, error, fd->name); - sc->entry[i] = fd->entry; - sc->dsize[i] = fd->dsize; - /* disallow writing hard-to-recover entries */ - sc->readonly[i] = (strcmp(fd->name, FISDIR_NAME) == 0) || - (strcmp(fd->name, REDBOOT_NAME) == 0); - i++; - } - g_free(buf); - g_access(cp, -1, 0, 0); - if (LIST_EMPTY(&gp->provider)) { - g_slice_spoiled(cp); - return (NULL); - } - return (gp); -} - -static struct g_class g_redboot_class = { - .name = REDBOOT_CLASS_NAME, - .version = G_VERSION, - .taste = g_redboot_taste, - .dumpconf = g_redboot_dumpconf, - .ioctl = g_redboot_ioctl, -}; -DECLARE_GEOM_CLASS(g_redboot_class, g_redboot); -MODULE_VERSION(geom_redboot, 0); From nobody Thu Jan 18 20:15:22 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGDWb3Rs4z56tLh; Thu, 18 Jan 2024 20:15:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGDWb1ZGSz4YS2; Thu, 18 Jan 2024 20:15:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608923; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fgiI66/1+rR49JLtwrD1PKhg4WLUwxdrjbRJxU3z1QQ=; b=nMQbW9WfybQJIcMZxJ/RftW4ZE7BRyN4lRB8faOyZxmr/55pyaUj5FSmlHFsLL7XcsaMSd NLJXgtKtRcgtozpLpgd7B7aWAqQAAvcQa4TH4yNzq4QwyeRG6PXSk4FR6LZ6fYtv/KgdMT WN8sja+hOc5I5tG7LiJx9Esd6Kp7HyGW26L2px9AvtSaWCmoNiddDM/fS36sEn/cLLIfqO qdG+BDJLFzEEoIFxlPQy3QODaBZE3X87QPWntvHZ6bjAtrS060OSTy3HMtC/XbYgl04xPb BPm/2lHZaJpjgPPCM0quY/75IyUnNZyf/tsuzSnBncySGvV76EmWIOoKFMJVcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608923; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fgiI66/1+rR49JLtwrD1PKhg4WLUwxdrjbRJxU3z1QQ=; b=yT0wEo94X6wzV0v3czhuDfFAwVyoHhhjQ/KmaAoE2q3er9WJerXjk/EtPF9d8urx+MUDdi SRp6yBlsUi3obfYto95CKI9iX9xqfGv7vaepXQCQjBcpWWUn2QSYK6CfvceXIld+ccP3uJ R4pVyDSo0JXQFhinN8GlEpOJ5EYb7rbCZ5XySKq/ASM/0gNkIMBu/UbndBHTKvfFFd5epS TB/JNYD/d652cv8wxEsc96X6hRBF4D9blfUh5k1NwrKnv5wkE4f+6KddPJ2gnKN9epg3K5 7KvD+OgOAK5bT0Pp2RIwbVf4q7yQS1yxi0dJlNbkXMk8Z5h0zDsdA8Zh7yH0BQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705608923; a=rsa-sha256; cv=none; b=leQ6jJouWwKdzYusYy1Q+xrHfteIJ/e8p+wb/MIXmu++bFYt1OKzh+Uqa12IVI5PLImnVJ OpyPDpNMAGMKRRA7DxdQO5WbAu3kJ05ScrKqQDo+O2lI+w2yADXOEdZVRvinI58ZXQixXY iGEi1xsjNefs+CSb6Bi3zFe4dJDrA33v68AIoI9trlD4E+ZK8ad9WTRI6KZj2gtnOxYnWl wbEbmx1bLsfLZtMxdJuZgkyfC3WpkzIaE7YrInoe/LmMuA3IrBcinhZJbhjoQeaMIKItGa 6pZ/83Rl351M4OYvLpLr8d9ovZI2IJfBbAnZrgdFFvNQU/nceF4dtuIgk50W/g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGDWb0BCMzLvL; Thu, 18 Jan 2024 20:15:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IKFMIv068305; Thu, 18 Jan 2024 20:15:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IKFMY1068302; Thu, 18 Jan 2024 20:15:22 GMT (envelope-from git) Date: Thu, 18 Jan 2024 20:15:22 GMT Message-Id: <202401182015.40IKFMY1068302@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marius Strobl Subject: git: 894de2e92851 - stable/13 - e1000(4): Remove disconnected SYSCTL List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 894de2e92851f053d2f8c7f97a778b6a95c3d5e8 Auto-Submitted: auto-generated The branch stable/13 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=894de2e92851f053d2f8c7f97a778b6a95c3d5e8 commit 894de2e92851f053d2f8c7f97a778b6a95c3d5e8 Author: Marius Strobl AuthorDate: 2024-01-09 21:41:49 +0000 Commit: Marius Strobl CommitDate: 2024-01-18 20:14:56 +0000 e1000(4): Remove disconnected SYSCTL The global hw.em.rx_process_limit knob has been replaced by the device- specific dev.IF.N.iflib.rx_budget along with the conversion to iflib(4). While at it, remove the - besides initialization of tx_process_limit - unused {r,t}x_process_limit members. (cherry picked from commit 0d6d28ce5650d1cd23dbe4bbac87fb103b3e2d3d) --- sys/dev/e1000/if_em.c | 11 ----------- sys/dev/e1000/if_em.h | 2 -- 2 files changed, 13 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index b0870fd3f2b3..5c62eef489d2 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -544,13 +544,6 @@ static int em_debug_sbp = false; SYSCTL_INT(_hw_em, OID_AUTO, sbp, CTLFLAG_RDTUN, &em_debug_sbp, 0, "Show bad packets in promiscuous mode"); -/* How many packets rxeof tries to clean at a time */ -static int em_rx_process_limit = 100; -SYSCTL_INT(_hw_em, OID_AUTO, rx_process_limit, CTLFLAG_RDTUN, - &em_rx_process_limit, 0, - "Maximum number of received packets to process " - "at a time, -1 means unlimited"); - /* Energy efficient ethernet - default to OFF */ static int eee_setting = 1; SYSCTL_INT(_hw_em, OID_AUTO, eee_setting, CTLFLAG_RDTUN, &eee_setting, 0, @@ -563,8 +556,6 @@ static int em_max_interrupt_rate = 8000; SYSCTL_INT(_hw_em, OID_AUTO, max_interrupt_rate, CTLFLAG_RDTUN, &em_max_interrupt_rate, 0, "Maximum interrupts per second"); - - /* Global used in WOL setup with multiport cards */ static int global_quad_port_a = 0; @@ -834,8 +825,6 @@ em_if_attach_pre(if_ctx_t ctx) sc->media = iflib_get_media(ctx); hw = &sc->hw; - sc->tx_process_limit = scctx->isc_ntxd[0]; - /* Determine hardware and mac info */ em_identify_hardware(ctx); diff --git a/sys/dev/e1000/if_em.h b/sys/dev/e1000/if_em.h index ebf0be7426a0..244762e8ed0d 100644 --- a/sys/dev/e1000/if_em.h +++ b/sys/dev/e1000/if_em.h @@ -480,8 +480,6 @@ struct e1000_softc { u16 num_vlans; u32 txd_cmd; - u32 tx_process_limit; - u32 rx_process_limit; u32 rx_mbuf_sz; /* Management and WOL features */ From nobody Thu Jan 18 20:15:24 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGDWc6Z4Zz56tR0; Thu, 18 Jan 2024 20:15:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGDWc2ZKrz4YQ0; Thu, 18 Jan 2024 20:15:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608924; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F2vI2CktHqdvix4dMV6UFBfZmfSS1sEt7BaF/mAbA/4=; b=XbY5gpRhe9xBXoQ9xoIAaaxWExEGqWaeXmfsbu0ekwhhzCulgotlrPRwFNT+X+IqVMDgmP BudtxhcbHWszIlkSnEowsKsebgPml+VGT9dYSU7uEAMwLnVTkCWjHv+fayqtAtpQ7faTT3 rZCsZ+IlQ8gVAK0Ojb5FP6YW2zfMRIzdrE+KhmGueJCRYMb05QG/+jZi6RHeHjjcKoE1/C 3wcm/lERlBO52EJH4RnVcHkjM9orU0BfWB+pd5qSIv00zLBDW/i22Pqv9eQRxCa9vbmNbS BMWi45zQlvdA5whUZjiJG5MN6ozR9W8GASdzfIOH5+akMYfrNv+xgdtcjVlXmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608924; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F2vI2CktHqdvix4dMV6UFBfZmfSS1sEt7BaF/mAbA/4=; b=mEh5REvElQbeUPJXlxSnJSr1pyCeIfSnxOvfto983fa+jzE8P6AmT0mot2LgN6fuS2MmH+ /8bYQsIi4t8Sf/q8MXlp6bhEFU+SMuLZcvdiUR5Rh7G1lXQrZ3O5HQMLeAxF/FXarfRAPx 9pqTICitJ9I+EEWJIV5EY76WIKnoNzHhCug0D49I+aVIbQ9pBB5mUlUF3LjsyEhV4By9M7 HqfRkHkuR8NM/x84kQJtwzp3RB/FKhyu9VLrLK19jZ0247QsUW49mdOQw5OE7NgdMxFfMH 1H2BWHUVzjqmZQAKX+fj90IPqLMhsvBUOWOr10pE3ajSCxVT5ZU1z98Pt6memA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705608924; a=rsa-sha256; cv=none; b=Oh6wPtbbwaRbnEgA4kTBvmrTPFRvcJw6NWE3HeyQ5Pniw9ms7qz5xAUrCdYHotqQQd+GUi sor0u35aZ1ecsj9wCpNZMq6JUN/tLgkhQxoN81Y8nGijE1FL/7AHe2PC3iJgmumWs7dtsS +9kdEpqLYh6nAanrDzct3l27AR9nwJ63d219MJNxnw70RiGoaL5WbQVwOLiM1jyVIgmTxl Dn0BPa9iRDx4Kt1I1VB3v2ASpZjmRObjl5FCz981AmouZG2DRcA9of8YwSILTuG2EV1Dj1 RQWPGLUfN4HbQrdOk4zwZ8Qj3BTSsD4DLHN2X70eEXMZwEXEcgw+WY/O9utktg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGDWc1CxyzM7Y; Thu, 18 Jan 2024 20:15:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IKFORn068347; Thu, 18 Jan 2024 20:15:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IKFOXp068343; Thu, 18 Jan 2024 20:15:24 GMT (envelope-from git) Date: Thu, 18 Jan 2024 20:15:24 GMT Message-Id: <202401182015.40IKFOXp068343@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marius Strobl Subject: git: bf81fc51ccf0 - stable/13 - igb(4): Remove disconnected SYSCTL List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: bf81fc51ccf04a6ae58f7c4d281266d5ab59d4e0 Auto-Submitted: auto-generated The branch stable/13 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=bf81fc51ccf04a6ae58f7c4d281266d5ab59d4e0 commit bf81fc51ccf04a6ae58f7c4d281266d5ab59d4e0 Author: Marius Strobl AuthorDate: 2024-01-09 22:01:46 +0000 Commit: Marius Strobl CommitDate: 2024-01-18 20:14:56 +0000 igb(4): Remove disconnected SYSCTL The global hw.igb.rx_process_limit knob never was adhered to by the in-tree version of this driver but similar functionality is available via the device-specific dev.igb.N.iflib.rx_budget. While at it, remove the - besides initialization of tx_process_limit - unused {r,t}x_process_limit members. (cherry picked from commit f221d35be7a5749e2a1246c81adc9c03c1dc545c) --- share/man/man4/igc.4 | 6 +----- sys/dev/igc/if_igc.c | 9 --------- sys/dev/igc/if_igc.h | 2 -- 3 files changed, 1 insertion(+), 16 deletions(-) diff --git a/share/man/man4/igc.4 b/share/man/man4/igc.4 index bc8c3547230d..e3dc7da65713 100644 --- a/share/man/man4/igc.4 +++ b/share/man/man4/igc.4 @@ -3,7 +3,7 @@ .\" Copyright 2021 Rubicon Communications, LLC (Netgate) .\" SPDX-License-Identifier: BSD-3-Clause .\" -.Dd May 10, 2021 +.Dd January 9, 2023 .Dt IGC 4 .Os .Sh NAME @@ -119,10 +119,6 @@ maximum delay in which a transmit interrupt is generated. .It Va hw.igc.sbp Show bad packets when in promiscuous mode. Default is false. -.It Va hw.igc.rx_process_limit -Maximum number of received packets to process at a time. -Default is 100. -A value of -1 means unlimited. .It Va hw.igc.eee_setting Disable or enable Energy Efficient Ethernet. Default 1 (disabled). diff --git a/sys/dev/igc/if_igc.c b/sys/dev/igc/if_igc.c index 3e05d1a7b957..8de044169269 100644 --- a/sys/dev/igc/if_igc.c +++ b/sys/dev/igc/if_igc.c @@ -255,13 +255,6 @@ static int igc_debug_sbp = true; SYSCTL_INT(_hw_igc, OID_AUTO, sbp, CTLFLAG_RDTUN, &igc_debug_sbp, 0, "Show bad packets in promiscuous mode"); -/* How many packets rxeof tries to clean at a time */ -static int igc_rx_process_limit = 100; -SYSCTL_INT(_hw_igc, OID_AUTO, rx_process_limit, CTLFLAG_RDTUN, - &igc_rx_process_limit, 0, - "Maximum number of received packets to process " - "at a time, -1 means unlimited"); - /* Energy efficient ethernet - default to OFF */ static int igc_eee_setting = 1; SYSCTL_INT(_hw_igc, OID_AUTO, eee_setting, CTLFLAG_RDTUN, &igc_eee_setting, 0, @@ -467,8 +460,6 @@ igc_if_attach_pre(if_ctx_t ctx) adapter->media = iflib_get_media(ctx); hw = &adapter->hw; - adapter->tx_process_limit = scctx->isc_ntxd[0]; - /* SYSCTL stuff */ SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), diff --git a/sys/dev/igc/if_igc.h b/sys/dev/igc/if_igc.h index 382931468ade..fde9429b5360 100644 --- a/sys/dev/igc/if_igc.h +++ b/sys/dev/igc/if_igc.h @@ -372,8 +372,6 @@ struct igc_adapter { u32 txd_cmd; - u32 tx_process_limit; - u32 rx_process_limit; u32 rx_mbuf_sz; /* Management and WOL features */ From nobody Thu Jan 18 20:15:25 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGDWf0Z8Pz56tTh; Thu, 18 Jan 2024 20:15:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGDWd3dkGz4YVQ; Thu, 18 Jan 2024 20:15:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UBxOIGV1YGTqclH6S8zEbjEimIhpbG69n/tFgAAA/KM=; b=Yg7I0UKhd+Kg28yIRPcDGp9Nh1BlDuG0UFpB1m8ZcdY2XvO4qLjG9Jm/2+X3Cl/ETmXA2v sHP62sqCoy5ah/jUdp9qJmoISs18YFRTWYm7k/2/7IM+hl66092XV4thHeX709EATWI0Tw oDdNkEsxjFXVeGEUf7Mdx5sHZRkXa91k0f/GvGI6AItO5X7tuF1M1cioS+a56YA+EbTR28 LpFs7KcdQymjEyv7UA7PHaQp5lrQoaWM1vRAeFsoPCsU6wXH2oMQVA9Z9VYvmRcL1yCQbx M3D98zmid5QUkdw8Q2cP+T5ilO7ylqRhmtCibuqZFRlX5cxflfZ0OAcudh6/Gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705608925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UBxOIGV1YGTqclH6S8zEbjEimIhpbG69n/tFgAAA/KM=; b=PAGLyDjEfbm08i9q+NObve/HmEbnyWiPi3bcZaHK94LqDlSzKxGYjpUYOxlrBNzr8nSXiw xqrrl0Il0qUL1pSS5+r7qZ5ntSGNJaMHzyytZ621zf/DhtjXbB5LGhJkSjZLK+2PFvAGL/ QS7Jk74FsL2kEZDAggZVlASuasRk5H9mSAcjbIb7UVXJSMT/FL5++N8mLNoyobkFTe4cJR mIOBA8dyzlkVXBwVfG3pBTCySgKA0zc1BxFhafWqrA+eFfB0QxRCjZogA6RTceKfxJzNIt MjhuYCRHueCfR0fIyfu0E6IvDJRO+HqCwUkWF6CPDTn8KAlEH6+PcSp0eJHqxw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705608925; a=rsa-sha256; cv=none; b=jTRCej+S2PhlWzFI/60VaLI/ibRLxS/UO0tsaDDCxNahXu42NLrrxqBFCWGagWQCICXOqi g00pX1k07W7Ao5rzAVwZH3egVBtECv+JCVgiVNRmiG95cAdY6gP0WDS6p+zBp2m6nX7VO1 5HkM715MeJ/NXCPAyDTNP4lTXR2x7rtIntSxlRs6yd4ipnLRCYYZfSB7nojbH1+tGFb52F kpVDs4s1SybjV4pY3MXRzgbK67cZmw4yMg8mCNkeCHDVpZ0pHMnxYReXR750YawMxRfHL0 C0BWTPEA4QWggMPAH72EKVvIdUEqa/qlldG3H62bpc496gdv5l2TxLVlP/WUQw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGDWd20JFzLvN; Thu, 18 Jan 2024 20:15:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IKFP9i068402; Thu, 18 Jan 2024 20:15:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IKFPEJ068399; Thu, 18 Jan 2024 20:15:25 GMT (envelope-from git) Date: Thu, 18 Jan 2024 20:15:25 GMT Message-Id: <202401182015.40IKFPEJ068399@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marius Strobl Subject: git: e7fe996990a8 - stable/13 - uart(4): Honor hardware state of NS8250-class for tsw_busy List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: marius X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e7fe996990a8bdb13632a5137731dc57549f05be Auto-Submitted: auto-generated The branch stable/13 has been updated by marius: URL: https://cgit.FreeBSD.org/src/commit/?id=e7fe996990a8bdb13632a5137731dc57549f05be commit e7fe996990a8bdb13632a5137731dc57549f05be Author: Marius Strobl AuthorDate: 2024-01-12 22:27:07 +0000 Commit: Marius Strobl CommitDate: 2024-01-18 20:14:56 +0000 uart(4): Honor hardware state of NS8250-class for tsw_busy In 9750d9e5, I brought the equivalent of the TS_BUSY flag back in a mostly hardware-agnostic way in order to fix tty_drain() and, thus, TIOCDRAIN for UARTs with TX FIFOs. This proved to be sufficient for fixing the regression reported. So in light of the release cycle of FreeBSD 10.3, I decided that this change was be good enough for the time being and opted to go with the smallest possible yet generic (for all UARTs driven by uart(4)) solution addressing the problem at hand. However, at least for the NS8250-class the above isn't a complete fix as these UARTs only trigger an interrupt when the TX FIFO became empty. At this point, there still can be an outstanding character left in the transmit shift register as indicated via the LSR. Thus, this change adds the 3rd (besides the tty(4) and generic uart(4) bits) part I had in my tree ever since, adding a uart_txbusy method to be queried in addition for tsw_busy and hooking it up as appropriate for the NS8250-class. As it turns out, the exact equivalent of this 3rd part later on was implemented for uftdi(4) in 9ad221a5. While at it, explain the rational behind the deliberately missing locking in uart_tty_busy() (also applying to the generic sc_txbusy testing already present). (cherry picked from commit 353e4c5a068d06b0d6dcfa9eb736ecb16e9eae45) --- sys/arm/nvidia/tegra_uart.c | 3 ++- sys/dev/uart/uart_dev_ns8250.c | 14 +++++++++++++- sys/dev/uart/uart_dev_ns8250.h | 1 + sys/dev/uart/uart_dev_snps.c | 1 + sys/dev/uart/uart_dev_ti8250.c | 1 + sys/dev/uart/uart_if.m | 21 +++++++++++++++++++++ sys/dev/uart/uart_tty.c | 14 ++++++++++++-- sys/mips/cavium/uart_dev_oct16550.c | 17 ++++++++++++++--- sys/mips/ingenic/jz4780_uart.c | 3 ++- 9 files changed, 67 insertions(+), 8 deletions(-) diff --git a/sys/arm/nvidia/tegra_uart.c b/sys/arm/nvidia/tegra_uart.c index 4332976ea187..fe2701c02cb4 100644 --- a/sys/arm/nvidia/tegra_uart.c +++ b/sys/arm/nvidia/tegra_uart.c @@ -136,6 +136,7 @@ static kobj_method_t tegra_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD(uart_grab, tegra_uart_grab), KOBJMETHOD(uart_ungrab, tegra_uart_ungrab), KOBJMETHOD_END @@ -237,7 +238,7 @@ static device_method_t tegra_uart_bus_methods[] = { DEVMETHOD(device_probe, tegra_uart_probe), DEVMETHOD(device_attach, uart_bus_attach), DEVMETHOD(device_detach, tegra_uart_detach), - { 0, 0 } + DEVMETHOD_END }; static driver_t tegra_uart_driver = { diff --git a/sys/dev/uart/uart_dev_ns8250.c b/sys/dev/uart/uart_dev_ns8250.c index ec9aea18379a..879fe6e04a70 100644 --- a/sys/dev/uart/uart_dev_ns8250.c +++ b/sys/dev/uart/uart_dev_ns8250.c @@ -392,9 +392,10 @@ static kobj_method_t ns8250_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD(uart_grab, ns8250_bus_grab), KOBJMETHOD(uart_ungrab, ns8250_bus_ungrab), - { 0, 0 } + KOBJMETHOD_END }; struct uart_class uart_ns8250_class = { @@ -1048,6 +1049,17 @@ ns8250_bus_transmit(struct uart_softc *sc) return (0); } +bool +ns8250_bus_txbusy(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + + if ((uart_getreg(bas, REG_LSR) & (LSR_TEMT | LSR_THRE)) != + (LSR_TEMT | LSR_THRE)) + return (true); + return (false); +} + void ns8250_bus_grab(struct uart_softc *sc) { diff --git a/sys/dev/uart/uart_dev_ns8250.h b/sys/dev/uart/uart_dev_ns8250.h index 357f4e7f80df..324ff72f6e5d 100644 --- a/sys/dev/uart/uart_dev_ns8250.h +++ b/sys/dev/uart/uart_dev_ns8250.h @@ -57,6 +57,7 @@ int ns8250_bus_receive(struct uart_softc *); int ns8250_bus_setsig(struct uart_softc *, int); int ns8250_bus_transmit(struct uart_softc *); void ns8250_bus_grab(struct uart_softc *); +bool ns8250_bus_txbusy(struct uart_softc *); void ns8250_bus_ungrab(struct uart_softc *); #endif /* _DEV_UART_DEV_NS8250_H_ */ diff --git a/sys/dev/uart/uart_dev_snps.c b/sys/dev/uart/uart_dev_snps.c index 1e3192fe3ab2..7149a13b7004 100644 --- a/sys/dev/uart/uart_dev_snps.c +++ b/sys/dev/uart/uart_dev_snps.c @@ -102,6 +102,7 @@ static kobj_method_t snps_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD(uart_grab, ns8250_bus_grab), KOBJMETHOD(uart_ungrab, ns8250_bus_ungrab), KOBJMETHOD_END diff --git a/sys/dev/uart/uart_dev_ti8250.c b/sys/dev/uart/uart_dev_ti8250.c index 5a5fc97fd04e..96639f365a9d 100644 --- a/sys/dev/uart/uart_dev_ti8250.c +++ b/sys/dev/uart/uart_dev_ti8250.c @@ -106,6 +106,7 @@ static kobj_method_t ti8250_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD_END }; diff --git a/sys/dev/uart/uart_if.m b/sys/dev/uart/uart_if.m index 516e8b0811df..7efe63a10248 100644 --- a/sys/dev/uart/uart_if.m +++ b/sys/dev/uart/uart_if.m @@ -38,6 +38,17 @@ INTERFACE uart; +CODE { + static uart_txbusy_t uart_default_txbusy; + + static bool + uart_default_txbusy(struct uart_softc *this __unused) + { + + return (false); + } +}; + # attach() - attach hardware. # This method is called when the device is being attached. All resources # have been allocated. The transmit and receive buffers exist, but no @@ -141,6 +152,16 @@ METHOD int transmit { struct uart_softc *this; }; +# txbusy() - report if Tx is still busy. +# This method is called by the tty glue for reporting upward that output is +# still being drained despite sc_txbusy unset. Non-DEFAULT implementations +# allow for extra checks, i. e. beyond what can be determined in ipend(), +# that the Tx path actually is idle. For example, whether the last character +# has left the transmit shift register in addition to the FIFO being empty. +METHOD bool txbusy { + struct uart_softc *this; +} DEFAULT uart_default_txbusy; + # grab() - Up call from the console to the upper layers of the driver when # the kernel asks to grab the console. This is valid only for console # drivers. This method is responsible for transitioning the hardware diff --git a/sys/dev/uart/uart_tty.c b/sys/dev/uart/uart_tty.c index 0c69fa25f6cf..736c756322a4 100644 --- a/sys/dev/uart/uart_tty.c +++ b/sys/dev/uart/uart_tty.c @@ -389,9 +389,19 @@ uart_tty_busy(struct tty *tp) sc = tty_softc(tp); if (sc == NULL || sc->sc_leaving) - return (FALSE); + return (false); - return (sc->sc_txbusy); + /* + * The tty locking is sufficient here; we may lose the race against + * uart_bus_ihand()/uart_intr() clearing sc_txbusy underneath us, in + * which case we will incorrectly but non-fatally report a busy Tx + * path upward. However, tty locking ensures that no additional output + * is enqueued before UART_TXBUSY() returns, which means that there + * are no Tx interrupts to be lost. + */ + if (sc->sc_txbusy) + return (true); + return (UART_TXBUSY(sc)); } static struct ttydevsw uart_tty_class = { diff --git a/sys/mips/cavium/uart_dev_oct16550.c b/sys/mips/cavium/uart_dev_oct16550.c index 2a932da73dcb..bb9776352819 100644 --- a/sys/mips/cavium/uart_dev_oct16550.c +++ b/sys/mips/cavium/uart_dev_oct16550.c @@ -51,8 +51,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * */ #include @@ -397,6 +395,7 @@ static int oct16550_bus_probe(struct uart_softc *); static int oct16550_bus_receive(struct uart_softc *); static int oct16550_bus_setsig(struct uart_softc *, int); static int oct16550_bus_transmit(struct uart_softc *); +static bool oct16550_bus_txbusy(struct uart_softc *); static void oct16550_bus_grab(struct uart_softc *); static void oct16550_bus_ungrab(struct uart_softc *); @@ -412,9 +411,10 @@ static kobj_method_t oct16550_methods[] = { KOBJMETHOD(uart_receive, oct16550_bus_receive), KOBJMETHOD(uart_setsig, oct16550_bus_setsig), KOBJMETHOD(uart_transmit, oct16550_bus_transmit), + KOBJMETHOD(uart_txbusy, oct16550_bus_txbusy), KOBJMETHOD(uart_grab, oct16550_bus_grab), KOBJMETHOD(uart_ungrab, oct16550_bus_ungrab), - { 0, 0 } + KOBJMETHOD_END }; struct uart_class uart_oct16550_class = { @@ -812,6 +812,17 @@ oct16550_bus_transmit (struct uart_softc *sc) return (0); } +static bool +oct16550_bus_txbusy(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + + if ((uart_getreg(bas, REG_LSR) & (LSR_TEMT | LSR_THRE)) != + (LSR_TEMT | LSR_THRE)) + return (true); + return (false); +} + static void oct16550_bus_grab(struct uart_softc *sc) { diff --git a/sys/mips/ingenic/jz4780_uart.c b/sys/mips/ingenic/jz4780_uart.c index 897ae73ec210..d46d2566c178 100644 --- a/sys/mips/ingenic/jz4780_uart.c +++ b/sys/mips/ingenic/jz4780_uart.c @@ -93,6 +93,7 @@ static kobj_method_t jz4780_uart_methods[] = { KOBJMETHOD(uart_receive, ns8250_bus_receive), KOBJMETHOD(uart_setsig, ns8250_bus_setsig), KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD(uart_txbusy, ns8250_bus_txbusy), KOBJMETHOD(uart_grab, ns8250_bus_grab), KOBJMETHOD(uart_ungrab, ns8250_bus_ungrab), KOBJMETHOD_END @@ -205,7 +206,7 @@ static device_method_t jz4780_uart_bus_methods[] = { DEVMETHOD(device_probe, jz4780_uart_probe), DEVMETHOD(device_attach, uart_bus_attach), DEVMETHOD(device_detach, jz4780_uart_detach), - { 0, 0 } + DEVMETHOD_END }; static driver_t jz4780_uart_driver = { From nobody Thu Jan 18 21:08:44 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGFj93MLjz570bN; Thu, 18 Jan 2024 21:08:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGFj913l4z4hWK; Thu, 18 Jan 2024 21:08:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612125; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AXnqHvjFJdWnogUR07Q7oqcwciDbfFWaICvtgp3uKno=; b=P1F+H3nZL4hNgaYW7eeUeQxEh5Y2LJO6dr+haMEOnCXvscy3y0OyoQF6Wg7bvnFMvyenc9 pznLqHeSw7O4rDIo5UH5HvmBk/UsgffD+cYMJZ9Liq8bkQ/RKQyVlKJA50oI8+SU/ZlYTO JUZXmLMdWGc1Mwxdf0XZ03Afuw17LZ7rRXXrPotdvTzaU38GBh1mDI0UVZyuwfrnGypwUe QrGSzKhaGnXeAeU6s6xliNj5QfNfy4sqXbE0SSvKnNgybehiVUNz8UG3yItzDyM/nEW8ZJ 8GCAObt6PW0TDdnW811UB0/VTQSUWarFdqeClzcM7jOOHJjVeJ7ftFESump95g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612125; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AXnqHvjFJdWnogUR07Q7oqcwciDbfFWaICvtgp3uKno=; b=l6w7t/mMR75LHicPcgKsbWKa4gUQDz/cPR1GBzJKmd8ivY+FXqwAloM/I1zfsmdKHzTJH/ ua5cGndSUUGUJErSWVQzVbHjpXdOZ4o5BKQNYi2fVmVxe4QxVMDx4Izq1V+6e5j3pKw8+r yjSiRL1UF/pob/1AKV+83v6lhvXT4HBhDXrJDHn2AyhUrhgjhyZbST2xivPyrs1VPnx+WK zOFL8XEroq6hpdwwBPkHn4HptUiutiYU+5IfAS4XXsG+W2ccaGDmdC5/O+ibqRUBMYu6xi AopaOCvoLCmSjeBPxJVOk8nUHy+pSBhKXaoOiyGoJMmSw10rHV8dHf1q9qxfTw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705612125; a=rsa-sha256; cv=none; b=bMkgi46JDXT3c5ayHri4Ivjz0wFh30bK9UIsldNYZnWyKK4LIItW8O5h9kw5STpOwpd7c7 mt5hfj5AWOrY3XBpB3PpzmLxjlbRgwJeF4g06xoc08HzvyobxJlqJOI4svaMF4So5bokVR Ukvk/ZIO+pfg2s4lkr/gwX0klEkJfmW2DbYQkt0a0IuA9e4RFT/hucrxh7XWanKefSJMHW L4DqSw2XT8GWBOnFtsE/IqsWvqeXCCxDxy3agTw3MzbIYHLpt1R0L5eDM4I9rigYKhnmjJ k1GcIE0sa7W6QQaGLwSMzoWvfYG8y9CDI589iPgF2hm/Y8DVjpXGFK5aKLQsxw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGFj9078bzMxc; Thu, 18 Jan 2024 21:08:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IL8jgS053095; Thu, 18 Jan 2024 21:08:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IL8itX053092; Thu, 18 Jan 2024 21:08:44 GMT (envelope-from git) Date: Thu, 18 Jan 2024 21:08:44 GMT Message-Id: <202401182108.40IL8itX053092@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: cc02fa8da105 - stable/14 - libthr: thr_attr.c: Clarity, whitespace and style List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: cc02fa8da105294e9315546507c8216221dafbc1 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=cc02fa8da105294e9315546507c8216221dafbc1 commit cc02fa8da105294e9315546507c8216221dafbc1 Author: Olivier Certner AuthorDate: 2023-11-24 16:00:53 +0000 Commit: Olivier Certner CommitDate: 2024-01-18 21:07:46 +0000 libthr: thr_attr.c: Clarity, whitespace and style Also, remove most comments, which don't add value. Reviewed by: emaste Approved by: markj (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D43005 (cherry picked from commit bd61c1e89dc4a40ba696de1785d423978e1c2147) --- lib/libthr/thread/thr_attr.c | 471 ++++++++++++++++++------------------------- 1 file changed, 193 insertions(+), 278 deletions(-) diff --git a/lib/libthr/thread/thr_attr.c b/lib/libthr/thread/thr_attr.c index 9740bed6ebd3..decbcb949167 100644 --- a/lib/libthr/thread/thr_attr.c +++ b/lib/libthr/thread/thr_attr.c @@ -113,26 +113,15 @@ __weak_reference(_thr_attr_destroy, pthread_attr_destroy); int _thr_attr_destroy(pthread_attr_t *attr) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL) - /* Invalid argument: */ - ret = EINVAL; - else { - if ((*attr)->cpuset != NULL) - free((*attr)->cpuset); - /* Free the memory allocated to the attribute object: */ - free(*attr); + return (EINVAL); - /* - * Leave the attribute pointer NULL now that the memory - * has been freed: - */ - *attr = NULL; - ret = 0; - } - return (ret); + if ((*attr)->cpuset != NULL) + free((*attr)->cpuset); + free(*attr); + *attr = NULL; + return (0); } __weak_reference(_thr_attr_get_np, pthread_attr_get_np); @@ -141,36 +130,44 @@ __weak_reference(_thr_attr_get_np, _pthread_attr_get_np); int _thr_attr_get_np(pthread_t pthread, pthread_attr_t *dstattr) { - struct pthread *curthread; struct pthread_attr attr, *dst; - int ret; - size_t kern_size; + struct pthread *curthread; + size_t kern_size; + int error; if (pthread == NULL || dstattr == NULL || (dst = *dstattr) == NULL) return (EINVAL); + kern_size = _get_kern_cpuset_size(); + if (dst->cpuset == NULL) { dst->cpuset = calloc(1, kern_size); dst->cpusetsize = kern_size; } + curthread = _get_curthread(); - if ((ret = _thr_find_thread(curthread, pthread, /*include dead*/0)) != 0) - return (ret); + /* Arg 0 is to include dead threads. */ + if ((error = _thr_find_thread(curthread, pthread, 0)) != 0) + return (error); + attr = pthread->attr; if (pthread->flags & THR_FLAGS_DETACHED) attr.flags |= PTHREAD_DETACHED; - ret = cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, TID(pthread), - dst->cpusetsize, dst->cpuset); - if (ret == -1) - ret = errno; + + error = cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, TID(pthread), + dst->cpusetsize, dst->cpuset); + if (error == -1) + error = errno; + THR_THREAD_UNLOCK(curthread, pthread); - if (ret == 0) { - memcpy(&dst->pthread_attr_start_copy, - &attr.pthread_attr_start_copy, - offsetof(struct pthread_attr, pthread_attr_end_copy) - - offsetof(struct pthread_attr, pthread_attr_start_copy)); - } - return (ret); + + if (error == 0) + memcpy(&dst->pthread_attr_start_copy, + &attr.pthread_attr_start_copy, + offsetof(struct pthread_attr, pthread_attr_end_copy) - + offsetof(struct pthread_attr, pthread_attr_start_copy)); + + return (0); } __weak_reference(_thr_attr_getdetachstate, pthread_attr_getdetachstate); @@ -179,22 +176,15 @@ __weak_reference(_thr_attr_getdetachstate, _pthread_attr_getdetachstate); int _thr_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || detachstate == NULL) - ret = EINVAL; - else { - /* Check if the detached flag is set: */ - if ((*attr)->flags & PTHREAD_DETACHED) - /* Return detached: */ - *detachstate = PTHREAD_CREATE_DETACHED; - else - /* Return joinable: */ - *detachstate = PTHREAD_CREATE_JOINABLE; - ret = 0; - } - return (ret); + return (EINVAL); + + if ((*attr)->flags & PTHREAD_DETACHED) + *detachstate = PTHREAD_CREATE_DETACHED; + else + *detachstate = PTHREAD_CREATE_JOINABLE; + return (0); } __weak_reference(_thr_attr_getguardsize, pthread_attr_getguardsize); @@ -204,17 +194,12 @@ int _thr_attr_getguardsize(const pthread_attr_t * __restrict attr, size_t * __restrict guardsize) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || guardsize == NULL) - ret = EINVAL; - else { - /* Return the guard size: */ - *guardsize = (*attr)->guardsize_attr; - ret = 0; - } - return (ret); + return (EINVAL); + + *guardsize = (*attr)->guardsize_attr; + return (0); } __weak_reference(_thr_attr_getinheritsched, pthread_attr_getinheritsched); @@ -224,14 +209,12 @@ int _thr_attr_getinheritsched(const pthread_attr_t * __restrict attr, int * __restrict sched_inherit) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL)) - ret = EINVAL; - else - *sched_inherit = (*attr)->sched_inherit; + if (attr == NULL || *attr == NULL) + return (EINVAL); - return (ret); + *sched_inherit = (*attr)->sched_inherit; + return (0); } __weak_reference(_thr_attr_getschedparam, pthread_attr_getschedparam); @@ -241,14 +224,12 @@ int _thr_attr_getschedparam(const pthread_attr_t * __restrict attr, struct sched_param * __restrict param) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL) || (param == NULL)) - ret = EINVAL; - else - param->sched_priority = (*attr)->prio; + if (attr == NULL || *attr == NULL || param == NULL) + return (EINVAL); - return (ret); + param->sched_priority = (*attr)->prio; + return (0); } __weak_reference(_thr_attr_getschedpolicy, pthread_attr_getschedpolicy); @@ -258,14 +239,12 @@ int _thr_attr_getschedpolicy(const pthread_attr_t * __restrict attr, int * __restrict policy) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL) || (policy == NULL)) - ret = EINVAL; - else - *policy = (*attr)->sched_policy; + if (attr == NULL || *attr == NULL || policy == NULL) + return (EINVAL); - return (ret); + *policy = (*attr)->sched_policy; + return (0); } __weak_reference(_thr_attr_getscope, pthread_attr_getscope); @@ -275,17 +254,13 @@ int _thr_attr_getscope(const pthread_attr_t * __restrict attr, int * __restrict contentionscope) { - int ret = 0; - - if ((attr == NULL) || (*attr == NULL) || (contentionscope == NULL)) - /* Return an invalid argument: */ - ret = EINVAL; - else - *contentionscope = (*attr)->flags & PTHREAD_SCOPE_SYSTEM ? - PTHREAD_SCOPE_SYSTEM : PTHREAD_SCOPE_PROCESS; + if (attr == NULL || *attr == NULL || contentionscope == NULL) + return (EINVAL); - return (ret); + *contentionscope = (*attr)->flags & PTHREAD_SCOPE_SYSTEM ? + PTHREAD_SCOPE_SYSTEM : PTHREAD_SCOPE_PROCESS; + return (0); } __weak_reference(_pthread_attr_getstack, pthread_attr_getstack); @@ -294,19 +269,14 @@ int _pthread_attr_getstack(const pthread_attr_t * __restrict attr, void ** __restrict stackaddr, size_t * __restrict stacksize) { - int ret; - - /* Check for invalid arguments: */ - if (attr == NULL || *attr == NULL || stackaddr == NULL - || stacksize == NULL ) - ret = EINVAL; - else { - /* Return the stack address and size */ - *stackaddr = (*attr)->stackaddr_attr; - *stacksize = (*attr)->stacksize_attr; - ret = 0; - } - return (ret); + + if (attr == NULL || *attr == NULL || stackaddr == NULL || + stacksize == NULL) + return (EINVAL); + + *stackaddr = (*attr)->stackaddr_attr; + *stacksize = (*attr)->stacksize_attr; + return (0); } __weak_reference(_thr_attr_getstackaddr, pthread_attr_getstackaddr); @@ -315,17 +285,12 @@ __weak_reference(_thr_attr_getstackaddr, _pthread_attr_getstackaddr); int _thr_attr_getstackaddr(const pthread_attr_t *attr, void **stackaddr) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || stackaddr == NULL) - ret = EINVAL; - else { - /* Return the stack address: */ - *stackaddr = (*attr)->stackaddr_attr; - ret = 0; - } - return (ret); + return (EINVAL); + + *stackaddr = (*attr)->stackaddr_attr; + return (0); } __weak_reference(_thr_attr_getstacksize, pthread_attr_getstacksize); @@ -335,17 +300,12 @@ int _thr_attr_getstacksize(const pthread_attr_t * __restrict attr, size_t * __restrict stacksize) { - int ret; - - /* Check for invalid arguments: */ - if (attr == NULL || *attr == NULL || stacksize == NULL) - ret = EINVAL; - else { - /* Return the stack size: */ - *stacksize = (*attr)->stacksize_attr; - ret = 0; - } - return (ret); + + if (attr == NULL || *attr == NULL || stacksize == NULL) + return (EINVAL); + + *stacksize = (*attr)->stacksize_attr; + return (0); } __weak_reference(_thr_attr_init, pthread_attr_init); @@ -354,40 +314,30 @@ __weak_reference(_thr_attr_init, _pthread_attr_init); int _thr_attr_init(pthread_attr_t *attr) { - int ret; - pthread_attr_t pattr; + pthread_attr_t pattr; _thr_check_init(); - /* Allocate memory for the attribute object: */ - if ((pattr = (pthread_attr_t) malloc(sizeof(struct pthread_attr))) == NULL) - /* Insufficient memory: */ - ret = ENOMEM; - else { - /* Initialise the attribute object with the defaults: */ - memcpy(pattr, &_pthread_attr_default, sizeof(struct pthread_attr)); - - /* Return a pointer to the attribute object: */ - *attr = pattr; - ret = 0; - } - return (ret); + if ((pattr = malloc(sizeof(*pattr))) == NULL) + return (ENOMEM); + + memcpy(pattr, &_pthread_attr_default, sizeof(struct pthread_attr)); + *attr = pattr; + return (0); } -__weak_reference(_pthread_attr_setcreatesuspend_np, pthread_attr_setcreatesuspend_np); +__weak_reference(_pthread_attr_setcreatesuspend_np, \ + pthread_attr_setcreatesuspend_np); int _pthread_attr_setcreatesuspend_np(pthread_attr_t *attr) { - int ret; - if (attr == NULL || *attr == NULL) { - ret = EINVAL; - } else { - (*attr)->suspend = THR_CREATE_SUSPENDED; - ret = 0; - } - return (ret); + if (attr == NULL || *attr == NULL) + return (EINVAL); + + (*attr)->suspend = THR_CREATE_SUSPENDED; + return (0); } __weak_reference(_thr_attr_setdetachstate, pthread_attr_setdetachstate); @@ -396,24 +346,17 @@ __weak_reference(_thr_attr_setdetachstate, _pthread_attr_setdetachstate); int _thr_attr_setdetachstate(pthread_attr_t *attr, int detachstate) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || (detachstate != PTHREAD_CREATE_DETACHED && detachstate != PTHREAD_CREATE_JOINABLE)) - ret = EINVAL; - else { - /* Check if detached state: */ - if (detachstate == PTHREAD_CREATE_DETACHED) - /* Set the detached flag: */ - (*attr)->flags |= PTHREAD_DETACHED; - else - /* Reset the detached flag: */ - (*attr)->flags &= ~PTHREAD_DETACHED; - ret = 0; - } - return (ret); + return (EINVAL); + + if (detachstate == PTHREAD_CREATE_DETACHED) + (*attr)->flags |= PTHREAD_DETACHED; + else + (*attr)->flags &= ~PTHREAD_DETACHED; + return (0); } __weak_reference(_thr_attr_setguardsize, pthread_attr_setguardsize); @@ -422,17 +365,12 @@ __weak_reference(_thr_attr_setguardsize, _pthread_attr_setguardsize); int _thr_attr_setguardsize(pthread_attr_t *attr, size_t guardsize) { - int ret; - /* Check for invalid arguments. */ if (attr == NULL || *attr == NULL) - ret = EINVAL; - else { - /* Save the stack size. */ - (*attr)->guardsize_attr = guardsize; - ret = 0; - } - return (ret); + return (EINVAL); + + (*attr)->guardsize_attr = guardsize; + return (0); } __weak_reference(_thr_attr_setinheritsched, pthread_attr_setinheritsched); @@ -441,17 +379,16 @@ __weak_reference(_thr_attr_setinheritsched, _pthread_attr_setinheritsched); int _thr_attr_setinheritsched(pthread_attr_t *attr, int sched_inherit) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL)) - ret = EINVAL; - else if (sched_inherit != PTHREAD_INHERIT_SCHED && - sched_inherit != PTHREAD_EXPLICIT_SCHED) - ret = ENOTSUP; - else - (*attr)->sched_inherit = sched_inherit; + if (attr == NULL || *attr == NULL) + return (EINVAL); + + if (sched_inherit != PTHREAD_INHERIT_SCHED && + sched_inherit != PTHREAD_EXPLICIT_SCHED) + return (ENOTSUP); - return (ret); + (*attr)->sched_inherit = sched_inherit; + return (0); } __weak_reference(_thr_attr_setschedparam, pthread_attr_setschedparam); @@ -463,7 +400,7 @@ _thr_attr_setschedparam(pthread_attr_t * __restrict attr, { int policy; - if ((attr == NULL) || (*attr == NULL)) + if (attr == NULL || *attr == NULL) return (EINVAL); if (param == NULL) @@ -474,7 +411,7 @@ _thr_attr_setschedparam(pthread_attr_t * __restrict attr, if (policy == SCHED_FIFO || policy == SCHED_RR) { if (param->sched_priority < _thr_priorities[policy-1].pri_min || param->sched_priority > _thr_priorities[policy-1].pri_max) - return (ENOTSUP); + return (ENOTSUP); } else { /* * Ignore it for SCHED_OTHER now, patches for glib ports @@ -494,17 +431,15 @@ __weak_reference(_thr_attr_setschedpolicy, _pthread_attr_setschedpolicy); int _thr_attr_setschedpolicy(pthread_attr_t *attr, int policy) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL)) - ret = EINVAL; - else if ((policy < SCHED_FIFO) || (policy > SCHED_RR)) { - ret = ENOTSUP; - } else { - (*attr)->sched_policy = policy; - (*attr)->prio = _thr_priorities[policy-1].pri_default; - } - return (ret); + if (attr == NULL || *attr == NULL) + return (EINVAL); + if (policy < SCHED_FIFO || policy > SCHED_RR) + return (ENOTSUP); + + (*attr)->sched_policy = policy; + (*attr)->prio = _thr_priorities[policy-1].pri_default; + return (0); } __weak_reference(_thr_attr_setscope, pthread_attr_setscope); @@ -513,41 +448,33 @@ __weak_reference(_thr_attr_setscope, _pthread_attr_setscope); int _thr_attr_setscope(pthread_attr_t *attr, int contentionscope) { - int ret = 0; - - if ((attr == NULL) || (*attr == NULL)) { - /* Return an invalid argument: */ - ret = EINVAL; - } else if ((contentionscope != PTHREAD_SCOPE_PROCESS) && - (contentionscope != PTHREAD_SCOPE_SYSTEM)) { - ret = EINVAL; - } else if (contentionscope == PTHREAD_SCOPE_SYSTEM) { + + if (attr == NULL || *attr == NULL || + (contentionscope != PTHREAD_SCOPE_PROCESS && + contentionscope != PTHREAD_SCOPE_SYSTEM)) + return (EINVAL); + + if (contentionscope == PTHREAD_SCOPE_SYSTEM) (*attr)->flags |= contentionscope; - } else { + else (*attr)->flags &= ~PTHREAD_SCOPE_SYSTEM; - } - return (ret); + return (0); } __weak_reference(_pthread_attr_setstack, pthread_attr_setstack); int _pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, - size_t stacksize) + size_t stacksize) { - int ret; - - /* Check for invalid arguments: */ - if (attr == NULL || *attr == NULL || stackaddr == NULL - || stacksize < PTHREAD_STACK_MIN) - ret = EINVAL; - else { - /* Save the stack address and stack size */ - (*attr)->stackaddr_attr = stackaddr; - (*attr)->stacksize_attr = stacksize; - ret = 0; - } - return (ret); + + if (attr == NULL || *attr == NULL || stackaddr == NULL || + stacksize < PTHREAD_STACK_MIN) + return (EINVAL); + + (*attr)->stackaddr_attr = stackaddr; + (*attr)->stacksize_attr = stacksize; + return (0); } __weak_reference(_thr_attr_setstackaddr, pthread_attr_setstackaddr); @@ -556,17 +483,12 @@ __weak_reference(_thr_attr_setstackaddr, _pthread_attr_setstackaddr); int _thr_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || stackaddr == NULL) - ret = EINVAL; - else { - /* Save the stack address: */ - (*attr)->stackaddr_attr = stackaddr; - ret = 0; - } - return(ret); + return (EINVAL); + + (*attr)->stackaddr_attr = stackaddr; + return (0); } __weak_reference(_thr_attr_setstacksize, pthread_attr_setstacksize); @@ -575,17 +497,12 @@ __weak_reference(_thr_attr_setstacksize, _pthread_attr_setstacksize); int _thr_attr_setstacksize(pthread_attr_t *attr, size_t stacksize) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || stacksize < PTHREAD_STACK_MIN) - ret = EINVAL; - else { - /* Save the stack size: */ - (*attr)->stacksize_attr = stacksize; - ret = 0; - } - return (ret); + return (EINVAL); + + (*attr)->stacksize_attr = stacksize; + return (0); } static size_t @@ -608,71 +525,69 @@ _get_kern_cpuset_size(void) } __weak_reference(_pthread_attr_setaffinity_np, pthread_attr_setaffinity_np); + int _pthread_attr_setaffinity_np(pthread_attr_t *pattr, size_t cpusetsize, - const cpuset_t *cpusetp) + const cpuset_t *cpusetp) { pthread_attr_t attr; - int ret; + size_t kern_size; if (pattr == NULL || (attr = (*pattr)) == NULL) - ret = EINVAL; - else { - if (cpusetsize == 0 || cpusetp == NULL) { - if (attr->cpuset != NULL) { - free(attr->cpuset); - attr->cpuset = NULL; - attr->cpusetsize = 0; - } - return (0); - } - size_t kern_size = _get_kern_cpuset_size(); - /* Kernel rejects small set, we check it here too. */ - if (cpusetsize < kern_size) - return (ERANGE); - if (cpusetsize > kern_size) { - /* Kernel checks invalid bits, we check it here too. */ - size_t i; - for (i = kern_size; i < cpusetsize; ++i) { - if (((const char *)cpusetp)[i]) - return (EINVAL); - } - } - if (attr->cpuset == NULL) { - attr->cpuset = calloc(1, kern_size); - if (attr->cpuset == NULL) - return (errno); - attr->cpusetsize = kern_size; + return (EINVAL); + + if (cpusetsize == 0 || cpusetp == NULL) { + if (attr->cpuset != NULL) { + free(attr->cpuset); + attr->cpuset = NULL; + attr->cpusetsize = 0; } - memcpy(attr->cpuset, cpusetp, kern_size); - ret = 0; + return (0); + } + + kern_size = _get_kern_cpuset_size(); + /* Kernel rejects small set, we check it here too. */ + if (cpusetsize < kern_size) + return (ERANGE); + if (cpusetsize > kern_size) { + /* Kernel checks invalid bits, we check it here too. */ + size_t i; + for (i = kern_size; i < cpusetsize; ++i) + if (((const char *)cpusetp)[i] != 0) + return (EINVAL); + } + if (attr->cpuset == NULL) { + attr->cpuset = calloc(1, kern_size); + if (attr->cpuset == NULL) + return (errno); + attr->cpusetsize = kern_size; } - return (ret); + memcpy(attr->cpuset, cpusetp, kern_size); + return (0); } __weak_reference(_pthread_attr_getaffinity_np, pthread_attr_getaffinity_np); + int _pthread_attr_getaffinity_np(const pthread_attr_t *pattr, size_t cpusetsize, - cpuset_t *cpusetp) + cpuset_t *cpusetp) { pthread_attr_t attr; - int ret = 0; if (pattr == NULL || (attr = (*pattr)) == NULL) - ret = EINVAL; - else { - /* Kernel rejects small set, we check it here too. */ - size_t kern_size = _get_kern_cpuset_size(); - if (cpusetsize < kern_size) - return (ERANGE); - if (attr->cpuset != NULL) - memcpy(cpusetp, attr->cpuset, MIN(cpusetsize, - attr->cpusetsize)); - else - memset(cpusetp, -1, kern_size); - if (cpusetsize > kern_size) - memset(((char *)cpusetp) + kern_size, 0, - cpusetsize - kern_size); - } - return (ret); + return (EINVAL); + + /* Kernel rejects small set, we check it here too. */ + size_t kern_size = _get_kern_cpuset_size(); + if (cpusetsize < kern_size) + return (ERANGE); + if (attr->cpuset != NULL) + memcpy(cpusetp, attr->cpuset, MIN(cpusetsize, + attr->cpusetsize)); + else + memset(cpusetp, -1, kern_size); + if (cpusetsize > kern_size) + memset(((char *)cpusetp) + kern_size, 0, + cpusetsize - kern_size); + return (0); } From nobody Thu Jan 18 21:08:46 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGFjB31N5z570Vy; Thu, 18 Jan 2024 21:08:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGFjB23Sdz4hKp; Thu, 18 Jan 2024 21:08:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612126; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fkoOORrE0Orq/MubvCMcAd1vHZmXqb7ob/Q/Ygutoq8=; b=IaOD4HWS0HZ7bGlqFzchLDE7mAKocLVw4fD0J9uXaE7sux5iNTUlpLtAtcqCcrghtohiF7 vmHDu9Strkxt/nKFTpmpr7gP8ryRtZp9lcpgc87vmT/hnlv45AgmRPcY4UVlxY3smA16cA gi+kMn2kfv7NBaz3VoOfWgA6GdOmYvkhF+8w4pjCNPe9X48rHsK44XzepgVAwiWu3Q+p9l Vgu7yBpP+IOlcM3TM25QWFLxgKmyDYbDzziydu5zDR9IaQ9OO7Dmt3aYCRp4hSOwpm/oHU Db5LPm8hEIc3gLX8xSVb9hDG1VJcOdZngUhz1OxSeq9A3TNELaX5lJb+ULoalA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612126; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fkoOORrE0Orq/MubvCMcAd1vHZmXqb7ob/Q/Ygutoq8=; b=gmnsf6kn0qwOBtDsWXyECz21qLCJ9Sv7XUQAnxy7xIxe8mNOLtVS33Ljq134Xwskz4XURe YQgowNucYYIRkqehBY+hRPCGaefpOMZLUbrqoi3hVoVjKt+Z1GNSQEYwi8pRFomU1gmOzd 4oKz9Qsnml5MJ2JRAPqp4JmuXjC77edHNeLOuzZTp3AqTXRMuYDyU0hBmWzXt/afwtQuoN 0kBbeVf53cUV58z5ew9xkMvVms10m/3gd/iSJjqqZtbb18g/PU8u8kVmeQHiwMtgYm9SAR +ZGgJOIcJ9C1nbaxGNYed28e8BLCAPXZ3K2vBmraI9NqnBzNaK85putTD3jgMg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705612126; a=rsa-sha256; cv=none; b=EAZFSXMq48FiqK1DIF6qWFwcKy8UgRP9agRWjYNgplLF8fSKwlwy0T/Znjj2ZpX0/wkOeZ CjQwf3K8ZpgCJ5aN/hAXi4BttvhOqn5WzwsLQYH8hERJq7zYoo0kj1TfrNdwuXpla35mhE 7Ekz52Swaxj6o4hLfLgUpsOa+h0Nhxi5df4eP2wstANPMhGYxM25+IVkCjtL5JahXirg0X /cZJbPAId3/Yt2sjL/QixUqnUkUrG6ElLd5RXR1UGEOSaVjI+OZ6G/vSOZA1pNX40MSRRs +2vBxUm9RRBwLjk++LGxuDwayrZt3804Abto4LY4NByWolU3VvCloUjoWmbafg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGFjB171VzMxd; Thu, 18 Jan 2024 21:08:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IL8k8o053157; Thu, 18 Jan 2024 21:08:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IL8k8E053155; Thu, 18 Jan 2024 21:08:46 GMT (envelope-from git) Date: Thu, 18 Jan 2024 21:08:46 GMT Message-Id: <202401182108.40IL8k8E053155@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 6ae07a0424c3 - stable/14 - libthr: thr_attr.c: EINVAL, not ENOTSUP, on invalid arguments List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6ae07a0424c328148e63b46fc7d5eaeeeaa6e28a Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=6ae07a0424c328148e63b46fc7d5eaeeeaa6e28a commit 6ae07a0424c328148e63b46fc7d5eaeeeaa6e28a Author: Olivier Certner AuthorDate: 2023-11-24 21:21:16 +0000 Commit: Olivier Certner CommitDate: 2024-01-18 21:07:53 +0000 libthr: thr_attr.c: EINVAL, not ENOTSUP, on invalid arguments On first read, POSIX may seem ambiguous about the return code for some scheduling-related pthread functions on invalid arguments. But a more thorough reading and a bit of standards archeology strongly suggests that this case should be handled by EINVAL and that ENOTSUP is reserved for implementations providing only part of the functionality required by the POSIX option POSIX_PRIORITY_SCHEDULING (e.g., if an implementation doesn't support SCHED_FIFO, it should return ENOTSUP on a call to, e.g., sched_setscheduler() with 'policy' SCHED_FIFO). This reading is supported by the second sentence of the very definition of ENOTSUP, as worded in CAE/XSI Issue 5 and POSIX Issue 6: "The implementation does not support this feature of the Realtime Feature Group.", and the fact that an additional ENOTSUP case was added to pthread_setschedparam() in Issue 6, which introduces SCHED_SPORADIC, saying that pthread_setschedparam() may return it when attempting to dynamically switch to SCHED_SPORADIC on systems that doesn't support that. glibc, illumos and NetBSD also support that reading by always returning EINVAL, and OpenBSD as well, since it always returns EINVAL but the corresponding code has a comment suggesting returning ENOTSUP for SCHED_FIFO and SCHED_RR, which it effectively doesn't support. Additionally, always returning EINVAL fixes inconsistencies where EINVAL would be returned on some out-of-range values and ENOTSUP on others. Reviewed by: markj Approved by: markj (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D43006 (cherry picked from commit 0eccb45979a8ee3129e11b638ebc4cfa00942b80) --- lib/libthr/thread/thr_attr.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/libthr/thread/thr_attr.c b/lib/libthr/thread/thr_attr.c index decbcb949167..0ccc31b22c13 100644 --- a/lib/libthr/thread/thr_attr.c +++ b/lib/libthr/thread/thr_attr.c @@ -380,13 +380,11 @@ int _thr_attr_setinheritsched(pthread_attr_t *attr, int sched_inherit) { - if (attr == NULL || *attr == NULL) + if (attr == NULL || *attr == NULL || + (sched_inherit != PTHREAD_INHERIT_SCHED && + sched_inherit != PTHREAD_EXPLICIT_SCHED)) return (EINVAL); - if (sched_inherit != PTHREAD_INHERIT_SCHED && - sched_inherit != PTHREAD_EXPLICIT_SCHED) - return (ENOTSUP); - (*attr)->sched_inherit = sched_inherit; return (0); } @@ -400,18 +398,15 @@ _thr_attr_setschedparam(pthread_attr_t * __restrict attr, { int policy; - if (attr == NULL || *attr == NULL) + if (attr == NULL || *attr == NULL || param == NULL) return (EINVAL); - if (param == NULL) - return (ENOTSUP); - policy = (*attr)->sched_policy; if (policy == SCHED_FIFO || policy == SCHED_RR) { if (param->sched_priority < _thr_priorities[policy-1].pri_min || param->sched_priority > _thr_priorities[policy-1].pri_max) - return (ENOTSUP); + return (EINVAL); } else { /* * Ignore it for SCHED_OTHER now, patches for glib ports @@ -432,10 +427,9 @@ int _thr_attr_setschedpolicy(pthread_attr_t *attr, int policy) { - if (attr == NULL || *attr == NULL) + if (attr == NULL || *attr == NULL || + policy < SCHED_FIFO || policy > SCHED_RR) return (EINVAL); - if (policy < SCHED_FIFO || policy > SCHED_RR) - return (ENOTSUP); (*attr)->sched_policy = policy; (*attr)->prio = _thr_priorities[policy-1].pri_default; From nobody Thu Jan 18 21:08:47 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGFjC4Sd8z570bP; Thu, 18 Jan 2024 21:08:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGFjC3LFJz4hbD; Thu, 18 Jan 2024 21:08:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612127; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fHT3cZlkBjU/0nSVobdIsI16EWu/PQ+6I3bu8ayfc0c=; b=plrfzgTfaXJEn4UDUiuclrYxf9iQRt5kOH8zEWJahC1KXbwlbNkwRrlP8PXYuN6AKPXN/N pwyuC1fSk3ewmTO7AG55OaLH3dv26vt+D9XUkIrGITHsSf0ozqi9pkkvusHY4xlU5pNyUj DKvMT0YsY9W0pfRfcSKP7Tnnuoznd6W2gupn9dJaQCD0k9STo+srHBLnP5MAYnhZwqqCxp dw/A12vjXtRg+MtRxXODgyP3+NWHVeX9KOY0FfMPATKr+pccPOddtfVtHgBt4mpZ8m92Dg eqkF4a4TvgbUzwRSzePVkff8dlPAI1rNn+rPqjGwV1whINoqyZH2GmVK05TvtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612127; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fHT3cZlkBjU/0nSVobdIsI16EWu/PQ+6I3bu8ayfc0c=; b=UxKTWiI1qCMQIZdOToDMjwF4Zi/DjohL7b1Hwgc4YHdH6J5lSAK7qR8oxQknMxbu63CTnB TU/68hKclP/NFfmQITSZpFCbYzce6oP2xweXMyMAnlBdGzF5mbQr4s0AHT8s3c5lMbRiip Rf+UhwVirw2sEVA6As0hM1pcMuXEdL/G9mPaNJXbGJPZCtvhhZxtpkjQn8mQDcWXxVKZJG lrvHw/gZ7tQgXOte2CJ2NOENyhCE6Oa9tskuW5HHKtLsRDqtQNSi/pYoIPsghdJh/ITrOw DhWS+xyZCXZnkQIKNF9STu+/PEYRsE1vr4T8T3EWYgc8bv6XbyJxVjmrhmn3nQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705612127; a=rsa-sha256; cv=none; b=EsjF3K+vg+FIf9rnPy2qy4d9ckuXkx68kP9Pz7Kf1/4g92GdCPgB2iaengEsD7koskCE4j sPTcHGTDlzrWKblmCSPz7k/IWcmkkTnaiR5c1Bh6iRZI4PHvX8HDM5voOPf22CWdFudGuZ dlERQ7hm+C54IIJzjDYSHTK+oTbsq0iywDd9+JagSBfLwbhjfrxXj2NXVOrNn8sibDo0P4 x4M+8nXt7E5J0oDAPs+fRRt1h4ajVuH1ZZRW+GCxTjOXiNI8RYl0BK9eVO8vwe7n64//n6 +cp7gDLLidfK+yc302yNrDY1i52uxy5ysbiolCRp46MIwWkS7ZLq3sSUX85mgQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGFjC26FVzNKY; Thu, 18 Jan 2024 21:08:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IL8lOW053193; Thu, 18 Jan 2024 21:08:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IL8lmB053190; Thu, 18 Jan 2024 21:08:47 GMT (envelope-from git) Date: Thu, 18 Jan 2024 21:08:47 GMT Message-Id: <202401182108.40IL8lmB053190@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 17244789c2fd - stable/14 - cr_bsd_visible(): Style fixes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 17244789c2fd5d3d758a524d98c2b6f887af7905 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=17244789c2fd5d3d758a524d98c2b6f887af7905 commit 17244789c2fd5d3d758a524d98c2b6f887af7905 Author: Olivier Certner AuthorDate: 2024-01-05 15:23:19 +0000 Commit: Olivier Certner CommitDate: 2024-01-18 21:07:53 +0000 cr_bsd_visible(): Style fixes Explicitly test for non-zero return codes. Separate assignment and testing of 'error' in distinct lines. Reviewed by: emaste, kib Approved by: emaste (mentor) MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D43335 (cherry picked from commit a1e37beb45d270ae9926eff3b93e9398d08c94e5) --- sys/kern/kern_prot.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index 00eb2fccdeef..7d28475b5db8 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -1465,11 +1465,14 @@ cr_bsd_visible(struct ucred *u1, struct ucred *u2) { int error; - if ((error = cr_canseeotheruids(u1, u2))) + error = cr_canseeotheruids(u1, u2); + if (error != 0) return (error); - if ((error = cr_canseeothergids(u1, u2))) + error = cr_canseeothergids(u1, u2); + if (error != 0) return (error); - if ((error = cr_canseejailproc(u1, u2))) + error = cr_canseejailproc(u1, u2); + if (error != 0) return (error); return (0); } From nobody Thu Jan 18 21:10:13 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGFks5Qtfz570hP; Thu, 18 Jan 2024 21:10:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGFks5C03z4jFv; Thu, 18 Jan 2024 21:10:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612213; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XGn+UqYjzGRyVvpnLOTcuIfdIFLuUuQYWDW3l1tJcis=; b=N2lnsdN8+ONI6p2bUJfLh9SYMY8B6trHK1QR63W/uBJFPWMTkx9Olrp5pHWcFVbaelU9Pt NLjIhNtPkJqzi+W+TaXalayNiPdL7opw7PtzPBR5oF/FFOjl77+gjU/ly2BLKU00VOEQYJ ryPFUuGGY4s5YG0Bq7QmpG6yX0whtGLpwYhxGB63+w/9aY83oAtcVdIRyNH38DEeZ92vBC FOamvnbNW74YSeqh8+iBs/WnVkaG5M5vU9/iQJ7siyvNjkm80PgiVEGdQUjfGTzX7DfrXF 841spREB5z+4zmAWSlUWtJc0bmc0wI9nkUA6kUbslAxx1TfTsU8TKrpyLuUeOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612213; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XGn+UqYjzGRyVvpnLOTcuIfdIFLuUuQYWDW3l1tJcis=; b=vFgctn9xyFmHzCXX032b/2x5a+HF2R/GVunciTbKblZzQqgimgNPRTer2eskboLd+VLons m0IpsczC8gqYGK+BVZ2UDNakg0eRw8iasGBu/xFIj/phWPS20DYoUmyzWuHgOHkYYigIkg JTy2lgBA9a/PTXJhkFcWnDMAMkBZBEQPQV/pxPFLHMXEK4RMNGJU8gOyq3vKLtEFY4bT8+ +ank0s+xusybqZjuwrTNfysBuMcOfUV2P3MFLh3xv/wxAYoK7z6vGJdhILGhMbG1UYobzW VoxA8VXz/ZLfhgBz58xshEktR48fIpteG1uhgcYFG9hR+a0tCvWz6WMJQA9uLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705612213; a=rsa-sha256; cv=none; b=dadhut1a2c/NFsyNIzQXPmo+5vDipsVmYfmepIveMPMt9ZQaL7u4X67X962VKZDMPJdiIB pAS1akfV5DBcN00GuhJP/MsvEDUE+Adq8RyO+NjZvA6XDhKVs39n6RTV5nlwEZzJAlQO2O g9maiisHABrIWEvIy297kTYvdq/EMWaDzC6IYw5p9ZF5b9MNLrV723Lf6hufgKbhcluXYk Xj4wPZLw5RoOicGFtztKqzRQ93zI2gYfrb8RZ8EzeQXuW8ExDCGWxnqo4oxW2iS3UoL8c7 Atr29bnWU4aSIj3TMPEE9jc6FuyX+9fnFnW2cX+0DNtIzioDWuHOQUdUQ4FO8A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGFks4GPdzN39; Thu, 18 Jan 2024 21:10:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40ILADjQ059408; Thu, 18 Jan 2024 21:10:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40ILADWL059399; Thu, 18 Jan 2024 21:10:13 GMT (envelope-from git) Date: Thu, 18 Jan 2024 21:10:13 GMT Message-Id: <202401182110.40ILADWL059399@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 2f553fd3eb27 - stable/13 - libthr: thr_attr.c: Clarity, whitespace and style List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 2f553fd3eb272619b0e94db0beb9cca2f377add0 Auto-Submitted: auto-generated The branch stable/13 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=2f553fd3eb272619b0e94db0beb9cca2f377add0 commit 2f553fd3eb272619b0e94db0beb9cca2f377add0 Author: Olivier Certner AuthorDate: 2023-11-24 16:00:53 +0000 Commit: Olivier Certner CommitDate: 2024-01-18 21:09:35 +0000 libthr: thr_attr.c: Clarity, whitespace and style Also, remove most comments, which don't add value. Reviewed by: emaste Approved by: markj (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D43005 (cherry picked from commit bd61c1e89dc4a40ba696de1785d423978e1c2147) Approved by: markj (mentor) --- lib/libthr/thread/thr_attr.c | 471 ++++++++++++++++++------------------------- 1 file changed, 193 insertions(+), 278 deletions(-) diff --git a/lib/libthr/thread/thr_attr.c b/lib/libthr/thread/thr_attr.c index 9740bed6ebd3..decbcb949167 100644 --- a/lib/libthr/thread/thr_attr.c +++ b/lib/libthr/thread/thr_attr.c @@ -113,26 +113,15 @@ __weak_reference(_thr_attr_destroy, pthread_attr_destroy); int _thr_attr_destroy(pthread_attr_t *attr) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL) - /* Invalid argument: */ - ret = EINVAL; - else { - if ((*attr)->cpuset != NULL) - free((*attr)->cpuset); - /* Free the memory allocated to the attribute object: */ - free(*attr); + return (EINVAL); - /* - * Leave the attribute pointer NULL now that the memory - * has been freed: - */ - *attr = NULL; - ret = 0; - } - return (ret); + if ((*attr)->cpuset != NULL) + free((*attr)->cpuset); + free(*attr); + *attr = NULL; + return (0); } __weak_reference(_thr_attr_get_np, pthread_attr_get_np); @@ -141,36 +130,44 @@ __weak_reference(_thr_attr_get_np, _pthread_attr_get_np); int _thr_attr_get_np(pthread_t pthread, pthread_attr_t *dstattr) { - struct pthread *curthread; struct pthread_attr attr, *dst; - int ret; - size_t kern_size; + struct pthread *curthread; + size_t kern_size; + int error; if (pthread == NULL || dstattr == NULL || (dst = *dstattr) == NULL) return (EINVAL); + kern_size = _get_kern_cpuset_size(); + if (dst->cpuset == NULL) { dst->cpuset = calloc(1, kern_size); dst->cpusetsize = kern_size; } + curthread = _get_curthread(); - if ((ret = _thr_find_thread(curthread, pthread, /*include dead*/0)) != 0) - return (ret); + /* Arg 0 is to include dead threads. */ + if ((error = _thr_find_thread(curthread, pthread, 0)) != 0) + return (error); + attr = pthread->attr; if (pthread->flags & THR_FLAGS_DETACHED) attr.flags |= PTHREAD_DETACHED; - ret = cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, TID(pthread), - dst->cpusetsize, dst->cpuset); - if (ret == -1) - ret = errno; + + error = cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, TID(pthread), + dst->cpusetsize, dst->cpuset); + if (error == -1) + error = errno; + THR_THREAD_UNLOCK(curthread, pthread); - if (ret == 0) { - memcpy(&dst->pthread_attr_start_copy, - &attr.pthread_attr_start_copy, - offsetof(struct pthread_attr, pthread_attr_end_copy) - - offsetof(struct pthread_attr, pthread_attr_start_copy)); - } - return (ret); + + if (error == 0) + memcpy(&dst->pthread_attr_start_copy, + &attr.pthread_attr_start_copy, + offsetof(struct pthread_attr, pthread_attr_end_copy) - + offsetof(struct pthread_attr, pthread_attr_start_copy)); + + return (0); } __weak_reference(_thr_attr_getdetachstate, pthread_attr_getdetachstate); @@ -179,22 +176,15 @@ __weak_reference(_thr_attr_getdetachstate, _pthread_attr_getdetachstate); int _thr_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || detachstate == NULL) - ret = EINVAL; - else { - /* Check if the detached flag is set: */ - if ((*attr)->flags & PTHREAD_DETACHED) - /* Return detached: */ - *detachstate = PTHREAD_CREATE_DETACHED; - else - /* Return joinable: */ - *detachstate = PTHREAD_CREATE_JOINABLE; - ret = 0; - } - return (ret); + return (EINVAL); + + if ((*attr)->flags & PTHREAD_DETACHED) + *detachstate = PTHREAD_CREATE_DETACHED; + else + *detachstate = PTHREAD_CREATE_JOINABLE; + return (0); } __weak_reference(_thr_attr_getguardsize, pthread_attr_getguardsize); @@ -204,17 +194,12 @@ int _thr_attr_getguardsize(const pthread_attr_t * __restrict attr, size_t * __restrict guardsize) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || guardsize == NULL) - ret = EINVAL; - else { - /* Return the guard size: */ - *guardsize = (*attr)->guardsize_attr; - ret = 0; - } - return (ret); + return (EINVAL); + + *guardsize = (*attr)->guardsize_attr; + return (0); } __weak_reference(_thr_attr_getinheritsched, pthread_attr_getinheritsched); @@ -224,14 +209,12 @@ int _thr_attr_getinheritsched(const pthread_attr_t * __restrict attr, int * __restrict sched_inherit) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL)) - ret = EINVAL; - else - *sched_inherit = (*attr)->sched_inherit; + if (attr == NULL || *attr == NULL) + return (EINVAL); - return (ret); + *sched_inherit = (*attr)->sched_inherit; + return (0); } __weak_reference(_thr_attr_getschedparam, pthread_attr_getschedparam); @@ -241,14 +224,12 @@ int _thr_attr_getschedparam(const pthread_attr_t * __restrict attr, struct sched_param * __restrict param) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL) || (param == NULL)) - ret = EINVAL; - else - param->sched_priority = (*attr)->prio; + if (attr == NULL || *attr == NULL || param == NULL) + return (EINVAL); - return (ret); + param->sched_priority = (*attr)->prio; + return (0); } __weak_reference(_thr_attr_getschedpolicy, pthread_attr_getschedpolicy); @@ -258,14 +239,12 @@ int _thr_attr_getschedpolicy(const pthread_attr_t * __restrict attr, int * __restrict policy) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL) || (policy == NULL)) - ret = EINVAL; - else - *policy = (*attr)->sched_policy; + if (attr == NULL || *attr == NULL || policy == NULL) + return (EINVAL); - return (ret); + *policy = (*attr)->sched_policy; + return (0); } __weak_reference(_thr_attr_getscope, pthread_attr_getscope); @@ -275,17 +254,13 @@ int _thr_attr_getscope(const pthread_attr_t * __restrict attr, int * __restrict contentionscope) { - int ret = 0; - - if ((attr == NULL) || (*attr == NULL) || (contentionscope == NULL)) - /* Return an invalid argument: */ - ret = EINVAL; - else - *contentionscope = (*attr)->flags & PTHREAD_SCOPE_SYSTEM ? - PTHREAD_SCOPE_SYSTEM : PTHREAD_SCOPE_PROCESS; + if (attr == NULL || *attr == NULL || contentionscope == NULL) + return (EINVAL); - return (ret); + *contentionscope = (*attr)->flags & PTHREAD_SCOPE_SYSTEM ? + PTHREAD_SCOPE_SYSTEM : PTHREAD_SCOPE_PROCESS; + return (0); } __weak_reference(_pthread_attr_getstack, pthread_attr_getstack); @@ -294,19 +269,14 @@ int _pthread_attr_getstack(const pthread_attr_t * __restrict attr, void ** __restrict stackaddr, size_t * __restrict stacksize) { - int ret; - - /* Check for invalid arguments: */ - if (attr == NULL || *attr == NULL || stackaddr == NULL - || stacksize == NULL ) - ret = EINVAL; - else { - /* Return the stack address and size */ - *stackaddr = (*attr)->stackaddr_attr; - *stacksize = (*attr)->stacksize_attr; - ret = 0; - } - return (ret); + + if (attr == NULL || *attr == NULL || stackaddr == NULL || + stacksize == NULL) + return (EINVAL); + + *stackaddr = (*attr)->stackaddr_attr; + *stacksize = (*attr)->stacksize_attr; + return (0); } __weak_reference(_thr_attr_getstackaddr, pthread_attr_getstackaddr); @@ -315,17 +285,12 @@ __weak_reference(_thr_attr_getstackaddr, _pthread_attr_getstackaddr); int _thr_attr_getstackaddr(const pthread_attr_t *attr, void **stackaddr) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || stackaddr == NULL) - ret = EINVAL; - else { - /* Return the stack address: */ - *stackaddr = (*attr)->stackaddr_attr; - ret = 0; - } - return (ret); + return (EINVAL); + + *stackaddr = (*attr)->stackaddr_attr; + return (0); } __weak_reference(_thr_attr_getstacksize, pthread_attr_getstacksize); @@ -335,17 +300,12 @@ int _thr_attr_getstacksize(const pthread_attr_t * __restrict attr, size_t * __restrict stacksize) { - int ret; - - /* Check for invalid arguments: */ - if (attr == NULL || *attr == NULL || stacksize == NULL) - ret = EINVAL; - else { - /* Return the stack size: */ - *stacksize = (*attr)->stacksize_attr; - ret = 0; - } - return (ret); + + if (attr == NULL || *attr == NULL || stacksize == NULL) + return (EINVAL); + + *stacksize = (*attr)->stacksize_attr; + return (0); } __weak_reference(_thr_attr_init, pthread_attr_init); @@ -354,40 +314,30 @@ __weak_reference(_thr_attr_init, _pthread_attr_init); int _thr_attr_init(pthread_attr_t *attr) { - int ret; - pthread_attr_t pattr; + pthread_attr_t pattr; _thr_check_init(); - /* Allocate memory for the attribute object: */ - if ((pattr = (pthread_attr_t) malloc(sizeof(struct pthread_attr))) == NULL) - /* Insufficient memory: */ - ret = ENOMEM; - else { - /* Initialise the attribute object with the defaults: */ - memcpy(pattr, &_pthread_attr_default, sizeof(struct pthread_attr)); - - /* Return a pointer to the attribute object: */ - *attr = pattr; - ret = 0; - } - return (ret); + if ((pattr = malloc(sizeof(*pattr))) == NULL) + return (ENOMEM); + + memcpy(pattr, &_pthread_attr_default, sizeof(struct pthread_attr)); + *attr = pattr; + return (0); } -__weak_reference(_pthread_attr_setcreatesuspend_np, pthread_attr_setcreatesuspend_np); +__weak_reference(_pthread_attr_setcreatesuspend_np, \ + pthread_attr_setcreatesuspend_np); int _pthread_attr_setcreatesuspend_np(pthread_attr_t *attr) { - int ret; - if (attr == NULL || *attr == NULL) { - ret = EINVAL; - } else { - (*attr)->suspend = THR_CREATE_SUSPENDED; - ret = 0; - } - return (ret); + if (attr == NULL || *attr == NULL) + return (EINVAL); + + (*attr)->suspend = THR_CREATE_SUSPENDED; + return (0); } __weak_reference(_thr_attr_setdetachstate, pthread_attr_setdetachstate); @@ -396,24 +346,17 @@ __weak_reference(_thr_attr_setdetachstate, _pthread_attr_setdetachstate); int _thr_attr_setdetachstate(pthread_attr_t *attr, int detachstate) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || (detachstate != PTHREAD_CREATE_DETACHED && detachstate != PTHREAD_CREATE_JOINABLE)) - ret = EINVAL; - else { - /* Check if detached state: */ - if (detachstate == PTHREAD_CREATE_DETACHED) - /* Set the detached flag: */ - (*attr)->flags |= PTHREAD_DETACHED; - else - /* Reset the detached flag: */ - (*attr)->flags &= ~PTHREAD_DETACHED; - ret = 0; - } - return (ret); + return (EINVAL); + + if (detachstate == PTHREAD_CREATE_DETACHED) + (*attr)->flags |= PTHREAD_DETACHED; + else + (*attr)->flags &= ~PTHREAD_DETACHED; + return (0); } __weak_reference(_thr_attr_setguardsize, pthread_attr_setguardsize); @@ -422,17 +365,12 @@ __weak_reference(_thr_attr_setguardsize, _pthread_attr_setguardsize); int _thr_attr_setguardsize(pthread_attr_t *attr, size_t guardsize) { - int ret; - /* Check for invalid arguments. */ if (attr == NULL || *attr == NULL) - ret = EINVAL; - else { - /* Save the stack size. */ - (*attr)->guardsize_attr = guardsize; - ret = 0; - } - return (ret); + return (EINVAL); + + (*attr)->guardsize_attr = guardsize; + return (0); } __weak_reference(_thr_attr_setinheritsched, pthread_attr_setinheritsched); @@ -441,17 +379,16 @@ __weak_reference(_thr_attr_setinheritsched, _pthread_attr_setinheritsched); int _thr_attr_setinheritsched(pthread_attr_t *attr, int sched_inherit) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL)) - ret = EINVAL; - else if (sched_inherit != PTHREAD_INHERIT_SCHED && - sched_inherit != PTHREAD_EXPLICIT_SCHED) - ret = ENOTSUP; - else - (*attr)->sched_inherit = sched_inherit; + if (attr == NULL || *attr == NULL) + return (EINVAL); + + if (sched_inherit != PTHREAD_INHERIT_SCHED && + sched_inherit != PTHREAD_EXPLICIT_SCHED) + return (ENOTSUP); - return (ret); + (*attr)->sched_inherit = sched_inherit; + return (0); } __weak_reference(_thr_attr_setschedparam, pthread_attr_setschedparam); @@ -463,7 +400,7 @@ _thr_attr_setschedparam(pthread_attr_t * __restrict attr, { int policy; - if ((attr == NULL) || (*attr == NULL)) + if (attr == NULL || *attr == NULL) return (EINVAL); if (param == NULL) @@ -474,7 +411,7 @@ _thr_attr_setschedparam(pthread_attr_t * __restrict attr, if (policy == SCHED_FIFO || policy == SCHED_RR) { if (param->sched_priority < _thr_priorities[policy-1].pri_min || param->sched_priority > _thr_priorities[policy-1].pri_max) - return (ENOTSUP); + return (ENOTSUP); } else { /* * Ignore it for SCHED_OTHER now, patches for glib ports @@ -494,17 +431,15 @@ __weak_reference(_thr_attr_setschedpolicy, _pthread_attr_setschedpolicy); int _thr_attr_setschedpolicy(pthread_attr_t *attr, int policy) { - int ret = 0; - if ((attr == NULL) || (*attr == NULL)) - ret = EINVAL; - else if ((policy < SCHED_FIFO) || (policy > SCHED_RR)) { - ret = ENOTSUP; - } else { - (*attr)->sched_policy = policy; - (*attr)->prio = _thr_priorities[policy-1].pri_default; - } - return (ret); + if (attr == NULL || *attr == NULL) + return (EINVAL); + if (policy < SCHED_FIFO || policy > SCHED_RR) + return (ENOTSUP); + + (*attr)->sched_policy = policy; + (*attr)->prio = _thr_priorities[policy-1].pri_default; + return (0); } __weak_reference(_thr_attr_setscope, pthread_attr_setscope); @@ -513,41 +448,33 @@ __weak_reference(_thr_attr_setscope, _pthread_attr_setscope); int _thr_attr_setscope(pthread_attr_t *attr, int contentionscope) { - int ret = 0; - - if ((attr == NULL) || (*attr == NULL)) { - /* Return an invalid argument: */ - ret = EINVAL; - } else if ((contentionscope != PTHREAD_SCOPE_PROCESS) && - (contentionscope != PTHREAD_SCOPE_SYSTEM)) { - ret = EINVAL; - } else if (contentionscope == PTHREAD_SCOPE_SYSTEM) { + + if (attr == NULL || *attr == NULL || + (contentionscope != PTHREAD_SCOPE_PROCESS && + contentionscope != PTHREAD_SCOPE_SYSTEM)) + return (EINVAL); + + if (contentionscope == PTHREAD_SCOPE_SYSTEM) (*attr)->flags |= contentionscope; - } else { + else (*attr)->flags &= ~PTHREAD_SCOPE_SYSTEM; - } - return (ret); + return (0); } __weak_reference(_pthread_attr_setstack, pthread_attr_setstack); int _pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, - size_t stacksize) + size_t stacksize) { - int ret; - - /* Check for invalid arguments: */ - if (attr == NULL || *attr == NULL || stackaddr == NULL - || stacksize < PTHREAD_STACK_MIN) - ret = EINVAL; - else { - /* Save the stack address and stack size */ - (*attr)->stackaddr_attr = stackaddr; - (*attr)->stacksize_attr = stacksize; - ret = 0; - } - return (ret); + + if (attr == NULL || *attr == NULL || stackaddr == NULL || + stacksize < PTHREAD_STACK_MIN) + return (EINVAL); + + (*attr)->stackaddr_attr = stackaddr; + (*attr)->stacksize_attr = stacksize; + return (0); } __weak_reference(_thr_attr_setstackaddr, pthread_attr_setstackaddr); @@ -556,17 +483,12 @@ __weak_reference(_thr_attr_setstackaddr, _pthread_attr_setstackaddr); int _thr_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || stackaddr == NULL) - ret = EINVAL; - else { - /* Save the stack address: */ - (*attr)->stackaddr_attr = stackaddr; - ret = 0; - } - return(ret); + return (EINVAL); + + (*attr)->stackaddr_attr = stackaddr; + return (0); } __weak_reference(_thr_attr_setstacksize, pthread_attr_setstacksize); @@ -575,17 +497,12 @@ __weak_reference(_thr_attr_setstacksize, _pthread_attr_setstacksize); int _thr_attr_setstacksize(pthread_attr_t *attr, size_t stacksize) { - int ret; - /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || stacksize < PTHREAD_STACK_MIN) - ret = EINVAL; - else { - /* Save the stack size: */ - (*attr)->stacksize_attr = stacksize; - ret = 0; - } - return (ret); + return (EINVAL); + + (*attr)->stacksize_attr = stacksize; + return (0); } static size_t @@ -608,71 +525,69 @@ _get_kern_cpuset_size(void) } __weak_reference(_pthread_attr_setaffinity_np, pthread_attr_setaffinity_np); + int _pthread_attr_setaffinity_np(pthread_attr_t *pattr, size_t cpusetsize, - const cpuset_t *cpusetp) + const cpuset_t *cpusetp) { pthread_attr_t attr; - int ret; + size_t kern_size; if (pattr == NULL || (attr = (*pattr)) == NULL) - ret = EINVAL; - else { - if (cpusetsize == 0 || cpusetp == NULL) { - if (attr->cpuset != NULL) { - free(attr->cpuset); - attr->cpuset = NULL; - attr->cpusetsize = 0; - } - return (0); - } - size_t kern_size = _get_kern_cpuset_size(); - /* Kernel rejects small set, we check it here too. */ - if (cpusetsize < kern_size) - return (ERANGE); - if (cpusetsize > kern_size) { - /* Kernel checks invalid bits, we check it here too. */ - size_t i; - for (i = kern_size; i < cpusetsize; ++i) { - if (((const char *)cpusetp)[i]) - return (EINVAL); - } - } - if (attr->cpuset == NULL) { - attr->cpuset = calloc(1, kern_size); - if (attr->cpuset == NULL) - return (errno); - attr->cpusetsize = kern_size; + return (EINVAL); + + if (cpusetsize == 0 || cpusetp == NULL) { + if (attr->cpuset != NULL) { + free(attr->cpuset); + attr->cpuset = NULL; + attr->cpusetsize = 0; } - memcpy(attr->cpuset, cpusetp, kern_size); - ret = 0; + return (0); + } + + kern_size = _get_kern_cpuset_size(); + /* Kernel rejects small set, we check it here too. */ + if (cpusetsize < kern_size) + return (ERANGE); + if (cpusetsize > kern_size) { + /* Kernel checks invalid bits, we check it here too. */ + size_t i; + for (i = kern_size; i < cpusetsize; ++i) + if (((const char *)cpusetp)[i] != 0) + return (EINVAL); + } + if (attr->cpuset == NULL) { + attr->cpuset = calloc(1, kern_size); + if (attr->cpuset == NULL) + return (errno); + attr->cpusetsize = kern_size; } - return (ret); + memcpy(attr->cpuset, cpusetp, kern_size); + return (0); } __weak_reference(_pthread_attr_getaffinity_np, pthread_attr_getaffinity_np); + int _pthread_attr_getaffinity_np(const pthread_attr_t *pattr, size_t cpusetsize, - cpuset_t *cpusetp) + cpuset_t *cpusetp) { pthread_attr_t attr; - int ret = 0; if (pattr == NULL || (attr = (*pattr)) == NULL) - ret = EINVAL; - else { - /* Kernel rejects small set, we check it here too. */ - size_t kern_size = _get_kern_cpuset_size(); - if (cpusetsize < kern_size) - return (ERANGE); - if (attr->cpuset != NULL) - memcpy(cpusetp, attr->cpuset, MIN(cpusetsize, - attr->cpusetsize)); - else - memset(cpusetp, -1, kern_size); - if (cpusetsize > kern_size) - memset(((char *)cpusetp) + kern_size, 0, - cpusetsize - kern_size); - } - return (ret); + return (EINVAL); + + /* Kernel rejects small set, we check it here too. */ + size_t kern_size = _get_kern_cpuset_size(); + if (cpusetsize < kern_size) + return (ERANGE); + if (attr->cpuset != NULL) + memcpy(cpusetp, attr->cpuset, MIN(cpusetsize, + attr->cpusetsize)); + else + memset(cpusetp, -1, kern_size); + if (cpusetsize > kern_size) + memset(((char *)cpusetp) + kern_size, 0, + cpusetsize - kern_size); + return (0); } From nobody Thu Jan 18 21:10:14 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGFkv052Tz570hQ; Thu, 18 Jan 2024 21:10:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGFkt5r1gz4jG2; Thu, 18 Jan 2024 21:10:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612214; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jyb1PS6QLsgLtE7GEtny7k1fm+KZpjr/M99je1raGSs=; b=ryc8YQp0+Kn8NSkJnbXkRA9cKYUC93FwCDe6pqtrqnIaVj3sz33bn/qZ64BQS3hoA11BXs 566TDOu6mAg6Hw8qnqS13Dy6WByeUEZGCASKCJLGWrCHqJja5KbJApzoU1qXG1hKk11eIA r5j2Qf1CEEYSVZl//vTqeMhSjlDFdLaNUIz1HmWwoQVHD0vvI0uSRCkf0Nvs0EHpHsnr6r HTDy60dfVklBgXe9iFXoanKXOfJhRgZ9YMd/OET5+uuoVmMux9jdI+QTp0cm+DRgoJR2p3 DH4frgmVoWEiVBhmc2+ciXlVzy389LgUPTOBiWQfr4lagXRK+zCVFOaTU4UU2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612214; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jyb1PS6QLsgLtE7GEtny7k1fm+KZpjr/M99je1raGSs=; b=qqyakasGd+F3oTVOlxBdamnbrPhzCO/NbMdC/SJrc3EClUm0w71K0Q2+oRfQ0wwokrvP4b MU6hAt97cGUscaghH7VtyPFeTwTQm/pZUjGm0mXtKWUh+EntG9EBI6gvue2hniqKgIzN8K M3+9b4R569SfsO22mt6tyZweuPYca+SwPa1xRKfwlPAVUFwQ7vRe+8n8in+CoaXnDBEUZe t5COEbyiJBfHwXlgDQBK1s+Qrr9Ic+o/GYOYgTw5ZA1OCKNJILRhPSoz7QiEdgZbEMjLVb /IGljCyw++q2BORqzb3OWuHsDB6fWBfXVA1Lloi2xtLNisACaXFCvxfMtN6KEg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705612214; a=rsa-sha256; cv=none; b=STC2/TAkulMtFPPqKPIfpJ7qmMk5irgb2+0ClnrQjNCemLAOtY5ApihRYcuEC5DNC5SqGd 8VdLdhvwRborngVuOFm6B5LH9Mo0/VnOpYffxNyMSNkuDxlcSPoAsGGgyq7ki/AcF7Kf67 ouZHr3qrwH+EJ0aW6/suYVT6vfD5RQv+erR1B44U85pBuvtw3KLvrGYKNEbO2AqrIqPQUA c5szrOOuDOhhDq87gMTSTSALvKitmI1rh6lUU7ZcY6t5lpWelGidScis/IBPtKii1pA+V5 K6xeUCsist7tTtJKbZzsYhVN3jZKzRDlrzhxnBTAWHc/Fu9flZ5owFT161bL2w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGFkt4wFyzNPt; Thu, 18 Jan 2024 21:10:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40ILAEQr060070; Thu, 18 Jan 2024 21:10:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40ILAEvt060066; Thu, 18 Jan 2024 21:10:14 GMT (envelope-from git) Date: Thu, 18 Jan 2024 21:10:14 GMT Message-Id: <202401182110.40ILAEvt060066@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 8d97e469dee9 - stable/13 - libthr: thr_attr.c: EINVAL, not ENOTSUP, on invalid arguments List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8d97e469dee9db347a6cf433ac7e4d40f36d2c48 Auto-Submitted: auto-generated The branch stable/13 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=8d97e469dee9db347a6cf433ac7e4d40f36d2c48 commit 8d97e469dee9db347a6cf433ac7e4d40f36d2c48 Author: Olivier Certner AuthorDate: 2023-11-24 21:21:16 +0000 Commit: Olivier Certner CommitDate: 2024-01-18 21:09:43 +0000 libthr: thr_attr.c: EINVAL, not ENOTSUP, on invalid arguments On first read, POSIX may seem ambiguous about the return code for some scheduling-related pthread functions on invalid arguments. But a more thorough reading and a bit of standards archeology strongly suggests that this case should be handled by EINVAL and that ENOTSUP is reserved for implementations providing only part of the functionality required by the POSIX option POSIX_PRIORITY_SCHEDULING (e.g., if an implementation doesn't support SCHED_FIFO, it should return ENOTSUP on a call to, e.g., sched_setscheduler() with 'policy' SCHED_FIFO). This reading is supported by the second sentence of the very definition of ENOTSUP, as worded in CAE/XSI Issue 5 and POSIX Issue 6: "The implementation does not support this feature of the Realtime Feature Group.", and the fact that an additional ENOTSUP case was added to pthread_setschedparam() in Issue 6, which introduces SCHED_SPORADIC, saying that pthread_setschedparam() may return it when attempting to dynamically switch to SCHED_SPORADIC on systems that doesn't support that. glibc, illumos and NetBSD also support that reading by always returning EINVAL, and OpenBSD as well, since it always returns EINVAL but the corresponding code has a comment suggesting returning ENOTSUP for SCHED_FIFO and SCHED_RR, which it effectively doesn't support. Additionally, always returning EINVAL fixes inconsistencies where EINVAL would be returned on some out-of-range values and ENOTSUP on others. Reviewed by: markj Approved by: markj (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D43006 (cherry picked from commit 0eccb45979a8ee3129e11b638ebc4cfa00942b80) Approved by: markj (mentor) --- lib/libthr/thread/thr_attr.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/libthr/thread/thr_attr.c b/lib/libthr/thread/thr_attr.c index decbcb949167..0ccc31b22c13 100644 --- a/lib/libthr/thread/thr_attr.c +++ b/lib/libthr/thread/thr_attr.c @@ -380,13 +380,11 @@ int _thr_attr_setinheritsched(pthread_attr_t *attr, int sched_inherit) { - if (attr == NULL || *attr == NULL) + if (attr == NULL || *attr == NULL || + (sched_inherit != PTHREAD_INHERIT_SCHED && + sched_inherit != PTHREAD_EXPLICIT_SCHED)) return (EINVAL); - if (sched_inherit != PTHREAD_INHERIT_SCHED && - sched_inherit != PTHREAD_EXPLICIT_SCHED) - return (ENOTSUP); - (*attr)->sched_inherit = sched_inherit; return (0); } @@ -400,18 +398,15 @@ _thr_attr_setschedparam(pthread_attr_t * __restrict attr, { int policy; - if (attr == NULL || *attr == NULL) + if (attr == NULL || *attr == NULL || param == NULL) return (EINVAL); - if (param == NULL) - return (ENOTSUP); - policy = (*attr)->sched_policy; if (policy == SCHED_FIFO || policy == SCHED_RR) { if (param->sched_priority < _thr_priorities[policy-1].pri_min || param->sched_priority > _thr_priorities[policy-1].pri_max) - return (ENOTSUP); + return (EINVAL); } else { /* * Ignore it for SCHED_OTHER now, patches for glib ports @@ -432,10 +427,9 @@ int _thr_attr_setschedpolicy(pthread_attr_t *attr, int policy) { - if (attr == NULL || *attr == NULL) + if (attr == NULL || *attr == NULL || + policy < SCHED_FIFO || policy > SCHED_RR) return (EINVAL); - if (policy < SCHED_FIFO || policy > SCHED_RR) - return (ENOTSUP); (*attr)->sched_policy = policy; (*attr)->prio = _thr_priorities[policy-1].pri_default; From nobody Thu Jan 18 21:10:15 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGFkw1fmMz570ky; Thu, 18 Jan 2024 21:10:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGFkv6VZnz4jCy; Thu, 18 Jan 2024 21:10:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612216; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qzqZClBzlOfIPisFXbteQI+ZG9SC/AyS4MFj2MHb/mk=; b=d4kxQlCuN7GVR8VdzSaBAM6XKcNW+dLWtz6hfIzZWH2YyDbhyNuUWtZOaTt7Sadlij5cNS CdwxDUFw2v98r41fJnZz+oDptlYqrsL0Hlbd3AWnxMvGIYbxOuEpnORMnZ0ROIGqgLzna2 YRYGuYA/OxjW4CTrRyfVnHilmhXOo3mnTco4NsRqEJwolGl+kGezOi8Ox5BGbfCQGB3O9n oEd2/cYGsArCfT0G3KUdEEAzACTQbDsicN8R/Q9RPjoMWVzxHP26q+r6csXUfqswDlBYBP PboxPJc6XMOxCFlKjLKd5FaP1vnw++Mz+3run9vmPdZJnxbRlbA05hfGnWNqRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705612216; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qzqZClBzlOfIPisFXbteQI+ZG9SC/AyS4MFj2MHb/mk=; b=kKdHAJoLzlhlJnjC35SdtKd+dA44XpMxrgsM/2NCYWpeCc4zQGEaiMGxs5dPCFz295dXEb VpumlMCWGc0Md0qomx+1tyZmHQmZYHBjk42z2bnA7db1u23PF38LsZGYPI12IhNyiKL6Vr gqG3zVa64aRmp+g1eYfbXYxuPoK7L68vMGjSVcVZlR8lfPn3w8zPCGm9MaJeHWzwVvf+J2 gnq7+K2hMN+oGvnp5MEK3euz9HPfifb4SY/YuzT33dv7/Yq5t93Db7V2DFwuFm7Y7Vls9q fLYG21GtZtAeC8vy9FdwbEe2JAnmAp503rFSkcrRsOD6Nnzh36RNIbHJvvarAw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705612216; a=rsa-sha256; cv=none; b=PGAfFfvt/WCzuXnrdIu4jy5eRFce/rcZQ5Kvuc6CbzXO3akNccGQXzG39fHDFipkjhDHlU 61AoK+QQkIv2ntqOuRh74ia/4ZQa8QLdktcrvLRxvLuK4dbrsr0RlnHK4ZM85aqt6TBwPb 02hlHLhGRV8Oy49EAmlIqlAiGs42CeaQpNzEm0Kf6OjtQGRbQtjpejBv1yfqr2MOcYIjnJ uK3RXGM5kL9V3dv/7GI7Wvf9uhS++rbg/NPxAa3lOhKg+69aAL5kbxbRF7iKqrYqHADeMR z04uA6pxtIF2btz6Zd7+a/QKRProROQuhiT5NJcQw/68vy+CHJX8GZP1sARphg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGFkv5ZMKzMxf; Thu, 18 Jan 2024 21:10:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40ILAFCn060761; Thu, 18 Jan 2024 21:10:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40ILAFP5060756; Thu, 18 Jan 2024 21:10:15 GMT (envelope-from git) Date: Thu, 18 Jan 2024 21:10:15 GMT Message-Id: <202401182110.40ILAFP5060756@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: cb3c7be3a916 - stable/13 - cr_bsd_visible(): Style fixes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: cb3c7be3a91651f6937dbae5cf3483e54ac28f80 Auto-Submitted: auto-generated The branch stable/13 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=cb3c7be3a91651f6937dbae5cf3483e54ac28f80 commit cb3c7be3a91651f6937dbae5cf3483e54ac28f80 Author: Olivier Certner AuthorDate: 2024-01-05 15:23:19 +0000 Commit: Olivier Certner CommitDate: 2024-01-18 21:09:50 +0000 cr_bsd_visible(): Style fixes Explicitly test for non-zero return codes. Separate assignment and testing of 'error' in distinct lines. Reviewed by: emaste, kib Approved by: emaste (mentor) MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D43335 (cherry picked from commit a1e37beb45d270ae9926eff3b93e9398d08c94e5) Approved by: markj (mentor) --- sys/kern/kern_prot.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index 1c9e2927bc5e..a91b7ec3015f 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -1463,11 +1463,14 @@ cr_bsd_visible(struct ucred *u1, struct ucred *u2) { int error; - if ((error = cr_canseeotheruids(u1, u2))) + error = cr_canseeotheruids(u1, u2); + if (error != 0) return (error); - if ((error = cr_canseeothergids(u1, u2))) + error = cr_canseeothergids(u1, u2); + if (error != 0) return (error); - if ((error = cr_canseejailproc(u1, u2))) + error = cr_canseejailproc(u1, u2); + if (error != 0) return (error); return (0); } From nobody Thu Jan 18 21:23:05 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGG1r10KBz5729s; Thu, 18 Jan 2024 21:23:12 +0000 (UTC) (envelope-from brooks@spindle.one-eyed-alien.net) Received: from spindle.one-eyed-alien.net (spindle.one-eyed-alien.net [199.48.129.229]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGG1q5WbQz4l2f; Thu, 18 Jan 2024 21:23:11 +0000 (UTC) (envelope-from brooks@spindle.one-eyed-alien.net) Authentication-Results: mx1.freebsd.org; none Received: by spindle.one-eyed-alien.net (Postfix, from userid 3001) id 34BFC3C019A; Thu, 18 Jan 2024 21:23:05 +0000 (UTC) Date: Thu, 18 Jan 2024 21:23:05 +0000 From: Brooks Davis To: Marius Strobl Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-branches@freebsd.org Subject: Re: git: d6ec20a30919 - stable/14 - geom_map(4): Garbage collect disconnected driver Message-ID: References: <202401182015.40IKF7M7068068@gitrepo.freebsd.org> List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202401182015.40IKF7M7068068@gitrepo.freebsd.org> X-Rspamd-Queue-Id: 4TGG1q5WbQz4l2f X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:36236, ipnet:199.48.128.0/22, country:US] On Thu, Jan 18, 2024 at 08:15:07PM +0000, Marius Strobl wrote: > The branch stable/14 has been updated by marius: > > URL: https://cgit.FreeBSD.org/src/commit/?id=d6ec20a3091924793576ba3fd71f42d4fcd3371f > > commit d6ec20a3091924793576ba3fd71f42d4fcd3371f > Author: Marius Strobl > AuthorDate: 2024-01-14 08:31:26 +0000 > Commit: Marius Strobl > CommitDate: 2024-01-18 20:14:46 +0000 > > geom_map(4): Garbage collect disconnected driver > > The last MIPS user has been removed in c09981f1 2 years ago, the last > ARM one in 58d5c511 even 5.5 years ago. Unless this and geom_redboot were getting in the way of MFCing other work, it seems a bit odd to MFC the removal of functionality. -- Brooks From nobody Thu Jan 18 21:57:41 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGGnt5VGDz5760V for ; Thu, 18 Jan 2024 21:57:54 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGGnt0lmQz4rKZ for ; Thu, 18 Jan 2024 21:57:54 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-559b6786561so76791a12.2 for ; Thu, 18 Jan 2024 13:57:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20230601.gappssmtp.com; s=20230601; t=1705615073; x=1706219873; darn=freebsd.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=2UFnBRKbEsD7FiFJCyasQElH/AwzAeSXVPRQ8DUA7BA=; b=Zw7/wZjdLy3Z83QYmWZvP+jwrVqqHWf6L0ilTSFsz5/G79K4QY7D34FmYZQQK14iXK pfydN1YMgrmNrdpzjfK7PXpRilSO/rqsw6/fRpYuVxJMxF/YTwHBMUs1F8H1o9uDKpry 0s60JMRiuhnw+68VjDYVIDiNxYfnMylzMPpxBwz+hry1pDXQvr3B5ffWiUJwnuR2ey3M VpWzXsEQZL1ZqS3toIAhAa8v6HmapT6pRIg5qyo3bmKW4ABc4qqWzZIksah5ideXRm0T CVM4nFKSqX3tQ5aFVPb5aNq39sVFcA4F8fU2S5YvmzqaLvElGDXRtHoJIktRTtED9XxE mLfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705615073; x=1706219873; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=2UFnBRKbEsD7FiFJCyasQElH/AwzAeSXVPRQ8DUA7BA=; b=niW0HRMPrPdegj3qUUadnokS4FaxgHHPnkK9q0yztN3tthtJYje2/Wc1Su0Oek9Kik 57ml0/FNl60lPYpYpOzoQu6S3c9ou1xXMmH6T5wRtBnFpx2BBigegMXMngR+8Ek1NNJH Jb+EcSQ1IN+/Ox7t/mQymlC8zP71zgUINcMv0+eF/InwIM15TJjbOU3O7zw6WBYU5SlC A3ZOIG0TeWKBSs6tg/lwrG6U1jPsl4DFgrcTgupjQAJXnGWnHVRTONGIUh/4ikKE82Hk sgCgrGwh0/6hua/gRD01BopSlGCuVLZDz9XrXcvpSHFPMrWHqYeJsWHG3tx9Xy80oN2Y lA8g== X-Gm-Message-State: AOJu0YwtOPczlHmL6/VFk5jn4LrHxaJT1A8H5RulQ8/BETSpp9GUkSS6 eFa15UnT8OOAPueEs+jl4KjiZZb3UH2xtu9kXiSqBmZ6QQPUUJm9UoxQKuD4mLKsh5jQAUCkRDM BRBrVomMyAi62e1RLqoPMsxYRYPfnu6ZFFGnoiQ== X-Google-Smtp-Source: AGHT+IGJHf9GHuOAva5FndFvHp8xeIj42F+/tGfzcn1RbkFxdhYKMOJ2vsiBIPNdPS71bzDay1pmtn8iz/NcKe4DhaQ= X-Received: by 2002:aa7:c902:0:b0:559:c471:7307 with SMTP id b2-20020aa7c902000000b00559c4717307mr863427edt.42.1705615072163; Thu, 18 Jan 2024 13:57:52 -0800 (PST) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 References: <202401182015.40IKF7M7068068@gitrepo.freebsd.org> In-Reply-To: From: Warner Losh Date: Thu, 18 Jan 2024 14:57:41 -0700 Message-ID: Subject: Re: git: d6ec20a30919 - stable/14 - geom_map(4): Garbage collect disconnected driver To: Brooks Davis Cc: Marius Strobl , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-branches@freebsd.org Content-Type: multipart/alternative; boundary="000000000000800bf4060f3f7408" X-Rspamd-Queue-Id: 4TGGnt0lmQz4rKZ X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] --000000000000800bf4060f3f7408 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jan 18, 2024 at 2:23=E2=80=AFPM Brooks Davis w= rote: > On Thu, Jan 18, 2024 at 08:15:07PM +0000, Marius Strobl wrote: > > The branch stable/14 has been updated by marius: > > > > URL: > https://cgit.FreeBSD.org/src/commit/?id=3Dd6ec20a3091924793576ba3fd71f42d= 4fcd3371f > > > > commit d6ec20a3091924793576ba3fd71f42d4fcd3371f > > Author: Marius Strobl > > AuthorDate: 2024-01-14 08:31:26 +0000 > > Commit: Marius Strobl > > CommitDate: 2024-01-18 20:14:46 +0000 > > > > geom_map(4): Garbage collect disconnected driver > > > > The last MIPS user has been removed in c09981f1 2 years ago, the la= st > > ARM one in 58d5c511 even 5.5 years ago. > > Unless this and geom_redboot were getting in the way of MFCing other > work, it seems a bit odd to MFC the removal of functionality. > Yea, we generally don't MFC removing drivers, for example, in our latest rounds of preening. Warner --000000000000800bf4060f3f7408 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


--000000000000800bf4060f3f7408-- From nobody Thu Jan 18 22:25:46 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQ30l38z578ND; Thu, 18 Jan 2024 22:25:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQ307DCz40gB; Thu, 18 Jan 2024 22:25:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xRfl5cMXselEkNNOKedXhP7Ybz2rpKxirh7zFoeZ5Gg=; b=Lih67u/usets9H7GZ/bZfbSdzOMRxtxZxZc36iQQqLH2hUjn9854hPKCqHis5Ma+lVOoWP JgaI8oAnH1jemNjlnFk4iCWBRc2ADkZ1EI1cWA6ZzFyBsBbAUIHHkylI+c/KejqyQGtctf 5SLJkB8Z8P3jA0XxyVOMUYGRQIolsX9N5/jdHSoIhYpNPrEr15Oo9h/axDfbI6FEqPTbVO sexicGeoQ7rR+y/uqD2kxyTZg/lXNVdjz7c2D+NYyLhioOi9ZH5pzaIvR1Q2uEKoSqT/Q8 1F7OmIHOT1R4J3CtzZBByLaVijjnzsV7Xs+UL3H9e2oTkUFjxfk0YZZPvMIRhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xRfl5cMXselEkNNOKedXhP7Ybz2rpKxirh7zFoeZ5Gg=; b=VkM+xLNXXG2SH3FtNdVqk6mVR3S2mZ0ZAFnxu6HORwRT8A/dR44LxiHQuNWZ7OpFID8h48 quLtPmcogy7ld8z0LJHC52TfKZJJgixAGcRwvnVrp1anyNLnozgVUYa9eWQYBXxqQBZk6k Dm05IuuU0+7JqSykl7Ji3BojQzXH3cUzQydrDUlWGoNM/32bkvWtISxFsjdGOSVXQKzexA E0LJScQMWGT8Yl0CpQotltDKUANUxR5qAjiO0+ROCbGjVsc6BJawx/kExKTVGmqXb2WhoX eeXf/L/8Kp9VeaYDaWhkKGFRfkRHlixnz+JJUuTYVxJ0CHfpji2MQIwZEu6IwA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616747; a=rsa-sha256; cv=none; b=RUucBp4wCsHhN387KieRzkCaVKY6BZAs8rrDqPI6QAA5tQ1se3aj0AnojlvRRoQNBYjwA/ xnzFRPViyJGHYWr4CQ24oTffzXMTYr1GXWFe8lzxZWBU5u/dmKhf6K4zaNwC08sVeawEmv oVc0NTKF3VmWUXPZATi4h67jxIADGlmkR0Ghe3Ve+lYZpIND84unipSombeGAPuG9Rgwxa oCI6ZkiP7D8A5ln92qQugK4BL5dGn+Q+vDOsM9IibA+KhuF3xsAYZsdPoCH1NBWj72QgK5 MznuWCe+bJlL4pMuC+GnYFJgPPrHyEH5D32sxsDJqzyrwMp//5rh8M/e9CF9tw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQ26HWBzQHr; Thu, 18 Jan 2024 22:25:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPkef088879; Thu, 18 Jan 2024 22:25:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPkOB088876; Thu, 18 Jan 2024 22:25:46 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:46 GMT Message-Id: <202401182225.40IMPkOB088876@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: e676886a9031 - stable/14 - kldxref: Refactor PNP entry parsing, no functional change List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e676886a9031f1e60dde4745ff38ebb1b7c7e82e Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e676886a9031f1e60dde4745ff38ebb1b7c7e82e commit e676886a9031f1e60dde4745ff38ebb1b7c7e82e Author: John Baldwin AuthorDate: 2023-12-12 23:30:16 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:24:52 +0000 kldxref: Refactor PNP entry parsing, no functional change - Add a free_pnp_list to complement parse_pnp_list. Add freeing of 'new_desc' which was previously leaked. - Move body of loop that checked a single pnp list element against a table entry into a parse_pnp_entry function to reduce indentation and split parse_entry into a smaller function. - Similarly, split out a record_pnp_info function from parse_entry which builds the pnp_list and walks a table. Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D42965 (cherry picked from commit c40fa3dc98d3cd8c39605c19c9cc08026d8e72c9) --- usr.sbin/kldxref/kldxref.c | 247 +++++++++++++++++++++++++-------------------- 1 file changed, 139 insertions(+), 108 deletions(-) diff --git a/usr.sbin/kldxref/kldxref.c b/usr.sbin/kldxref/kldxref.c index ae0d22181688..913b64ee2a16 100644 --- a/usr.sbin/kldxref/kldxref.c +++ b/usr.sbin/kldxref/kldxref.c @@ -237,6 +237,7 @@ parse_pnp_list(const char *desc, char **new_desc, pnp_list *list) size_t new_desc_size; FILE *fp; + TAILQ_INIT(list); walker = desc; ep = desc + strlen(desc); off = 0; @@ -379,6 +380,142 @@ err: errx(1, "Parse error of description string %s", desc); } +static void +free_pnp_list(char *new_desc, pnp_list *list) +{ + struct pnp_elt *elt, *elt_tmp; + + TAILQ_FOREACH_SAFE(elt, list, next, elt_tmp) { + TAILQ_REMOVE(list, elt, next); + free(elt); + } + free(new_desc); +} + +static void +parse_pnp_entry(struct elf_file *ef, struct pnp_elt *elt, const char *walker) +{ + uint8_t v1; + uint16_t v2; + uint32_t v4; + int value; + char buffer[1024]; + + if (elt->pe_kind == TYPE_W32) { + memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); + value = v4 & 0xffff; + record_int(value); + if (verbose > 1) + printf("W32:%#x", value); + value = (v4 >> 16) & 0xffff; + record_int(value); + if (verbose > 1) + printf(":%#x;", value); + } else if (elt->pe_kind & TYPE_INT) { + switch (elt->pe_kind & TYPE_SZ_MASK) { + case 1: + memcpy(&v1, walker + elt->pe_offset, sizeof(v1)); + if ((elt->pe_kind & TYPE_FLAGGED) && v1 == 0xff) + value = -1; + else + value = v1; + break; + case 2: + memcpy(&v2, walker + elt->pe_offset, sizeof(v2)); + if ((elt->pe_kind & TYPE_FLAGGED) && v2 == 0xffff) + value = -1; + else + value = v2; + break; + case 4: + memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); + if ((elt->pe_kind & TYPE_FLAGGED) && v4 == 0xffffffff) + value = -1; + else + value = v4; + break; + default: + errx(1, "Invalid size somehow %#x", elt->pe_kind); + } + if (verbose > 1) + printf("I:%#x;", value); + record_int(value); + } else if (elt->pe_kind == TYPE_T) { + /* Do nothing */ + } else { /* E, Z or D -- P already filtered */ + if (elt->pe_kind == TYPE_E) { + memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); + strcpy(buffer, pnp_eisaformat(v4)); + } else { + char *ptr; + + ptr = *(char **)(walker + elt->pe_offset); + buffer[0] = '\0'; + if (ptr != NULL) { + EF_SEG_READ_STRING(ef, (Elf_Off)ptr, + sizeof(buffer), buffer); + buffer[sizeof(buffer) - 1] = '\0'; + } + } + if (verbose > 1) + printf("%c:%s;", elt->pe_kind == TYPE_E ? 'E' : + (elt->pe_kind == TYPE_Z ? 'Z' : 'D'), buffer); + record_string(buffer); + } +} + +static void +record_pnp_info(struct elf_file *ef, const char *cval, + struct mod_pnp_match_info *pnp, const char *descr) +{ + pnp_list list; + struct pnp_elt *elt; + char *new_descr, *walker; + void *table; + size_t len; + int error, i; + + if (verbose > 1) + printf(" pnp info for bus %s format %s %d entries of %d bytes\n", + cval, descr, pnp->num_entry, pnp->entry_len); + + /* + * Parse descr to weed out the chaff and to create a list + * of offsets to output. + */ + parse_pnp_list(descr, &new_descr, &list); + record_int(MDT_PNP_INFO); + record_string(cval); + record_string(new_descr); + record_int(pnp->num_entry); + len = pnp->num_entry * pnp->entry_len; + table = malloc(len); + error = EF_SEG_READ_REL(ef, (Elf_Off)pnp->table, len, table); + if (error != 0) { + free_pnp_list(new_descr, &list); + free(table); + return; + } + + /* + * Walk the list and output things. We've collapsed all the + * variant forms of the table down to just ints and strings. + */ + walker = table; + for (i = 0; i < pnp->num_entry; i++) { + TAILQ_FOREACH(elt, &list, next) { + parse_pnp_entry(ef, elt, walker); + } + if (verbose > 1) + printf("\n"); + walker += pnp->entry_len; + } + + /* Now free it */ + free_pnp_list(new_descr, &list); + free(table); +} + static int parse_entry(struct mod_metadata *md, const char *cval, struct elf_file *ef, const char *kldname) @@ -388,10 +525,7 @@ parse_entry(struct mod_metadata *md, const char *cval, struct mod_pnp_match_info pnp; char descr[1024]; Elf_Off data; - int error, i; - size_t len; - char *walker; - void *table; + int error; data = (Elf_Off)md->md_data; error = 0; @@ -432,110 +566,7 @@ parse_entry(struct mod_metadata *md, const char *cval, printf(" pnp info for bus %s format %s %d entries of %d bytes\n", cval, descr, pnp.num_entry, pnp.entry_len); } else { - pnp_list list; - struct pnp_elt *elt, *elt_tmp; - char *new_descr; - - if (verbose > 1) - printf(" pnp info for bus %s format %s %d entries of %d bytes\n", - cval, descr, pnp.num_entry, pnp.entry_len); - /* - * Parse descr to weed out the chaff and to create a list - * of offsets to output. - */ - TAILQ_INIT(&list); - parse_pnp_list(descr, &new_descr, &list); - record_int(MDT_PNP_INFO); - record_string(cval); - record_string(new_descr); - record_int(pnp.num_entry); - len = pnp.num_entry * pnp.entry_len; - walker = table = malloc(len); - check(EF_SEG_READ_REL(ef, (Elf_Off)pnp.table, len, table)); - - /* - * Walk the list and output things. We've collapsed all the - * variant forms of the table down to just ints and strings. - */ - for (i = 0; i < pnp.num_entry; i++) { - TAILQ_FOREACH(elt, &list, next) { - uint8_t v1; - uint16_t v2; - uint32_t v4; - int value; - char buffer[1024]; - - if (elt->pe_kind == TYPE_W32) { - memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); - value = v4 & 0xffff; - record_int(value); - if (verbose > 1) - printf("W32:%#x", value); - value = (v4 >> 16) & 0xffff; - record_int(value); - if (verbose > 1) - printf(":%#x;", value); - } else if (elt->pe_kind & TYPE_INT) { - switch (elt->pe_kind & TYPE_SZ_MASK) { - case 1: - memcpy(&v1, walker + elt->pe_offset, sizeof(v1)); - if ((elt->pe_kind & TYPE_FLAGGED) && v1 == 0xff) - value = -1; - else - value = v1; - break; - case 2: - memcpy(&v2, walker + elt->pe_offset, sizeof(v2)); - if ((elt->pe_kind & TYPE_FLAGGED) && v2 == 0xffff) - value = -1; - else - value = v2; - break; - case 4: - memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); - if ((elt->pe_kind & TYPE_FLAGGED) && v4 == 0xffffffff) - value = -1; - else - value = v4; - break; - default: - errx(1, "Invalid size somehow %#x", elt->pe_kind); - } - if (verbose > 1) - printf("I:%#x;", value); - record_int(value); - } else if (elt->pe_kind == TYPE_T) { - /* Do nothing */ - } else { /* E, Z or D -- P already filtered */ - if (elt->pe_kind == TYPE_E) { - memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); - strcpy(buffer, pnp_eisaformat(v4)); - } else { - char *ptr; - - ptr = *(char **)(walker + elt->pe_offset); - buffer[0] = '\0'; - if (ptr != NULL) { - EF_SEG_READ_STRING(ef, (Elf_Off)ptr, - sizeof(buffer), buffer); - buffer[sizeof(buffer) - 1] = '\0'; - } - } - if (verbose > 1) - printf("%c:%s;", elt->pe_kind == TYPE_E ? 'E' : (elt->pe_kind == TYPE_Z ? 'Z' : 'D'), buffer); - record_string(buffer); - } - } - if (verbose > 1) - printf("\n"); - walker += pnp.entry_len; - } - /* Now free it */ - TAILQ_FOREACH_SAFE(elt, &list, next, elt_tmp) { - TAILQ_REMOVE(&list, elt, next); - free(elt); - } - free(table); + record_pnp_info(ef, cval, &pnp, descr); } break; default: From nobody Thu Jan 18 22:25:47 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQ41pwfz578LH; Thu, 18 Jan 2024 22:25:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQ415X8z40cS; Thu, 18 Jan 2024 22:25:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616748; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iSCfaYrSAz69AqvqHAXqnv1NqQVy36BENhy4K2P4mz8=; b=Ulg1v+sbQVkxNIbXibdIPF1pnuCFdPwfTYqaL0sINnGox4JppCC7srSyubPKXBQjImCCV4 S7pgC17j9VsjU95wVxf024RglVcFXToeRBwenZU4/CV9makJ7pA7cb7OwaebHjoEL2HGPa IENM1PlukqwG5oKsvGikVXrFJrxhyoOrxBJ/4Dqzqly1zyMIh8dtlloqMjBYNRxB/AGOio ALNpA4k2jzMlAY1oTlEyXpwRx2CQtusz8hb5MvpweYy21OE54ePn+/SKVxv1BUlYKzWeWg OsgET1cml5YPrNjQFG80pAqQOWJXLIAg62i6hL6RRXr4YEy4e4rNYo9DnkQBTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616748; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iSCfaYrSAz69AqvqHAXqnv1NqQVy36BENhy4K2P4mz8=; b=TkNtxIT9qPcc1wwp1LClcShLjfwjk6ZbalxXQ6FoEHfowFaFn/h0kKD0naiM5ZpmCZG1lE KyGpewmPb5jovKoDQUXuMfn8u6H/zlF2nlrGvJnetlBy3tC26CqLdkIcOLim18vqF4m9pd iYRXMhCDO6FttBB7yNs0cZArtq3Dejyq9A45lEm83FKI3FynoXqpO+5xoEHAeDH2phTbmK iE/seEBuefUng917mxvI0IFdeAAb9784lAEHcDbZTcQoUogEKPwvZXbSsAFCl0aPT3q+fm 7RXefcq+YZzKy4GGEvrVJ/GOxKXmd/Z0qJ2M+cSaMj7nP+FC0zM9VHV2te1NDg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616748; a=rsa-sha256; cv=none; b=dY8Oxhr+wkRHbjUYMeDQT63sVBRT3Q2ZctI9J31vI/U/4FVDU7Dyinfqz18qG1eOJ+Nlyq suxvYjnspipGSXEMKtykA3Ephh1du9KaPspp+ElKjhogCRktzFBd5IvdqWFGC3Ph/I5yis A4m/6Hnvg+f7F3pURWOb7UlXwxvl7kmGtMCGKhTWVR523CPb1k6HZ0ZiaUbnbDPBffcIlI OCQIRFoEzBJ/1syvHJab0sZRbPYYXxnXKg/ET7TJdz4zslHKGUOpEhJfjHEB2vGZzyjf6y KiB+/ZbUnznzeVdCxm0PSBV5qfSmOp3Padq+10/vwlx3qM8YHgOA5uVPeQxExw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQ407zvzQWZ; Thu, 18 Jan 2024 22:25:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPlsO088941; Thu, 18 Jan 2024 22:25:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPlng088938; Thu, 18 Jan 2024 22:25:47 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:47 GMT Message-Id: <202401182225.40IMPlng088938@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 01aec6e1fd68 - stable/14 - kldxref: Make use of libelf to be a portable cross tool List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 01aec6e1fd68511b6e0a204b74afac86c3d4edf5 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=01aec6e1fd68511b6e0a204b74afac86c3d4edf5 commit 01aec6e1fd68511b6e0a204b74afac86c3d4edf5 Author: John Baldwin AuthorDate: 2023-12-12 23:43:00 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:29:23 +0000 kldxref: Make use of libelf to be a portable cross tool This allows kldxref to operate on kernel objects from any architecture, not just the native architecture. In particular, this will permit generating linker.hints files as part of a cross-arch release build. - elf.c is a new file that includes various wrappers around libelf including routines to read ELF data structures such as program and section headers and ELF relocations into the "generic" forms described in . This file also provides routines for converting a linker set into an array of addresses (GElf_Addr) as well as reading architecture-specific mod_* structures and converting them into "generic" Gmod_* forms where pointers are replaced with addresses. - The various architecture-specific reloc handlers now use GElf_* types for most values (including GElf_Rel and GElf_Rela for relocation structures) and use routines from to read and write target values. A new linker set matches reloc handlers to specific ELF (class, encoding, machine) tuples. - The bits of kldxref.c that write out linker.hints now use the encoding (ELFDATA2[LM]SB) of the first file encountered in a directory to set the endianness of the output file. Input files with a different architecture in the same directory are skipped with a warning. In addition, the initial version record for the file must be deferred until the first record is finished since the architecture of the output file is not known until then. - Various places that used 'sizeof(void *)' throughout now use 'elf_pointer_size()' to determine the size of a pointer in the target architecture. Tested by: amd64 binary on both amd64 and i386 /boot/kernel Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D42966 (cherry picked from commit 0299afdff145e5d861797fe9c2de8b090c456fba) --- usr.sbin/kldxref/Makefile | 9 +- usr.sbin/kldxref/ef.c | 730 ++++++++++++++++++++---------------------- usr.sbin/kldxref/ef.h | 291 ++++++++++++++--- usr.sbin/kldxref/ef_aarch64.c | 32 +- usr.sbin/kldxref/ef_amd64.c | 65 ++-- usr.sbin/kldxref/ef_i386.c | 56 ++-- usr.sbin/kldxref/ef_mips.c | 79 +++-- usr.sbin/kldxref/ef_nop.c | 40 --- usr.sbin/kldxref/ef_obj.c | 341 ++++++-------------- usr.sbin/kldxref/ef_powerpc.c | 62 ++-- usr.sbin/kldxref/ef_riscv.c | 36 +-- usr.sbin/kldxref/elf.c | 674 ++++++++++++++++++++++++++++++++++++++ usr.sbin/kldxref/kldxref.c | 196 +++++++----- 13 files changed, 1685 insertions(+), 926 deletions(-) diff --git a/usr.sbin/kldxref/Makefile b/usr.sbin/kldxref/Makefile index 3d4ce7163b48..6e0a7244328b 100644 --- a/usr.sbin/kldxref/Makefile +++ b/usr.sbin/kldxref/Makefile @@ -2,14 +2,11 @@ PACKAGE= runtime PROG= kldxref MAN= kldxref.8 -SRCS= kldxref.c ef.c ef_obj.c +SRCS= kldxref.c ef.c ef_obj.c elf.c +SRCS+= ef_aarch64.c ef_amd64.c ef_i386.c ef_mips.c ef_powerpc.c ef_riscv.c WARNS?= 2 -.if exists(ef_${MACHINE_CPUARCH}.c) -SRCS+= ef_${MACHINE_CPUARCH}.c -.else -SRCS+= ef_nop.c -.endif +LIBADD= elf .include diff --git a/usr.sbin/kldxref/ef.c b/usr.sbin/kldxref/ef.c index 72e023e30783..aa9123d7f540 100644 --- a/usr.sbin/kldxref/ef.c +++ b/usr.sbin/kldxref/ef.c @@ -33,16 +33,13 @@ */ #include -#include #include #include -#include +#include #include #include #include -#include -#include #include "ef.h" @@ -50,76 +47,52 @@ struct ef_file { char *ef_name; struct elf_file *ef_efile; - Elf_Phdr *ef_ph; - int ef_fd; - int ef_type; - Elf_Ehdr ef_hdr; + GElf_Phdr *ef_ph; void *ef_fpage; /* First block of the file */ int ef_fplen; /* length of first block */ - Elf_Dyn *ef_dyn; /* Symbol table etc. */ - Elf_Hashelt ef_nbuckets; - Elf_Hashelt ef_nchains; - Elf_Hashelt *ef_buckets; - Elf_Hashelt *ef_chains; - Elf_Hashelt *ef_hashtab; - Elf_Off ef_stroff; + GElf_Hashelt ef_nbuckets; + GElf_Hashelt ef_nchains; + GElf_Hashelt *ef_buckets; + GElf_Hashelt *ef_chains; + GElf_Hashelt *ef_hashtab; caddr_t ef_strtab; - int ef_strsz; - Elf_Off ef_symoff; - Elf_Sym *ef_symtab; + long ef_strsz; + GElf_Sym *ef_symtab; int ef_nsegs; - Elf_Phdr *ef_segs[MAXSEGS]; + GElf_Phdr *ef_segs[MAXSEGS]; int ef_verbose; - Elf_Rel *ef_rel; /* relocation table */ - int ef_relsz; /* number of entries */ - Elf_Rela *ef_rela; /* relocation table */ - int ef_relasz; /* number of entries */ + GElf_Rel *ef_rel; /* relocation table */ + long ef_relsz; /* number of entries */ + GElf_Rela *ef_rela; /* relocation table */ + long ef_relasz; /* number of entries */ }; -static void ef_print_phdr(Elf_Phdr *); -static Elf_Off ef_get_offset(elf_file_t, Elf_Off); -static int ef_parse_dynamic(elf_file_t); +static void ef_print_phdr(GElf_Phdr *); +static GElf_Off ef_get_offset(elf_file_t, GElf_Addr); -static int ef_get_type(elf_file_t ef); -static int ef_close(elf_file_t ef); -static int ef_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest); -static int ef_read_entry(elf_file_t ef, Elf_Off offset, size_t len, - void **ptr); +static void ef_close(elf_file_t ef); -static int ef_seg_read(elf_file_t ef, Elf_Off offset, size_t len, +static int ef_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest); -static int ef_seg_read_rel(elf_file_t ef, Elf_Off offset, size_t len, - void *dest); -static int ef_seg_read_string(elf_file_t ef, Elf_Off offset, size_t len, +static int ef_seg_read_string(elf_file_t ef, GElf_Addr address, size_t len, char *dest); -static int ef_seg_read_entry(elf_file_t ef, Elf_Off offset, size_t len, - void **ptr); -static int ef_seg_read_entry_rel(elf_file_t ef, Elf_Off offset, size_t len, - void **ptr); - -static Elf_Addr ef_symaddr(elf_file_t ef, Elf_Size symidx); -static int ef_lookup_set(elf_file_t ef, const char *name, long *startp, - long *stopp, long *countp); + +static GElf_Addr ef_symaddr(elf_file_t ef, GElf_Size symidx); +static int ef_lookup_set(elf_file_t ef, const char *name, + GElf_Addr *startp, GElf_Addr *stopp, long *countp); static int ef_lookup_symbol(elf_file_t ef, const char *name, - Elf_Sym **sym); + GElf_Sym **sym); static struct elf_file_ops ef_file_ops = { - .get_type = ef_get_type, .close = ef_close, - .read = ef_read, - .read_entry = ef_read_entry, - .seg_read = ef_seg_read, .seg_read_rel = ef_seg_read_rel, .seg_read_string = ef_seg_read_string, - .seg_read_entry = ef_seg_read_entry, - .seg_read_entry_rel = ef_seg_read_entry_rel, .symaddr = ef_symaddr, .lookup_set = ef_lookup_set, - .lookup_symbol = ef_lookup_symbol }; static void -ef_print_phdr(Elf_Phdr *phdr) +ef_print_phdr(GElf_Phdr *phdr) { if ((phdr->p_flags & PF_W) == 0) { @@ -133,53 +106,29 @@ ef_print_phdr(Elf_Phdr *phdr) } } -static Elf_Off -ef_get_offset(elf_file_t ef, Elf_Off off) +static GElf_Off +ef_get_offset(elf_file_t ef, GElf_Addr addr) { - Elf_Phdr *ph; + GElf_Phdr *ph; int i; for (i = 0; i < ef->ef_nsegs; i++) { ph = ef->ef_segs[i]; - if (off >= ph->p_vaddr && off < ph->p_vaddr + ph->p_memsz) { - return (ph->p_offset + (off - ph->p_vaddr)); + if (addr >= ph->p_vaddr && addr < ph->p_vaddr + ph->p_memsz) { + return (ph->p_offset + (addr - ph->p_vaddr)); } } return (0); } -static int -ef_get_type(elf_file_t ef) -{ - - return (ef->ef_type); -} - /* - * next three functions copied from link_elf.c + * next two functions copied from link_elf.c */ -static unsigned long -elf_hash(const char *name) -{ - unsigned long h, g; - const unsigned char *p; - - h = 0; - p = (const unsigned char *)name; - while (*p != '\0') { - h = (h << 4) + *p++; - if ((g = h & 0xf0000000) != 0) - h ^= g >> 24; - h &= ~g; - } - return (h); -} - static int -ef_lookup_symbol(elf_file_t ef, const char *name, Elf_Sym **sym) +ef_lookup_symbol(elf_file_t ef, const char *name, GElf_Sym **sym) { unsigned long hash, symnum; - Elf_Sym *symp; + GElf_Sym *symp; char *strp; /* First, search hashed global symbols */ @@ -205,7 +154,7 @@ ef_lookup_symbol(elf_file_t ef, const char *name, Elf_Sym **sym) if (strcmp(name, strp) == 0) { if (symp->st_shndx != SHN_UNDEF || (symp->st_value != 0 && - ELF_ST_TYPE(symp->st_info) == STT_FUNC)) { + GELF_ST_TYPE(symp->st_info) == STT_FUNC)) { *sym = symp; return (0); } else @@ -219,10 +168,10 @@ ef_lookup_symbol(elf_file_t ef, const char *name, Elf_Sym **sym) } static int -ef_lookup_set(elf_file_t ef, const char *name, long *startp, long *stopp, - long *countp) +ef_lookup_set(elf_file_t ef, const char *name, GElf_Addr *startp, + GElf_Addr *stopp, long *countp) { - Elf_Sym *sym; + GElf_Sym *sym; char *setsym; int error, len; @@ -246,258 +195,340 @@ ef_lookup_set(elf_file_t ef, const char *name, long *startp, long *stopp, *stopp = sym->st_value; /* and the number of entries */ - *countp = (*stopp - *startp) / sizeof(void *); + *countp = (*stopp - *startp) / elf_pointer_size(ef->ef_efile); out: free(setsym); return (error); } -static Elf_Addr -ef_symaddr(elf_file_t ef, Elf_Size symidx) +static GElf_Addr +ef_symaddr(elf_file_t ef, GElf_Size symidx) { - const Elf_Sym *sym; + const GElf_Sym *sym; if (symidx >= ef->ef_nchains) return (0); sym = ef->ef_symtab + symidx; - if (ELF_ST_BIND(sym->st_info) == STB_LOCAL && + if (GELF_ST_BIND(sym->st_info) == STB_LOCAL && sym->st_shndx != SHN_UNDEF && sym->st_value != 0) return (sym->st_value); return (0); } static int -ef_parse_dynamic(elf_file_t ef) +ef_parse_dynamic(elf_file_t ef, const GElf_Phdr *phdyn) { - Elf_Dyn *dp; - Elf_Hashelt hashhdr[2]; + GElf_Shdr *shdr; + GElf_Dyn *dyn, *dp; + size_t i, ndyn, nshdr, nsym; int error; - Elf_Off rel_off; - Elf_Off rela_off; + GElf_Off hash_off, sym_off, str_off; + GElf_Off rel_off; + GElf_Off rela_off; int rel_sz; int rela_sz; - int rel_entry; - int rela_entry; + int dynamic_idx; + + /* + * The kernel linker parses the PT_DYNAMIC segment to find + * various important tables. The gelf API of libelf is + * section-oriented and requires extracting data from sections + * instead of segments (program headers). As a result, + * iterate over section headers to read various tables after + * parsing values from PT_DYNAMIC. + */ + error = elf_read_shdrs(ef->ef_efile, &nshdr, &shdr); + if (error != 0) + return (EFTYPE); + dyn = NULL; + + /* Find section for .dynamic. */ + dynamic_idx = -1; + for (i = 0; i < nshdr; i++) { + if (shdr[i].sh_type == SHT_DYNAMIC) { + if (shdr[i].sh_offset != phdyn->p_offset || + shdr[i].sh_size != phdyn->p_filesz) { + warnx(".dynamic section doesn't match phdr"); + error = EFTYPE; + goto out; + } + if (dynamic_idx != -1) { + warnx("multiple SHT_DYNAMIC sections"); + error = EFTYPE; + goto out; + } + dynamic_idx = i; + } + } + + error = elf_read_dynamic(ef->ef_efile, dynamic_idx, &ndyn, &dyn); + if (error != 0) + goto out; - rel_off = rela_off = 0; + hash_off = rel_off = rela_off = sym_off = str_off = 0; rel_sz = rela_sz = 0; - rel_entry = rela_entry = 0; - for (dp = ef->ef_dyn; dp->d_tag != DT_NULL; dp++) { + for (i = 0; i < ndyn; i++) { + dp = &dyn[i]; + if (dp->d_tag == DT_NULL) + break; + switch (dp->d_tag) { case DT_HASH: - error = ef_read(ef, ef_get_offset(ef, dp->d_un.d_ptr), - sizeof(hashhdr), hashhdr); - if (error != 0) { - warnx("can't read hash header (%jx)", - (uintmax_t)ef_get_offset(ef, dp->d_un.d_ptr)); - return (error); - } - ef->ef_nbuckets = hashhdr[0]; - ef->ef_nchains = hashhdr[1]; - error = ef_read_entry(ef, -1, - (hashhdr[0] + hashhdr[1]) * sizeof(Elf_Hashelt), - (void **)&ef->ef_hashtab); - if (error != 0) { - warnx("can't read hash table"); - return (error); - } - ef->ef_buckets = ef->ef_hashtab; - ef->ef_chains = ef->ef_buckets + ef->ef_nbuckets; + if (hash_off != 0) + warnx("second DT_HASH entry ignored"); + else + hash_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_STRTAB: - ef->ef_stroff = dp->d_un.d_ptr; - break; - case DT_STRSZ: - ef->ef_strsz = dp->d_un.d_val; + if (str_off != 0) + warnx("second DT_STRTAB entry ignored"); + else + str_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_SYMTAB: - ef->ef_symoff = dp->d_un.d_ptr; + if (sym_off != 0) + warnx("second DT_SYMTAB entry ignored"); + else + sym_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_SYMENT: - if (dp->d_un.d_val != sizeof(Elf_Sym)) - return (EFTYPE); + if (dp->d_un.d_val != elf_object_size(ef->ef_efile, + ELF_T_SYM)) { + error = EFTYPE; + goto out; + } break; case DT_REL: if (rel_off != 0) warnx("second DT_REL entry ignored"); - rel_off = dp->d_un.d_ptr; + else + rel_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_RELSZ: if (rel_sz != 0) warnx("second DT_RELSZ entry ignored"); - rel_sz = dp->d_un.d_val; + else + rel_sz = dp->d_un.d_val; break; case DT_RELENT: - if (rel_entry != 0) - warnx("second DT_RELENT entry ignored"); - rel_entry = dp->d_un.d_val; + if (dp->d_un.d_val != elf_object_size(ef->ef_efile, + ELF_T_REL)) { + error = EFTYPE; + goto out; + } break; case DT_RELA: if (rela_off != 0) warnx("second DT_RELA entry ignored"); - rela_off = dp->d_un.d_ptr; + else + rela_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_RELASZ: if (rela_sz != 0) - warnx("second DT_RELASZ entry ignored"); - rela_sz = dp->d_un.d_val; + warnx("second DT_RELSZ entry ignored"); + else + rela_sz = dp->d_un.d_val; break; case DT_RELAENT: - if (rela_entry != 0) - warnx("second DT_RELAENT entry ignored"); - rela_entry = dp->d_un.d_val; + if (dp->d_un.d_val != elf_object_size(ef->ef_efile, + ELF_T_RELA)) { + error = EFTYPE; + goto out; + } break; } } - if (ef->ef_symoff == 0) { + if (hash_off == 0) { + warnx("%s: no .hash section found\n", ef->ef_name); + error = EFTYPE; + goto out; + } + if (sym_off == 0) { warnx("%s: no .dynsym section found\n", ef->ef_name); - return (EFTYPE); + error = EFTYPE; + goto out; } - if (ef->ef_stroff == 0) { + if (str_off == 0) { warnx("%s: no .dynstr section found\n", ef->ef_name); - return (EFTYPE); - } - if (ef_read_entry(ef, ef_get_offset(ef, ef->ef_symoff), - ef->ef_nchains * sizeof(Elf_Sym), - (void **)&ef->ef_symtab) != 0) { - if (ef->ef_verbose) - warnx("%s: can't load .dynsym section (0x%jx)", - ef->ef_name, (uintmax_t)ef->ef_symoff); - return (EIO); - } - if (ef_read_entry(ef, ef_get_offset(ef, ef->ef_stroff), ef->ef_strsz, - (void **)&ef->ef_strtab) != 0) { - warnx("can't load .dynstr section"); - return (EIO); - } - if (rel_off != 0) { - if (rel_entry == 0) { - warnx("%s: no DT_RELENT for DT_REL", ef->ef_name); - return (EFTYPE); - } - if (rel_entry != sizeof(Elf_Rel)) { - warnx("%s: inconsistent DT_RELENT value", - ef->ef_name); - return (EFTYPE); - } - if (rel_sz % rel_entry != 0) { - warnx("%s: inconsistent values for DT_RELSZ and " - "DT_RELENT", ef->ef_name); - return (EFTYPE); - } - if (ef_read_entry(ef, ef_get_offset(ef, rel_off), rel_sz, - (void **)&ef->ef_rel) != 0) { - warnx("%s: cannot load DT_REL section", ef->ef_name); - return (EIO); - } - ef->ef_relsz = rel_sz / rel_entry; - if (ef->ef_verbose) - warnx("%s: %d REL entries", ef->ef_name, - ef->ef_relsz); + error = EFTYPE; + goto out; } - if (rela_off != 0) { - if (rela_entry == 0) { - warnx("%s: no DT_RELAENT for DT_RELA", ef->ef_name); - return (EFTYPE); - } - if (rela_entry != sizeof(Elf_Rela)) { - warnx("%s: inconsistent DT_RELAENT value", - ef->ef_name); - return (EFTYPE); - } - if (rela_sz % rela_entry != 0) { - warnx("%s: inconsistent values for DT_RELASZ and " - "DT_RELAENT", ef->ef_name); - return (EFTYPE); - } - if (ef_read_entry(ef, ef_get_offset(ef, rela_off), rela_sz, - (void **)&ef->ef_rela) != 0) { - warnx("%s: cannot load DT_RELA section", ef->ef_name); - return (EIO); - } - ef->ef_relasz = rela_sz / rela_entry; - if (ef->ef_verbose) - warnx("%s: %d RELA entries", ef->ef_name, - ef->ef_relasz); + if (rel_off == 0 && rela_off == 0) { + warnx("%s: no ELF relocation table found\n", ef->ef_name); + error = EFTYPE; + goto out; } - return (0); -} -static int -ef_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest) -{ - ssize_t r; + for (i = 0; i < nshdr; i++) { + switch (shdr[i].sh_type) { + case SHT_HASH: + if (shdr[i].sh_offset != hash_off) { + warnx("%s: ignoring SHT_HASH at different offset from DT_HASH", + ef->ef_name); + break; + } - if (offset != (Elf_Off)-1) { - if (lseek(ef->ef_fd, offset, SEEK_SET) == -1) - return (EIO); - } + /* + * libelf(3) mentions ELF_T_HASH, but it is + * not defined. + */ + if (shdr[i].sh_size < sizeof(*ef->ef_hashtab) * 2) { + warnx("hash section too small"); + error = EFTYPE; + goto out; + } + error = elf_read_data(ef->ef_efile, ELF_T_WORD, + shdr[i].sh_offset, shdr[i].sh_size, + (void **)&ef->ef_hashtab); + if (error != 0) { + warnc(error, "can't read hash table"); + goto out; + } + ef->ef_nbuckets = ef->ef_hashtab[0]; + ef->ef_nchains = ef->ef_hashtab[1]; + if ((2 + ef->ef_nbuckets + ef->ef_nchains) * + sizeof(*ef->ef_hashtab) != shdr[i].sh_size) { + warnx("inconsistent hash section size"); + error = EFTYPE; + goto out; + } - r = read(ef->ef_fd, dest, len); - if (r != -1 && (size_t)r == len) - return (0); - else - return (EIO); -} + ef->ef_buckets = ef->ef_hashtab + 2; + ef->ef_chains = ef->ef_buckets + ef->ef_nbuckets; + break; + case SHT_DYNSYM: + if (shdr[i].sh_offset != sym_off) { + warnx("%s: ignoring SHT_DYNSYM at different offset from DT_SYMTAB", + ef->ef_name); + break; + } + error = elf_read_symbols(ef->ef_efile, i, &nsym, + &ef->ef_symtab); + if (error != 0) { + if (ef->ef_verbose) + warnx("%s: can't load .dynsym section (0x%jx)", + ef->ef_name, (uintmax_t)sym_off); + goto out; + } + break; + case SHT_STRTAB: + if (shdr[i].sh_offset != str_off) + break; + error = elf_read_string_table(ef->ef_efile, + &shdr[i], &ef->ef_strsz, &ef->ef_strtab); + if (error != 0) { + warnx("can't load .dynstr section"); + error = EIO; + goto out; + } + break; + case SHT_REL: + if (shdr[i].sh_offset != rel_off) + break; + if (shdr[i].sh_size != rel_sz) { + warnx("%s: size mismatch for DT_REL section", + ef->ef_name); + error = EFTYPE; + goto out; + } + error = elf_read_rel(ef->ef_efile, i, &ef->ef_relsz, + &ef->ef_rel); + if (error != 0) { + warnx("%s: cannot load DT_REL section", + ef->ef_name); + goto out; + } + break; + case SHT_RELA: + if (shdr[i].sh_offset != rela_off) + break; + if (shdr[i].sh_size != rela_sz) { + warnx("%s: size mismatch for DT_RELA section", + ef->ef_name); + error = EFTYPE; + goto out; + } + error = elf_read_rela(ef->ef_efile, i, &ef->ef_relasz, + &ef->ef_rela); + if (error != 0) { + warnx("%s: cannot load DT_RELA section", + ef->ef_name); + goto out; + } + break; + } + } -static int -ef_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void **ptr) -{ - int error; + if (ef->ef_hashtab == NULL) { + warnx("%s: did not find a symbol hash table", ef->ef_name); + error = EFTYPE; + goto out; + } + if (ef->ef_symtab == NULL) { + warnx("%s: did not find a dynamic symbol table", ef->ef_name); + error = EFTYPE; + goto out; + } + if (nsym != ef->ef_nchains) { + warnx("%s: symbol count mismatch", ef->ef_name); + error = EFTYPE; + goto out; + } + if (ef->ef_strtab == NULL) { + warnx("%s: did not find a dynamic string table", ef->ef_name); + error = EFTYPE; + goto out; + } + if (rel_off != 0 && ef->ef_rel == NULL) { + warnx("%s: did not find a DT_REL relocation table", + ef->ef_name); + error = EFTYPE; + goto out; + } + if (rela_off != 0 && ef->ef_rela == NULL) { + warnx("%s: did not find a DT_RELA relocation table", + ef->ef_name); + error = EFTYPE; + goto out; + } - *ptr = malloc(len); - if (*ptr == NULL) - return (errno); - error = ef_read(ef, offset, len, *ptr); - if (error != 0) - free(*ptr); + error = 0; +out: + free(dyn); + free(shdr); return (error); } static int -ef_seg_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest) +ef_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) { - Elf_Off ofs; - - ofs = ef_get_offset(ef, offset); - if (ofs == 0) { - if (ef->ef_verbose) - warnx("ef_seg_read(%s): zero offset (%jx:%ju)", - ef->ef_name, (uintmax_t)offset, (uintmax_t)ofs); - return (EFAULT); - } - return (ef_read(ef, ofs, len, dest)); -} - -static int -ef_seg_read_rel(elf_file_t ef, Elf_Off offset, size_t len, void *dest) -{ - Elf_Off ofs; - const Elf_Rela *a; - const Elf_Rel *r; + GElf_Off ofs; + const GElf_Rela *a; + const GElf_Rel *r; int error; - ofs = ef_get_offset(ef, offset); + ofs = ef_get_offset(ef, address); if (ofs == 0) { if (ef->ef_verbose) warnx("ef_seg_read_rel(%s): zero offset (%jx:%ju)", - ef->ef_name, (uintmax_t)offset, (uintmax_t)ofs); + ef->ef_name, (uintmax_t)address, (uintmax_t)ofs); return (EFAULT); } - if ((error = ef_read(ef, ofs, len, dest)) != 0) + error = elf_read_raw_data(ef->ef_efile, ofs, dest, len); + if (error != 0) return (error); for (r = ef->ef_rel; r < &ef->ef_rel[ef->ef_relsz]; r++) { - error = ef_reloc(ef->ef_efile, r, EF_RELOC_REL, 0, offset, len, - dest); + error = elf_reloc(ef->ef_efile, r, ELF_T_REL, 0, address, + len, dest); if (error != 0) return (error); } for (a = ef->ef_rela; a < &ef->ef_rela[ef->ef_relasz]; a++) { - error = ef_reloc(ef->ef_efile, a, EF_RELOC_RELA, 0, offset, len, - dest); + error = elf_reloc(ef->ef_efile, a, ELF_T_RELA, 0, address, + len, dest); if (error != 0) return (error); } @@ -505,168 +536,115 @@ ef_seg_read_rel(elf_file_t ef, Elf_Off offset, size_t len, void *dest) } static int -ef_seg_read_string(elf_file_t ef, Elf_Off offset, size_t len, char *dest) +ef_seg_read_string(elf_file_t ef, GElf_Addr address, size_t len, char *dest) { - Elf_Off ofs; - ssize_t r; + GElf_Off ofs; + int error; - ofs = ef_get_offset(ef, offset); - if (ofs == 0 || ofs == (Elf_Off)-1) { + ofs = ef_get_offset(ef, address); + if (ofs == 0 || ofs == (GElf_Off)-1) { if (ef->ef_verbose) warnx("ef_seg_read_string(%s): bad offset (%jx:%ju)", - ef->ef_name, (uintmax_t)offset, (uintmax_t)ofs); + ef->ef_name, (uintmax_t)address, (uintmax_t)ofs); return (EFAULT); } - r = pread(ef->ef_fd, dest, len, ofs); - if (r < 0) - return (errno); + error = elf_read_raw_data(ef->ef_efile, ofs, dest, len); + if (error != 0) + return (error); if (strnlen(dest, len) == len) return (EFAULT); return (0); } -static int -ef_seg_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void **ptr) -{ - int error; - - *ptr = malloc(len); - if (*ptr == NULL) - return (errno); - error = ef_seg_read(ef, offset, len, *ptr); - if (error != 0) - free(*ptr); - return (error); -} - -static int -ef_seg_read_entry_rel(elf_file_t ef, Elf_Off offset, size_t len, void **ptr) -{ - int error; - - *ptr = malloc(len); - if (*ptr == NULL) - return (errno); - error = ef_seg_read_rel(ef, offset, len, *ptr); - if (error != 0) - free(*ptr); - return (error); -} - int -ef_open(const char *filename, struct elf_file *efile, int verbose) +ef_open(struct elf_file *efile, int verbose) { elf_file_t ef; - Elf_Ehdr *hdr; - int fd; + GElf_Ehdr *hdr; + size_t i, nphdr, nsegs; int error; - int phlen, res; - int nsegs; - Elf_Phdr *phdr, *phdyn, *phlimit; + GElf_Phdr *phdr, *phdyn; - if (filename == NULL) - return (EINVAL); - if ((fd = open(filename, O_RDONLY)) == -1) - return (errno); + hdr = &efile->ef_hdr; + if (hdr->e_phnum == 0 || + hdr->e_phentsize != elf_object_size(efile, ELF_T_PHDR) || + hdr->e_shnum == 0 || hdr->e_shoff == 0 || + hdr->e_shentsize != elf_object_size(efile, ELF_T_SHDR)) + return (EFTYPE); ef = malloc(sizeof(*ef)); - if (ef == NULL) { - close(fd); + if (ef == NULL) return (errno); - } efile->ef_ef = ef; efile->ef_ops = &ef_file_ops; bzero(ef, sizeof(*ef)); ef->ef_verbose = verbose; - ef->ef_fd = fd; - ef->ef_name = strdup(filename); + ef->ef_name = strdup(efile->ef_filename); ef->ef_efile = efile; - hdr = (Elf_Ehdr *)&ef->ef_hdr; - do { - res = read(fd, hdr, sizeof(*hdr)); - error = EFTYPE; - if (res != sizeof(*hdr)) - break; - if (!IS_ELF(*hdr)) - break; - if (hdr->e_ident[EI_CLASS] != ELF_TARG_CLASS || - hdr->e_ident[EI_DATA] != ELF_TARG_DATA || - hdr->e_ident[EI_VERSION] != EV_CURRENT || - hdr->e_version != EV_CURRENT || - hdr->e_machine != ELF_TARG_MACH || - hdr->e_phentsize != sizeof(Elf_Phdr)) - break; - phlen = hdr->e_phnum * sizeof(Elf_Phdr); - if (ef_read_entry(ef, hdr->e_phoff, phlen, - (void **)&ef->ef_ph) != 0) - break; - phdr = ef->ef_ph; - phlimit = phdr + hdr->e_phnum; - nsegs = 0; - phdyn = NULL; - while (phdr < phlimit) { - if (verbose > 1) - ef_print_phdr(phdr); - switch (phdr->p_type) { - case PT_LOAD: - if (nsegs < MAXSEGS) - ef->ef_segs[nsegs] = phdr; - nsegs++; - break; - case PT_PHDR: - break; - case PT_DYNAMIC: - phdyn = phdr; - break; - } - phdr++; - } + + error = elf_read_phdrs(efile, &nphdr, &ef->ef_ph); + if (error != 0) { + phdr = NULL; + goto out; + } + + error = EFTYPE; + nsegs = 0; + phdyn = NULL; + phdr = ef->ef_ph; + for (i = 0; i < nphdr; i++, phdr++) { if (verbose > 1) - printf("\n"); - if (phdyn == NULL) { - warnx("Skipping %s: not dynamically-linked", - filename); + ef_print_phdr(phdr); + switch (phdr->p_type) { + case PT_LOAD: + if (nsegs < MAXSEGS) + ef->ef_segs[nsegs] = phdr; + nsegs++; break; - } else if (nsegs > MAXSEGS) { - warnx("%s: too many segments", filename); + case PT_PHDR: break; - } - ef->ef_nsegs = nsegs; - if (ef_read_entry(ef, phdyn->p_offset, - phdyn->p_filesz, (void **)&ef->ef_dyn) != 0) { - printf("ef_read_entry failed\n"); + case PT_DYNAMIC: + phdyn = phdr; *** 2717 LINES SKIPPED *** From nobody Thu Jan 18 22:25:49 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQ552qpz578NF; Thu, 18 Jan 2024 22:25:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQ52M3cz40xM; Thu, 18 Jan 2024 22:25:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AufMIeha4kocc6QrRL/5eSltJblUkb+DuOrBKx++Tqk=; b=KMi2gF63Oosz7cOjVX4EknAaMC79cDc4nbpDkUSCgH2wiL7C9LPMXL3CsmTZCjrYukf/cT EHwDTZ1XLncpY8HdKs0wmlaigl6vpY2/Jx2iRB+S6/Z0TiadfD9exiOrU/Vpc7xfYfRZ9k XHnCKBXLT+D5A0Ukqp0TSXVvkTtbAQVACIkKtSM1SZn36Je3af3nJAoT/EfUhZ4hDE8SuU fUBWVUI3PRRFlWFUwMjnvUVv4PkfAoVFsPLIkd/kUOpID7MvD1eKAVtMNP8M6udoC5sCCQ JGmF5A8KpUw27aal3JxCipeh833VJ4VYr6r0sr2PwRQylXShw3KRR6pSZ8rl0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AufMIeha4kocc6QrRL/5eSltJblUkb+DuOrBKx++Tqk=; b=fv90FrYOGa9C8RxPV6/8CHGX3xMZiMhF4jArI0IoRdsBUSPAcyouyHsaAd5u+Ndj0MyEgG GSJEZH9DnIRUPLc71h2s4rkJzVmL/65MmEu4LUsDasMqO374JDBSWxpUTXyG7msihFVdDS hqPswFF4KlT48FCKgVGhWnPaUuGh+J2fULBoDamiYOqoD0gRhWRi3z5v8K/92qCfeO7d7z jY3WuBs3V38pHvcUlfmi1dK4DKiB2TWTc3sUNIb3EPrABAknFiawirpIbMple9VRIc7Hwo 1cIkdYophXCwfmh/RI97e+YauaNGfH9iSfkpX0/c91zTfYl0Pu8LD4Fs/PMs0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616749; a=rsa-sha256; cv=none; b=hTvv8WiRA9nNAbfP1u9bbj+mwASwxk9pEHJuBwvsIw2Q6sP8CMmGrWFx3aujEeozP+ZE/s ULN2elgDh5cfOIyfquf+snxxInlq3VPVeqRRpdxJVGN5O0ncwmVQESxBMlKojoUhlyuVNm MPG9yWZYrP051d+D0aEOsjqiODc5JqYBxgG3faKdjXE6dZZPP80MxEEqYexbLSItoSqBV8 E110/xlUWaZWABt82CTyLdX+LFGpFciZXtnwHD/nZyenh1Y1KXmY9CcNV+2DRP4U5qNyhP ecvDkWvY4shuqO+r1TSvDmKzkI/aJ75FyAkQQ4SBX6wtZql3wlH9y48Cz6/lPw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQ5198FzQWb; Thu, 18 Jan 2024 22:25:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPnGj088989; Thu, 18 Jan 2024 22:25:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPnI4088986; Thu, 18 Jan 2024 22:25:49 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:49 GMT Message-Id: <202401182225.40IMPnI4088986@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 92222d8aee57 - stable/14 - kldxref: fix build on 32 bits arches List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 92222d8aee57f8c2f77261f716140dbb912964d4 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=92222d8aee57f8c2f77261f716140dbb912964d4 commit 92222d8aee57f8c2f77261f716140dbb912964d4 Author: Baptiste Daroussin AuthorDate: 2023-12-13 08:19:18 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:29:40 +0000 kldxref: fix build on 32 bits arches (cherry picked from commit 97530894fc142a9c44a5909e6ae668dc95a5036a) --- usr.sbin/kldxref/ef.h | 4 ++-- usr.sbin/kldxref/ef_obj.c | 4 ++-- usr.sbin/kldxref/elf.c | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/usr.sbin/kldxref/ef.h b/usr.sbin/kldxref/ef.h index a96bd72d6931..2909704bf2d1 100644 --- a/usr.sbin/kldxref/ef.h +++ b/usr.sbin/kldxref/ef.h @@ -218,7 +218,7 @@ int elf_read_shdrs(struct elf_file *efile, size_t *nshdrp, * Read the dynamic table from a section of an ELF file into a * dynamically-allocated array of GElf_Dyn objects. */ -int elf_read_dynamic(struct elf_file *efile, int section_index, long *ndynp, +int elf_read_dynamic(struct elf_file *efile, int section_index, size_t *ndynp, GElf_Dyn **dynp); /* @@ -226,7 +226,7 @@ int elf_read_dynamic(struct elf_file *efile, int section_index, long *ndynp, * dynamically-allocated array of GElf_Sym objects. */ int elf_read_symbols(struct elf_file *efile, int section_index, - long *nsymp, GElf_Sym **symp); + size_t *nsymp, GElf_Sym **symp); /* * Read a string table described by a section header of an ELF file diff --git a/usr.sbin/kldxref/ef_obj.c b/usr.sbin/kldxref/ef_obj.c index a1d46241b803..36c0dce432b6 100644 --- a/usr.sbin/kldxref/ef_obj.c +++ b/usr.sbin/kldxref/ef_obj.c @@ -82,7 +82,7 @@ struct ef_file { int nrel; GElf_Sym *ddbsymtab; /* The symbol table we are using */ - long ddbsymcnt; /* Number of symbols */ + size_t ddbsymcnt; /* Number of symbols */ caddr_t ddbstrtab; /* String table */ long ddbstrcnt; /* number of bytes in string table */ @@ -155,7 +155,7 @@ ef_obj_symaddr(elf_file_t ef, GElf_Size symidx) { const GElf_Sym *sym; - if (symidx >= (size_t)ef->ddbsymcnt) + if (symidx >= ef->ddbsymcnt) return (0); sym = ef->ddbsymtab + symidx; diff --git a/usr.sbin/kldxref/elf.c b/usr.sbin/kldxref/elf.c index a30eb4456a76..f8a6510ed352 100644 --- a/usr.sbin/kldxref/elf.c +++ b/usr.sbin/kldxref/elf.c @@ -329,7 +329,7 @@ out: } int -elf_read_dynamic(struct elf_file *efile, int section_index, long *ndynp, +elf_read_dynamic(struct elf_file *efile, int section_index, size_t *ndynp, GElf_Dyn **dynp) { GElf_Shdr shdr; @@ -365,14 +365,14 @@ elf_read_dynamic(struct elf_file *efile, int section_index, long *ndynp, } int -elf_read_symbols(struct elf_file *efile, int section_index, long *nsymp, +elf_read_symbols(struct elf_file *efile, int section_index, size_t *nsymp, GElf_Sym **symp) { GElf_Shdr shdr; Elf_Scn *scn; Elf_Data *data; GElf_Sym *sym; - long i, nsym; + size_t i, nsym; scn = elf_getscn(efile->ef_elf, section_index); if (scn == NULL) From nobody Thu Jan 18 22:25:51 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQ76lgWz578Ql; Thu, 18 Jan 2024 22:25:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQ74zsRz40xl; Thu, 18 Jan 2024 22:25:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6DLQkphLM/3gPIAfs6mBp3osYtsYldSHgo1P3cyRwxI=; b=RN1f9bCy6igfIEuLFiUuv5IxD1xcOu1luQ1a2r5AbIc4seNJKzQo93KvZDilGtmNHDfM7K wN1VXG0u0HtqNjeCH2qnSAAJD/3+9fbtzSppW7S4ahrU3Fpcrnnk2Qf4708MRLiehDgPnp aQML9TbCwlUw/wjTRRixEfdCI+BaSh5DxAvetQL1K2sCRvgThmv9s/YIrMV1Jcwej60Ld0 R7HSIIeCyv89OPGRuKOdukHueoHolQEUYcRP7b7PiWSjSaRNw9kKONpPWzN65NIpCBNa3C j8j75k0CeK2EkyOyB0onqCyR5Q1/IUcivydX0ZJ2kh7qt45iIdREz/CRYypU8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6DLQkphLM/3gPIAfs6mBp3osYtsYldSHgo1P3cyRwxI=; b=OsbE9T5wAygRg6JH4SrIEoVmsn+k+EcG85lU9Q3JlJ2U7H2jhPjqj5nl3wRwFo1CM8KfNR GCUOqoiH9mYPxTE4Z5SaN7qM4EIq+Ywiuh4Qq2cy+gyV0F6MyCyopjyhBc4HTo0J2PeNur jKkCLA5+Mv7f66nOz62dzsBPKABRwpg4vWxorz6tOwSTJIRnJUjnW5AJp7+5PsSXxKpjJe Yts9vU583pNU0jWLRYb3EQpo3AmVCutdwJLYMkMZ+oqshF4xQXMNsMlmiQVAfobwkaccDo OOhvPhZ5sCo6msSg6A2Esz5EAJd5/HrYmDValAXL8fqm8s4fOUrSNRRnzeegQQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616751; a=rsa-sha256; cv=none; b=Sh4iiRWo8eY1AZvCiz+msgPtbMNjZiZxrKZOHjUHOf7MfrwhttPx16Qlj86+uDmel978+r TWY5VQJfES1xBGMJXP1qsgXEoWIVtKea2TOO6AZXmrHkdY3LGJl0+XCnlukNOGDndD9BXA clDk851JwnEF6aOGLUdu3K+cYYD3F9i9VV+hIPJXNu10h4aeHJ6h70en1fiuvT50r5V19K FATlikO71+iD89q5JYLEUYjS8mUjJeNGgDbRfu6XFP2CcZJWiJYOIhNkYu4y4Z05zWXwqR uJHljbcJ6qk/6r0ejW3ZzNlGgkXK24TficWMatyx8DEnaimLS1wtLzbz1ZxJkg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQ72dRyzQHs; Thu, 18 Jan 2024 22:25:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPpIS089095; Thu, 18 Jan 2024 22:25:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPpPF089092; Thu, 18 Jan 2024 22:25:51 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:51 GMT Message-Id: <202401182225.40IMPpPF089092@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: cf0810ba2506 - stable/14 - kldxref: Fix for 32-bit powerpc List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: cf0810ba25061962ba5f5e4012e7b089ed936fc0 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=cf0810ba25061962ba5f5e4012e7b089ed936fc0 commit cf0810ba25061962ba5f5e4012e7b089ed936fc0 Author: Jessica Clarke AuthorDate: 2023-12-14 16:37:34 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:13 +0000 kldxref: Fix for 32-bit powerpc R_PPC_RELATIVE lost its 32-bit handling in the libelf conversion. Reported by: bapt Fixes: 0299afdff145 ("kldxref: Make use of libelf to be a portable cross tool") (cherry picked from commit d1ce87ae0ddca413b098b6be8f5d3b4da87422ef) --- usr.sbin/kldxref/ef_powerpc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/ef_powerpc.c b/usr.sbin/kldxref/ef_powerpc.c index 068c8117e4a6..ab33e170b488 100644 --- a/usr.sbin/kldxref/ef_powerpc.c +++ b/usr.sbin/kldxref/ef_powerpc.c @@ -69,7 +69,8 @@ ef_ppc_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, le64enc(where, val); else be64enc(where, val); - } + } else + be32enc(where, val); break; case R_PPC_ADDR32: /* word32 S + A */ val = EF_SYMADDR(ef, symidx) + addend; From nobody Thu Jan 18 22:25:50 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQ76r08z578Y5; Thu, 18 Jan 2024 22:25:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQ732sbz40gr; Thu, 18 Jan 2024 22:25:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FXOb6zoyWLrLkm+x3o8XA6QiE0P+X3xPdaLc57ftV/A=; b=yN04OMO+04Np0MHyqkMqJ/2kcfo3ZQD6piiFJMxeC3qIcUI1+tHFlrVgfY48auacHayOGF Q0ScvOt7XLmAWxBHXFSR8xgfyYz83tZA53YcoNPFnHGu3ZCKEaS032yCA20ZA3m5LGpvv2 1kvZ8LH/INCiPYU0ZYtrqvRKlSudRUWb8C8aRUgGhklEahmpsk0+nGX4EHM2QVdVUBAADH 4a16O4Prhk0BVALeJbSDYEww5gz1e+hveFnV/f2+Ob4/3kLHO+k+nd9ewBWX7p2Nf0uz4Z UB0TmPVXkN7jmR7ZxVWkNPDNQzHi3g8QI7rrNrOu5Jknm76JUzNMa2cS7rjs/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FXOb6zoyWLrLkm+x3o8XA6QiE0P+X3xPdaLc57ftV/A=; b=puJfurU8uUjEkQz+Oz6K7jenmXkFrjpUfs2DGbFN3nrzqbSENQUyD3ojJ73+8kf37z2/1x nwUu5yfQGPYSmInqdeMUx4LMW2U0SCSTzHYGpuKL02WNgi/uwvE0wMNTpGig7LBWPSl+SR 6JaIjOgQh7tzVcoVVDTwliLlJO6QGkH17CiL102x9oOuu1p1MBxXcgcHBTsQ3pJwfxn+hX euiQcC0bG8d+w9+yUl03uMYd1fc9N54ebWw5ZsxjmJwJXYYasbGt+P0RCPRih3qXKLrGbt b2kLgdIdnzvmI9xQ3eOCXghdIWR9exWpTpZphDdKcEKtZbae88R4vLTZaJL/iA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616751; a=rsa-sha256; cv=none; b=OEf8MoGs1P+s5kNuTPL4ybpW0drTxkVEsC/FdJZKAxFVxFSXAn+RpRgKSvSkthMVcnYGwT y7TMe4MkOW7dZirqzXvBiUAU2BCymImltw4uapRjr381OWsKe7bPQNpgNE2tTjG06NevZh dqL76VtJMNyhpoq0+UDjh8gyM3J6pNsRBIVCi1t8PfZj/lIwe9Ly7DmDN2bXd8rP8kQ9zj +G/jXVQUbUvmHh9LHL/ubsi7InN4E2+l9FWisK8tY7tYkPmZeQvU++Fi2lQRsmF5w6N8ip F1PXvvg7H/Z0M17tcgAV648nDIaN10B7FMDpftIyv6qqSGWgGY6dZUUg2/KURg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQ62DKKzQ4T; Thu, 18 Jan 2024 22:25:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPosb089044; Thu, 18 Jan 2024 22:25:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPoxH089041; Thu, 18 Jan 2024 22:25:50 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:50 GMT Message-Id: <202401182225.40IMPoxH089041@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: ccb683c60335 - stable/14 - kldxref: Cast rtype to int in ef_aarch64.c in warning List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ccb683c60335d68c8d387bfdfdd36b83df1e815e Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ccb683c60335d68c8d387bfdfdd36b83df1e815e commit ccb683c60335d68c8d387bfdfdd36b83df1e815e Author: John Baldwin AuthorDate: 2023-12-13 20:17:44 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:04 +0000 kldxref: Cast rtype to int in ef_aarch64.c in warning This is consistent with the other architecture-specific relocation handlers. Reported by: mjg Sponsored by: DARPA (cherry picked from commit 894f3f48c3ea27a6f0f54850595ff48db9ee4861) --- usr.sbin/kldxref/ef_aarch64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/ef_aarch64.c b/usr.sbin/kldxref/ef_aarch64.c index 5bd521b28e38..f1e499e76ef1 100644 --- a/usr.sbin/kldxref/ef_aarch64.c +++ b/usr.sbin/kldxref/ef_aarch64.c @@ -65,7 +65,7 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, case R_AARCH64_ABS64: break; default: - warnx("unhandled relocation type %lu", rtype); + warnx("unhandled relocation type %d", (int)rtype); break; } return (0); From nobody Thu Jan 18 22:25:52 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQ908Lcz578bM; Thu, 18 Jan 2024 22:25:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQ84sKcz40sB; Thu, 18 Jan 2024 22:25:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616752; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=b5p4J68NgnuVB+xuYXMsqokiN2l1ZCdRusypUj6fC7E=; b=c1cSLDyaReE1zk7CjqPF97kvrTdQkOPDdi1z3cp6ofGuJigbVAi0uIxn8kEweW4/1e4fLw Uo5J0Dpwn/4McNTp57v0uxBZdohLLZsGTlkLQ394PG+HAuvKvfC/cIw4Gpthpm+Z3SdPhg S9MmjKraRLtHId1xKawN5b3T04kgRiY6zMirtZXmak1UgczW04e6ctM0AIBP+KS+k44Dhj kJwOvKR52/kXeAVl7obtDtIggK7bvQblPkf/O4OFrbcbhVZxrNHBhwF2ZHFNb2soE44jn2 FNAW3/i++HBartGBdqmVdw2OAEPv/O9EwwnD9NRU2z3w6pem5/SbZTy0qeC8pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616752; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=b5p4J68NgnuVB+xuYXMsqokiN2l1ZCdRusypUj6fC7E=; b=MPQy8UyzdLxBLruekbCsdVz67KRSi+tl5GVkmSTt0lbytAXFAwpHfCjsbfPpwKAUWS6vgb KeTwbPohN8eN1feDtRlwHiK/vsCGDbEJyrdRFemS6VQwxCxLhvaD/qP3cHPhG/CEdhVAzV 3DuGuRrVKboGCRqIejC7dG8nUAd+fZIt+0kT9KbNzGD97KCpEhpRPz95olhTBRerlUxzDL CeQiq94eDdaDHwWIJKpru1cOJtX9IKD/h39fajCaxrgSJ8SbONPlqI2+viO83n2ZDOJkPI Xrfkb8lg1zjqXrKGuueLiRzn0U+oltR43FCbiuExSm/5t66GUnSmkq1KhhESwA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616752; a=rsa-sha256; cv=none; b=KOW/O7ddj4eK9zMocQ4X59XdDDOsigaTVfSDtACzQePDOEcHZ/1LPQXH92bMXXGI5dxvSu 3pU49LYkanVXYrCg0+59j7UT/JXJUNr+qnTTxabvOL1By0qpKqhYWWtMqxYHDrjbrdShMa kG7Nxr0BhRJusRtZI94+yikJ6yhGFxphwusqvqEV4UlUzRkhLU5iz2HblifJWvs4m5jEXr iib9GuwvFrITKCZyGVnMUvHPpmfasFJeJ1Mo8lqAEK+mOkaOJEfZfzeEI7ABxchw1AXJ1p xbzqJpLb0VuXIW86Ll/fY4lkETQqAhvKslacE9c9l6sQZvEnKj+R7PGP4Xv59A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQ83y5pzQKt; Thu, 18 Jan 2024 22:25:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPqgi089159; Thu, 18 Jan 2024 22:25:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPqNs089156; Thu, 18 Jan 2024 22:25:52 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:52 GMT Message-Id: <202401182225.40IMPqNs089156@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 02f82a3f0e92 - stable/14 - kldxref: Put each ef_CPUARCH.c on its own line to prepare for ef_arm.c List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 02f82a3f0e9276a5fe799c2a22b71f9960169219 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=02f82a3f0e9276a5fe799c2a22b71f9960169219 commit 02f82a3f0e9276a5fe799c2a22b71f9960169219 Author: Jessica Clarke AuthorDate: 2023-12-14 18:27:09 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:21 +0000 kldxref: Put each ef_CPUARCH.c on its own line to prepare for ef_arm.c Adding ef_arm.c would push this past 80 columns, so prepare for its addition by splitting the line up. (cherry picked from commit ada9d12f951201e13d831edc10acc36dd37d625e) --- usr.sbin/kldxref/Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/Makefile b/usr.sbin/kldxref/Makefile index 6e0a7244328b..07451ba8f42b 100644 --- a/usr.sbin/kldxref/Makefile +++ b/usr.sbin/kldxref/Makefile @@ -3,7 +3,12 @@ PACKAGE= runtime PROG= kldxref MAN= kldxref.8 SRCS= kldxref.c ef.c ef_obj.c elf.c -SRCS+= ef_aarch64.c ef_amd64.c ef_i386.c ef_mips.c ef_powerpc.c ef_riscv.c +SRCS+= ef_aarch64.c \ + ef_amd64.c \ + ef_i386.c \ + ef_mips.c \ + ef_powerpc.c \ + ef_riscv.c WARNS?= 2 From nobody Thu Jan 18 22:25:53 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQ971Cxz578Sx; Thu, 18 Jan 2024 22:25:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQ95b3Vz40xx; Thu, 18 Jan 2024 22:25:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616753; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nFgUIgaUsWYKea3bsL6oWdvOhO+CEzJ3CAFIwuDN8kU=; b=tRRDKkRQKAZ9EgXfg2cXZV7bX4WDyJBw1P05l24m2aqekt3GkTdTqqVc7ETxnFvglCXGYo NHRbITfS40u4Nge1sG0AQeSmAlQ7qDXEgH/YX7zO0VvcD71WUR+MuuB1+cJfmMwkVXErQj lFaQmH0RkV0IA0U7vCtTVcP4p7p1H65/P1e8O4lfvyD1+XotWfIABPg6DlS9BOKagTEqCM IMEcGRL70c2cAeCL2fUBY2mR87TTu3QYMZk6aVMX+mMCap1S3pPn0Jp7B9UDTTZX14cVcv 3yJg2KytJSmoRmz7mcvWjo/ht3YtuVUxQejr18+gy+QgI2Q3od5UWCsVwTL61A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616753; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nFgUIgaUsWYKea3bsL6oWdvOhO+CEzJ3CAFIwuDN8kU=; b=hMjDUq/C8t7LhD9BayuDN+W0no0hm/ZLmLHkvA76Z0wiht5QoglPEe4DjAOWDrwjPtG6hf jwa3XA+nNRR4VHfZsINoQc10pvt/lMgyYtvCidoAyx34+OqZ0tSQhPrq/f73xms8+9zpiG Z8mhiBBgD1VxSsoEt9bIrdq1cs2xzCa82zceFxr+s2H5uAAnMyWAmZ6WW55oB0f471njjO HzuRGVwYZ3YIqk08I0kcGZTBjnJ8Wgvm5f08loCfjtsiUVXkLv19dx5ZRvPEuQhxMBkA/i 4sGHtSeOV7WXALauckAexCxVHHQbqgt51vieMX6ErGUJyUsDhXWhUcxDtXnDrQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616753; a=rsa-sha256; cv=none; b=uYtOX8PGnvh/3ffrRsJLYuTZL9hrotgbbIr9DKibdP3mYfOrF8dIEJYfC3v4u8jycmyJFE uFmy21zVAMwjxcjRHSHvyWejeh+qnVraL3QtfSt7jKJWdKB/hutAqwmVSHViVKP95T5YgQ e33n+HL1GZdt2aBugb+WpkOsF72wpqSLbh1VlsHaU/n6IyfSKhYNSGeq7+tDO8DdeqshEV ix8nT/dLtz0yzjVB1Jnmgf2hPQ8uam+1FJ7pD6LMCcb0YkT9K4tRW2oCFGPTU3jgvzEStD TPwMqKL2a/2A1dPFSpKIwtZUxh/+QBvn6mjwSNWJidPEB5E/Qpm3zD7UkdUQ9A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQ94hlvzQ4V; Thu, 18 Jan 2024 22:25:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPrrZ089199; Thu, 18 Jan 2024 22:25:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMProo089196; Thu, 18 Jan 2024 22:25:53 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:53 GMT Message-Id: <202401182225.40IMProo089196@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 84410c7bb737 - stable/14 - kldxref: Add arm support List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 84410c7bb737d2d4b1ff22605f7bd24841f3b3f6 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=84410c7bb737d2d4b1ff22605f7bd24841f3b3f6 commit 84410c7bb737d2d4b1ff22605f7bd24841f3b3f6 Author: Jessica Clarke AuthorDate: 2023-12-14 18:27:09 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:29 +0000 kldxref: Add arm support (cherry picked from commit c88f7d8fb54051366d91acfc6c80aca6154da3b4) --- usr.sbin/kldxref/Makefile | 1 + usr.sbin/kldxref/ef_arm.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/usr.sbin/kldxref/Makefile b/usr.sbin/kldxref/Makefile index 07451ba8f42b..7b392e020939 100644 --- a/usr.sbin/kldxref/Makefile +++ b/usr.sbin/kldxref/Makefile @@ -4,6 +4,7 @@ PROG= kldxref MAN= kldxref.8 SRCS= kldxref.c ef.c ef_obj.c elf.c SRCS+= ef_aarch64.c \ + ef_arm.c \ ef_amd64.c \ ef_i386.c \ ef_mips.c \ diff --git a/usr.sbin/kldxref/ef_arm.c b/usr.sbin/kldxref/ef_arm.c new file mode 100644 index 000000000000..4b926839ee5d --- /dev/null +++ b/usr.sbin/kldxref/ef_arm.c @@ -0,0 +1,94 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2003 Jake Burkholder. + * Copyright 1996-1998 John D. Polstra. + * All rights reserved. + * Copyright (c) 2023 Jessica Clarke + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +#include +#include +#include + +#include "ef.h" + +/* + * Apply relocations to the values we got from the file. `relbase' is the + * target relocation address of the section, and `dataoff' is the target + * relocation address of the data in `dest'. + */ +static int +ef_arm_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, + GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) +{ + char *where; + GElf_Addr addr, addend; + GElf_Size rtype, symidx; + const GElf_Rel *rel; + const GElf_Rela *rela; + + switch (reltype) { + case ELF_T_REL: + rel = (const GElf_Rel *)reldata; + where = (char *)dest + relbase + rel->r_offset - dataoff; + addend = 0; + rtype = GELF_R_TYPE(rel->r_info); + symidx = GELF_R_SYM(rel->r_info); + break; + case ELF_T_RELA: + rela = (const GElf_Rela *)reldata; + where = (char *)dest + relbase + rela->r_offset - dataoff; + addend = rela->r_addend; + rtype = GELF_R_TYPE(rela->r_info); + symidx = GELF_R_SYM(rela->r_info); + break; + default: + return (EINVAL); + } + + if (where < (char *)dest || where >= (char *)dest + len) + return (0); + + if (reltype == ELF_T_REL) + addend = le32dec(where); + + switch (rtype) { + case R_ARM_ABS32: /* S + A */ + addr = EF_SYMADDR(ef, symidx) + addend; + le32enc(where, addr); + break; + case R_ARM_RELATIVE: /* B + A */ + addr = addend + relbase; + le32enc(where, addr); + break; + default: + warnx("unhandled relocation type %d", (int)rtype); + } + return (0); +} + +ELF_RELOC(ELFCLASS32, ELFDATA2LSB, EM_ARM, ef_arm_reloc); From nobody Thu Jan 18 22:25:54 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQC14BYz578FS; Thu, 18 Jan 2024 22:25:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQB6h1Kz40ml; Thu, 18 Jan 2024 22:25:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616754; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fxCK9dbjf/Ix2zCH5z1+i4XHJ8m516bPk0SCFRed1qs=; b=eb8HDsyjwHMWENeSGTjBf3rULZETthDyMSurCJN4Dq8xFsSsrnBiAtQJABcvUk8PXov0LJ V3ETAwHkLW+kBlQ+iyW3F6Qpec7+Nz5VnZlXu4uQqtTXnr3GARtiytvUKbC9pbBJnFR2yF RkQDV9LD9r4mtYDIru75LtKp6U4JpVlcPmzNNH/gz+7WVy1uexlaQpcuZ9Y7yqexjz3EFc dn1sjULF8FoV4GHFPR9H5+VhpWu/LEe0IH8f3tRaJ/4QU1hNyu4NH2ZsjkGyvLs4VCtZvZ W35q3wyMJ+9vkyMhuRg4/thm70oaVlQ3WepgqCkju/jQb7g8MZ0AVEqWe0bwzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616754; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fxCK9dbjf/Ix2zCH5z1+i4XHJ8m516bPk0SCFRed1qs=; b=eN4w+KiZcLWv781HxhK06+pcePXyhvRMV9UD3ZZrzekSw6qUxP/FRjVfmawbvSNYGIggRW YFOjerLTklkqS1J3nHGPLvmWR0QV9T+i8QG6PaCRBYzNWo9dKfqYcCqK8dr58JAlEo3gKm JNfcP6pKr+nfbY9Q44+XKq4N02/Uw9YcIBTDV6KY/mLzxfSTpLDnuXgDpBcT8lGXQ7mKis xNJoGrs/DuAHjccG0n+zY++fdwu6rMDkSuHgDH4R+4bbg7QeHUpmqgGSzkcQ2gVVPSII6R HEJE02C1Jx0fTzmXVGROuvIhuSPwMYBBBa6gkTaMpwqWpjwV+0Sj+OK2+xQrDQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616754; a=rsa-sha256; cv=none; b=T79K/yMlPw2eGQ94HWgiygYBa7FFwUchCoObhhIdEe2DnbduH2V/UhcHVaijwDTyozHfq/ wNoUo6nTZsGnGeVYP6JvVUET+LHQyXTt14bW0m3vgiJTRxAGR3mRHBoxCLXzjiPrjsFq2h EcbySOgqNqBoQmofYf5Y3wnnKJrMLtGpYMMttd4f21U4LQlXRahm6qAdia5BXzMaImppCN j10Q9K/RBaCzlX96DaJuDunxOSxnV1aj2GZvyx0RTKgFyY6M0z0uF9bGBfNPYvCfoGkMmM v9zKcqS8fURRNr/mbOD6X13ji/bDVdxCzPLVKJaCoHkbCZSErNOLHMDSQXz/0w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQB5kVkzPyp; Thu, 18 Jan 2024 22:25:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPs2m089245; Thu, 18 Jan 2024 22:25:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPsWH089242; Thu, 18 Jan 2024 22:25:54 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:54 GMT Message-Id: <202401182225.40IMPsWH089242@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: f935fd713d15 - stable/14 - kldxref: Fix MIPS Elf_Rel addend computation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f935fd713d15ea6a8e1572a95876e359a7531fb1 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=f935fd713d15ea6a8e1572a95876e359a7531fb1 commit f935fd713d15ea6a8e1572a95876e359a7531fb1 Author: Jessica Clarke AuthorDate: 2023-12-14 20:17:19 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:38 +0000 kldxref: Fix MIPS Elf_Rel addend computation Fixes: 0299afdff145 ("kldxref: Make use of libelf to be a portable cross tool") (cherry picked from commit ae7925cafeee1136bd1761b2ce75614ee47b0039) --- usr.sbin/kldxref/ef_mips.c | 1 - 1 file changed, 1 deletion(-) diff --git a/usr.sbin/kldxref/ef_mips.c b/usr.sbin/kldxref/ef_mips.c index edc99a7d2505..60fd35390d7e 100644 --- a/usr.sbin/kldxref/ef_mips.c +++ b/usr.sbin/kldxref/ef_mips.c @@ -88,7 +88,6 @@ ef_mips_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, else addend = be32dec(where); } - addend = *where; } switch (rtype) { From nobody Thu Jan 18 22:25:55 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQD38svz578Qp; Thu, 18 Jan 2024 22:25:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQD0W2kz40yN; Thu, 18 Jan 2024 22:25:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616756; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eTeFt5K7bAB7GK/NH/Q0N2V4YyoDW2gYouMMCBnUcH0=; b=l1H73Yw4U4a8UdIoXWTGin6WBRbQ/1i8dehqWndkNXiXl6YvsTvV/Ag4uqH1gbHDWmfqwA tvvyNhAQuLMAdVxIwW9GJw2cj2NzxWyINFYRnSG++PD6zeKnAmfn7W/lzq30KAjrVBXBv3 HYvhiXaTf/XrI4EgjazQtpLIhOsXEW+IgtSp/kzbuRFBPidVla5ZVALgsX+PBclRApQU1J 80JKinQZVOdtU6RoY4Ktd6xUXDYWHLM4Bfvmh8476WmlJPdrr9JuMzKvF7OhGriKu4PdpF DHj8BWqIQNoiC+w0oV+g8zon2Noqj+whDvHrq/sujtq2ZI24mC9vdVDu6RFNlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616756; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eTeFt5K7bAB7GK/NH/Q0N2V4YyoDW2gYouMMCBnUcH0=; b=MuvWB53sJuaB1y+cirUQMMocfcRTogEPYpJ9cZe6B6nop/wdODC44oJPumoZay6pSc9jf5 vDPrQvZGSR7DAqLLO17NFY/EYYFVJS2B+80e0+osH4NNW2sCSRLAQ+guZQ32EWMnZ3JIW4 Id7hUeJeMUSIYYt0RF4cePYg8kKWLxGkXE9kbLfeF574tbaqsFMFXgcB0S01Vt2MeLVw81 4xY/UxT774hhBwO7j/GhehfFbHdrULW/XPDz2cxkQLGH3+V/UKHXdmOVT9UuMw7qNyuamw 7L8FYOTc4hc0s1+Z4hrNbkO97Gq/hUVuOnxi43HfXHrg4pH8Qsdq8ZEeabDy8g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616756; a=rsa-sha256; cv=none; b=Ajs1B5aoJU3O8GRT0oBVLzAgIXRsslf1SuNoyw7HJHeKwZPtiF/wqpeqpAH75+7u4FrBXz SoxZPJjV9EP1quFKEU8xZklWHBljDPGTezSgAhoiJla7GX9E7WEkm9tF63tLuHXmbvr6pc +xr5BpXzKTkP7/iGSvLdDtbb4sZhxqS+p44/5tsatwKtQHmlO0svDyxBVuaRTQYP59atc/ X/qFd6B9SGmAy7limgyCYk0Xqg+LlJnLkNW77iL0NV8v4gi4RW6bYhky2bsmNo6Lg9V6x2 s0HkH6nPmfNr0BfApGlr9Ht3IR1/Hck5BHTPGCxfpRA3B7htO6CZDYRDcdqejQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQC6F8nzQWc; Thu, 18 Jan 2024 22:25:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPtCd089287; Thu, 18 Jan 2024 22:25:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPtFN089285; Thu, 18 Jan 2024 22:25:55 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:55 GMT Message-Id: <202401182225.40IMPtFN089285@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 156b0d23dcd5 - stable/14 - kldxref: Implement aarch64 R_AARCH64_AB64 relocation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 156b0d23dcd57cd7bba7d0544133e8f32559a2ac Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=156b0d23dcd57cd7bba7d0544133e8f32559a2ac commit 156b0d23dcd57cd7bba7d0544133e8f32559a2ac Author: Jessica Clarke AuthorDate: 2023-12-14 20:17:20 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:48 +0000 kldxref: Implement aarch64 R_AARCH64_AB64 relocation Doing nothing seems to be sufficient but is strange, inconsistent with other architectures, and not necessary when it's easy to support properly. (cherry picked from commit aaba1490ec4b17dea750b1e58dfded7aeb4e9816) --- usr.sbin/kldxref/ef_aarch64.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/usr.sbin/kldxref/ef_aarch64.c b/usr.sbin/kldxref/ef_aarch64.c index f1e499e76ef1..4365a7ff1f66 100644 --- a/usr.sbin/kldxref/ef_aarch64.c +++ b/usr.sbin/kldxref/ef_aarch64.c @@ -43,8 +43,8 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - Elf64_Addr addend; - GElf_Size rtype; + GElf_Addr addr, addend; + GElf_Size rtype, symidx; const GElf_Rela *rela; if (reltype != ELF_T_RELA) @@ -54,6 +54,7 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, where = (char *)dest - dataoff + rela->r_offset; addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); + symidx = GELF_R_SYM(rela->r_info); if (where < (char *)dest || where >= (char *)dest + len) return (0); @@ -63,6 +64,8 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, le64enc(where, relbase + addend); break; case R_AARCH64_ABS64: + addr = EF_SYMADDR(ef, symidx) + addend; + le64enc(where, addr); break; default: warnx("unhandled relocation type %d", (int)rtype); From nobody Thu Jan 18 22:25:56 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQF2qTgz578bV; Thu, 18 Jan 2024 22:25:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQF1Sftz40f4; Thu, 18 Jan 2024 22:25:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616757; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vj07kxgSZUIjO1Odxm5qOu/EBBr8/wg05r/MaJ3UXx4=; b=vGjSlFJ6c5MexGAZtFubOPcvhrj0eIRJfwwNme6hirhYOy2q9qLPuX82Hr5gx4o+LJugyw Yd47pm/gozoF6nmy9zn9C5C9YRq5KXFzwLumTvz37oriPZcogWdzMtlxneeibu0Ovu9PtS cdrp0soIgz+lLQnrreIqlG0nFtwC4Hv2qJ3jSZCqqxhvmMUSs3KH8x/zGkjgJ7PT5x0YU6 wv9UFbf/tLDWaXR3M6mcavF+1S23oljWz8fBlRHmCqtG4WAdz8OgjsxEpJ2IgbMZIzR42X RNEH13LE0nkonYbD000Dj5xGYEKU5KwxlzjYgWV2TrHgKJ+PoBLuEu/NiGN/BA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616757; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vj07kxgSZUIjO1Odxm5qOu/EBBr8/wg05r/MaJ3UXx4=; b=FneLg9m4pqJorRvd9F3UR25bf1PkKtcUigmIhKnJSv/rc0clzHDUqicGH8LQmi6WvU//JP J/leC1Nc2VsUBxx10E2pmgTyeCqiJ51ALNZnAxDFICP+PnS6lf5NMRNqKqj0F3gK6m6ZiX iGM0tOpcYuz4cHoEzooDYPsQUAF1Vp/PNOhBlgqfPFSST2Cmv000GY9g3sL2CcnpuLjv86 NFPETokrSov3qcvxGacaLesRNbfY880mwcxYmitOpOIWJXjemO1+Im/QNMf6yQ4F83yOWK XbOxQmnvrzQ4pZL24tLpO3qpuH8Y96yDcGmidkkh9l5/l25kwPE7xNZyNHW6cA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616757; a=rsa-sha256; cv=none; b=kHNoe5AXSm0UB7ZMzTU4rr3Q1bByMEDpR57DfFl9c5RwLu08a0KftEr6udDyOa6W4OCehl S6yorhCZvYw7Mri6OSvZ5wUxA0lXJsghCc+NtEHN4xCbMJ9pDeLOdBVMK1XYOxhdP7p8ek 8AIBF1obnZD1lLkrBaKkbn/YxVD8e+5mH4ipijdTWw24KRUb+HzeTmF+LeyevegcQ2YIg+ 93mBNPGCyvgprb3JXn6RuHgvlS203z2Kv7Rk2VDH5GtAq9JQtIswG6Nnd4oOuymF8VtSk9 n24ArrU95x9yOgFr2dNs87rZ9gBkz6OhckXg7DiGE5l8MNjSdr3nvVWwdWbHhw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQF0P2BzQG4; Thu, 18 Jan 2024 22:25:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPu2H089344; Thu, 18 Jan 2024 22:25:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPulK089341; Thu, 18 Jan 2024 22:25:56 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:56 GMT Message-Id: <202401182225.40IMPulK089341@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 7ea7498f6406 - stable/14 - kldxref: Reduce divergence between per-architecture files List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 7ea7498f6406bec488957e3ec23ec4c89fa3c436 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=7ea7498f6406bec488957e3ec23ec4c89fa3c436 commit 7ea7498f6406bec488957e3ec23ec4c89fa3c436 Author: Jessica Clarke AuthorDate: 2023-12-14 20:17:20 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:57 +0000 kldxref: Reduce divergence between per-architecture files Note that relbase is always 0 for DSOs so its omission for __KLD_SHARED architectures was not a bug in practice. Whilst here, also parenthesise the dest offset for where to avoid transiently creating an out-of-bounds pointer, which is UB (though even on CHERI architectures, where capability bounds compression can result in that creating invalid capabilities that will trap on dereference, optimisation will reassociate to the correct form in practice and thus work just fine). (cherry picked from commit 2a622f14e8a588de654847ae264cdc3616528c9d) --- usr.sbin/kldxref/ef_aarch64.c | 22 +++++++++++++--------- usr.sbin/kldxref/ef_amd64.c | 28 ++++++++++++---------------- usr.sbin/kldxref/ef_arm.c | 12 ++++++------ usr.sbin/kldxref/ef_i386.c | 17 ++++++++--------- usr.sbin/kldxref/ef_mips.c | 29 +++++++++++++---------------- usr.sbin/kldxref/ef_powerpc.c | 39 +++++++++++++++++++++------------------ usr.sbin/kldxref/ef_riscv.c | 15 ++++++++++----- 7 files changed, 83 insertions(+), 79 deletions(-) diff --git a/usr.sbin/kldxref/ef_aarch64.c b/usr.sbin/kldxref/ef_aarch64.c index 4365a7ff1f66..b61de3b032ab 100644 --- a/usr.sbin/kldxref/ef_aarch64.c +++ b/usr.sbin/kldxref/ef_aarch64.c @@ -47,21 +47,25 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Size rtype, symidx; const GElf_Rela *rela; - if (reltype != ELF_T_RELA) + switch (reltype) { + case ELF_T_RELA: + rela = (const GElf_Rela *)reldata; + where = (char *)dest + (relbase + rela->r_offset - dataoff); + addend = rela->r_addend; + rtype = GELF_R_TYPE(rela->r_info); + symidx = GELF_R_SYM(rela->r_info); + break; + default: return (EINVAL); - - rela = (const GElf_Rela *)reldata; - where = (char *)dest - dataoff + rela->r_offset; - addend = rela->r_addend; - rtype = GELF_R_TYPE(rela->r_info); - symidx = GELF_R_SYM(rela->r_info); + } if (where < (char *)dest || where >= (char *)dest + len) return (0); - switch(rtype) { + switch (rtype) { case R_AARCH64_RELATIVE: - le64enc(where, relbase + addend); + addr = relbase + addend; + le64enc(where, addr); break; case R_AARCH64_ABS64: addr = EF_SYMADDR(ef, symidx) + addend; diff --git a/usr.sbin/kldxref/ef_amd64.c b/usr.sbin/kldxref/ef_amd64.c index 729039daa509..fde032dcabc2 100644 --- a/usr.sbin/kldxref/ef_amd64.c +++ b/usr.sbin/kldxref/ef_amd64.c @@ -36,17 +36,16 @@ #include "ef.h" /* - * Apply relocations to the values we got from the file. `relbase' is the - * target relocation address of the section, and `dataoff' is the target - * relocation address of the data in `dest'. + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest */ static int ef_amd64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - GElf_Addr val; - GElf_Addr addend, addr; + GElf_Addr addr, addend; GElf_Size rtype, symidx; const GElf_Rel *rel; const GElf_Rela *rela; @@ -54,14 +53,14 @@ ef_amd64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, switch (reltype) { case ELF_T_REL: rel = (const GElf_Rel *)reldata; - where = (char *)dest + relbase + rel->r_offset - dataoff; + where = (char *)dest + (relbase + rel->r_offset - dataoff); addend = 0; rtype = GELF_R_TYPE(rel->r_info); symidx = GELF_R_SYM(rel->r_info); break; case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -90,23 +89,20 @@ ef_amd64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, case R_X86_64_NONE: /* none */ break; case R_X86_64_64: /* S + A */ - addr = EF_SYMADDR(ef, symidx); - val = addr + addend; - le64enc(where, val); + addr = EF_SYMADDR(ef, symidx) + addend; + le64enc(where, addr); break; case R_X86_64_32S: /* S + A sign extend */ - addr = EF_SYMADDR(ef, symidx); - val = (Elf32_Addr)(addr + addend); - le32enc(where, val); + addr = EF_SYMADDR(ef, symidx) + addend; + le32enc(where, addr); break; case R_X86_64_GLOB_DAT: /* S */ addr = EF_SYMADDR(ef, symidx); le64enc(where, addr); break; case R_X86_64_RELATIVE: /* B + A */ - addr = addend + relbase; - val = addr; - le64enc(where, val); + addr = relbase + addend; + le64enc(where, addr); break; default: warnx("unhandled relocation type %d", (int)rtype); diff --git a/usr.sbin/kldxref/ef_arm.c b/usr.sbin/kldxref/ef_arm.c index 4b926839ee5d..cc5e265f821e 100644 --- a/usr.sbin/kldxref/ef_arm.c +++ b/usr.sbin/kldxref/ef_arm.c @@ -37,9 +37,9 @@ #include "ef.h" /* - * Apply relocations to the values we got from the file. `relbase' is the - * target relocation address of the section, and `dataoff' is the target - * relocation address of the data in `dest'. + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest */ static int ef_arm_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, @@ -54,14 +54,14 @@ ef_arm_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, switch (reltype) { case ELF_T_REL: rel = (const GElf_Rel *)reldata; - where = (char *)dest + relbase + rel->r_offset - dataoff; + where = (char *)dest + (relbase + rel->r_offset - dataoff); addend = 0; rtype = GELF_R_TYPE(rel->r_info); symidx = GELF_R_SYM(rel->r_info); break; case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -82,7 +82,7 @@ ef_arm_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, le32enc(where, addr); break; case R_ARM_RELATIVE: /* B + A */ - addr = addend + relbase; + addr = relbase + addend; le32enc(where, addr); break; default: diff --git a/usr.sbin/kldxref/ef_i386.c b/usr.sbin/kldxref/ef_i386.c index e4f73877c430..962ed2bc0664 100644 --- a/usr.sbin/kldxref/ef_i386.c +++ b/usr.sbin/kldxref/ef_i386.c @@ -36,9 +36,9 @@ #include "ef.h" /* - * Apply relocations to the values we got from the file. `relbase' is the - * target relocation address of the section, and `dataoff' is the target - * relocation address of the data in `dest'. + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest */ static int ef_i386_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, @@ -53,14 +53,14 @@ ef_i386_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, switch (reltype) { case ELF_T_REL: rel = (const GElf_Rel *)reldata; - where = (char *)dest + relbase + rel->r_offset - dataoff; + where = (char *)dest + (relbase + rel->r_offset - dataoff); addend = 0; rtype = GELF_R_TYPE(rel->r_info); symidx = GELF_R_SYM(rel->r_info); break; case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -76,13 +76,12 @@ ef_i386_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, addend = le32dec(where); switch (rtype) { - case R_386_RELATIVE: /* A + B */ - addr = addend + relbase; + case R_386_RELATIVE: /* B + A */ + addr = relbase + addend; le32enc(where, addr); break; case R_386_32: /* S + A - P */ - addr = EF_SYMADDR(ef, symidx); - addr += addend; + addr = EF_SYMADDR(ef, symidx) + addend; le32enc(where, addr); break; case R_386_GLOB_DAT: /* S */ diff --git a/usr.sbin/kldxref/ef_mips.c b/usr.sbin/kldxref/ef_mips.c index 60fd35390d7e..e4aeedb5c08b 100644 --- a/usr.sbin/kldxref/ef_mips.c +++ b/usr.sbin/kldxref/ef_mips.c @@ -39,32 +39,31 @@ #include "ef.h" /* - * Apply relocations to the values we got from the file. `relbase' is the - * target relocation address of the section, and `dataoff' is the target - * relocation address of the data in `dest'. + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest */ static int ef_mips_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - GElf_Addr val; + GElf_Addr addr, addend; + GElf_Size rtype, symidx; const GElf_Rel *rel; const GElf_Rela *rela; - GElf_Addr addend, addr; - GElf_Size rtype, symidx; switch (reltype) { case ELF_T_REL: rel = (const GElf_Rel *)reldata; - where = (char *)dest + relbase + rel->r_offset - dataoff; + where = (char *)dest + (relbase + rel->r_offset - dataoff); addend = 0; rtype = GELF_R_TYPE(rel->r_info); symidx = GELF_R_SYM(rel->r_info); break; case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -92,20 +91,18 @@ ef_mips_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, switch (rtype) { case R_MIPS_64: /* S + A */ - addr = EF_SYMADDR(ef, symidx); - val = addr + addend; + addr = EF_SYMADDR(ef, symidx) + addend; if (elf_encoding(ef) == ELFDATA2LSB) - le64enc(where, val); + le64enc(where, addr); else - be64enc(where, val); + be64enc(where, addr); break; case R_MIPS_32: /* S + A */ - addr = EF_SYMADDR(ef, symidx); - val = addr + addend; + addr = EF_SYMADDR(ef, symidx) + addend; if (elf_encoding(ef) == ELFDATA2LSB) - le32enc(where, val); + le32enc(where, addr); else - be32enc(where, val); + be32enc(where, addr); break; default: warnx("unhandled relocation type %d", (int)rtype); diff --git a/usr.sbin/kldxref/ef_powerpc.c b/usr.sbin/kldxref/ef_powerpc.c index ab33e170b488..f72cc1d85e20 100644 --- a/usr.sbin/kldxref/ef_powerpc.c +++ b/usr.sbin/kldxref/ef_powerpc.c @@ -40,48 +40,51 @@ * target relocation address of the section, and `dataoff/len' is the region * that is to be relocated, and has been copied to *dest */ -int +static int ef_ppc_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - GElf_Addr addend, val; + GElf_Addr addr, addend; GElf_Size rtype, symidx; const GElf_Rela *rela; - if (reltype != ELF_T_RELA) + switch (reltype) { + case ELF_T_RELA: + rela = (const GElf_Rela *)reldata; + where = (char *)dest + (relbase + rela->r_offset - dataoff); + addend = rela->r_addend; + rtype = GELF_R_TYPE(rela->r_info); + symidx = GELF_R_SYM(rela->r_info); + break; + default: return (EINVAL); - - rela = (const GElf_Rela *)reldata; - where = (char *)dest - dataoff + rela->r_offset; - addend = rela->r_addend; - rtype = GELF_R_TYPE(rela->r_info); - symidx = GELF_R_SYM(rela->r_info); + } if (where < (char *)dest || where >= (char *)dest + len) return (0); switch (rtype) { case R_PPC_RELATIVE: /* word32|doubleword64 B + A */ - val = relbase + addend; + addr = relbase + addend; if (elf_class(ef) == ELFCLASS64) { if (elf_encoding(ef) == ELFDATA2LSB) - le64enc(where, val); + le64enc(where, addr); else - be64enc(where, val); + be64enc(where, addr); } else - be32enc(where, val); + be32enc(where, addr); break; case R_PPC_ADDR32: /* word32 S + A */ - val = EF_SYMADDR(ef, symidx) + addend; - be32enc(where, val); + addr = EF_SYMADDR(ef, symidx) + addend; + be32enc(where, addr); break; case R_PPC64_ADDR64: /* doubleword64 S + A */ - val = EF_SYMADDR(ef, symidx) + addend; + addr = EF_SYMADDR(ef, symidx) + addend; if (elf_encoding(ef) == ELFDATA2LSB) - le64enc(where, val); + le64enc(where, addr); else - be64enc(where, val); + be64enc(where, addr); break; default: warnx("unhandled relocation type %d", (int)rtype); diff --git a/usr.sbin/kldxref/ef_riscv.c b/usr.sbin/kldxref/ef_riscv.c index 38299a1e9b46..46b9b66bee58 100644 --- a/usr.sbin/kldxref/ef_riscv.c +++ b/usr.sbin/kldxref/ef_riscv.c @@ -38,19 +38,24 @@ #include "ef.h" -int +/* + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest + */ +static int ef_riscv_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - const GElf_Rela *rela; - GElf_Addr addend, addr; + GElf_Addr addr, addend; GElf_Size rtype, symidx; + const GElf_Rela *rela; switch (reltype) { case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -68,7 +73,7 @@ ef_riscv_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, le64enc(where, addr); break; case R_RISCV_RELATIVE: /* B + A */ - addr = addend + relbase; + addr = relbase + addend; le64enc(where, addr); break; default: From nobody Thu Jan 18 22:25:58 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQG4HJ3z578NV; Thu, 18 Jan 2024 22:25:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQG2Z4Jz411Z; Thu, 18 Jan 2024 22:25:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uwjmzhcIEFj/y1Lo81OENdQuiFIGUElfxj7cXWFVTNk=; b=G3Ym7cvlH+wbKUhVjAxG1jKdYdiKfFVT8CMJFUDNsXz+ala4eUCdEp6YTnol+VNtc3hzWA oEcFChk/1c6ujo8N5hwpiBwmZSWfKZ5r5LVx/VHYDO8vGCwQNCDxNI97G74EFviXyTQhRz YKjz+QKQqRXoPwuAHNO2WXVNFWG8nZUKmBuJq176Dua1G36iPl2/C/LnDDKwdR8keMP8Co l6k/r8Ku5iUPku+Buew4DDFzfQns2h5Y1SHvN+y8170FO6G+7wQWH+ElT4AOWEHgiF0UFw 1aikf1xM4IcZd3IilbG8IXDOXQheieugNGVZUKI9bdJ9QeaF3fIbyHFqSLuaIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uwjmzhcIEFj/y1Lo81OENdQuiFIGUElfxj7cXWFVTNk=; b=KQqlfmA8U598y8dUJ0dZdJ2bT/UUPPVN2llHbK+K/6dAlI6HgYLJudqcfZ0ktyC+vuLB58 hCV1wGyIx+gmLr1JaxtqHmwUC+YQYCTYXfOk+sdkpZakln0LY+fVu31jWSiBA79Hce0Xfg XBt/kRv5ursxE5xqA+/+H5nr/mVy7u+oCwr+tyDxomVWL+xR0q6ov1sQ3ojw93ZLXsLxKj ZoH2cS/mw00JAnNEnYrjb9jn/cMJscVM//RI9jI8QaokZ6vvE6hAQLFDI8wLGyuyC39QQY vWaEQDaLvMmwkmyoCFpQLKHCatQJStKb8mUZvfnkQF4I8dhCQN42Zu84Zp/NXA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616758; a=rsa-sha256; cv=none; b=yEoXWjlUrtdIzWa4LcW0r/EDpSRX5E9ROpukp6tfI4WNfPTyySxPnYBZhjdrGO+pElk5GV vVViTlTAAlOwC8IOWGZUROWubqjp4MVpwDJIJ9AekPFryHFXfpD3puAN4jhZxM/FsMPfHk ZrF6xFr4MK5okxIXvIOqLFj5YSPuNXVSf4POEvhFhqrd0Y2SsevKdSQkawWAoZjXm/HqI8 bp6VHkt+pVBqYMWPLUGENJHhPbi2LJzP+wM616BBTFK7Io3EO1hJB7dmKvIRS0HD7DGyty skmI6zfucGRS6ixRRop4fbQBduylWtGUKVCUsMRJkZZNL3SlGizR6YyVGi3y5A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQG1GkmzQG5; Thu, 18 Jan 2024 22:25:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPwPS089393; Thu, 18 Jan 2024 22:25:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPw7e089390; Thu, 18 Jan 2024 22:25:58 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:58 GMT Message-Id: <202401182225.40IMPw7e089390@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 6de6c4211bdd - stable/14 - kldxref: Tidy error handling for invalid addresses List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6de6c4211bddab4c6359244684cdc3cd74b3117e Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6de6c4211bddab4c6359244684cdc3cd74b3117e commit 6de6c4211bddab4c6359244684cdc3cd74b3117e Author: John Baldwin AuthorDate: 2023-12-22 15:48:47 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:06 +0000 kldxref: Tidy error handling for invalid addresses - Don't print an offset value that's always zero. - ef_get_offset can't return -1. Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43124 (cherry picked from commit 6d46e2e0a7f345459fb42e666c7cb2e987c70857) --- usr.sbin/kldxref/ef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/usr.sbin/kldxref/ef.c b/usr.sbin/kldxref/ef.c index aa9123d7f540..46d3dc1f4578 100644 --- a/usr.sbin/kldxref/ef.c +++ b/usr.sbin/kldxref/ef.c @@ -512,8 +512,8 @@ ef_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) ofs = ef_get_offset(ef, address); if (ofs == 0) { if (ef->ef_verbose) - warnx("ef_seg_read_rel(%s): zero offset (%jx:%ju)", - ef->ef_name, (uintmax_t)address, (uintmax_t)ofs); + warnx("ef_seg_read_rel(%s): bad address (%jx)", + ef->ef_name, (uintmax_t)address); return (EFAULT); } error = elf_read_raw_data(ef->ef_efile, ofs, dest, len); @@ -542,7 +542,7 @@ ef_seg_read_string(elf_file_t ef, GElf_Addr address, size_t len, char *dest) int error; ofs = ef_get_offset(ef, address); - if (ofs == 0 || ofs == (GElf_Off)-1) { + if (ofs == 0) { if (ef->ef_verbose) warnx("ef_seg_read_string(%s): bad offset (%jx:%ju)", ef->ef_name, (uintmax_t)address, (uintmax_t)ofs); From nobody Thu Jan 18 22:25:59 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQH6xzVz578Qx; Thu, 18 Jan 2024 22:25:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQH3z7Qz40x0; Thu, 18 Jan 2024 22:25:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616759; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Myx7/zcNo5AqYF52yMzqtYD/efEV+Fj3MwgxLONOa60=; b=ppM/QaJPQhITpWAeFxpq5nQ2EOK6jDkoc6/uVyPLiBi0ofZyC0YaE8Ba7Zbn+9BaPzeqK2 S3YL2iYnCQnjOUZOsNfaTr76gpEIPfWBnOCZ6vP09UoUg/YFdofh+AVKCd+OcC1xLoDp9/ lP1+OSaPnqwKZ3RPuRvYkVk59H++dnqqyo1xzu4MmOCQFKwGxMoTP8cdeT4RXYzCkXOzhb 7L4q3SW13KQOBs0HtWUOsqbZuo5pO++QeuKYOEMOM3I4Bd66SgLRRidswOQfV1fcdz19Gt wwqFDnogmVYhhWozyomakBFSlWnYyDgDUP7b3iWugRuaoWPUG6hQAxgAlLTYAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616759; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Myx7/zcNo5AqYF52yMzqtYD/efEV+Fj3MwgxLONOa60=; b=d/sWfREHE0d0bYITR4TSJO02wvhty6tDoPwTQw+AVMIqlRQbYDsXiVPM+Cjr6li4TS/D/Q CkGgaWplmaxXLFE3FeWgUXgGPEtJ8zXpUDQQMeOChzxaS3oNOcuDDdVDL0Q+tV7lkpZ8oz 368Fj5EyAMuLCnJI+aWdJsKGcct4HefWppjEnNcgs80r82qKZw4efMDeCbJqjH8obHa9u8 ZLuCrJq1zUz6zfreIOXMTQZxeXiwepr1DRb7NpE5ujw/Z+0mLxQxwKuK/3cNrqLr4A/FA4 Cdq+on94yPrSBbOnC5bpQxIzNx7QEtbtBC0YyH7HyW9b/toYEoP5pAaROy2HFw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616759; a=rsa-sha256; cv=none; b=XLh/nw/SmRyRfpRkPv9cMkikkixxxmAzFzCeQ41HIOngPG0Riou3nWKzYcFqr+DyV7W7qe QkLe6Rje45/kqLVfpS+brApHd7E6fuO5F0WF0BBD4VxtzQLXlWRECHCyQ9Av4Ns2Cb8H3h +KJHdIhFUerCDHJhgOhYwl64Jvun4Ru09y6Ota+npt6wHVlzR+yA0eDC9XGjkM2yg+IcLl Oo2Lqv0bOqZ2zoJtRs+GYreDAK+vcSPfjOzXUMAd+DvoiT8DrmGgEWWVJAEuQBtgn/bArU k3Rt1WIpAf9cNhBOGweaDG83nBhPF+bmvSKmfIlAO3nKePuho7/HmS1+4+PGrA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQH2YrdzQWd; Thu, 18 Jan 2024 22:25:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMPxOq089429; Thu, 18 Jan 2024 22:25:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMPxfx089426; Thu, 18 Jan 2024 22:25:59 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:25:59 GMT Message-Id: <202401182225.40IMPxfx089426@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 38effbdd2d8a - stable/14 - kldxref: Simplify elf_read_raw_data List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 38effbdd2d8a033e1221d309517c4d4418018ec3 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=38effbdd2d8a033e1221d309517c4d4418018ec3 commit 38effbdd2d8a033e1221d309517c4d4418018ec3 Author: John Baldwin AuthorDate: 2023-12-22 15:49:03 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:20 +0000 kldxref: Simplify elf_read_raw_data Use pread as a valid offset is always passed now. Originally the DSO code read the .hash section in two separate requests and relied on the implicit offset for the second read, but now the hash table is fetched in a single call. Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43125 (cherry picked from commit ed96fd7fc652d77ae5e34727e54610e87854defc) --- usr.sbin/kldxref/elf.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/usr.sbin/kldxref/elf.c b/usr.sbin/kldxref/elf.c index f8a6510ed352..cc9bf9e6cb38 100644 --- a/usr.sbin/kldxref/elf.c +++ b/usr.sbin/kldxref/elf.c @@ -170,11 +170,7 @@ elf_read_raw_data(struct elf_file *efile, off_t offset, void *dst, size_t len) { ssize_t nread; - if (offset != (off_t)-1) { - if (lseek(efile->ef_fd, offset, SEEK_SET) == -1) - return (EIO); - } - nread = read(efile->ef_fd, dst, len); + nread = pread(efile->ef_fd, dst, len, offset); if (nread == -1) return (errno); if (nread != len) From nobody Thu Jan 18 22:26:00 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQJ6Ghqz578dp; Thu, 18 Jan 2024 22:26:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQJ4B3Jz411q; Thu, 18 Jan 2024 22:26:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616760; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Z9D/cfIAbhJ0gzWtB3Qb0f9xbYBUYQD5C9FiO4VCq/g=; b=lQllUIDDFasuyoJOnEXX953P9Mn8rqtDXJfKQbLcJ092zl0TMHbSw0PijEoYftThfqEF7u RbJDUiZoyMoNk1PkolUDaX0jAaJaDib7NNnFVuASohnrj4r0hOlQcevG8EVHFtTfgcFgwY kcmmu8vkPLnVDX7V1hqzMIzAvVkqsezaUdEv+6M0fjMhnLtOHjdgadpHuRhQ1sVtAeh0p2 qGzkWiYppKH9Ng6Q4/UJ/35izZBVCrDtDSgJoN7bqG/fkQvXMzOrcLRz9+QEZn0b/xqOqV k28/MXBScASn1M30bWZ3XHIu1JLIq3U+ilpUWYxa9Am2PuBUpIX+Za85Jq3Lzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616760; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Z9D/cfIAbhJ0gzWtB3Qb0f9xbYBUYQD5C9FiO4VCq/g=; b=ujypcWdXvYCPj3th0ZgibTz+2z7jpPrIadSMkgwd+e0ZUTNzSfh4lDVmf3yhdqXmtfxpIa 6GJow4sVIbyr7vTne3CfWpPKA91RgRJvUpW1NmVhgLFlSX6QXDdCIzsjcHXb8BkH81CstC TXEb9Na8X4Vu7O6Bq7HLx1GZiLHGIoT45BqwVowVB6FsDSo4th+7p8PkcTDYGFXn5qW3T4 KVpQCZ36EAIT7uJryLXmc+BA5rTCBCj/ud/ZJgVHiUHLla5e2aoZk0cJC8bG1rqQxUFcjU b/BGyq/2bhILUdGZA5n92M/S03nPg9+Vf4v864HcLvI9tUPL3jHjOtqgOqNlBg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616760; a=rsa-sha256; cv=none; b=y0O2+UOnNf05tywlXzbi5sF5IbtZv4uQBlpVW2Lm9CtePB6oFq6xdW3nguD2NJoWeyaqMO 7g+Xq/QJZOUBuBq/2fODH9qlmyjkXV1IlmbA0vDWy98czh/2casI4s8KHRIhxmcDe9ujfk lZckiWYf+o7Wiwm60Ezl0//d+JoeL4k5qfcF+ilJbdJRgx5RwVtWo3l+j5xluJ2RGqpkIr tDehb0gcD+MOgAn9Ap8QTfeIo6kSnlF7s/krtb9GxWRGeh2u8BOIxdykGgvKz1QYdgrCkC X/WYgnrpIEjrN0imvJZVBLKppF2Ymm2Yy56pcA4t93jy70Zsc3a4URhGNzk5qw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQJ3GBrzQ4W; Thu, 18 Jan 2024 22:26:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQ0G3089484; Thu, 18 Jan 2024 22:26:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQ0jG089481; Thu, 18 Jan 2024 22:26:00 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:00 GMT Message-Id: <202401182226.40IMQ0jG089481@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 214c8da28028 - stable/14 - kldxref: Simplify handling of ELF object files List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 214c8da28028760b5a3c0c1c264c4d4aa42128f7 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=214c8da28028760b5a3c0c1c264c4d4aa42128f7 commit 214c8da28028760b5a3c0c1c264c4d4aa42128f7 Author: John Baldwin AuthorDate: 2023-12-22 15:49:18 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:29 +0000 kldxref: Simplify handling of ELF object files Unlike the backend for ELF DSOs, the object file backend allocated an aligned chunk of memory and read all of the in-memory sections from the file into this memory even though most of the file contents were never used. Instead, just track a set of virtual addresses (based at 0) that each loaded section would be loaded at and only read the necessary bits from the backing file when needed. Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43126 (cherry picked from commit 0d557cdf6f0e94e909acea065f3de2a28437ae74) --- usr.sbin/kldxref/ef_obj.c | 146 +++++++++++++++++++++------------------------- 1 file changed, 65 insertions(+), 81 deletions(-) diff --git a/usr.sbin/kldxref/ef_obj.c b/usr.sbin/kldxref/ef_obj.c index 36c0dce432b6..1274a14c10af 100644 --- a/usr.sbin/kldxref/ef_obj.c +++ b/usr.sbin/kldxref/ef_obj.c @@ -46,7 +46,8 @@ #include "ef.h" typedef struct { - char *addr; + GElf_Addr addr; + GElf_Off offset; GElf_Off size; int flags; int sec; /* Original section */ @@ -69,9 +70,6 @@ struct ef_file { char *ef_name; struct elf_file *ef_efile; - char *address; - GElf_Off size; - Elf_progent *progtab; int nprogtab; @@ -113,6 +111,22 @@ static struct elf_file_ops ef_obj_file_ops = { .lookup_set = ef_obj_lookup_set, }; +static GElf_Off +ef_obj_get_offset(elf_file_t ef, GElf_Addr addr) +{ + Elf_progent *pt; + int i; + + for (i = 0; i < ef->nprogtab; i++) { + pt = &ef->progtab[i]; + if (pt->offset == (GElf_Off)-1) + continue; + if (addr >= pt->addr && addr < pt->addr + pt->size) + return (pt->offset + (addr - pt->addr)); + } + return (0); +} + static int ef_obj_lookup_symbol(elf_file_t ef, const char *name, GElf_Sym **sym) { @@ -139,9 +153,8 @@ ef_obj_lookup_set(elf_file_t ef, const char *name, GElf_Addr *startp, for (i = 0; i < ef->nprogtab; i++) { if ((strncmp(ef->progtab[i].name, "set_", 4) == 0) && strcmp(ef->progtab[i].name + 4, name) == 0) { - *startp = ef->progtab[i].addr - ef->address; - *stopp = ef->progtab[i].addr + ef->progtab[i].size - - ef->address; + *startp = ef->progtab[i].addr; + *stopp = ef->progtab[i].addr + ef->progtab[i].size; *countp = (*stopp - *startp) / elf_pointer_size(ef->ef_efile); return (0); @@ -160,46 +173,50 @@ ef_obj_symaddr(elf_file_t ef, GElf_Size symidx) sym = ef->ddbsymtab + symidx; if (sym->st_shndx != SHN_UNDEF) - return (sym->st_value - (GElf_Addr)ef->address); + return (sym->st_value); return (0); } static int ef_obj_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) { - char *memaddr; + GElf_Off secofs; GElf_Rel *r; GElf_Rela *a; GElf_Addr secbase, dataoff; int error, i, sec; - if (address + len > ef->size) { - if (ef->ef_verbose) - warnx("ef_obj_seg_read_rel(%s): bad offset/len (%lx:%ld)", - ef->ef_name, (long)address, (long)len); - return (EFAULT); - } - bcopy(ef->address + address, dest, len); - /* Find out which section contains the data. */ - memaddr = ef->address + address; sec = -1; - secbase = dataoff = 0; for (i = 0; i < ef->nprogtab; i++) { - if (ef->progtab[i].addr == NULL) + if (address < ef->progtab[i].addr) continue; - if (memaddr < (char *)ef->progtab[i].addr || memaddr + len > - (char *)ef->progtab[i].addr + ef->progtab[i].size) + + dataoff = address - ef->progtab[i].addr; + if (dataoff + len > ef->progtab[i].size) continue; + sec = ef->progtab[i].sec; - /* We relocate to address 0. */ - secbase = (char *)ef->progtab[i].addr - ef->address; - dataoff = memaddr - ef->address; + secbase = ef->progtab[i].addr; + secofs = ef->progtab[i].offset; break; } - if (sec == -1) + if (sec == -1) { + if (ef->ef_verbose) + warnx("ef_obj_seg_read_rel(%s): bad address (%jx)", + ef->ef_name, (uintmax_t)address); return (EFAULT); + } + + if (secofs == (GElf_Off)-1) { + memset(dest, 0, len); + } else { + error = elf_read_raw_data(ef->ef_efile, secofs + dataoff, dest, + len); + if (error != 0) + return (error); + } /* Now do the relocations. */ for (i = 0; i < ef->nrel; i++) { @@ -208,7 +225,7 @@ ef_obj_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) for (r = ef->reltab[i].rel; r < &ef->reltab[i].rel[ef->reltab[i].nrel]; r++) { error = elf_reloc(ef->ef_efile, r, ELF_T_REL, secbase, - dataoff, len, dest); + address, len, dest); if (error != 0) return (error); } @@ -219,7 +236,7 @@ ef_obj_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) for (a = ef->relatab[i].rela; a < &ef->relatab[i].rela[ef->relatab[i].nrela]; a++) { error = elf_reloc(ef->ef_efile, a, ELF_T_RELA, secbase, - dataoff, len, dest); + address, len, dest); if (error != 0) return (error); } @@ -230,21 +247,23 @@ ef_obj_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) static int ef_obj_seg_read_string(elf_file_t ef, GElf_Addr address, size_t len, char *dest) { + GElf_Off ofs; + int error; - if (address >= ef->size) { + ofs = ef_obj_get_offset(ef, address); + if (ofs == 0) { if (ef->ef_verbose) - warnx("ef_obj_seg_read_string(%s): bad address (%lx)", - ef->ef_name, (long)address); + warnx("ef_obj_seg_read_string(%s): bad address (%jx)", + ef->ef_name, (uintmax_t)address); return (EFAULT); } - if (ef->size - address < len) - len = ef->size - address; - - if (strnlen(ef->address + address, len) == len) + error = elf_read_raw_data(ef->ef_efile, ofs, dest, len); + if (error != 0) + return (error); + if (strnlen(dest, len) == len) return (EFAULT); - memcpy(dest, ef->address + address, len); return (0); } @@ -255,8 +274,8 @@ ef_obj_open(struct elf_file *efile, int verbose) GElf_Ehdr *hdr; GElf_Shdr *shdr; GElf_Sym *es; - char *mapbase; - size_t i, mapsize, alignmask, max_addralign, nshdr; + GElf_Addr mapbase; + size_t i, nshdr; int error, pb, ra, rl; int j, nsym, symstrindex, symtabindex; @@ -359,59 +378,26 @@ ef_obj_open(struct elf_file *efile, int verbose) } } - /* Size up code/data(progbits) and bss(nobits). */ - alignmask = 0; - max_addralign = 0; - mapsize = 0; - for (i = 0; i < nshdr; i++) { - switch (shdr[i].sh_type) { - case SHT_PROGBITS: - case SHT_NOBITS: - alignmask = shdr[i].sh_addralign - 1; - if (shdr[i].sh_addralign > max_addralign) - max_addralign = shdr[i].sh_addralign; - mapsize += alignmask; - mapsize &= ~alignmask; - mapsize += shdr[i].sh_size; - break; - } - } - - /* We know how much space we need for the text/data/bss/etc. */ - ef->size = mapsize; - if (posix_memalign((void **)&ef->address, max_addralign, mapsize)) { - printf("posix_memalign failed\n"); - goto out; - } - mapbase = ef->address; - /* - * Now load code/data(progbits), zero bss(nobits), allocate - * space for and load relocs + * Now allocate address space for code/data(progbits) and + * bss(nobits) and allocate space for and load relocs. */ pb = 0; rl = 0; ra = 0; - alignmask = 0; + mapbase = 0; for (i = 0; i < nshdr; i++) { switch (shdr[i].sh_type) { case SHT_PROGBITS: case SHT_NOBITS: - alignmask = shdr[i].sh_addralign - 1; - mapbase += alignmask; - mapbase = (char *)((uintptr_t)mapbase & ~alignmask); - ef->progtab[pb].addr = (void *)(uintptr_t)mapbase; + mapbase = roundup2(mapbase, shdr[i].sh_addralign); + ef->progtab[pb].addr = mapbase; if (shdr[i].sh_type == SHT_PROGBITS) { ef->progtab[pb].name = "<>"; - if (elf_read_raw_data(efile, - shdr[i].sh_offset, ef->progtab[pb].addr, - shdr[i].sh_size) != 0) { - printf("failed to read progbits\n"); - goto out; - } + ef->progtab[pb].offset = shdr[i].sh_offset; } else { ef->progtab[pb].name = "<>"; - bzero(ef->progtab[pb].addr, shdr[i].sh_size); + ef->progtab[pb].offset = (GElf_Off)-1; } ef->progtab[pb].size = shdr[i].sh_size; ef->progtab[pb].sec = i; @@ -424,7 +410,7 @@ ef_obj_open(struct elf_file *efile, int verbose) es = &ef->ddbsymtab[j]; if (es->st_shndx != i) continue; - es->st_value += (GElf_Addr)ef->progtab[pb].addr; + es->st_value += ef->progtab[pb].addr; } mapbase += shdr[i].sh_size; pb++; @@ -464,8 +450,6 @@ ef_obj_close(elf_file_t ef) if (ef->ef_name) free(ef->ef_name); - if (ef->size != 0) - free(ef->address); if (ef->nprogtab != 0) free(ef->progtab); if (ef->nrel != 0) { From nobody Thu Jan 18 22:26:01 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQK5pgZz578YH; Thu, 18 Jan 2024 22:26:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQK4lMrz40xH; Thu, 18 Jan 2024 22:26:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616761; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZWCk+oFLa8HYJEPl2y+luUF5K8ZSFTEq2v7vQ9pxeDI=; b=gXw8s/seh16u+FGXl85jcN6IcHQmHuY66FpVxIPBwyeCZjnPXGUHUvqMtwtNVwlVztB4o4 5oPV2mjg0dyDZUmp4+LbvAwxRCqbTkts1lEltvupUrk3LoFLoLXgyhLOR47DIhdJihu8KT EcPIKR5jr5LVBdZhb6ZcQReFp7sei2k8B38nqlDE3bImlVO1SfTp9jxshZXrhZpjzw1jBP 7+ZX2A1K5E/jxcCtGGpoWCSxZZPyNPQBnukg6JixHoxyMukPnTFP8mK7ClTA6oGWyUQoa7 KVCY/qaXi6gwHfwOgHYkjwm4C/XxD8d+sB2fIn9oOBhvHgZv64wzsNKCdAMSsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616761; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZWCk+oFLa8HYJEPl2y+luUF5K8ZSFTEq2v7vQ9pxeDI=; b=XorzdLN6f/aWSXf4blN3f8o49MMGmuAQysykxGCPXwZW7XvSbNMMTo0P7ms2G77nepZy3Q O1VjSsbQnwfwv+DYU6E4HFqk/Hf7M31gS4dE8Q5su0uM8o/hZHskGVF2nABY362wy4wZzO TCrMCHS9AqXap7nri0PSUk+QDUhJZM9mOAE9HzuFh1e6L94lRb8SoyZruJKNVYDJEvxhBE fGLKVfyUeONeCB4SUPSOno5104c92z3m+ANvE4LzMNrIw6x19OFeRHLTl/yy7co2VeQW0k JnOeD/sFkMIqLAIOWaxwVLbCKnkSnGDIA75trEyGVyFQ6V/zrBJTS3e2ho2knw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616761; a=rsa-sha256; cv=none; b=HH9oHhagkIaOkvP1FqNw+QQHdb/8s6kgUQFes/vU/pTAYRRGjq7VQeyBAmZxCsyQP2u+j2 HiUWZeyRxmiwZFcuocytIF3vI91p+ifdNUZFsSOErUMnrCms993aMteuK2CaEFwpWCvMqg OzWuBsE1QIcX+1pCs3jO9WadmywrqEkCyFT/jjGyikXLcgCA+xXyMwjIQWrSQFx+jyGkHB ntNMkLLTM+wkC4AXraUhkQ1kiJnWCNP/zG0h/N/ZFolMZU9xkZvOd8HP2vPPXGPqPlgsh/ F65X9O6m0AipJnhTVCwlLy/AtqJUYWKY1SPkwz7pFjDVjTyYgefv1gGlS7SH2g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQK3sDyzQ4X; Thu, 18 Jan 2024 22:26:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQ1Wc089529; Thu, 18 Jan 2024 22:26:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQ16L089526; Thu, 18 Jan 2024 22:26:01 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:01 GMT Message-Id: <202401182226.40IMQ16L089526@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 8ac6f5e39417 - stable/14 - kldxref: Appease a Coverity warning List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8ac6f5e3941796195ae1e78602523499a20b68b7 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=8ac6f5e3941796195ae1e78602523499a20b68b7 commit 8ac6f5e3941796195ae1e78602523499a20b68b7 Author: John Baldwin AuthorDate: 2023-12-22 15:49:40 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:43 +0000 kldxref: Appease a Coverity warning While parsing .dynamic, nsym is set when parsing the symbol table from .dynsym. That parsing also sets ef->ef_symtab to a non-NULL value. The value of nsym isn't validated until after a check for ef->ef_symtab being NULL, so nsym always has a valid value when it is read. However, that chain of events is a bit much for static analysis to follow, so initialize nsym to 0 before parsing sections to quiet the warning. Reported by: Coverity Scan CID: 1532339 Sponsored by: DARPA (cherry picked from commit d281fece432f97b4424b852f23dfe1f974b9e30d) --- usr.sbin/kldxref/ef.c | 1 + 1 file changed, 1 insertion(+) diff --git a/usr.sbin/kldxref/ef.c b/usr.sbin/kldxref/ef.c index 46d3dc1f4578..fd0782ff1dd0 100644 --- a/usr.sbin/kldxref/ef.c +++ b/usr.sbin/kldxref/ef.c @@ -361,6 +361,7 @@ ef_parse_dynamic(elf_file_t ef, const GElf_Phdr *phdyn) goto out; } + nsym = 0; for (i = 0; i < nshdr; i++) { switch (shdr[i].sh_type) { case SHT_HASH: From nobody Thu Jan 18 22:26:02 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQM1tHjz578WJ; Thu, 18 Jan 2024 22:26:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQL5Y2jz416N; Thu, 18 Jan 2024 22:26:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616762; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CBBUwIwr6b/7X1kPr+LXrnwlc+FV2mn+nC1QJ/Z4y5A=; b=wUgK71dmzsj20SosOYkPR3aF4k1SO8Mzea+HpT7k/WlaPc7FfU4TN3TPtJ0O+OJZylq11S jgK+xM6s44xPEkM/tpIvckhNFW2iyKOBakm9iiHa75ZF5+TB1n31bXdoU01N9DblkabPRF jRoMz0nDWCUtQhjd+tI3oAIBIvXY3JHipBvVM1fcUUki1JeIYj6FsSuaUdMvtNjdpkz6B1 4Gi08EUmdHOIEMmyMCqdSUQAzFgdkWw8KrC9d0nmk1JkskI4uVAfauaZOlUtCCdZU97RKT 6lMNT2N7Jc+/dpG6EPJhxmCe12PockximPuCnMWj4wHQbx9no8uZuoaPqsweYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616762; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CBBUwIwr6b/7X1kPr+LXrnwlc+FV2mn+nC1QJ/Z4y5A=; b=bW17PP8FQpPW+2rX1vUpMgaXT7wFVftonErrNYcdG21JKpx7V/o4g5DIlc+Kl9l3ra0xp1 mOqLtvyXNZXqZtdhZrcohZBg8xScO3A8byuINYN2/G7qFBb8lBZWyPPk4ZnatcsAVHXVTd TQp2tH5IuTGyhf6OvOPViGW2gRtPaTaD7mzQsNBgUOtdamSPMIZ30Kjj45rBNPCWeZVYva pyIF/fkmELWkAPWTX79aDqTeb9YfC0HtM+JXSog4yPdAj16WuM/wxeJy8KLbu5lVlx1Q44 l3WG5vsUFyRlKg+/ynZ0NAjkJ+Vg0bayJTQUts/j5X4h0rBWw+X3SQix9zXBSA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616762; a=rsa-sha256; cv=none; b=BQoebHweIbcr76WlqLLYriMT6l31bZz/yYHdULFpUsYA+NMILxemkDg3Wh55L2jZHw7qXk C0Mg1YoiOn+kALDOiC6MwL3Uh0bLC7KYBbpv8k+sfBHqyjunKWXCi9SzPQtoASczSqU9Z+ u1W8pXPD7RrqCNttFgD/cgNMH5t9Z9sRgxTMfwL596kKJnpM7BZ4MgR/CTKhzC7pLjc3j4 TU/1m2Xm/JZwFRlsPUJoZTzyinhSDPb9VzpR2Md4Zt9a3VKUiItEjVON0DnRHQop5XuyMo BOGw1YLvgPe8E29c6UE9RuP73B/21QxVd8qXXfJVDxY25flGaXLh0Yqpl8GhRA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQL4dxczQHt; Thu, 18 Jan 2024 22:26:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQ2fs089586; Thu, 18 Jan 2024 22:26:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQ2NV089583; Thu, 18 Jan 2024 22:26:02 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:02 GMT Message-Id: <202401182226.40IMQ2NV089583@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: cfab4620f8a1 - stable/14 - kldxref: fix bootstrapping on Linux with Clang 16 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: cfab4620f8a1b59ae81c067638f7964f4b8e6b9a Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=cfab4620f8a1b59ae81c067638f7964f4b8e6b9a commit cfab4620f8a1b59ae81c067638f7964f4b8e6b9a Author: Alex Richardson AuthorDate: 2024-01-02 19:06:51 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:51 +0000 kldxref: fix bootstrapping on Linux with Clang 16 The glibc fts_open() callback type does not have the second const qualifier and it appears that Clang 16 errors by default for mismatched function pointer types. Add an ifdef to handle this case. (cherry picked from commit 30887c7d48ead8a9151627228244dd3ed95c4c6d) --- usr.sbin/kldxref/kldxref.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/usr.sbin/kldxref/kldxref.c b/usr.sbin/kldxref/kldxref.c index 68f010a6db98..1694f069564b 100644 --- a/usr.sbin/kldxref/kldxref.c +++ b/usr.sbin/kldxref/kldxref.c @@ -748,7 +748,11 @@ usage(void) } static int +#ifdef __GLIBC__ +compare(const FTSENT **a, const FTSENT **b) +#else compare(const FTSENT *const *a, const FTSENT *const *b) +#endif { if ((*a)->fts_info == FTS_D && (*b)->fts_info != FTS_D) From nobody Thu Jan 18 22:26:03 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQN26KZz578bp; Thu, 18 Jan 2024 22:26:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQM6kCHz4196; Thu, 18 Jan 2024 22:26:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uir14dDBjPnwD4w7/WJ7N3aqk6WGBVQn5tjO18Zy7T0=; b=opXUViU3XEbYDJ9R0EAAWcm5bVit23o00o2vtd4d292BoJbu7qaOGESlurw2TxaZKo46aN 0jYjp30GHKZ1Qo6gzQTBDzYJyxNnnfcoLqO/1a1CxDhOe1wKS5NFTLx7E7ki5nsT6IhuxX pOcGZIx9BQ3EfJqCKukNC9PFirVAz3aNx5uVoup0U/Gwo9yXkVUQKdj6ebcbZMz1r5RF63 cCzf5znTsS+SxT1GKdi1+faXY8MVQMlkLS/8YJt6AblliWi96PAaenIQKXA9gApKSfKqXl 0BbIAWaEEvlNU0gxpms7AO8F1QG3MhWl8NwRPR064FRNNCt2XmtqRX5RFLhcmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uir14dDBjPnwD4w7/WJ7N3aqk6WGBVQn5tjO18Zy7T0=; b=GGBcgIgXT41qaPxNUZA17n4Q46zNMMjmM76da/+z16veUdeslmICP3rtqMauuNF1WBH8UH qJGB5iGbs5vpPmMoG1XBHXjrSM/KdGR/wnRfZAAtENGqJtdFewea73K+w5JAwnnMhdRhQ/ coTaPj8utXcJvIiydnuINRr7o+En1iOkTZ0JU9JuI6yLvlIY710+ZQXe5VLIJXzQz+ndcW mZTRxcNWhwE2m4fHnkf7Ge9LKvg/HZbLs0RIgDjKFZ2xxcZVKZZPPaHvDpQxeQeA/G6Ll0 gPeQ5zGzKkh9hYnpHUb/RVD+HJnI0J9ZJK17GGRw32mJZ7aL5nSC/jPkzBvcmQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616763; a=rsa-sha256; cv=none; b=aikFQcl7dyli1wHfivipM2kKIK5jZ6SBEdqDqwAdNWxZ+oQhAHtAvGf3ZjJy+zWVlhEeL6 l/H2KKid1hVWBsn8bqVdgWavEQ3gQP6EMcpxxKEBsFnfwarZB2ay2a0WNIPrJCtNy5Ln6q MIEfiQ1BHt1m6vHGoyPnVy0CQmZznfWFJWOQ6QWg2lh7tx2aj0SCC9t6lmTkXCmDDkCYor OZvcHw0P3ge07Vfkd98B2H273XqkEIKkyk5OviKX2vQ2JL7muyRY2PT3BccuNeZAXQA4fu e9KEA2oru7UsaZ85YR+irW+TpjRXnRSWRAYVzpCkHiJaHIX3yfIS5Ni681JD0w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQM5flSzQWf; Thu, 18 Jan 2024 22:26:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQ3vb089634; Thu, 18 Jan 2024 22:26:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQ30r089631; Thu, 18 Jan 2024 22:26:03 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:03 GMT Message-Id: <202401182226.40IMQ30r089631@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: b1a3aa4eec58 - stable/14 - kldxref: Correct contract number in license ACK List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b1a3aa4eec580596cee6ff3a1f626c31a7696732 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b1a3aa4eec580596cee6ff3a1f626c31a7696732 commit b1a3aa4eec580596cee6ff3a1f626c31a7696732 Author: John Baldwin AuthorDate: 2024-01-09 01:01:05 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:59 +0000 kldxref: Correct contract number in license ACK Reviewed by: brooks Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43371 (cherry picked from commit 78258ee013cfec2145060cc4c25d66f075db36d3) --- usr.sbin/kldxref/elf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/elf.c b/usr.sbin/kldxref/elf.c index cc9bf9e6cb38..e5fe90169d2c 100644 --- a/usr.sbin/kldxref/elf.c +++ b/usr.sbin/kldxref/elf.c @@ -7,7 +7,7 @@ * of Cambridge Computer Laboratory (Department of Computer Science * and Technology) under Defense Advanced Research Projects Agency * (DARPA) contract HR0011-18-C-0016 ("ECATS"), as part of the DARPA - * SSITH research programme and under DARPA Contract No. HR001122S0003 + * SSITH research programme and under DARPA Contract No. HR001123C0031 * ("MTSS"). * * Redistribution and use in source and binary forms, with or without From nobody Thu Jan 18 22:26:04 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQP4k5rz578R5; Thu, 18 Jan 2024 22:26:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQP1NJHz419C; Thu, 18 Jan 2024 22:26:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616765; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fcBYAks5vEGi4TflzfXsJTz6KxyDg9GOwpuJL1S5hS8=; b=mrHxLEw/axIaYfiSYcLksRZTUyMaWyUGiXRnECsX52YAI4Xv5q0MWYEZCNG7PvoKML1Ebq ZvAqjOk0jORaK/grl08eUJgRuNCnX7o9N3z9ANAGKKEt1+ujAzCAAKQOjUqThf8CFpT7zo nXfVRdPD+uNpNN42AZxUxJ6rZhXPL9N6zSs4SNEYzaO5vYWLt27dO6PevXsNvCCSOh/ukT NN7OlLE5m37n59BwJQFOfbFHktHm0ennDIXbN1+jaR6PbmCvoosxL66Vxo2HMKhSo2QP/Q A00q7YdRPzwFeqBRIFEN6NAU15679M5g+/1OhriQXJVbB2nrks7s66DXjccCpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616765; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fcBYAks5vEGi4TflzfXsJTz6KxyDg9GOwpuJL1S5hS8=; b=qOG2Y+K5T8DHqyIf3gFAXBqkGAFEA7UOgZBR85IcqQGIPTHoL3sGpQ1MQbk6ONi60TzVos pCQ2JBKhHdTprnToOesx8ZU3nmOSV4HctgwwP2ao5UHHo+pXmzV3Gw+qVfUva6BgLoNkIJ otK/S6P+Slqw84wMPM8kjJ4jYI5bW1/ZgJcihfKPrIeO8x9MLR147dGdSgV0VrmTEl67Er OL9nuDFJqS5Dozk2HaSmpvwBevQLgROKK9yXZcw018LrqoTAaapWACebFBWWwDbIbs0yEd YKO2KUWNBrPGVhrj3zAD5bEjQJQzsA77fYiGxV2dO4uh42W44cembfbG/aJNMA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616765; a=rsa-sha256; cv=none; b=pt2YuVt3Udll3aROGgr1YZ/SGTHm8qOIuirWFq2IqHg/1tyf4EK6mo7x49DxgepocSXP9R to0m1zqF0eDNDpsGHieDev7ZTVBNeEXO7qEk4OHAs+EmpYX72P2mCzIauHypihpB/RN4Tq 5IaHzY2eorG4iHA+Kx3qvttG19wMgzCm+75fA1I4MK+s/bkKILkVp7jyzIC/+dOyNAWKG4 DOGrrcnj4Nr9j4aQca1mukIn08+d0C1WLSNm6qPpoo3GSGcHWFcVfSlQjcuKTEX0PoK7RX JuPzIHtsU7Yse9OOL1ndwk39DcG35nWz+cuxN3c6x7mNFmi0E3lnNRXx1Mf7+Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQN6wgPzQG6; Thu, 18 Jan 2024 22:26:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQ4nX089686; Thu, 18 Jan 2024 22:26:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQ4HB089683; Thu, 18 Jan 2024 22:26:04 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:04 GMT Message-Id: <202401182226.40IMQ4HB089683@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: cec0bae09eae - stable/14 - kldxref: Workaround incorrect PT_DYNAMIC in existing powerpc kernels List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: cec0bae09eaedff61b4e296e662a1c87757b8af9 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=cec0bae09eaedff61b4e296e662a1c87757b8af9 commit cec0bae09eaedff61b4e296e662a1c87757b8af9 Author: John Baldwin AuthorDate: 2024-01-09 18:57:48 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:32:12 +0000 kldxref: Workaround incorrect PT_DYNAMIC in existing powerpc kernels Existing powerpc kernels include additional sections beyond .dynamic in the PT_DYNAMIC segment. Relax the requirement for an exact size match of the section and segment for PowerPC files as a workaround. Reported by: jrtc27 Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43123 (cherry picked from commit 6631e2f9b49e08f53c7beb560ee8509c343b3927) --- usr.sbin/kldxref/ef.c | 11 ++++++++++- usr.sbin/kldxref/ef.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/ef.c b/usr.sbin/kldxref/ef.c index fd0782ff1dd0..1ef27f2bc54a 100644 --- a/usr.sbin/kldxref/ef.c +++ b/usr.sbin/kldxref/ef.c @@ -248,8 +248,17 @@ ef_parse_dynamic(elf_file_t ef, const GElf_Phdr *phdyn) dynamic_idx = -1; for (i = 0; i < nshdr; i++) { if (shdr[i].sh_type == SHT_DYNAMIC) { + /* + * PowerPC kernels contain additional sections + * beyond .dynamic in PT_DYNAMIC due to a linker + * script bug. Permit a section with a smaller + * size as a workaround. + */ if (shdr[i].sh_offset != phdyn->p_offset || - shdr[i].sh_size != phdyn->p_filesz) { + ((elf_machine(ef->ef_efile) == EM_PPC || + elf_machine(ef->ef_efile) == EM_PPC64) ? + shdr[i].sh_size > phdyn->p_filesz : + shdr[i].sh_size != phdyn->p_filesz)) { warnx(".dynamic section doesn't match phdr"); error = EFTYPE; goto out; diff --git a/usr.sbin/kldxref/ef.h b/usr.sbin/kldxref/ef.h index 2909704bf2d1..25dc5216b169 100644 --- a/usr.sbin/kldxref/ef.h +++ b/usr.sbin/kldxref/ef.h @@ -100,6 +100,7 @@ struct elf_file { int ef_fd; }; +#define elf_machine(ef) ((ef)->ef_hdr.e_machine) #define elf_class(ef) ((ef)->ef_hdr.e_ident[EI_CLASS]) #define elf_encoding(ef) ((ef)->ef_hdr.e_ident[EI_DATA]) From nobody Thu Jan 18 22:26:17 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQf2pbhz578R9; Thu, 18 Jan 2024 22:26:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQf0c9Wz41sc; Thu, 18 Jan 2024 22:26:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616778; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CpioBbttVZDc7jBm3V5lJ8j5ZQfOoLBj8txOq/2tW/c=; b=uBCr92d2UYYpy0Cd5kFV08nYc71c1tKOzvNc7fskzZJZSAxUB7+neyMHZj61pGVqkYRKYt w6vf01rMwscvLHbRZVYYAAAiHrWbqC09UMCQ8ZFmosoaVjFB7I95ZftxgfIZL+DhloKcJf B5w7262Oahtm7WiU9DraVhTW60NDhmaz8jCrQXu3QYNgwh+TJ1gwX0qEVqYXn2IhyZEPeH 4kNVlDhsCLQmLpe3wGvA83g2HkfvpCrAGPhOIMSkPKlNVpmJKHqVGCB7hZR989TNxkmczT R12FvzeYrSt8zU3cVtffdN9/WIfEXsd38CePmKE5PO5MQPlqzMAaBo6KfYdPug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616778; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CpioBbttVZDc7jBm3V5lJ8j5ZQfOoLBj8txOq/2tW/c=; b=Uu9aB2wE2yONY7fG+cR55ZNxidieRAWFhMhprJFqS8OIko0AXlTbBxOEY+oLjvqFIbz6H/ 4nieqNyv41HHhLSodRTCNwf8wroix6PN0Vl8NtWnbcmDJxn5gCSu56k057oKrOFqhYryN0 +tw4L7sC5EgIs9hoR53/UIVhVQlGIVxuHO2GsLMNt8gqdS8mEcsY0OUlMDImvaJDk9owZI 9t9LWdC8g8HlHesUB17G8dkSXmhDr9osD72eF5I1YeunH0FGKdkT7GedODr95m5TSL8dVD zMV6alVzc0aRtXrqRYqoLOsDv1G1eErlQB6uvsvus5WoDSmb6fipeibPDOEqbw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616778; a=rsa-sha256; cv=none; b=F4V1O100WKBatIKZUlKkjB7YIw493I1az9qRnwhGGjAO9qntw7xez0WUtjTWnMqtIN3nzn EP5kMrBjvI5P8t9knn/AEVsN8X/yHxS2z3I3jUl0j0KAzzSJs1sEvm+HMQqjKlOCAkV3lW xt1deokaY8EWT4sh9J9mB+jmwLjPtgqooMK9/GjF/D+JN8jr6EO7f4ATcnw6PN/P2uWbyJ u6bZSRowh5pRtS5ZgC9fX8M/NtGDgGvXxY+7Ykuo7zjDvWZYItlbHFaj43QgM7k3rg3vjv WAQ0C8B0Z1qrTvnzOD3QVwz3pp+llPqYXw6KZaSVxc6I8U8mRze/Psb7nW5f7A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQd6qkfzQKv; Thu, 18 Jan 2024 22:26:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQHUp090013; Thu, 18 Jan 2024 22:26:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQHuJ090010; Thu, 18 Jan 2024 22:26:17 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:17 GMT Message-Id: <202401182226.40IMQHuJ090010@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: b2cc5745dce9 - stable/13 - kldxref: Refactor PNP entry parsing, no functional change List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b2cc5745dce9ef65b8a034e128d5026140dde140 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b2cc5745dce9ef65b8a034e128d5026140dde140 commit b2cc5745dce9ef65b8a034e128d5026140dde140 Author: John Baldwin AuthorDate: 2023-12-12 23:30:16 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:24:53 +0000 kldxref: Refactor PNP entry parsing, no functional change - Add a free_pnp_list to complement parse_pnp_list. Add freeing of 'new_desc' which was previously leaked. - Move body of loop that checked a single pnp list element against a table entry into a parse_pnp_entry function to reduce indentation and split parse_entry into a smaller function. - Similarly, split out a record_pnp_info function from parse_entry which builds the pnp_list and walks a table. Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D42965 (cherry picked from commit c40fa3dc98d3cd8c39605c19c9cc08026d8e72c9) --- usr.sbin/kldxref/kldxref.c | 247 +++++++++++++++++++++++++-------------------- 1 file changed, 139 insertions(+), 108 deletions(-) diff --git a/usr.sbin/kldxref/kldxref.c b/usr.sbin/kldxref/kldxref.c index f91571a4ef11..6ac50eca4d57 100644 --- a/usr.sbin/kldxref/kldxref.c +++ b/usr.sbin/kldxref/kldxref.c @@ -237,6 +237,7 @@ parse_pnp_list(const char *desc, char **new_desc, pnp_list *list) size_t new_desc_size; FILE *fp; + TAILQ_INIT(list); walker = desc; ep = desc + strlen(desc); off = 0; @@ -379,6 +380,142 @@ err: errx(1, "Parse error of description string %s", desc); } +static void +free_pnp_list(char *new_desc, pnp_list *list) +{ + struct pnp_elt *elt, *elt_tmp; + + TAILQ_FOREACH_SAFE(elt, list, next, elt_tmp) { + TAILQ_REMOVE(list, elt, next); + free(elt); + } + free(new_desc); +} + +static void +parse_pnp_entry(struct elf_file *ef, struct pnp_elt *elt, const char *walker) +{ + uint8_t v1; + uint16_t v2; + uint32_t v4; + int value; + char buffer[1024]; + + if (elt->pe_kind == TYPE_W32) { + memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); + value = v4 & 0xffff; + record_int(value); + if (verbose > 1) + printf("W32:%#x", value); + value = (v4 >> 16) & 0xffff; + record_int(value); + if (verbose > 1) + printf(":%#x;", value); + } else if (elt->pe_kind & TYPE_INT) { + switch (elt->pe_kind & TYPE_SZ_MASK) { + case 1: + memcpy(&v1, walker + elt->pe_offset, sizeof(v1)); + if ((elt->pe_kind & TYPE_FLAGGED) && v1 == 0xff) + value = -1; + else + value = v1; + break; + case 2: + memcpy(&v2, walker + elt->pe_offset, sizeof(v2)); + if ((elt->pe_kind & TYPE_FLAGGED) && v2 == 0xffff) + value = -1; + else + value = v2; + break; + case 4: + memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); + if ((elt->pe_kind & TYPE_FLAGGED) && v4 == 0xffffffff) + value = -1; + else + value = v4; + break; + default: + errx(1, "Invalid size somehow %#x", elt->pe_kind); + } + if (verbose > 1) + printf("I:%#x;", value); + record_int(value); + } else if (elt->pe_kind == TYPE_T) { + /* Do nothing */ + } else { /* E, Z or D -- P already filtered */ + if (elt->pe_kind == TYPE_E) { + memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); + strcpy(buffer, pnp_eisaformat(v4)); + } else { + char *ptr; + + ptr = *(char **)(walker + elt->pe_offset); + buffer[0] = '\0'; + if (ptr != NULL) { + EF_SEG_READ_STRING(ef, (Elf_Off)ptr, + sizeof(buffer), buffer); + buffer[sizeof(buffer) - 1] = '\0'; + } + } + if (verbose > 1) + printf("%c:%s;", elt->pe_kind == TYPE_E ? 'E' : + (elt->pe_kind == TYPE_Z ? 'Z' : 'D'), buffer); + record_string(buffer); + } +} + +static void +record_pnp_info(struct elf_file *ef, const char *cval, + struct mod_pnp_match_info *pnp, const char *descr) +{ + pnp_list list; + struct pnp_elt *elt; + char *new_descr, *walker; + void *table; + size_t len; + int error, i; + + if (verbose > 1) + printf(" pnp info for bus %s format %s %d entries of %d bytes\n", + cval, descr, pnp->num_entry, pnp->entry_len); + + /* + * Parse descr to weed out the chaff and to create a list + * of offsets to output. + */ + parse_pnp_list(descr, &new_descr, &list); + record_int(MDT_PNP_INFO); + record_string(cval); + record_string(new_descr); + record_int(pnp->num_entry); + len = pnp->num_entry * pnp->entry_len; + table = malloc(len); + error = EF_SEG_READ_REL(ef, (Elf_Off)pnp->table, len, table); + if (error != 0) { + free_pnp_list(new_descr, &list); + free(table); + return; + } + + /* + * Walk the list and output things. We've collapsed all the + * variant forms of the table down to just ints and strings. + */ + walker = table; + for (i = 0; i < pnp->num_entry; i++) { + TAILQ_FOREACH(elt, &list, next) { + parse_pnp_entry(ef, elt, walker); + } + if (verbose > 1) + printf("\n"); + walker += pnp->entry_len; + } + + /* Now free it */ + free_pnp_list(new_descr, &list); + free(table); +} + static int parse_entry(struct mod_metadata *md, const char *cval, struct elf_file *ef, const char *kldname) @@ -388,10 +525,7 @@ parse_entry(struct mod_metadata *md, const char *cval, struct mod_pnp_match_info pnp; char descr[1024]; Elf_Off data; - int error, i; - size_t len; - char *walker; - void *table; + int error; data = (Elf_Off)md->md_data; error = 0; @@ -432,110 +566,7 @@ parse_entry(struct mod_metadata *md, const char *cval, printf(" pnp info for bus %s format %s %d entries of %d bytes\n", cval, descr, pnp.num_entry, pnp.entry_len); } else { - pnp_list list; - struct pnp_elt *elt, *elt_tmp; - char *new_descr; - - if (verbose > 1) - printf(" pnp info for bus %s format %s %d entries of %d bytes\n", - cval, descr, pnp.num_entry, pnp.entry_len); - /* - * Parse descr to weed out the chaff and to create a list - * of offsets to output. - */ - TAILQ_INIT(&list); - parse_pnp_list(descr, &new_descr, &list); - record_int(MDT_PNP_INFO); - record_string(cval); - record_string(new_descr); - record_int(pnp.num_entry); - len = pnp.num_entry * pnp.entry_len; - walker = table = malloc(len); - check(EF_SEG_READ_REL(ef, (Elf_Off)pnp.table, len, table)); - - /* - * Walk the list and output things. We've collapsed all the - * variant forms of the table down to just ints and strings. - */ - for (i = 0; i < pnp.num_entry; i++) { - TAILQ_FOREACH(elt, &list, next) { - uint8_t v1; - uint16_t v2; - uint32_t v4; - int value; - char buffer[1024]; - - if (elt->pe_kind == TYPE_W32) { - memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); - value = v4 & 0xffff; - record_int(value); - if (verbose > 1) - printf("W32:%#x", value); - value = (v4 >> 16) & 0xffff; - record_int(value); - if (verbose > 1) - printf(":%#x;", value); - } else if (elt->pe_kind & TYPE_INT) { - switch (elt->pe_kind & TYPE_SZ_MASK) { - case 1: - memcpy(&v1, walker + elt->pe_offset, sizeof(v1)); - if ((elt->pe_kind & TYPE_FLAGGED) && v1 == 0xff) - value = -1; - else - value = v1; - break; - case 2: - memcpy(&v2, walker + elt->pe_offset, sizeof(v2)); - if ((elt->pe_kind & TYPE_FLAGGED) && v2 == 0xffff) - value = -1; - else - value = v2; - break; - case 4: - memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); - if ((elt->pe_kind & TYPE_FLAGGED) && v4 == 0xffffffff) - value = -1; - else - value = v4; - break; - default: - errx(1, "Invalid size somehow %#x", elt->pe_kind); - } - if (verbose > 1) - printf("I:%#x;", value); - record_int(value); - } else if (elt->pe_kind == TYPE_T) { - /* Do nothing */ - } else { /* E, Z or D -- P already filtered */ - if (elt->pe_kind == TYPE_E) { - memcpy(&v4, walker + elt->pe_offset, sizeof(v4)); - strcpy(buffer, pnp_eisaformat(v4)); - } else { - char *ptr; - - ptr = *(char **)(walker + elt->pe_offset); - buffer[0] = '\0'; - if (ptr != NULL) { - EF_SEG_READ_STRING(ef, (Elf_Off)ptr, - sizeof(buffer), buffer); - buffer[sizeof(buffer) - 1] = '\0'; - } - } - if (verbose > 1) - printf("%c:%s;", elt->pe_kind == TYPE_E ? 'E' : (elt->pe_kind == TYPE_Z ? 'Z' : 'D'), buffer); - record_string(buffer); - } - } - if (verbose > 1) - printf("\n"); - walker += pnp.entry_len; - } - /* Now free it */ - TAILQ_FOREACH_SAFE(elt, &list, next, elt_tmp) { - TAILQ_REMOVE(&list, elt, next); - free(elt); - } - free(table); + record_pnp_info(ef, cval, &pnp, descr); } break; default: From nobody Thu Jan 18 22:26:20 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQh5jhTz578hg; Thu, 18 Jan 2024 22:26:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQh2bPFz420w; Thu, 18 Jan 2024 22:26:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616780; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6iHQiW1HGa/3IU+HJPuH4FtHlOb2/17ltsPEtbraEF4=; b=lOMaRep/VrW/Kz0/Jf5BMyuSYa7/S1FgKnFSSLoQOXmp4vIfsS83VSgBUI7OpXI60luLJn 5x1JiICn6FcDjKXMbU2MgLKwNItMcPC64vxmFXt6aABaFNIMykLksbsxdYqL7BG2wW+sPa npGbjJTe5x4mjCathS7a/8mQ6DxdN6q2JoyGhm3ATMmUxBC5aPte1R6KQ0pqqfZqE8ADIq mHUesI6NFY7gevaGtujBC0UslO61vFzYjcQ3bkbFwzGpz+UQfvqx9F6X0iifWStoxGYpFt 0fc4MtbaFk94oiR+XMXurjSKvlebkbU4ibPvcN0ZikwtwSrxwAiNPX5nBPrapg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616780; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6iHQiW1HGa/3IU+HJPuH4FtHlOb2/17ltsPEtbraEF4=; b=I6qz9FfTxKs/9grT5xfILWfpPfWKzplOkX7Hv9KSTRrE6LZLPLo1sY/1sbuYuW84cfRBzI RYVCzn/9I1wk39F2ejkj7+bBUVZTwkLSo72dIJZxrH4OAxMUONpSzoDd401uUVxLIAXcBn 7raB2GbiJbCdo55+MA2AXEkkdiFmgj7P0i4TWi6Ie1qkd89/R57xY5faVJVDPh/a9U1IT4 pIyAdgsoMxZ7GqOlnjkoTvDxYZIm4kzYEbldXOVoGvhagDfx4apmkNg63v8clKLLoluswv U/3/0q8hNxoyoRffal2xiGNCHjcc+GHR7HJIf53Xf3ckTTsStu+TmN9zrE77EA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616780; a=rsa-sha256; cv=none; b=g/IeC63r+gIaaVrh+y4MUMg8Up6hCHWCZMM/77Cv53IWk1imKLrQp1Zz8Fn7zKGEd114lO kCMRxUdHBo74+VfEhPL0U3w6771C/odDD79iwAT5V1Ug5G5sFh3DUcdP0+r1geeOqmVAHA yMfhgQnjlctNtFl2JRrfhJTftrzyLsRLIDkCSnt9ecNAm+fHS6BbbEWcDiod9uf9MIlvLO ML048vnOkZFY3cRCejyP+xoDmEJorlcxAn6VEezrNRDQwVPtrgrCek+9doVluX6FQfp5av 3Xq78y3A8VFXj2K3F4bMzlooqk2deoVm1nTOVe8OOfZIy2DDTb9b5GBgapQhWQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQh1hQxzQHv; Thu, 18 Jan 2024 22:26:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQKIO090133; Thu, 18 Jan 2024 22:26:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQKKH090130; Thu, 18 Jan 2024 22:26:20 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:20 GMT Message-Id: <202401182226.40IMQKKH090130@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: a77717659ba8 - stable/13 - kldxref: fix build on 32 bits arches List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a77717659ba81a19cabc975abc628218a15393ca Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=a77717659ba81a19cabc975abc628218a15393ca commit a77717659ba81a19cabc975abc628218a15393ca Author: Baptiste Daroussin AuthorDate: 2023-12-13 08:19:18 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:29:42 +0000 kldxref: fix build on 32 bits arches (cherry picked from commit 97530894fc142a9c44a5909e6ae668dc95a5036a) --- usr.sbin/kldxref/ef.h | 4 ++-- usr.sbin/kldxref/ef_obj.c | 4 ++-- usr.sbin/kldxref/elf.c | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/usr.sbin/kldxref/ef.h b/usr.sbin/kldxref/ef.h index a96bd72d6931..2909704bf2d1 100644 --- a/usr.sbin/kldxref/ef.h +++ b/usr.sbin/kldxref/ef.h @@ -218,7 +218,7 @@ int elf_read_shdrs(struct elf_file *efile, size_t *nshdrp, * Read the dynamic table from a section of an ELF file into a * dynamically-allocated array of GElf_Dyn objects. */ -int elf_read_dynamic(struct elf_file *efile, int section_index, long *ndynp, +int elf_read_dynamic(struct elf_file *efile, int section_index, size_t *ndynp, GElf_Dyn **dynp); /* @@ -226,7 +226,7 @@ int elf_read_dynamic(struct elf_file *efile, int section_index, long *ndynp, * dynamically-allocated array of GElf_Sym objects. */ int elf_read_symbols(struct elf_file *efile, int section_index, - long *nsymp, GElf_Sym **symp); + size_t *nsymp, GElf_Sym **symp); /* * Read a string table described by a section header of an ELF file diff --git a/usr.sbin/kldxref/ef_obj.c b/usr.sbin/kldxref/ef_obj.c index a1d46241b803..36c0dce432b6 100644 --- a/usr.sbin/kldxref/ef_obj.c +++ b/usr.sbin/kldxref/ef_obj.c @@ -82,7 +82,7 @@ struct ef_file { int nrel; GElf_Sym *ddbsymtab; /* The symbol table we are using */ - long ddbsymcnt; /* Number of symbols */ + size_t ddbsymcnt; /* Number of symbols */ caddr_t ddbstrtab; /* String table */ long ddbstrcnt; /* number of bytes in string table */ @@ -155,7 +155,7 @@ ef_obj_symaddr(elf_file_t ef, GElf_Size symidx) { const GElf_Sym *sym; - if (symidx >= (size_t)ef->ddbsymcnt) + if (symidx >= ef->ddbsymcnt) return (0); sym = ef->ddbsymtab + symidx; diff --git a/usr.sbin/kldxref/elf.c b/usr.sbin/kldxref/elf.c index a30eb4456a76..f8a6510ed352 100644 --- a/usr.sbin/kldxref/elf.c +++ b/usr.sbin/kldxref/elf.c @@ -329,7 +329,7 @@ out: } int -elf_read_dynamic(struct elf_file *efile, int section_index, long *ndynp, +elf_read_dynamic(struct elf_file *efile, int section_index, size_t *ndynp, GElf_Dyn **dynp) { GElf_Shdr shdr; @@ -365,14 +365,14 @@ elf_read_dynamic(struct elf_file *efile, int section_index, long *ndynp, } int -elf_read_symbols(struct elf_file *efile, int section_index, long *nsymp, +elf_read_symbols(struct elf_file *efile, int section_index, size_t *nsymp, GElf_Sym **symp) { GElf_Shdr shdr; Elf_Scn *scn; Elf_Data *data; GElf_Sym *sym; - long i, nsym; + size_t i, nsym; scn = elf_getscn(efile->ef_elf, section_index); if (scn == NULL) From nobody Thu Jan 18 22:26:19 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQg2jVZz578P4; Thu, 18 Jan 2024 22:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQg1LK8z41tj; Thu, 18 Jan 2024 22:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616779; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PXkiYdd1f8jcU4sLvf8qMNm4g2ru9yp/jthl54OHWXI=; b=XvPkS/RjKIQ+SLJuZrBNI2/ZyfXA0pEdGk3IbS1ha160PcEIMSCRhRYXr+dQ8aoWGNd3WB CtV/TdR2ymgUX0peSlCJAG+UnvnEJ1M5Vx0XXToco4Ml/8GRvaDucfpQrFHObOzdFsvMSq DVatch3aseAivI0BNMh02Sa5Iw3BI0rjW72Xm/mWRIWe8z63MpQYKMNPqYhuhnjz0omPRa w0ZdO4+4bGd2IBgZe6EjV0comtBjGzfWtmOz7p11jP0YdwN1TW3gLTKN0YdtsB0mQi3BEZ UUfUAGlXfa2m1Of2TlmXH/Rzpn4MoDPcx7kV+dmcUX3q7FlQrp8+AicnjdtybQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616779; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PXkiYdd1f8jcU4sLvf8qMNm4g2ru9yp/jthl54OHWXI=; b=MUCxT4BW3hmptkr10bmVczsKIxcBJiKxr7I+XOIgxyXOqhZj6jVr+xe8HgvELViH0EM1eL B5KgFrDxmP/w2WPX909bZCTyvxr4CStX0f7BMyUFwwBcdtr6foFMPA5mAjDtR9wt5ZzgEk 6fXvEGoGz8VFg+C86DgT/05eBi6cWX4b2vRdzqG0E7qOnE0TStF9Lxq5Mkuxm7/YSLotpu XlpoUD7PhXC5mgb1TKbdkgQISEFn0uhGwgYw7THjaMgff5kk/Znc5yDfTFC8E7hLjArOwy UeMSrJC4Z4zI95v+q5pRWAfR2AZJA7v0F9QJbrWpUyOwxiZJvulJolhGWNwt7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616779; a=rsa-sha256; cv=none; b=ilEv4etnwc10Jh4iFcYIDkpnDMUkopO29/e05k5xaiX1AMNgemQpdQm+ihMK5WWxL69zNa UuCG84pjPYQIyjCdLJazOZ1kmhvxmfDMp0dOLwbUh7RKF07znSYBLvDUpXZHu45A+Mintj 3Hq+LVFLicM60CLqWZTPuH8Yfl41eZpXIz21M5iyER5NHmRjWQZuZEvLYUOmE2hC9jr2wc L71e3rngwfxw2Vy9QeJZq4OZ/2T3UxA/YHNPtkh+Aekqyl5jFiam+hCh+NbUTag2BZfFyA 8VvnI7kgEvJVSYK8Y8ICFkX9MMmUPEHHpP4SpNl/gd7x7/Tb3hRIORXbPTvYiA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQg0RWGzQKw; Thu, 18 Jan 2024 22:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQJDU090077; Thu, 18 Jan 2024 22:26:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQJ93090073; Thu, 18 Jan 2024 22:26:19 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:19 GMT Message-Id: <202401182226.40IMQJ93090073@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 8054480839f8 - stable/13 - kldxref: Make use of libelf to be a portable cross tool List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8054480839f828a189ba6e0856325d31822e64f5 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=8054480839f828a189ba6e0856325d31822e64f5 commit 8054480839f828a189ba6e0856325d31822e64f5 Author: John Baldwin AuthorDate: 2023-12-12 23:43:00 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:29:12 +0000 kldxref: Make use of libelf to be a portable cross tool This allows kldxref to operate on kernel objects from any architecture, not just the native architecture. In particular, this will permit generating linker.hints files as part of a cross-arch release build. - elf.c is a new file that includes various wrappers around libelf including routines to read ELF data structures such as program and section headers and ELF relocations into the "generic" forms described in . This file also provides routines for converting a linker set into an array of addresses (GElf_Addr) as well as reading architecture-specific mod_* structures and converting them into "generic" Gmod_* forms where pointers are replaced with addresses. - The various architecture-specific reloc handlers now use GElf_* types for most values (including GElf_Rel and GElf_Rela for relocation structures) and use routines from to read and write target values. A new linker set matches reloc handlers to specific ELF (class, encoding, machine) tuples. - The bits of kldxref.c that write out linker.hints now use the encoding (ELFDATA2[LM]SB) of the first file encountered in a directory to set the endianness of the output file. Input files with a different architecture in the same directory are skipped with a warning. In addition, the initial version record for the file must be deferred until the first record is finished since the architecture of the output file is not known until then. - Various places that used 'sizeof(void *)' throughout now use 'elf_pointer_size()' to determine the size of a pointer in the target architecture. Tested by: amd64 binary on both amd64 and i386 /boot/kernel Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D42966 (cherry picked from commit 0299afdff145e5d861797fe9c2de8b090c456fba) --- usr.sbin/kldxref/Makefile | 9 +- usr.sbin/kldxref/ef.c | 730 ++++++++++++++++++++---------------------- usr.sbin/kldxref/ef.h | 291 ++++++++++++++--- usr.sbin/kldxref/ef_aarch64.c | 32 +- usr.sbin/kldxref/ef_amd64.c | 65 ++-- usr.sbin/kldxref/ef_i386.c | 56 ++-- usr.sbin/kldxref/ef_mips.c | 79 +++-- usr.sbin/kldxref/ef_nop.c | 40 --- usr.sbin/kldxref/ef_obj.c | 341 ++++++-------------- usr.sbin/kldxref/ef_powerpc.c | 62 ++-- usr.sbin/kldxref/ef_riscv.c | 36 +-- usr.sbin/kldxref/elf.c | 674 ++++++++++++++++++++++++++++++++++++++ usr.sbin/kldxref/kldxref.c | 196 +++++++----- 13 files changed, 1685 insertions(+), 926 deletions(-) diff --git a/usr.sbin/kldxref/Makefile b/usr.sbin/kldxref/Makefile index 3d4ce7163b48..6e0a7244328b 100644 --- a/usr.sbin/kldxref/Makefile +++ b/usr.sbin/kldxref/Makefile @@ -2,14 +2,11 @@ PACKAGE= runtime PROG= kldxref MAN= kldxref.8 -SRCS= kldxref.c ef.c ef_obj.c +SRCS= kldxref.c ef.c ef_obj.c elf.c +SRCS+= ef_aarch64.c ef_amd64.c ef_i386.c ef_mips.c ef_powerpc.c ef_riscv.c WARNS?= 2 -.if exists(ef_${MACHINE_CPUARCH}.c) -SRCS+= ef_${MACHINE_CPUARCH}.c -.else -SRCS+= ef_nop.c -.endif +LIBADD= elf .include diff --git a/usr.sbin/kldxref/ef.c b/usr.sbin/kldxref/ef.c index 72e023e30783..aa9123d7f540 100644 --- a/usr.sbin/kldxref/ef.c +++ b/usr.sbin/kldxref/ef.c @@ -33,16 +33,13 @@ */ #include -#include #include #include -#include +#include #include #include #include -#include -#include #include "ef.h" @@ -50,76 +47,52 @@ struct ef_file { char *ef_name; struct elf_file *ef_efile; - Elf_Phdr *ef_ph; - int ef_fd; - int ef_type; - Elf_Ehdr ef_hdr; + GElf_Phdr *ef_ph; void *ef_fpage; /* First block of the file */ int ef_fplen; /* length of first block */ - Elf_Dyn *ef_dyn; /* Symbol table etc. */ - Elf_Hashelt ef_nbuckets; - Elf_Hashelt ef_nchains; - Elf_Hashelt *ef_buckets; - Elf_Hashelt *ef_chains; - Elf_Hashelt *ef_hashtab; - Elf_Off ef_stroff; + GElf_Hashelt ef_nbuckets; + GElf_Hashelt ef_nchains; + GElf_Hashelt *ef_buckets; + GElf_Hashelt *ef_chains; + GElf_Hashelt *ef_hashtab; caddr_t ef_strtab; - int ef_strsz; - Elf_Off ef_symoff; - Elf_Sym *ef_symtab; + long ef_strsz; + GElf_Sym *ef_symtab; int ef_nsegs; - Elf_Phdr *ef_segs[MAXSEGS]; + GElf_Phdr *ef_segs[MAXSEGS]; int ef_verbose; - Elf_Rel *ef_rel; /* relocation table */ - int ef_relsz; /* number of entries */ - Elf_Rela *ef_rela; /* relocation table */ - int ef_relasz; /* number of entries */ + GElf_Rel *ef_rel; /* relocation table */ + long ef_relsz; /* number of entries */ + GElf_Rela *ef_rela; /* relocation table */ + long ef_relasz; /* number of entries */ }; -static void ef_print_phdr(Elf_Phdr *); -static Elf_Off ef_get_offset(elf_file_t, Elf_Off); -static int ef_parse_dynamic(elf_file_t); +static void ef_print_phdr(GElf_Phdr *); +static GElf_Off ef_get_offset(elf_file_t, GElf_Addr); -static int ef_get_type(elf_file_t ef); -static int ef_close(elf_file_t ef); -static int ef_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest); -static int ef_read_entry(elf_file_t ef, Elf_Off offset, size_t len, - void **ptr); +static void ef_close(elf_file_t ef); -static int ef_seg_read(elf_file_t ef, Elf_Off offset, size_t len, +static int ef_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest); -static int ef_seg_read_rel(elf_file_t ef, Elf_Off offset, size_t len, - void *dest); -static int ef_seg_read_string(elf_file_t ef, Elf_Off offset, size_t len, +static int ef_seg_read_string(elf_file_t ef, GElf_Addr address, size_t len, char *dest); -static int ef_seg_read_entry(elf_file_t ef, Elf_Off offset, size_t len, - void **ptr); -static int ef_seg_read_entry_rel(elf_file_t ef, Elf_Off offset, size_t len, - void **ptr); - -static Elf_Addr ef_symaddr(elf_file_t ef, Elf_Size symidx); -static int ef_lookup_set(elf_file_t ef, const char *name, long *startp, - long *stopp, long *countp); + +static GElf_Addr ef_symaddr(elf_file_t ef, GElf_Size symidx); +static int ef_lookup_set(elf_file_t ef, const char *name, + GElf_Addr *startp, GElf_Addr *stopp, long *countp); static int ef_lookup_symbol(elf_file_t ef, const char *name, - Elf_Sym **sym); + GElf_Sym **sym); static struct elf_file_ops ef_file_ops = { - .get_type = ef_get_type, .close = ef_close, - .read = ef_read, - .read_entry = ef_read_entry, - .seg_read = ef_seg_read, .seg_read_rel = ef_seg_read_rel, .seg_read_string = ef_seg_read_string, - .seg_read_entry = ef_seg_read_entry, - .seg_read_entry_rel = ef_seg_read_entry_rel, .symaddr = ef_symaddr, .lookup_set = ef_lookup_set, - .lookup_symbol = ef_lookup_symbol }; static void -ef_print_phdr(Elf_Phdr *phdr) +ef_print_phdr(GElf_Phdr *phdr) { if ((phdr->p_flags & PF_W) == 0) { @@ -133,53 +106,29 @@ ef_print_phdr(Elf_Phdr *phdr) } } -static Elf_Off -ef_get_offset(elf_file_t ef, Elf_Off off) +static GElf_Off +ef_get_offset(elf_file_t ef, GElf_Addr addr) { - Elf_Phdr *ph; + GElf_Phdr *ph; int i; for (i = 0; i < ef->ef_nsegs; i++) { ph = ef->ef_segs[i]; - if (off >= ph->p_vaddr && off < ph->p_vaddr + ph->p_memsz) { - return (ph->p_offset + (off - ph->p_vaddr)); + if (addr >= ph->p_vaddr && addr < ph->p_vaddr + ph->p_memsz) { + return (ph->p_offset + (addr - ph->p_vaddr)); } } return (0); } -static int -ef_get_type(elf_file_t ef) -{ - - return (ef->ef_type); -} - /* - * next three functions copied from link_elf.c + * next two functions copied from link_elf.c */ -static unsigned long -elf_hash(const char *name) -{ - unsigned long h, g; - const unsigned char *p; - - h = 0; - p = (const unsigned char *)name; - while (*p != '\0') { - h = (h << 4) + *p++; - if ((g = h & 0xf0000000) != 0) - h ^= g >> 24; - h &= ~g; - } - return (h); -} - static int -ef_lookup_symbol(elf_file_t ef, const char *name, Elf_Sym **sym) +ef_lookup_symbol(elf_file_t ef, const char *name, GElf_Sym **sym) { unsigned long hash, symnum; - Elf_Sym *symp; + GElf_Sym *symp; char *strp; /* First, search hashed global symbols */ @@ -205,7 +154,7 @@ ef_lookup_symbol(elf_file_t ef, const char *name, Elf_Sym **sym) if (strcmp(name, strp) == 0) { if (symp->st_shndx != SHN_UNDEF || (symp->st_value != 0 && - ELF_ST_TYPE(symp->st_info) == STT_FUNC)) { + GELF_ST_TYPE(symp->st_info) == STT_FUNC)) { *sym = symp; return (0); } else @@ -219,10 +168,10 @@ ef_lookup_symbol(elf_file_t ef, const char *name, Elf_Sym **sym) } static int -ef_lookup_set(elf_file_t ef, const char *name, long *startp, long *stopp, - long *countp) +ef_lookup_set(elf_file_t ef, const char *name, GElf_Addr *startp, + GElf_Addr *stopp, long *countp) { - Elf_Sym *sym; + GElf_Sym *sym; char *setsym; int error, len; @@ -246,258 +195,340 @@ ef_lookup_set(elf_file_t ef, const char *name, long *startp, long *stopp, *stopp = sym->st_value; /* and the number of entries */ - *countp = (*stopp - *startp) / sizeof(void *); + *countp = (*stopp - *startp) / elf_pointer_size(ef->ef_efile); out: free(setsym); return (error); } -static Elf_Addr -ef_symaddr(elf_file_t ef, Elf_Size symidx) +static GElf_Addr +ef_symaddr(elf_file_t ef, GElf_Size symidx) { - const Elf_Sym *sym; + const GElf_Sym *sym; if (symidx >= ef->ef_nchains) return (0); sym = ef->ef_symtab + symidx; - if (ELF_ST_BIND(sym->st_info) == STB_LOCAL && + if (GELF_ST_BIND(sym->st_info) == STB_LOCAL && sym->st_shndx != SHN_UNDEF && sym->st_value != 0) return (sym->st_value); return (0); } static int -ef_parse_dynamic(elf_file_t ef) +ef_parse_dynamic(elf_file_t ef, const GElf_Phdr *phdyn) { - Elf_Dyn *dp; - Elf_Hashelt hashhdr[2]; + GElf_Shdr *shdr; + GElf_Dyn *dyn, *dp; + size_t i, ndyn, nshdr, nsym; int error; - Elf_Off rel_off; - Elf_Off rela_off; + GElf_Off hash_off, sym_off, str_off; + GElf_Off rel_off; + GElf_Off rela_off; int rel_sz; int rela_sz; - int rel_entry; - int rela_entry; + int dynamic_idx; + + /* + * The kernel linker parses the PT_DYNAMIC segment to find + * various important tables. The gelf API of libelf is + * section-oriented and requires extracting data from sections + * instead of segments (program headers). As a result, + * iterate over section headers to read various tables after + * parsing values from PT_DYNAMIC. + */ + error = elf_read_shdrs(ef->ef_efile, &nshdr, &shdr); + if (error != 0) + return (EFTYPE); + dyn = NULL; + + /* Find section for .dynamic. */ + dynamic_idx = -1; + for (i = 0; i < nshdr; i++) { + if (shdr[i].sh_type == SHT_DYNAMIC) { + if (shdr[i].sh_offset != phdyn->p_offset || + shdr[i].sh_size != phdyn->p_filesz) { + warnx(".dynamic section doesn't match phdr"); + error = EFTYPE; + goto out; + } + if (dynamic_idx != -1) { + warnx("multiple SHT_DYNAMIC sections"); + error = EFTYPE; + goto out; + } + dynamic_idx = i; + } + } + + error = elf_read_dynamic(ef->ef_efile, dynamic_idx, &ndyn, &dyn); + if (error != 0) + goto out; - rel_off = rela_off = 0; + hash_off = rel_off = rela_off = sym_off = str_off = 0; rel_sz = rela_sz = 0; - rel_entry = rela_entry = 0; - for (dp = ef->ef_dyn; dp->d_tag != DT_NULL; dp++) { + for (i = 0; i < ndyn; i++) { + dp = &dyn[i]; + if (dp->d_tag == DT_NULL) + break; + switch (dp->d_tag) { case DT_HASH: - error = ef_read(ef, ef_get_offset(ef, dp->d_un.d_ptr), - sizeof(hashhdr), hashhdr); - if (error != 0) { - warnx("can't read hash header (%jx)", - (uintmax_t)ef_get_offset(ef, dp->d_un.d_ptr)); - return (error); - } - ef->ef_nbuckets = hashhdr[0]; - ef->ef_nchains = hashhdr[1]; - error = ef_read_entry(ef, -1, - (hashhdr[0] + hashhdr[1]) * sizeof(Elf_Hashelt), - (void **)&ef->ef_hashtab); - if (error != 0) { - warnx("can't read hash table"); - return (error); - } - ef->ef_buckets = ef->ef_hashtab; - ef->ef_chains = ef->ef_buckets + ef->ef_nbuckets; + if (hash_off != 0) + warnx("second DT_HASH entry ignored"); + else + hash_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_STRTAB: - ef->ef_stroff = dp->d_un.d_ptr; - break; - case DT_STRSZ: - ef->ef_strsz = dp->d_un.d_val; + if (str_off != 0) + warnx("second DT_STRTAB entry ignored"); + else + str_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_SYMTAB: - ef->ef_symoff = dp->d_un.d_ptr; + if (sym_off != 0) + warnx("second DT_SYMTAB entry ignored"); + else + sym_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_SYMENT: - if (dp->d_un.d_val != sizeof(Elf_Sym)) - return (EFTYPE); + if (dp->d_un.d_val != elf_object_size(ef->ef_efile, + ELF_T_SYM)) { + error = EFTYPE; + goto out; + } break; case DT_REL: if (rel_off != 0) warnx("second DT_REL entry ignored"); - rel_off = dp->d_un.d_ptr; + else + rel_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_RELSZ: if (rel_sz != 0) warnx("second DT_RELSZ entry ignored"); - rel_sz = dp->d_un.d_val; + else + rel_sz = dp->d_un.d_val; break; case DT_RELENT: - if (rel_entry != 0) - warnx("second DT_RELENT entry ignored"); - rel_entry = dp->d_un.d_val; + if (dp->d_un.d_val != elf_object_size(ef->ef_efile, + ELF_T_REL)) { + error = EFTYPE; + goto out; + } break; case DT_RELA: if (rela_off != 0) warnx("second DT_RELA entry ignored"); - rela_off = dp->d_un.d_ptr; + else + rela_off = ef_get_offset(ef, dp->d_un.d_ptr); break; case DT_RELASZ: if (rela_sz != 0) - warnx("second DT_RELASZ entry ignored"); - rela_sz = dp->d_un.d_val; + warnx("second DT_RELSZ entry ignored"); + else + rela_sz = dp->d_un.d_val; break; case DT_RELAENT: - if (rela_entry != 0) - warnx("second DT_RELAENT entry ignored"); - rela_entry = dp->d_un.d_val; + if (dp->d_un.d_val != elf_object_size(ef->ef_efile, + ELF_T_RELA)) { + error = EFTYPE; + goto out; + } break; } } - if (ef->ef_symoff == 0) { + if (hash_off == 0) { + warnx("%s: no .hash section found\n", ef->ef_name); + error = EFTYPE; + goto out; + } + if (sym_off == 0) { warnx("%s: no .dynsym section found\n", ef->ef_name); - return (EFTYPE); + error = EFTYPE; + goto out; } - if (ef->ef_stroff == 0) { + if (str_off == 0) { warnx("%s: no .dynstr section found\n", ef->ef_name); - return (EFTYPE); - } - if (ef_read_entry(ef, ef_get_offset(ef, ef->ef_symoff), - ef->ef_nchains * sizeof(Elf_Sym), - (void **)&ef->ef_symtab) != 0) { - if (ef->ef_verbose) - warnx("%s: can't load .dynsym section (0x%jx)", - ef->ef_name, (uintmax_t)ef->ef_symoff); - return (EIO); - } - if (ef_read_entry(ef, ef_get_offset(ef, ef->ef_stroff), ef->ef_strsz, - (void **)&ef->ef_strtab) != 0) { - warnx("can't load .dynstr section"); - return (EIO); - } - if (rel_off != 0) { - if (rel_entry == 0) { - warnx("%s: no DT_RELENT for DT_REL", ef->ef_name); - return (EFTYPE); - } - if (rel_entry != sizeof(Elf_Rel)) { - warnx("%s: inconsistent DT_RELENT value", - ef->ef_name); - return (EFTYPE); - } - if (rel_sz % rel_entry != 0) { - warnx("%s: inconsistent values for DT_RELSZ and " - "DT_RELENT", ef->ef_name); - return (EFTYPE); - } - if (ef_read_entry(ef, ef_get_offset(ef, rel_off), rel_sz, - (void **)&ef->ef_rel) != 0) { - warnx("%s: cannot load DT_REL section", ef->ef_name); - return (EIO); - } - ef->ef_relsz = rel_sz / rel_entry; - if (ef->ef_verbose) - warnx("%s: %d REL entries", ef->ef_name, - ef->ef_relsz); + error = EFTYPE; + goto out; } - if (rela_off != 0) { - if (rela_entry == 0) { - warnx("%s: no DT_RELAENT for DT_RELA", ef->ef_name); - return (EFTYPE); - } - if (rela_entry != sizeof(Elf_Rela)) { - warnx("%s: inconsistent DT_RELAENT value", - ef->ef_name); - return (EFTYPE); - } - if (rela_sz % rela_entry != 0) { - warnx("%s: inconsistent values for DT_RELASZ and " - "DT_RELAENT", ef->ef_name); - return (EFTYPE); - } - if (ef_read_entry(ef, ef_get_offset(ef, rela_off), rela_sz, - (void **)&ef->ef_rela) != 0) { - warnx("%s: cannot load DT_RELA section", ef->ef_name); - return (EIO); - } - ef->ef_relasz = rela_sz / rela_entry; - if (ef->ef_verbose) - warnx("%s: %d RELA entries", ef->ef_name, - ef->ef_relasz); + if (rel_off == 0 && rela_off == 0) { + warnx("%s: no ELF relocation table found\n", ef->ef_name); + error = EFTYPE; + goto out; } - return (0); -} -static int -ef_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest) -{ - ssize_t r; + for (i = 0; i < nshdr; i++) { + switch (shdr[i].sh_type) { + case SHT_HASH: + if (shdr[i].sh_offset != hash_off) { + warnx("%s: ignoring SHT_HASH at different offset from DT_HASH", + ef->ef_name); + break; + } - if (offset != (Elf_Off)-1) { - if (lseek(ef->ef_fd, offset, SEEK_SET) == -1) - return (EIO); - } + /* + * libelf(3) mentions ELF_T_HASH, but it is + * not defined. + */ + if (shdr[i].sh_size < sizeof(*ef->ef_hashtab) * 2) { + warnx("hash section too small"); + error = EFTYPE; + goto out; + } + error = elf_read_data(ef->ef_efile, ELF_T_WORD, + shdr[i].sh_offset, shdr[i].sh_size, + (void **)&ef->ef_hashtab); + if (error != 0) { + warnc(error, "can't read hash table"); + goto out; + } + ef->ef_nbuckets = ef->ef_hashtab[0]; + ef->ef_nchains = ef->ef_hashtab[1]; + if ((2 + ef->ef_nbuckets + ef->ef_nchains) * + sizeof(*ef->ef_hashtab) != shdr[i].sh_size) { + warnx("inconsistent hash section size"); + error = EFTYPE; + goto out; + } - r = read(ef->ef_fd, dest, len); - if (r != -1 && (size_t)r == len) - return (0); - else - return (EIO); -} + ef->ef_buckets = ef->ef_hashtab + 2; + ef->ef_chains = ef->ef_buckets + ef->ef_nbuckets; + break; + case SHT_DYNSYM: + if (shdr[i].sh_offset != sym_off) { + warnx("%s: ignoring SHT_DYNSYM at different offset from DT_SYMTAB", + ef->ef_name); + break; + } + error = elf_read_symbols(ef->ef_efile, i, &nsym, + &ef->ef_symtab); + if (error != 0) { + if (ef->ef_verbose) + warnx("%s: can't load .dynsym section (0x%jx)", + ef->ef_name, (uintmax_t)sym_off); + goto out; + } + break; + case SHT_STRTAB: + if (shdr[i].sh_offset != str_off) + break; + error = elf_read_string_table(ef->ef_efile, + &shdr[i], &ef->ef_strsz, &ef->ef_strtab); + if (error != 0) { + warnx("can't load .dynstr section"); + error = EIO; + goto out; + } + break; + case SHT_REL: + if (shdr[i].sh_offset != rel_off) + break; + if (shdr[i].sh_size != rel_sz) { + warnx("%s: size mismatch for DT_REL section", + ef->ef_name); + error = EFTYPE; + goto out; + } + error = elf_read_rel(ef->ef_efile, i, &ef->ef_relsz, + &ef->ef_rel); + if (error != 0) { + warnx("%s: cannot load DT_REL section", + ef->ef_name); + goto out; + } + break; + case SHT_RELA: + if (shdr[i].sh_offset != rela_off) + break; + if (shdr[i].sh_size != rela_sz) { + warnx("%s: size mismatch for DT_RELA section", + ef->ef_name); + error = EFTYPE; + goto out; + } + error = elf_read_rela(ef->ef_efile, i, &ef->ef_relasz, + &ef->ef_rela); + if (error != 0) { + warnx("%s: cannot load DT_RELA section", + ef->ef_name); + goto out; + } + break; + } + } -static int -ef_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void **ptr) -{ - int error; + if (ef->ef_hashtab == NULL) { + warnx("%s: did not find a symbol hash table", ef->ef_name); + error = EFTYPE; + goto out; + } + if (ef->ef_symtab == NULL) { + warnx("%s: did not find a dynamic symbol table", ef->ef_name); + error = EFTYPE; + goto out; + } + if (nsym != ef->ef_nchains) { + warnx("%s: symbol count mismatch", ef->ef_name); + error = EFTYPE; + goto out; + } + if (ef->ef_strtab == NULL) { + warnx("%s: did not find a dynamic string table", ef->ef_name); + error = EFTYPE; + goto out; + } + if (rel_off != 0 && ef->ef_rel == NULL) { + warnx("%s: did not find a DT_REL relocation table", + ef->ef_name); + error = EFTYPE; + goto out; + } + if (rela_off != 0 && ef->ef_rela == NULL) { + warnx("%s: did not find a DT_RELA relocation table", + ef->ef_name); + error = EFTYPE; + goto out; + } - *ptr = malloc(len); - if (*ptr == NULL) - return (errno); - error = ef_read(ef, offset, len, *ptr); - if (error != 0) - free(*ptr); + error = 0; +out: + free(dyn); + free(shdr); return (error); } static int -ef_seg_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest) +ef_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) { - Elf_Off ofs; - - ofs = ef_get_offset(ef, offset); - if (ofs == 0) { - if (ef->ef_verbose) - warnx("ef_seg_read(%s): zero offset (%jx:%ju)", - ef->ef_name, (uintmax_t)offset, (uintmax_t)ofs); - return (EFAULT); - } - return (ef_read(ef, ofs, len, dest)); -} - -static int -ef_seg_read_rel(elf_file_t ef, Elf_Off offset, size_t len, void *dest) -{ - Elf_Off ofs; - const Elf_Rela *a; - const Elf_Rel *r; + GElf_Off ofs; + const GElf_Rela *a; + const GElf_Rel *r; int error; - ofs = ef_get_offset(ef, offset); + ofs = ef_get_offset(ef, address); if (ofs == 0) { if (ef->ef_verbose) warnx("ef_seg_read_rel(%s): zero offset (%jx:%ju)", - ef->ef_name, (uintmax_t)offset, (uintmax_t)ofs); + ef->ef_name, (uintmax_t)address, (uintmax_t)ofs); return (EFAULT); } - if ((error = ef_read(ef, ofs, len, dest)) != 0) + error = elf_read_raw_data(ef->ef_efile, ofs, dest, len); + if (error != 0) return (error); for (r = ef->ef_rel; r < &ef->ef_rel[ef->ef_relsz]; r++) { - error = ef_reloc(ef->ef_efile, r, EF_RELOC_REL, 0, offset, len, - dest); + error = elf_reloc(ef->ef_efile, r, ELF_T_REL, 0, address, + len, dest); if (error != 0) return (error); } for (a = ef->ef_rela; a < &ef->ef_rela[ef->ef_relasz]; a++) { - error = ef_reloc(ef->ef_efile, a, EF_RELOC_RELA, 0, offset, len, - dest); + error = elf_reloc(ef->ef_efile, a, ELF_T_RELA, 0, address, + len, dest); if (error != 0) return (error); } @@ -505,168 +536,115 @@ ef_seg_read_rel(elf_file_t ef, Elf_Off offset, size_t len, void *dest) } static int -ef_seg_read_string(elf_file_t ef, Elf_Off offset, size_t len, char *dest) +ef_seg_read_string(elf_file_t ef, GElf_Addr address, size_t len, char *dest) { - Elf_Off ofs; - ssize_t r; + GElf_Off ofs; + int error; - ofs = ef_get_offset(ef, offset); - if (ofs == 0 || ofs == (Elf_Off)-1) { + ofs = ef_get_offset(ef, address); + if (ofs == 0 || ofs == (GElf_Off)-1) { if (ef->ef_verbose) warnx("ef_seg_read_string(%s): bad offset (%jx:%ju)", - ef->ef_name, (uintmax_t)offset, (uintmax_t)ofs); + ef->ef_name, (uintmax_t)address, (uintmax_t)ofs); return (EFAULT); } - r = pread(ef->ef_fd, dest, len, ofs); - if (r < 0) - return (errno); + error = elf_read_raw_data(ef->ef_efile, ofs, dest, len); + if (error != 0) + return (error); if (strnlen(dest, len) == len) return (EFAULT); return (0); } -static int -ef_seg_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void **ptr) -{ - int error; - - *ptr = malloc(len); - if (*ptr == NULL) - return (errno); - error = ef_seg_read(ef, offset, len, *ptr); - if (error != 0) - free(*ptr); - return (error); -} - -static int -ef_seg_read_entry_rel(elf_file_t ef, Elf_Off offset, size_t len, void **ptr) -{ - int error; - - *ptr = malloc(len); - if (*ptr == NULL) - return (errno); - error = ef_seg_read_rel(ef, offset, len, *ptr); - if (error != 0) - free(*ptr); - return (error); -} - int -ef_open(const char *filename, struct elf_file *efile, int verbose) +ef_open(struct elf_file *efile, int verbose) { elf_file_t ef; - Elf_Ehdr *hdr; - int fd; + GElf_Ehdr *hdr; + size_t i, nphdr, nsegs; int error; - int phlen, res; - int nsegs; - Elf_Phdr *phdr, *phdyn, *phlimit; + GElf_Phdr *phdr, *phdyn; - if (filename == NULL) - return (EINVAL); - if ((fd = open(filename, O_RDONLY)) == -1) - return (errno); + hdr = &efile->ef_hdr; + if (hdr->e_phnum == 0 || + hdr->e_phentsize != elf_object_size(efile, ELF_T_PHDR) || + hdr->e_shnum == 0 || hdr->e_shoff == 0 || + hdr->e_shentsize != elf_object_size(efile, ELF_T_SHDR)) + return (EFTYPE); ef = malloc(sizeof(*ef)); - if (ef == NULL) { - close(fd); + if (ef == NULL) return (errno); - } efile->ef_ef = ef; efile->ef_ops = &ef_file_ops; bzero(ef, sizeof(*ef)); ef->ef_verbose = verbose; - ef->ef_fd = fd; - ef->ef_name = strdup(filename); + ef->ef_name = strdup(efile->ef_filename); ef->ef_efile = efile; - hdr = (Elf_Ehdr *)&ef->ef_hdr; - do { - res = read(fd, hdr, sizeof(*hdr)); - error = EFTYPE; - if (res != sizeof(*hdr)) - break; - if (!IS_ELF(*hdr)) - break; - if (hdr->e_ident[EI_CLASS] != ELF_TARG_CLASS || - hdr->e_ident[EI_DATA] != ELF_TARG_DATA || - hdr->e_ident[EI_VERSION] != EV_CURRENT || - hdr->e_version != EV_CURRENT || - hdr->e_machine != ELF_TARG_MACH || - hdr->e_phentsize != sizeof(Elf_Phdr)) - break; - phlen = hdr->e_phnum * sizeof(Elf_Phdr); - if (ef_read_entry(ef, hdr->e_phoff, phlen, - (void **)&ef->ef_ph) != 0) - break; - phdr = ef->ef_ph; - phlimit = phdr + hdr->e_phnum; - nsegs = 0; - phdyn = NULL; - while (phdr < phlimit) { - if (verbose > 1) - ef_print_phdr(phdr); - switch (phdr->p_type) { - case PT_LOAD: - if (nsegs < MAXSEGS) - ef->ef_segs[nsegs] = phdr; - nsegs++; - break; - case PT_PHDR: - break; - case PT_DYNAMIC: - phdyn = phdr; - break; - } - phdr++; - } + + error = elf_read_phdrs(efile, &nphdr, &ef->ef_ph); + if (error != 0) { + phdr = NULL; + goto out; + } + + error = EFTYPE; + nsegs = 0; + phdyn = NULL; + phdr = ef->ef_ph; + for (i = 0; i < nphdr; i++, phdr++) { if (verbose > 1) - printf("\n"); - if (phdyn == NULL) { - warnx("Skipping %s: not dynamically-linked", - filename); + ef_print_phdr(phdr); + switch (phdr->p_type) { + case PT_LOAD: + if (nsegs < MAXSEGS) + ef->ef_segs[nsegs] = phdr; + nsegs++; break; - } else if (nsegs > MAXSEGS) { - warnx("%s: too many segments", filename); + case PT_PHDR: break; - } - ef->ef_nsegs = nsegs; - if (ef_read_entry(ef, phdyn->p_offset, - phdyn->p_filesz, (void **)&ef->ef_dyn) != 0) { - printf("ef_read_entry failed\n"); + case PT_DYNAMIC: + phdyn = phdr; *** 2717 LINES SKIPPED *** From nobody Thu Jan 18 22:26:22 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQk6RyPz578f9; Thu, 18 Jan 2024 22:26:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQk4Ysnz423b; Thu, 18 Jan 2024 22:26:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616782; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3XdozQXEKJhuZVlPvN1jfpmQmLl1yCMU+bz4/SqyLDE=; b=c+wKF5J5ePLe9sZQXa+2olD+4BhrX0ZNDGrGKZJ5EnnPt4xNlIfBHGm+JYwIiGfcMimyxA Xc/hzztX7H2cyWiXIF6OfACFVdOgcSFn2gGCyv6089Sp+BRv/lSLVV5n4GV5HmgU0aNskO UOOPbZg0aM50w/RD9jbSnldbQE8k3EOKBBethtYQdQZptlF2cSRybu1E7mQfktWSTP16wK EnNMZCe7dHPr03yfewgaSGtuXbfyGN6nGCfX/pGNr0FJvN6wkHiFsU/J7FUKjJ52vNmBJd L4WaiUkpt8uuZqztoHiMfucFhxXW2lBPt03fYUqM7xy0nY1OiFU6dH0DHOf2Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616782; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3XdozQXEKJhuZVlPvN1jfpmQmLl1yCMU+bz4/SqyLDE=; b=baY5PBYaetLqq/A+59NES8ZrvwwrOQc9qNPxXDIglet9r+X5/zOoxrPcA//ezml2i0DOpm dD2Hj7R/IGWfTRkSGzVno8nqg0tZ/s4Jp47kb8w3cM5oPJThFRcL1+EheJrcH5h1dfljEk kavUZuxcaAllA6sIsxzobDDdA2fqY56aJ3hx8VDehsSrHGJVTTSYl8v6SO2Ir663hiVRFI Qfb2KCfpRWIHt1Fm6utGan8bWAid1AjL4XMdkRZ468hv+BhJEPw8EsowBbhB9KJG+HGWpG DacgM5HVgWe+jRuxfR9zGp6pDHVAB3fnyzmIUvJ164j43niYGdQHoUawJNnUVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616782; a=rsa-sha256; cv=none; b=Co5axAPB5ARfwyfjJ0vq1EcB8jHdyWZMmO/ssH0hEUgdeC2HWJtEFomtZwWmJKiq8Y6KGx 6nwFafQP1ZnOOH8L8ozdepZ3ulQmYsCAIXHJGgwqnH7oiZTAd4rb7S/cvAjXBvOlkzAlmE JCCzaxEh3kkHdHV7JEMAI+oNj/tzgoRQnHQVnWtSnFx3/q4zs9buvQXgy+ASeLsqnsliNX qKc2qwGQHEzLMDg19v4Iyex8tQ4az5rxg6wBYwrYBRlqDl5ioOwhTScYs5WXJWpPkRS0HG J8xajFjSEhVMejwlK62e41EwyWjyY1tLHuLrxT5mxOenm6f0iyuZZaOOERajsQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQk3fTXzQ4Y; Thu, 18 Jan 2024 22:26:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQM5V090229; Thu, 18 Jan 2024 22:26:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQMYS090226; Thu, 18 Jan 2024 22:26:22 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:22 GMT Message-Id: <202401182226.40IMQMYS090226@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: e33e621428c1 - stable/13 - kldxref: Fix for 32-bit powerpc List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e33e621428c1d11dfa3b9d9253580d102dd996c3 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e33e621428c1d11dfa3b9d9253580d102dd996c3 commit e33e621428c1d11dfa3b9d9253580d102dd996c3 Author: Jessica Clarke AuthorDate: 2023-12-14 16:37:34 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:15 +0000 kldxref: Fix for 32-bit powerpc R_PPC_RELATIVE lost its 32-bit handling in the libelf conversion. Reported by: bapt Fixes: 0299afdff145 ("kldxref: Make use of libelf to be a portable cross tool") (cherry picked from commit d1ce87ae0ddca413b098b6be8f5d3b4da87422ef) --- usr.sbin/kldxref/ef_powerpc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/ef_powerpc.c b/usr.sbin/kldxref/ef_powerpc.c index 068c8117e4a6..ab33e170b488 100644 --- a/usr.sbin/kldxref/ef_powerpc.c +++ b/usr.sbin/kldxref/ef_powerpc.c @@ -69,7 +69,8 @@ ef_ppc_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, le64enc(where, val); else be64enc(where, val); - } + } else + be32enc(where, val); break; case R_PPC_ADDR32: /* word32 S + A */ val = EF_SYMADDR(ef, symidx) + addend; From nobody Thu Jan 18 22:26:21 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQj5L14z578f6; Thu, 18 Jan 2024 22:26:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQj3fwCz42Bd; Thu, 18 Jan 2024 22:26:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616781; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CwJKlJ/+gkNPLb+NAR7Tw6Mleg40G7mTX94Od/DLjuQ=; b=f7MBWWO+NcbG55NXNlwnH5764spexMBstFpYAU4qoPg+ADvFLc6x6e5kM4I54IogQ607rG VKEGCJX33kAUZBwV3F+UDwwquRygNFg27/l4/juaf1xx6OWv9SBMGmgQsx3UaBY+H7KsjE x7V3tmgOBmGSW0hST/ngfSTs9gsHECdFER4816VJB3XHYMEtzR3Vc03pWhai7LE7gVBBtO mrfzBgU4vYOG07NzruFGxHg6C5yMErrS10jTBP1hxetZssNnH+4Zeh3y6JbDeQLLxBLgtS u2Jhh2aBUrUj6oG7Q7zEz9Yc1PREpDX78AHY4PjvhN6hsaLC6YnRhMt2fV1bzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616781; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CwJKlJ/+gkNPLb+NAR7Tw6Mleg40G7mTX94Od/DLjuQ=; b=rbHqEKC0AfCy6Nk4fwVIny42FnwWp3K9wW6AK3v6iweZnwYqljP9K/H4BLWTA2beixvIfB QFzKS6EPST1V7TZkyYQpfdBjj9lM2HojbCJuHcJ7qMWN2/nMxkmKjp9LRBg25vVa0ofaXP 56css6oKoe3gc6962QweWlwPuz30Uf634nvnKAB3LSkbUMiDhBWFH18BiouHQlZap/xkro gbbbMa+Nk5ulRjVVwpNcZFU/rwoA4sPQWhUziw94PCvvbhFOBlVzkWedbxsLsOMTvAlCrY KbeXpEUOLeVDsM6c/Ffp69VxMsdWZsy26HWjb96hUGF+uXJYG8p/tRQvFwTvpA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616781; a=rsa-sha256; cv=none; b=K5p41iBMLLgqJTyQoluN2mUVSPOMHyxrDnz/M64az7MqoDU/UMe9xm+2yIFwSe9rF5YUhY szFNuUH7kAbCYYvaHAny1GCYh1hGdLjH5psW56f9ZIwwW4I2aOV9QJr7bM8IQQmmYdu1d7 gNOjdinGSpGbds6LSDjldcz9FC4O2+BLLAZONrN4RulKgVVexrHJRf+iZp/OUw8rjf2RX+ s06G9hj1N2LCzieet1AyoUIrQlenhd6mqqGcPXnlPerxdHfGwxy1SsesJ1bd7X/1aWNvJu 3sYNljcrH1d+DcGN0gAWohslFzbSjs5+RbYOvWAayrD2ydIlo2XPtjSnfPzzNg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQj2lTTzQHw; Thu, 18 Jan 2024 22:26:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQLrr090187; Thu, 18 Jan 2024 22:26:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQLH4090184; Thu, 18 Jan 2024 22:26:21 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:21 GMT Message-Id: <202401182226.40IMQLH4090184@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: d18406a12045 - stable/13 - kldxref: Cast rtype to int in ef_aarch64.c in warning List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d18406a120457949a9153472d72ea8ebe169921d Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d18406a120457949a9153472d72ea8ebe169921d commit d18406a120457949a9153472d72ea8ebe169921d Author: John Baldwin AuthorDate: 2023-12-13 20:17:44 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:06 +0000 kldxref: Cast rtype to int in ef_aarch64.c in warning This is consistent with the other architecture-specific relocation handlers. Reported by: mjg Sponsored by: DARPA (cherry picked from commit 894f3f48c3ea27a6f0f54850595ff48db9ee4861) --- usr.sbin/kldxref/ef_aarch64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/ef_aarch64.c b/usr.sbin/kldxref/ef_aarch64.c index 5bd521b28e38..f1e499e76ef1 100644 --- a/usr.sbin/kldxref/ef_aarch64.c +++ b/usr.sbin/kldxref/ef_aarch64.c @@ -65,7 +65,7 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, case R_AARCH64_ABS64: break; default: - warnx("unhandled relocation type %lu", rtype); + warnx("unhandled relocation type %d", (int)rtype); break; } return (0); From nobody Thu Jan 18 22:26:23 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQm1Hvzz578Zy; Thu, 18 Jan 2024 22:26:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQl5gKSz421W; Thu, 18 Jan 2024 22:26:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616783; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=a5Uptz1HvD0ny9joajt5LI0rALGilSn4HsLF/anSJOs=; b=Nd7DkisBmOdK7hHuaOGz1NmVBkxOz/NyvEhms4ACZl0qvK2/3DmWxgyqyF0PYzuvAHWNA6 OAwOTMCoYHPp4tNOnnDuMkJGwxLYOFzsyZ7mTecarWKRx2bHZLZxjP9ZWaKf5fmB1D2VvQ 9U+X1gFdoBiGeumlZqkq1mjcwzUTgEkoCAqSUUXIceoiSwVWr7adTHiIOcom6it5ktThkp RvfBZbxocZunmheY8zl10uQcHEPoasIfrbE3wBfPL/Fm1pwKeq6XcfC33gorJR/IAWG3Ws F/Ck/YVoy98K4gdtJUy/unavEVS9QQhRvME+hLcMrIWkTa8u0VmtUl/IdebY5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616783; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=a5Uptz1HvD0ny9joajt5LI0rALGilSn4HsLF/anSJOs=; b=xYD+QamfqhKKmX2phl2ERzNBT2CaNTQ4Gh1ypN9LA1zzYF9zrnfB/gNn18Nhld+c4kcdU8 U/IS8vQu0sN3g7YwBp4Psh1+xvL2pdJISGwFWUHqzwdI7SMM7XKbuntpAAUohB4vHzlJ06 MUKUbL6HBW3og83EgN1QSzO0gW1Qtc9lkbAeCccpFvc5TMkGxgkEoon9NDjmc86ibjGW65 OB8RnNIdr7cqKEFWcSOl4lwg6UYjJlIf/B7YdroyqYyEzlgeBuInv6waVJtRwLb2yDI5x0 8jvRD4FYnmXTPVx3wq0nRt70MPvPrTQnDg6J6pwjqPugovYMHeWfLULaYMJd6A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616783; a=rsa-sha256; cv=none; b=iQd8gxVYz+ji4TMv3PQ8m+bHixB4pRv4n0pdAj1nfUQ1T7dUalY/283ynYl4PJifKp/Uyv 2CaDoAKJqgqKfidw8rPkSEQFRyZeMBiq9MKe8LZ78uCAVsWNqqI4fWPdGoJq3EFnh+W5Ju W5U1LLO8ZRTWvurOuSjCUI3ekrxIO3gTaN+/yWvo15mKo02/SE7HPB3daGS08j946+bqxn qMzfCFWngWKCgctWlfV3P0/rTshs8HVNZBHN+vdhdWA3U9mesMIpb5hZ+1POJbR4uf/Kzz ylsbSQ8Br3rKtZBtwzzus4bC55L4rEaSym+hnVpCOMDMmIZsFYYXFls9xKqMsg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQl4l0WzQG7; Thu, 18 Jan 2024 22:26:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQNb8090292; Thu, 18 Jan 2024 22:26:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQNfA090289; Thu, 18 Jan 2024 22:26:23 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:23 GMT Message-Id: <202401182226.40IMQNfA090289@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 8db082ca3177 - stable/13 - kldxref: Put each ef_CPUARCH.c on its own line to prepare for ef_arm.c List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8db082ca3177c62c1a93647a75c258e659f6be0a Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=8db082ca3177c62c1a93647a75c258e659f6be0a commit 8db082ca3177c62c1a93647a75c258e659f6be0a Author: Jessica Clarke AuthorDate: 2023-12-14 18:27:09 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:23 +0000 kldxref: Put each ef_CPUARCH.c on its own line to prepare for ef_arm.c Adding ef_arm.c would push this past 80 columns, so prepare for its addition by splitting the line up. (cherry picked from commit ada9d12f951201e13d831edc10acc36dd37d625e) --- usr.sbin/kldxref/Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/Makefile b/usr.sbin/kldxref/Makefile index 6e0a7244328b..07451ba8f42b 100644 --- a/usr.sbin/kldxref/Makefile +++ b/usr.sbin/kldxref/Makefile @@ -3,7 +3,12 @@ PACKAGE= runtime PROG= kldxref MAN= kldxref.8 SRCS= kldxref.c ef.c ef_obj.c elf.c -SRCS+= ef_aarch64.c ef_amd64.c ef_i386.c ef_mips.c ef_powerpc.c ef_riscv.c +SRCS+= ef_aarch64.c \ + ef_amd64.c \ + ef_i386.c \ + ef_mips.c \ + ef_powerpc.c \ + ef_riscv.c WARNS?= 2 From nobody Thu Jan 18 22:26:24 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQn1XLlz578b1; Thu, 18 Jan 2024 22:26:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQm6cRTz421m; Thu, 18 Jan 2024 22:26:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616784; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=99rvO/j/oz0O16xCo7TSgHBxKfmJjwV2Go+5vOVAXuA=; b=IOOGnjViclWglguHMGFX0GOcXQ7D2GZvdR6FZMzBhdtF5dP7RVjD3TyQwUX6DHMcu/i1Y8 gec525twKYTwYSn35RjLAIjtUoLfwBMcDdMkri4m26HD+cWnqHvDk3k9HvJu2KxS9/4Hgc gSjZaDZog5tu0eLqw1+g02zGwtjLhkrul7VHw3rBfnohgRw/ZhCblhFg80PT3nMVXLuDnU gtF16ZMalSWl/SnEM2ReBdA0B3B8RHaHI4cTUOpM+tPXWcmVC/d0A/kEqxbGyThjypiQiN eS21Zx6G7BCtYgn7miqgnfEUfC9WLkxanZe3MOPwTvopJbbwom1rY0hMogGzJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616784; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=99rvO/j/oz0O16xCo7TSgHBxKfmJjwV2Go+5vOVAXuA=; b=W+Aivtrd24AR1rHxa3xVS7QwP6UErJpbtQFv7TR4lN9+7sEDtqsrEmxWOlxdhkdrsienx1 uZSUvQ+/sJtmkvuL6qeOLfe2wXZMpexHTaSUEjffmDsOyXOiBXCaqq5Wp7Yrfc68Om7ABS uctlYNzXL1hRGxtiUG3JOOXuJavRUGzOlmvHgQKsP+1XaeOK7WyJvNaH47CcemOsUFRSj7 ukUXKsQZ5dmYoZnYEDJcQXq3H/QOf2DauVafnR+KEr/iDjQR8AiIM1GIIQweOzxQ1jfB/9 v6DHlZFY3bSB1Tvj91dulgC2yoDP94v789wgw2wt3LjSooirnCtq2VXzt7GrMw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616784; a=rsa-sha256; cv=none; b=TMaQFVSYGnqNrRDZxXfypDPGFotTpzjfNpjO8NsZhH020TLrITA0rAhEgW216AVIwNyhBW iNTYy0TGuugfaWjwwsl/ck+/kZx1XAzvU27Kgb291GPPQI3GHkDRxP33zEdffDxLFv4wLn cyWXgcWYQwB7O7aVGN1Ham+tVq8zCU851KWSSI4l8HF/zNLnWutkcbtIKYkqNpFaQYLONe dSnwG1CxtMnqjY+itANeN0NkNJ/8Tx8oMb3//GwXAvplNEVdfVQ2rK0+i3IbDzrUphlmMu GNaf5sxzaVAelhzMI4pLkz4mbjI/GyHEQO+seNiavP7Kks54yFlyUbp3yLMRUQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQm5kCtzQKx; Thu, 18 Jan 2024 22:26:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQOjG090332; Thu, 18 Jan 2024 22:26:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQOMg090328; Thu, 18 Jan 2024 22:26:24 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:24 GMT Message-Id: <202401182226.40IMQOMg090328@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 3ab67201a2f4 - stable/13 - kldxref: Add arm support List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 3ab67201a2f4c48cfba864f087bce2c0b85c0249 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=3ab67201a2f4c48cfba864f087bce2c0b85c0249 commit 3ab67201a2f4c48cfba864f087bce2c0b85c0249 Author: Jessica Clarke AuthorDate: 2023-12-14 18:27:09 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:32 +0000 kldxref: Add arm support (cherry picked from commit c88f7d8fb54051366d91acfc6c80aca6154da3b4) --- usr.sbin/kldxref/Makefile | 1 + usr.sbin/kldxref/ef_arm.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/usr.sbin/kldxref/Makefile b/usr.sbin/kldxref/Makefile index 07451ba8f42b..7b392e020939 100644 --- a/usr.sbin/kldxref/Makefile +++ b/usr.sbin/kldxref/Makefile @@ -4,6 +4,7 @@ PROG= kldxref MAN= kldxref.8 SRCS= kldxref.c ef.c ef_obj.c elf.c SRCS+= ef_aarch64.c \ + ef_arm.c \ ef_amd64.c \ ef_i386.c \ ef_mips.c \ diff --git a/usr.sbin/kldxref/ef_arm.c b/usr.sbin/kldxref/ef_arm.c new file mode 100644 index 000000000000..4b926839ee5d --- /dev/null +++ b/usr.sbin/kldxref/ef_arm.c @@ -0,0 +1,94 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2003 Jake Burkholder. + * Copyright 1996-1998 John D. Polstra. + * All rights reserved. + * Copyright (c) 2023 Jessica Clarke + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +#include +#include +#include + +#include "ef.h" + +/* + * Apply relocations to the values we got from the file. `relbase' is the + * target relocation address of the section, and `dataoff' is the target + * relocation address of the data in `dest'. + */ +static int +ef_arm_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, + GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) +{ + char *where; + GElf_Addr addr, addend; + GElf_Size rtype, symidx; + const GElf_Rel *rel; + const GElf_Rela *rela; + + switch (reltype) { + case ELF_T_REL: + rel = (const GElf_Rel *)reldata; + where = (char *)dest + relbase + rel->r_offset - dataoff; + addend = 0; + rtype = GELF_R_TYPE(rel->r_info); + symidx = GELF_R_SYM(rel->r_info); + break; + case ELF_T_RELA: + rela = (const GElf_Rela *)reldata; + where = (char *)dest + relbase + rela->r_offset - dataoff; + addend = rela->r_addend; + rtype = GELF_R_TYPE(rela->r_info); + symidx = GELF_R_SYM(rela->r_info); + break; + default: + return (EINVAL); + } + + if (where < (char *)dest || where >= (char *)dest + len) + return (0); + + if (reltype == ELF_T_REL) + addend = le32dec(where); + + switch (rtype) { + case R_ARM_ABS32: /* S + A */ + addr = EF_SYMADDR(ef, symidx) + addend; + le32enc(where, addr); + break; + case R_ARM_RELATIVE: /* B + A */ + addr = addend + relbase; + le32enc(where, addr); + break; + default: + warnx("unhandled relocation type %d", (int)rtype); + } + return (0); +} + +ELF_RELOC(ELFCLASS32, ELFDATA2LSB, EM_ARM, ef_arm_reloc); From nobody Thu Jan 18 22:26:26 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQq6zMXz578Wc; Thu, 18 Jan 2024 22:26:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQq1RzNz42H6; Thu, 18 Jan 2024 22:26:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616787; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1ABtzGKUfB8Fdghr1RIpbSHP5Uzf37tv1I0yqa6Y7jU=; b=Gd8EVJaIqImsfL0DuKlTkWroH397b1ET4zqBEVx/k2XbhWsAQoudBxT3pymWMmsqfkxEbS Jf6ZUVutpUYETjS84bwo0vlvJRpfG3JlcuErq5yZro2X9X2L/jd37dTFB8R7amj6mBYLJi guWHsdO9+8zRN8iPx3CnDjChVQZJWyPTOikZjaooETmtQMlSfzG3UFvp8+sudTHBEmHK67 AC+WfL9bsK1ReNvdlbtfkjUuATWbusLW4SpuDdM6j261v0pz5n8xnZS8/GeVxjIQ3JDZ0S UcfyKvS5njLuayIBRvFwsZaG6wLx8SRNMcGqaFo5wMleszPw7t+XK2T08/pEFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616787; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1ABtzGKUfB8Fdghr1RIpbSHP5Uzf37tv1I0yqa6Y7jU=; b=pSxgwkwIHV4O0X9RTGy08xItMNiC1v4ToH3o4MBRgSNPFaz5jSSqueqI5vI2OSZiOf3iTt 40xEIKkU0fW8Wkh0nQBJH4QRyTuNbRzbEhbLMljOzBHOaZK3IsYXwAzCDKbrOHCsUCc/jC HZuIfKcEU4Ys3RlADtlfo/IEd4l5A3xT7C0K+5iS45vJqMA5ervHMoHcgVZ92QQ3UxtuJ0 vwVT3D62/3PGUqLBnirTk2WXW/km2qumocbv/BH5Vt1FxI2BN+xbDXe4S7MCBdkri0tUM8 WnPQ32Ux55DQY0GG4PuedQF4TIuZiH8nGSOTHgL5dONBEUuQ/xfuB5B1TjRVVQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616787; a=rsa-sha256; cv=none; b=c8TrNyUE6kkQn//x1vxXIvpu85uWBaaCF/UcYkseGqEX1rAuUMcfvMx9TOGOO6e9TIM3ju HuwX3qeZ3pflJqXpjk19lz+bLOV8tleY7lOwYDQyLLydehwSbUrpIgCmWgixJmSwg2MX8e ZcsFSebhgoUrz8P1LZU4PcRb0TiCjg9T0FRIQsc35Ud3w1enIkxb9eW+QEoeSv8zyj1KZx IUJEajrvwnW3myJQv3TDbf7p2WlBMY7iJ1NsMn2nCWipgwZ12mdur/VOmzwEIqT/IUimji wu0ER52B+VtTpM8iWCvyzeGpSBhTE0yKGLsjVSFVmdtd5f2f6VV0cv4zf2S3oA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQq0Yv4zQ4b; Thu, 18 Jan 2024 22:26:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQQKP090425; Thu, 18 Jan 2024 22:26:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQQSW090422; Thu, 18 Jan 2024 22:26:26 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:26 GMT Message-Id: <202401182226.40IMQQSW090422@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 09371fa6622e - stable/13 - kldxref: Implement aarch64 R_AARCH64_AB64 relocation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 09371fa6622ebb025a87439b21c5d4835aa80108 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=09371fa6622ebb025a87439b21c5d4835aa80108 commit 09371fa6622ebb025a87439b21c5d4835aa80108 Author: Jessica Clarke AuthorDate: 2023-12-14 20:17:20 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:49 +0000 kldxref: Implement aarch64 R_AARCH64_AB64 relocation Doing nothing seems to be sufficient but is strange, inconsistent with other architectures, and not necessary when it's easy to support properly. (cherry picked from commit aaba1490ec4b17dea750b1e58dfded7aeb4e9816) --- usr.sbin/kldxref/ef_aarch64.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/usr.sbin/kldxref/ef_aarch64.c b/usr.sbin/kldxref/ef_aarch64.c index f1e499e76ef1..4365a7ff1f66 100644 --- a/usr.sbin/kldxref/ef_aarch64.c +++ b/usr.sbin/kldxref/ef_aarch64.c @@ -43,8 +43,8 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - Elf64_Addr addend; - GElf_Size rtype; + GElf_Addr addr, addend; + GElf_Size rtype, symidx; const GElf_Rela *rela; if (reltype != ELF_T_RELA) @@ -54,6 +54,7 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, where = (char *)dest - dataoff + rela->r_offset; addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); + symidx = GELF_R_SYM(rela->r_info); if (where < (char *)dest || where >= (char *)dest + len) return (0); @@ -63,6 +64,8 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, le64enc(where, relbase + addend); break; case R_AARCH64_ABS64: + addr = EF_SYMADDR(ef, symidx) + addend; + le64enc(where, addr); break; default: warnx("unhandled relocation type %d", (int)rtype); From nobody Thu Jan 18 22:26:25 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQp2M9Lz578RN; Thu, 18 Jan 2024 22:26:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQp0CTHz41wG; Thu, 18 Jan 2024 22:26:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616786; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zj3Zv95HoEwC801Syz+vQd6RPb7zeWeF9tNsYxr9cog=; b=LAt+EmPVBO4vxTLVAw6MfpCaRMKSXBKPtwhaHLxoyEtx3mn+6AiHB9T+2EPM3u/vqwiFQd rp0tC9xxoIZgInAVha2eQbcCvxKvOgvAud/F/0nhpAME1WvPCulo5h6H1UTiNC7XyK8bR6 zc1uQ3mTXcpuF94f1bV1vshM4dV4vKHdN8Z4ORjeVBV9ZUEuKORU/I611cs6tj98N/1EqQ YQjT9o16MGmVM0LEwFjsIS6U4ivn7qW/ZWRxDuDbIwjKFrptbzPAggo49cN8q+ZZ/GyZ0f sgbZssF2rxPneaCkMH85OZ2zdM30Rqc/lz12SPny4ar9m1ywOifcI8H0xuT5lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616786; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zj3Zv95HoEwC801Syz+vQd6RPb7zeWeF9tNsYxr9cog=; b=sxwIRUgsmfmSO04Eabp45Xj1NnQ7Lt7hwqDWi3uxaLOtmE9dNX6LN7MqyyfYbdweY+Rwan UfA6sWx5uo1f0QzHXU+do5kb0h5glk4OJiomn7M3mbqGmcCbtUnHXKzaceT/Dq2KI/N8jP q1A+w3d5ZE1q7NLGO8bejhxnLOZFOwvQlrSWfF9/UPfxWFLji3w+/FQ+tIujg8AbFktFYf eomAR+YUDygNZqjNGMCBv3Yj1GPc+KJn5q528uDK89Rt07hz1tt18u5tSqEKH9w+DEboJQ /g77kiRq0G17Y3t/K39RNK/uFmfc0oKudMqsnFLUrw7v4NZdn5uoKSjHmXqo7g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616786; a=rsa-sha256; cv=none; b=xunxUD9xCgrnmJa6Ph20l5HgigUq0XhLotW0iEL8ygzmY6nsjeuP2PXjkxzypBRD1V5acp zu2DXyHE07LpTmBXH0A5NwyqUTbL87F+fc+DWHmc4G0l/qeTsT8tTN9PZc7MnRnoQ4vZyf nTiPTXiCsFTLR5ZE9p7qBm1x6vzm+Npvblo2ZNwy8q+sVtgLWtJnWOht//wOi/dijA3j/3 tUk7Zvom7kfyEyFXpAekfRN1gPK2z0T0LhxXCw/VqkDJ7Z6yQsE1JSWWZByEthv3AZwrhB wnQW9NNMV5bbriYOeRstk4sQAXVCu7I01+3K85nf187jHz/ae+vyrH+K9LYU5Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQn6RXFzQ4Z; Thu, 18 Jan 2024 22:26:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQPqD090383; Thu, 18 Jan 2024 22:26:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQPiX090380; Thu, 18 Jan 2024 22:26:25 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:25 GMT Message-Id: <202401182226.40IMQPiX090380@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 8b3c539a2012 - stable/13 - kldxref: Fix MIPS Elf_Rel addend computation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8b3c539a2012f7254c5a8bb049d4d6eb46d16c56 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=8b3c539a2012f7254c5a8bb049d4d6eb46d16c56 commit 8b3c539a2012f7254c5a8bb049d4d6eb46d16c56 Author: Jessica Clarke AuthorDate: 2023-12-14 20:17:19 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:30:40 +0000 kldxref: Fix MIPS Elf_Rel addend computation Fixes: 0299afdff145 ("kldxref: Make use of libelf to be a portable cross tool") (cherry picked from commit ae7925cafeee1136bd1761b2ce75614ee47b0039) --- usr.sbin/kldxref/ef_mips.c | 1 - 1 file changed, 1 deletion(-) diff --git a/usr.sbin/kldxref/ef_mips.c b/usr.sbin/kldxref/ef_mips.c index edc99a7d2505..60fd35390d7e 100644 --- a/usr.sbin/kldxref/ef_mips.c +++ b/usr.sbin/kldxref/ef_mips.c @@ -88,7 +88,6 @@ ef_mips_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, else addend = be32dec(where); } - addend = *where; } switch (rtype) { From nobody Thu Jan 18 22:26:28 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQr55xnz578Wh; Thu, 18 Jan 2024 22:26:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQr2Y24z42GJ; Thu, 18 Jan 2024 22:26:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616788; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CB94N9h0h0qp2HFgxCM/yse1gawKydRH+JDMwbpP55U=; b=jgPowXB5DSRmtrUO2H/EjGeRGcHfhC8sHXnOHX0NTXwVazPYb4sZ++NwvOHI5HSYbWyvXX 6sNzs3EJ1RoVZnZ842yjDxql1GhOx2P/SP74OPCEmOeAyDxxNQCBE6qsH9g+AqbjLjjwU7 JKd2QwqMbNivdEsH5AfCTZA39QILlrYnEzoqqS8n9fRKmTFZ8Z0H4rrblgvOqKfd04wbSh O9AyfgjdO9RVrbMRuNIiUijq60bLrtjap8MX+OqcH5RIzB/ct2NUUPTAG4wMYwcP73qh+k v9FAweWGLTM4klnq52xEo9eiKeBXA8ujqLHrElyxmuQTd3bAN6UrSsNbCCj99Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616788; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CB94N9h0h0qp2HFgxCM/yse1gawKydRH+JDMwbpP55U=; b=X57xItMSUR2r7Q/Jopv5A3ifgNei7wJiJ0Usz8SSzZz6yrRXAgrHNUpAmESlrJdghv+p3h zUTAVwbtooCXaw+NJeNlrJkjG9VMLHBN14Sa688bIhq4o1VHgd/ra0lrFivqsy3TyK2s3P 4RcSTYXf/7ZPwLhUrDqsatVw6m+qJb8ka9QmDgFdD2JPz32CfsjxlAeMOSAT7j4bFOYgTJ Sgvk+f6tC0RGcM6SBF41ib7dILSQAKuibBHGnmFRL11ys5nZoJ3ifgUGmJWZ4AkAuQV7bX yZSZYkwny/5GPtWYtf+Lg9aquAfjOmRxQOatMekt4+9JXic/TYWfh5QpkkxLUA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616788; a=rsa-sha256; cv=none; b=HO4VuCbp18IwG14bpjgZ0k4FtJgV0xidVQBcifZzBv74sQp6qJlHxTAjKQ2ZgMY9MBJdxD ZAjOebFOe1+a4Neg2pvkpSqVsHNLn1Sro4E5nqdVW/umtKvVth0oDYF+R4Oqm5MZ8bIQaa CYCUjrXug+60ZlmtVP5XuUB0M2EkhAHlSltlQqgSdBUcHs+Xr4lrN/9ouSVRhF1uX8XYvN DxdyOcI4hDXrzWvYBABjWx2MNOWcaYOAhl6Q91GX/t0aHGDS/mxQPd6HbexAGtPUadtJS8 tQwshWwXR0BkcOTPLxqSOxdWA3c6/xHzy3QcrRwbN/UJSbqyrUtmkcfM6UGk/w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQr1NrpzPyq; Thu, 18 Jan 2024 22:26:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQS7v090470; Thu, 18 Jan 2024 22:26:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQSrc090467; Thu, 18 Jan 2024 22:26:28 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:28 GMT Message-Id: <202401182226.40IMQSrc090467@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 1dde3d8d7bb0 - stable/13 - kldxref: Reduce divergence between per-architecture files List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 1dde3d8d7bb09e14bd44fc567ea5569ae5712894 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=1dde3d8d7bb09e14bd44fc567ea5569ae5712894 commit 1dde3d8d7bb09e14bd44fc567ea5569ae5712894 Author: Jessica Clarke AuthorDate: 2023-12-14 20:17:20 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:00 +0000 kldxref: Reduce divergence between per-architecture files Note that relbase is always 0 for DSOs so its omission for __KLD_SHARED architectures was not a bug in practice. Whilst here, also parenthesise the dest offset for where to avoid transiently creating an out-of-bounds pointer, which is UB (though even on CHERI architectures, where capability bounds compression can result in that creating invalid capabilities that will trap on dereference, optimisation will reassociate to the correct form in practice and thus work just fine). (cherry picked from commit 2a622f14e8a588de654847ae264cdc3616528c9d) --- usr.sbin/kldxref/ef_aarch64.c | 22 +++++++++++++--------- usr.sbin/kldxref/ef_amd64.c | 28 ++++++++++++---------------- usr.sbin/kldxref/ef_arm.c | 12 ++++++------ usr.sbin/kldxref/ef_i386.c | 17 ++++++++--------- usr.sbin/kldxref/ef_mips.c | 29 +++++++++++++---------------- usr.sbin/kldxref/ef_powerpc.c | 39 +++++++++++++++++++++------------------ usr.sbin/kldxref/ef_riscv.c | 15 ++++++++++----- 7 files changed, 83 insertions(+), 79 deletions(-) diff --git a/usr.sbin/kldxref/ef_aarch64.c b/usr.sbin/kldxref/ef_aarch64.c index 4365a7ff1f66..b61de3b032ab 100644 --- a/usr.sbin/kldxref/ef_aarch64.c +++ b/usr.sbin/kldxref/ef_aarch64.c @@ -47,21 +47,25 @@ ef_aarch64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Size rtype, symidx; const GElf_Rela *rela; - if (reltype != ELF_T_RELA) + switch (reltype) { + case ELF_T_RELA: + rela = (const GElf_Rela *)reldata; + where = (char *)dest + (relbase + rela->r_offset - dataoff); + addend = rela->r_addend; + rtype = GELF_R_TYPE(rela->r_info); + symidx = GELF_R_SYM(rela->r_info); + break; + default: return (EINVAL); - - rela = (const GElf_Rela *)reldata; - where = (char *)dest - dataoff + rela->r_offset; - addend = rela->r_addend; - rtype = GELF_R_TYPE(rela->r_info); - symidx = GELF_R_SYM(rela->r_info); + } if (where < (char *)dest || where >= (char *)dest + len) return (0); - switch(rtype) { + switch (rtype) { case R_AARCH64_RELATIVE: - le64enc(where, relbase + addend); + addr = relbase + addend; + le64enc(where, addr); break; case R_AARCH64_ABS64: addr = EF_SYMADDR(ef, symidx) + addend; diff --git a/usr.sbin/kldxref/ef_amd64.c b/usr.sbin/kldxref/ef_amd64.c index 729039daa509..fde032dcabc2 100644 --- a/usr.sbin/kldxref/ef_amd64.c +++ b/usr.sbin/kldxref/ef_amd64.c @@ -36,17 +36,16 @@ #include "ef.h" /* - * Apply relocations to the values we got from the file. `relbase' is the - * target relocation address of the section, and `dataoff' is the target - * relocation address of the data in `dest'. + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest */ static int ef_amd64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - GElf_Addr val; - GElf_Addr addend, addr; + GElf_Addr addr, addend; GElf_Size rtype, symidx; const GElf_Rel *rel; const GElf_Rela *rela; @@ -54,14 +53,14 @@ ef_amd64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, switch (reltype) { case ELF_T_REL: rel = (const GElf_Rel *)reldata; - where = (char *)dest + relbase + rel->r_offset - dataoff; + where = (char *)dest + (relbase + rel->r_offset - dataoff); addend = 0; rtype = GELF_R_TYPE(rel->r_info); symidx = GELF_R_SYM(rel->r_info); break; case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -90,23 +89,20 @@ ef_amd64_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, case R_X86_64_NONE: /* none */ break; case R_X86_64_64: /* S + A */ - addr = EF_SYMADDR(ef, symidx); - val = addr + addend; - le64enc(where, val); + addr = EF_SYMADDR(ef, symidx) + addend; + le64enc(where, addr); break; case R_X86_64_32S: /* S + A sign extend */ - addr = EF_SYMADDR(ef, symidx); - val = (Elf32_Addr)(addr + addend); - le32enc(where, val); + addr = EF_SYMADDR(ef, symidx) + addend; + le32enc(where, addr); break; case R_X86_64_GLOB_DAT: /* S */ addr = EF_SYMADDR(ef, symidx); le64enc(where, addr); break; case R_X86_64_RELATIVE: /* B + A */ - addr = addend + relbase; - val = addr; - le64enc(where, val); + addr = relbase + addend; + le64enc(where, addr); break; default: warnx("unhandled relocation type %d", (int)rtype); diff --git a/usr.sbin/kldxref/ef_arm.c b/usr.sbin/kldxref/ef_arm.c index 4b926839ee5d..cc5e265f821e 100644 --- a/usr.sbin/kldxref/ef_arm.c +++ b/usr.sbin/kldxref/ef_arm.c @@ -37,9 +37,9 @@ #include "ef.h" /* - * Apply relocations to the values we got from the file. `relbase' is the - * target relocation address of the section, and `dataoff' is the target - * relocation address of the data in `dest'. + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest */ static int ef_arm_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, @@ -54,14 +54,14 @@ ef_arm_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, switch (reltype) { case ELF_T_REL: rel = (const GElf_Rel *)reldata; - where = (char *)dest + relbase + rel->r_offset - dataoff; + where = (char *)dest + (relbase + rel->r_offset - dataoff); addend = 0; rtype = GELF_R_TYPE(rel->r_info); symidx = GELF_R_SYM(rel->r_info); break; case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -82,7 +82,7 @@ ef_arm_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, le32enc(where, addr); break; case R_ARM_RELATIVE: /* B + A */ - addr = addend + relbase; + addr = relbase + addend; le32enc(where, addr); break; default: diff --git a/usr.sbin/kldxref/ef_i386.c b/usr.sbin/kldxref/ef_i386.c index e4f73877c430..962ed2bc0664 100644 --- a/usr.sbin/kldxref/ef_i386.c +++ b/usr.sbin/kldxref/ef_i386.c @@ -36,9 +36,9 @@ #include "ef.h" /* - * Apply relocations to the values we got from the file. `relbase' is the - * target relocation address of the section, and `dataoff' is the target - * relocation address of the data in `dest'. + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest */ static int ef_i386_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, @@ -53,14 +53,14 @@ ef_i386_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, switch (reltype) { case ELF_T_REL: rel = (const GElf_Rel *)reldata; - where = (char *)dest + relbase + rel->r_offset - dataoff; + where = (char *)dest + (relbase + rel->r_offset - dataoff); addend = 0; rtype = GELF_R_TYPE(rel->r_info); symidx = GELF_R_SYM(rel->r_info); break; case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -76,13 +76,12 @@ ef_i386_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, addend = le32dec(where); switch (rtype) { - case R_386_RELATIVE: /* A + B */ - addr = addend + relbase; + case R_386_RELATIVE: /* B + A */ + addr = relbase + addend; le32enc(where, addr); break; case R_386_32: /* S + A - P */ - addr = EF_SYMADDR(ef, symidx); - addr += addend; + addr = EF_SYMADDR(ef, symidx) + addend; le32enc(where, addr); break; case R_386_GLOB_DAT: /* S */ diff --git a/usr.sbin/kldxref/ef_mips.c b/usr.sbin/kldxref/ef_mips.c index 60fd35390d7e..e4aeedb5c08b 100644 --- a/usr.sbin/kldxref/ef_mips.c +++ b/usr.sbin/kldxref/ef_mips.c @@ -39,32 +39,31 @@ #include "ef.h" /* - * Apply relocations to the values we got from the file. `relbase' is the - * target relocation address of the section, and `dataoff' is the target - * relocation address of the data in `dest'. + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest */ static int ef_mips_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - GElf_Addr val; + GElf_Addr addr, addend; + GElf_Size rtype, symidx; const GElf_Rel *rel; const GElf_Rela *rela; - GElf_Addr addend, addr; - GElf_Size rtype, symidx; switch (reltype) { case ELF_T_REL: rel = (const GElf_Rel *)reldata; - where = (char *)dest + relbase + rel->r_offset - dataoff; + where = (char *)dest + (relbase + rel->r_offset - dataoff); addend = 0; rtype = GELF_R_TYPE(rel->r_info); symidx = GELF_R_SYM(rel->r_info); break; case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -92,20 +91,18 @@ ef_mips_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, switch (rtype) { case R_MIPS_64: /* S + A */ - addr = EF_SYMADDR(ef, symidx); - val = addr + addend; + addr = EF_SYMADDR(ef, symidx) + addend; if (elf_encoding(ef) == ELFDATA2LSB) - le64enc(where, val); + le64enc(where, addr); else - be64enc(where, val); + be64enc(where, addr); break; case R_MIPS_32: /* S + A */ - addr = EF_SYMADDR(ef, symidx); - val = addr + addend; + addr = EF_SYMADDR(ef, symidx) + addend; if (elf_encoding(ef) == ELFDATA2LSB) - le32enc(where, val); + le32enc(where, addr); else - be32enc(where, val); + be32enc(where, addr); break; default: warnx("unhandled relocation type %d", (int)rtype); diff --git a/usr.sbin/kldxref/ef_powerpc.c b/usr.sbin/kldxref/ef_powerpc.c index ab33e170b488..f72cc1d85e20 100644 --- a/usr.sbin/kldxref/ef_powerpc.c +++ b/usr.sbin/kldxref/ef_powerpc.c @@ -40,48 +40,51 @@ * target relocation address of the section, and `dataoff/len' is the region * that is to be relocated, and has been copied to *dest */ -int +static int ef_ppc_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - GElf_Addr addend, val; + GElf_Addr addr, addend; GElf_Size rtype, symidx; const GElf_Rela *rela; - if (reltype != ELF_T_RELA) + switch (reltype) { + case ELF_T_RELA: + rela = (const GElf_Rela *)reldata; + where = (char *)dest + (relbase + rela->r_offset - dataoff); + addend = rela->r_addend; + rtype = GELF_R_TYPE(rela->r_info); + symidx = GELF_R_SYM(rela->r_info); + break; + default: return (EINVAL); - - rela = (const GElf_Rela *)reldata; - where = (char *)dest - dataoff + rela->r_offset; - addend = rela->r_addend; - rtype = GELF_R_TYPE(rela->r_info); - symidx = GELF_R_SYM(rela->r_info); + } if (where < (char *)dest || where >= (char *)dest + len) return (0); switch (rtype) { case R_PPC_RELATIVE: /* word32|doubleword64 B + A */ - val = relbase + addend; + addr = relbase + addend; if (elf_class(ef) == ELFCLASS64) { if (elf_encoding(ef) == ELFDATA2LSB) - le64enc(where, val); + le64enc(where, addr); else - be64enc(where, val); + be64enc(where, addr); } else - be32enc(where, val); + be32enc(where, addr); break; case R_PPC_ADDR32: /* word32 S + A */ - val = EF_SYMADDR(ef, symidx) + addend; - be32enc(where, val); + addr = EF_SYMADDR(ef, symidx) + addend; + be32enc(where, addr); break; case R_PPC64_ADDR64: /* doubleword64 S + A */ - val = EF_SYMADDR(ef, symidx) + addend; + addr = EF_SYMADDR(ef, symidx) + addend; if (elf_encoding(ef) == ELFDATA2LSB) - le64enc(where, val); + le64enc(where, addr); else - be64enc(where, val); + be64enc(where, addr); break; default: warnx("unhandled relocation type %d", (int)rtype); diff --git a/usr.sbin/kldxref/ef_riscv.c b/usr.sbin/kldxref/ef_riscv.c index 38299a1e9b46..46b9b66bee58 100644 --- a/usr.sbin/kldxref/ef_riscv.c +++ b/usr.sbin/kldxref/ef_riscv.c @@ -38,19 +38,24 @@ #include "ef.h" -int +/* + * Apply relocations to the values obtained from the file. `relbase' is the + * target relocation address of the section, and `dataoff/len' is the region + * that is to be relocated, and has been copied to *dest + */ +static int ef_riscv_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, GElf_Addr relbase, GElf_Addr dataoff, size_t len, void *dest) { char *where; - const GElf_Rela *rela; - GElf_Addr addend, addr; + GElf_Addr addr, addend; GElf_Size rtype, symidx; + const GElf_Rela *rela; switch (reltype) { case ELF_T_RELA: rela = (const GElf_Rela *)reldata; - where = (char *)dest + relbase + rela->r_offset - dataoff; + where = (char *)dest + (relbase + rela->r_offset - dataoff); addend = rela->r_addend; rtype = GELF_R_TYPE(rela->r_info); symidx = GELF_R_SYM(rela->r_info); @@ -68,7 +73,7 @@ ef_riscv_reloc(struct elf_file *ef, const void *reldata, Elf_Type reltype, le64enc(where, addr); break; case R_RISCV_RELATIVE: /* B + A */ - addr = addend + relbase; + addr = relbase + addend; le64enc(where, addr); break; default: From nobody Thu Jan 18 22:26:29 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQs4TRKz578TQ; Thu, 18 Jan 2024 22:26:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQs3PY8z429j; Thu, 18 Jan 2024 22:26:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616789; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bnHV0539wJkkWy7lCtktjbcMhGr1EcDtYmN4Ozm51pg=; b=f9l0o9hZMgK2VcxlpQwlquBfPQWuWt2K9T9krZEPhd5E9R8bW3iOnxU1IWFh7LVgdu0dfh TZn5mykQGtIG0j/BJONs+gN9zaRH7yCkFcE2QV1+z31SyQTDzWd+afVMt3O0fzOpd40IqP j6UzJmvqTQ58ZnsbvXpFjYhNCtO8vsdZTp8/f9U4sarFWJ+5Ca1d7vpLeby3DRWx7htM2V dFYtyuWkWyyjIlg9lwwWnuZkkcww7bSltk+9ZdkPTtrfl1ZO3JVXeZKwklABasKrrfwI7T opcuqFpwAOLbWBCU5CCdIIS5rEySYamGcLJN0Sdv8dsKDxILOSrgAR5uxL/fOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616789; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bnHV0539wJkkWy7lCtktjbcMhGr1EcDtYmN4Ozm51pg=; b=WrLaQgosZk2W71yJB3ICxf35A1Rpp4nbvRGtDVhgwfW7s7QG1sfpkTZ7EQw3EhvQ5GDpxD 9/spkP8eBIkZfZntxcVgfigeskS/dfUewLiDe943sdDk5v2ebaOd9qmY3vz/qDnF1zQam9 UrJmDsQ21hqaPQSa1v25P2OihQbFUK43ehMc4SdKUCBX1a+3WUn0b8tu/K0cMGA+WwPYC4 EXCmBGBjrJ83hDQ9a+7slg9Od11dUxc5ziwNX8PLVdp8b/0VG6MAzMCYE7W/eTOPCI/bG8 wJ0dgY05TjoV1Sc9uLm4ARwN35nvWd2wAyYkay+KQRqP84Ha+4mS3aWFoKM08Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616789; a=rsa-sha256; cv=none; b=F6hMl/Gffzm9AoK0mrH4v49Jn80BOlzLyrqGlh8rfQixOuJ8E1tQRoRjrcXPDB94zzgYBi NaI95PVyyMpBekxYb2l4m4N48DZRXsJwEjHtgmoEHgKLOaxeUm4PHBB7ur60BdKqVg6sKU LexLSdL05MMmLl2h5Ie8T5kBIhWMkl3pr8AmwP+iAaehzA3EcIYVDijViU/gEqHU6BjTxQ VfzEYBF0DZJQDBKGzHIKX9+dq9Y27Eugfi02I+7et3RbTe7KWamftVePpQRNFMzP0bUwAC PxmjvVRtN+UMoAbRPucJ77ILWOjhxM9FcK85Oosgj5wfBbtVR0QVu0QfUk236g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQs2WVSzQ4c; Thu, 18 Jan 2024 22:26:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQT5n090518; Thu, 18 Jan 2024 22:26:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQTJI090515; Thu, 18 Jan 2024 22:26:29 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:29 GMT Message-Id: <202401182226.40IMQTJI090515@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: f7e181afba92 - stable/13 - kldxref: Tidy error handling for invalid addresses List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: f7e181afba922aa39fc83426a51124346f2586c2 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=f7e181afba922aa39fc83426a51124346f2586c2 commit f7e181afba922aa39fc83426a51124346f2586c2 Author: John Baldwin AuthorDate: 2023-12-22 15:48:47 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:14 +0000 kldxref: Tidy error handling for invalid addresses - Don't print an offset value that's always zero. - ef_get_offset can't return -1. Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43124 (cherry picked from commit 6d46e2e0a7f345459fb42e666c7cb2e987c70857) --- usr.sbin/kldxref/ef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/usr.sbin/kldxref/ef.c b/usr.sbin/kldxref/ef.c index aa9123d7f540..46d3dc1f4578 100644 --- a/usr.sbin/kldxref/ef.c +++ b/usr.sbin/kldxref/ef.c @@ -512,8 +512,8 @@ ef_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) ofs = ef_get_offset(ef, address); if (ofs == 0) { if (ef->ef_verbose) - warnx("ef_seg_read_rel(%s): zero offset (%jx:%ju)", - ef->ef_name, (uintmax_t)address, (uintmax_t)ofs); + warnx("ef_seg_read_rel(%s): bad address (%jx)", + ef->ef_name, (uintmax_t)address); return (EFAULT); } error = elf_read_raw_data(ef->ef_efile, ofs, dest, len); @@ -542,7 +542,7 @@ ef_seg_read_string(elf_file_t ef, GElf_Addr address, size_t len, char *dest) int error; ofs = ef_get_offset(ef, address); - if (ofs == 0 || ofs == (GElf_Off)-1) { + if (ofs == 0) { if (ef->ef_verbose) warnx("ef_seg_read_string(%s): bad offset (%jx:%ju)", ef->ef_name, (uintmax_t)address, (uintmax_t)ofs); From nobody Thu Jan 18 22:26:30 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQt72z1z578RX; Thu, 18 Jan 2024 22:26:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQt4Qk4z42Qm; Thu, 18 Jan 2024 22:26:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616790; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5IrVhxif9b8cYRkVjGot/oH/+Kt77BgCqO3zYoeJEog=; b=Ikrd/boyfq7VzZ20TB0AD1sSiAHTv1aoVGBYSLEqINRNChWLkbqMsM7CLRJdzHZ/77UUyP 4RHCC/NkOXkv7phfbn07sx6HqgBhLekSjBsg7Pl2MC8fwAbeAyOcz2K5V2X+48oRbMG/xd tXoarJ31z72u/Ib0ekipUhMgqQzPByFSz4K5J3+2SykGwAI/KhEpWCj1do0uejeiknuXuS v0orXTsuvgEu45ew89aMYSo8vDsFmKW1r0dMzh6gcJd3xA8Bpovvd7/V6eRKTIj5lK3em1 vAn1DxywIqo5OjXslFIX3+546XTG7KtCPT71KKYDJtmr5J+MmZ7IOHonCHeThQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616790; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5IrVhxif9b8cYRkVjGot/oH/+Kt77BgCqO3zYoeJEog=; b=bEQ2QpTm7Fx6Uj88Qg4yZLNyv0HAt9ddbs54NYeJOFJ+y2cpkirLHglw6K6ZQE4bHB1FFb IMMPF7qQ3lenoujIqOpmmgRyuRUxaEB9e+PZ1qnYRj/61cZGyAr5BDRi1CEOVbPKsyNEiQ AwSyw5MZACVy6pKAs4WOF/cv4WyjlikCDWHpOLI7cHO4mkaIrzQUVkLSJRaWXyMUeaEriv yekfEN7ad/rMqCP/DvPdLvaD4WfkrZmpGJH4VQSMI2ec9JF9MmZTbNqlIl4rZVoP40we2z Fr6g7QYBq+8bFO8lcyIitHFcx2IMDvaFgdZmvuadmdWfiGPz9thUoTXBUeR5KA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616790; a=rsa-sha256; cv=none; b=GSz8xfT9JikkiYlNJasw5xiJl0JzWCgh2lm1Ok0cE9QfwVm2UAKo4rornlK8xPs/xzxt6Y 0Pi6G56ldmRDiygGE1HuLnlulUjuzFj1AsDk9BxW3ytCQsMhimLveESNpJGm99+/3798Fs 1g2sLfOqWU7Ovot2hci0ETgZzc7ZqCEHqth5AOj1Ml9v9FlcsXxaWNraqqfdH/lnuQNJn8 0DpBiWdl/Zk3q8OWFSs6LWXmy1kl1p20cNqd2xt7Y4KQIaAfxiPNi3sZfu38aXmOrApiJV g5LmFJRGDdciK+jU6brsqft3ZO1rY+pdoITT7JzcNUhaDRtmoUvTPKW4nZhDpQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQt3WjvzQ6b; Thu, 18 Jan 2024 22:26:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQU2N090556; Thu, 18 Jan 2024 22:26:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQUNV090553; Thu, 18 Jan 2024 22:26:30 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:30 GMT Message-Id: <202401182226.40IMQUNV090553@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: ea717376822e - stable/13 - kldxref: Simplify elf_read_raw_data List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ea717376822edc921a66f8b149ba3b6ca7536e8a Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ea717376822edc921a66f8b149ba3b6ca7536e8a commit ea717376822edc921a66f8b149ba3b6ca7536e8a Author: John Baldwin AuthorDate: 2023-12-22 15:49:03 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:22 +0000 kldxref: Simplify elf_read_raw_data Use pread as a valid offset is always passed now. Originally the DSO code read the .hash section in two separate requests and relied on the implicit offset for the second read, but now the hash table is fetched in a single call. Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43125 (cherry picked from commit ed96fd7fc652d77ae5e34727e54610e87854defc) --- usr.sbin/kldxref/elf.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/usr.sbin/kldxref/elf.c b/usr.sbin/kldxref/elf.c index f8a6510ed352..cc9bf9e6cb38 100644 --- a/usr.sbin/kldxref/elf.c +++ b/usr.sbin/kldxref/elf.c @@ -170,11 +170,7 @@ elf_read_raw_data(struct elf_file *efile, off_t offset, void *dst, size_t len) { ssize_t nread; - if (offset != (off_t)-1) { - if (lseek(efile->ef_fd, offset, SEEK_SET) == -1) - return (EIO); - } - nread = read(efile->ef_fd, dst, len); + nread = pread(efile->ef_fd, dst, len, offset); if (nread == -1) return (errno); if (nread != len) From nobody Thu Jan 18 22:26:31 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQw2CGVz578fk; Thu, 18 Jan 2024 22:26:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQv5X31z42Nh; Thu, 18 Jan 2024 22:26:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616791; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=feOx0YwkzWFtHaT8AegMFhmD05pGK/T3AioKE/CSKk4=; b=QDzpTjNYGlJZPhvP6Zu3w8pQQVxcbgezlPo6KZT6GYM2EGT026GH8wbl9F15nENBggTw+L 08I+nwQJ3sFLo2Km/pDrRAHQc98KI38Wb1Ds/xTXcoNlRIU+qDDWXmv0DNVrnuqXAcY5aV 4HbIsPPn/NJPbWjdms3sUmNRt/xkZtbhh6RInl98irOPdeEczL2W8MVXsbNcy5wMURl30C i7PMBdnHlHiVyrc4ZsxRxTCI4PGj8DW+sL7wIODR4eUUGJDvRntLhOcggbWc3mfvZa5ojH 2TM0KpBsFXLyIy2ev+fYAfgfA5oegPQ6qg3/MiC3jurmLiHN7pBoPOnehFAJIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616791; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=feOx0YwkzWFtHaT8AegMFhmD05pGK/T3AioKE/CSKk4=; b=XfP4Cd9fi0j7ja2yrrWbdfUzuqwRDbiWUbdvra8dz+U6ZqD0jJxq3POFR/vji9D0G+47J7 5VIHTqL7wkD5DlMlat/YA/7L6rNBPCBHUCKutHMa31VY/jUFsn83+sy0+JpXXkBOmf2Nol 7gDGlHlxdF35ZSHAtaSRJacm+t1PraJAPiXKiIop9z9AVat9XQyiezXS541zV04nvD2XHk T9GSaP9PwHTskfBp+KMvXbbKyvoIAvqRkfxm85Ibzaeys20Lrb0xKTenPyvAIIwA5r9r5m VXwtQjkmc43g10DwcwlG/3foS5KEZ0O+7UKT/35KGgLRaSf0RRjGjvqyahgq1A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616791; a=rsa-sha256; cv=none; b=PEbYdaLMFLoVzqfVUvrbi0q6SPtLQgkYo+W8eOTDNCBjJeU69HUnAfJTUucDj01tAOJI3J LDQhe3veEO0Vr006B/LYU9/6W1dXhlnSuX7hguysEElLjvTAbLzNxcsyTkPOlmIi8wlpmY v3nAoMk+Jr126BrMDowu/BeQmTfpfOq6F70ShkC8Rn3EbuSzBZPXoX3sFzaOtjDTFsMOE/ s0TpDQdxrX0RSQClDjwviiR8AqiyQkUgqHMy1Q9JBeV/1aXXoBjyLBU6JSLq33XVdd72nu 1zXNcDBWvYtT9i0fvWMKmCXDUxNl2wT1fQ0Xpv0e7JixTN3lO133QJ4qSpJ11w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQv4f1bzPyr; Thu, 18 Jan 2024 22:26:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQVxW090608; Thu, 18 Jan 2024 22:26:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQVRA090605; Thu, 18 Jan 2024 22:26:31 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:31 GMT Message-Id: <202401182226.40IMQVRA090605@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 21dec6c48f08 - stable/13 - kldxref: Simplify handling of ELF object files List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 21dec6c48f089ce55ec32fa04a8962ea52b3d9ef Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=21dec6c48f089ce55ec32fa04a8962ea52b3d9ef commit 21dec6c48f089ce55ec32fa04a8962ea52b3d9ef Author: John Baldwin AuthorDate: 2023-12-22 15:49:18 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:32 +0000 kldxref: Simplify handling of ELF object files Unlike the backend for ELF DSOs, the object file backend allocated an aligned chunk of memory and read all of the in-memory sections from the file into this memory even though most of the file contents were never used. Instead, just track a set of virtual addresses (based at 0) that each loaded section would be loaded at and only read the necessary bits from the backing file when needed. Reviewed by: imp Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43126 (cherry picked from commit 0d557cdf6f0e94e909acea065f3de2a28437ae74) --- usr.sbin/kldxref/ef_obj.c | 146 +++++++++++++++++++++------------------------- 1 file changed, 65 insertions(+), 81 deletions(-) diff --git a/usr.sbin/kldxref/ef_obj.c b/usr.sbin/kldxref/ef_obj.c index 36c0dce432b6..1274a14c10af 100644 --- a/usr.sbin/kldxref/ef_obj.c +++ b/usr.sbin/kldxref/ef_obj.c @@ -46,7 +46,8 @@ #include "ef.h" typedef struct { - char *addr; + GElf_Addr addr; + GElf_Off offset; GElf_Off size; int flags; int sec; /* Original section */ @@ -69,9 +70,6 @@ struct ef_file { char *ef_name; struct elf_file *ef_efile; - char *address; - GElf_Off size; - Elf_progent *progtab; int nprogtab; @@ -113,6 +111,22 @@ static struct elf_file_ops ef_obj_file_ops = { .lookup_set = ef_obj_lookup_set, }; +static GElf_Off +ef_obj_get_offset(elf_file_t ef, GElf_Addr addr) +{ + Elf_progent *pt; + int i; + + for (i = 0; i < ef->nprogtab; i++) { + pt = &ef->progtab[i]; + if (pt->offset == (GElf_Off)-1) + continue; + if (addr >= pt->addr && addr < pt->addr + pt->size) + return (pt->offset + (addr - pt->addr)); + } + return (0); +} + static int ef_obj_lookup_symbol(elf_file_t ef, const char *name, GElf_Sym **sym) { @@ -139,9 +153,8 @@ ef_obj_lookup_set(elf_file_t ef, const char *name, GElf_Addr *startp, for (i = 0; i < ef->nprogtab; i++) { if ((strncmp(ef->progtab[i].name, "set_", 4) == 0) && strcmp(ef->progtab[i].name + 4, name) == 0) { - *startp = ef->progtab[i].addr - ef->address; - *stopp = ef->progtab[i].addr + ef->progtab[i].size - - ef->address; + *startp = ef->progtab[i].addr; + *stopp = ef->progtab[i].addr + ef->progtab[i].size; *countp = (*stopp - *startp) / elf_pointer_size(ef->ef_efile); return (0); @@ -160,46 +173,50 @@ ef_obj_symaddr(elf_file_t ef, GElf_Size symidx) sym = ef->ddbsymtab + symidx; if (sym->st_shndx != SHN_UNDEF) - return (sym->st_value - (GElf_Addr)ef->address); + return (sym->st_value); return (0); } static int ef_obj_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) { - char *memaddr; + GElf_Off secofs; GElf_Rel *r; GElf_Rela *a; GElf_Addr secbase, dataoff; int error, i, sec; - if (address + len > ef->size) { - if (ef->ef_verbose) - warnx("ef_obj_seg_read_rel(%s): bad offset/len (%lx:%ld)", - ef->ef_name, (long)address, (long)len); - return (EFAULT); - } - bcopy(ef->address + address, dest, len); - /* Find out which section contains the data. */ - memaddr = ef->address + address; sec = -1; - secbase = dataoff = 0; for (i = 0; i < ef->nprogtab; i++) { - if (ef->progtab[i].addr == NULL) + if (address < ef->progtab[i].addr) continue; - if (memaddr < (char *)ef->progtab[i].addr || memaddr + len > - (char *)ef->progtab[i].addr + ef->progtab[i].size) + + dataoff = address - ef->progtab[i].addr; + if (dataoff + len > ef->progtab[i].size) continue; + sec = ef->progtab[i].sec; - /* We relocate to address 0. */ - secbase = (char *)ef->progtab[i].addr - ef->address; - dataoff = memaddr - ef->address; + secbase = ef->progtab[i].addr; + secofs = ef->progtab[i].offset; break; } - if (sec == -1) + if (sec == -1) { + if (ef->ef_verbose) + warnx("ef_obj_seg_read_rel(%s): bad address (%jx)", + ef->ef_name, (uintmax_t)address); return (EFAULT); + } + + if (secofs == (GElf_Off)-1) { + memset(dest, 0, len); + } else { + error = elf_read_raw_data(ef->ef_efile, secofs + dataoff, dest, + len); + if (error != 0) + return (error); + } /* Now do the relocations. */ for (i = 0; i < ef->nrel; i++) { @@ -208,7 +225,7 @@ ef_obj_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) for (r = ef->reltab[i].rel; r < &ef->reltab[i].rel[ef->reltab[i].nrel]; r++) { error = elf_reloc(ef->ef_efile, r, ELF_T_REL, secbase, - dataoff, len, dest); + address, len, dest); if (error != 0) return (error); } @@ -219,7 +236,7 @@ ef_obj_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) for (a = ef->relatab[i].rela; a < &ef->relatab[i].rela[ef->relatab[i].nrela]; a++) { error = elf_reloc(ef->ef_efile, a, ELF_T_RELA, secbase, - dataoff, len, dest); + address, len, dest); if (error != 0) return (error); } @@ -230,21 +247,23 @@ ef_obj_seg_read_rel(elf_file_t ef, GElf_Addr address, size_t len, void *dest) static int ef_obj_seg_read_string(elf_file_t ef, GElf_Addr address, size_t len, char *dest) { + GElf_Off ofs; + int error; - if (address >= ef->size) { + ofs = ef_obj_get_offset(ef, address); + if (ofs == 0) { if (ef->ef_verbose) - warnx("ef_obj_seg_read_string(%s): bad address (%lx)", - ef->ef_name, (long)address); + warnx("ef_obj_seg_read_string(%s): bad address (%jx)", + ef->ef_name, (uintmax_t)address); return (EFAULT); } - if (ef->size - address < len) - len = ef->size - address; - - if (strnlen(ef->address + address, len) == len) + error = elf_read_raw_data(ef->ef_efile, ofs, dest, len); + if (error != 0) + return (error); + if (strnlen(dest, len) == len) return (EFAULT); - memcpy(dest, ef->address + address, len); return (0); } @@ -255,8 +274,8 @@ ef_obj_open(struct elf_file *efile, int verbose) GElf_Ehdr *hdr; GElf_Shdr *shdr; GElf_Sym *es; - char *mapbase; - size_t i, mapsize, alignmask, max_addralign, nshdr; + GElf_Addr mapbase; + size_t i, nshdr; int error, pb, ra, rl; int j, nsym, symstrindex, symtabindex; @@ -359,59 +378,26 @@ ef_obj_open(struct elf_file *efile, int verbose) } } - /* Size up code/data(progbits) and bss(nobits). */ - alignmask = 0; - max_addralign = 0; - mapsize = 0; - for (i = 0; i < nshdr; i++) { - switch (shdr[i].sh_type) { - case SHT_PROGBITS: - case SHT_NOBITS: - alignmask = shdr[i].sh_addralign - 1; - if (shdr[i].sh_addralign > max_addralign) - max_addralign = shdr[i].sh_addralign; - mapsize += alignmask; - mapsize &= ~alignmask; - mapsize += shdr[i].sh_size; - break; - } - } - - /* We know how much space we need for the text/data/bss/etc. */ - ef->size = mapsize; - if (posix_memalign((void **)&ef->address, max_addralign, mapsize)) { - printf("posix_memalign failed\n"); - goto out; - } - mapbase = ef->address; - /* - * Now load code/data(progbits), zero bss(nobits), allocate - * space for and load relocs + * Now allocate address space for code/data(progbits) and + * bss(nobits) and allocate space for and load relocs. */ pb = 0; rl = 0; ra = 0; - alignmask = 0; + mapbase = 0; for (i = 0; i < nshdr; i++) { switch (shdr[i].sh_type) { case SHT_PROGBITS: case SHT_NOBITS: - alignmask = shdr[i].sh_addralign - 1; - mapbase += alignmask; - mapbase = (char *)((uintptr_t)mapbase & ~alignmask); - ef->progtab[pb].addr = (void *)(uintptr_t)mapbase; + mapbase = roundup2(mapbase, shdr[i].sh_addralign); + ef->progtab[pb].addr = mapbase; if (shdr[i].sh_type == SHT_PROGBITS) { ef->progtab[pb].name = "<>"; - if (elf_read_raw_data(efile, - shdr[i].sh_offset, ef->progtab[pb].addr, - shdr[i].sh_size) != 0) { - printf("failed to read progbits\n"); - goto out; - } + ef->progtab[pb].offset = shdr[i].sh_offset; } else { ef->progtab[pb].name = "<>"; - bzero(ef->progtab[pb].addr, shdr[i].sh_size); + ef->progtab[pb].offset = (GElf_Off)-1; } ef->progtab[pb].size = shdr[i].sh_size; ef->progtab[pb].sec = i; @@ -424,7 +410,7 @@ ef_obj_open(struct elf_file *efile, int verbose) es = &ef->ddbsymtab[j]; if (es->st_shndx != i) continue; - es->st_value += (GElf_Addr)ef->progtab[pb].addr; + es->st_value += ef->progtab[pb].addr; } mapbase += shdr[i].sh_size; pb++; @@ -464,8 +450,6 @@ ef_obj_close(elf_file_t ef) if (ef->ef_name) free(ef->ef_name); - if (ef->size != 0) - free(ef->address); if (ef->nprogtab != 0) free(ef->progtab); if (ef->nrel != 0) { From nobody Thu Jan 18 22:26:32 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQx1zWkz578fq; Thu, 18 Jan 2024 22:26:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQw6Ysbz42JN; Thu, 18 Jan 2024 22:26:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616793; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hOsYc7w8LuI7KVQ9YndLAE1IRfoHdksEmsYiC/kYYSs=; b=TjVySYDjZTbdFgo9Fk24zB/pCbFVzPBpU+G7zm37Er4q0Q0UD3E0US6IH4/FDJ6y18/YNu S0qYAETou+eDe41vQk+66ZPHRcvXQLb54PQZEOy8TIXajzZba+cwWtDTVzhBJd1ddtkv0a 3TjPl+V7UaVyhqia8mkH6yL2Qwmoa9Ihki9M2rqc4efo0yAFGnfEHbiMABq/iaE4vsgKkM Ssbhgn36Ywfbsf+qHL0Iw4zR13KeJWDlMjHRWzl5DTrZPfsq6Z1CApiIEnDPI6yNC3HvrL 7i4sBPQDpfsAZnUvp0YuwlTrwgG9R6blFfRsgdiGOqLkPQxFAFKtW9V70wIgIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616793; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hOsYc7w8LuI7KVQ9YndLAE1IRfoHdksEmsYiC/kYYSs=; b=q5wEN3A/GRFAmeP/Q/5QlSF2PGUTvQLGZRP1uOxaiV7pfckW3ce0QIzsHkDtoXcvD1fnZh YWERYWYRwI1AVDORuZASZPNp+SKH9LZ8Z6bDCa2DY0M3souX4A2WJCZerVuehSPhZ3v3a5 t55jxiPKt+KDUSDFKI4kE50RnNh908V5teROU6DFSmqnovq2z5l0teU3Uu2GufeCwZ1v9k QClBw4qMIAZCtpdxTZSBr7Ev0qbB+IDxizWu0obaYIlUXHFJ5losBMoGpvE+zdFb9LHW8s v56PiGj/WGFW4qsFqH0mF995m7cNmVgVI1JwAW1wGN8gXTKESeetNdAivN/doA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616793; a=rsa-sha256; cv=none; b=l07j+5K7qvXVrzMoLh2wLyn6x3Z536+whJYDouT34jL2vch/eQR21eZaIbYd1TWfcKostn aFeIor9jaCU3+UxNCBS3b9gBTiHqvXu03zzMzL0/0oX4gHGkqoLJmI3saBVqgwFYhVs+En gyWvII3YzJvQ+EliU1oVCGHGSjn6LO+XqFAYkaKJSIZMDHllL0lndXO0nK2h3AukFXP1/w uLC0Onz/Xmec0mT/NQdbDMi8gyEJQqMRDeEM9R18ed5XHGDZJUAMV90M5xFmvPiNVRIA9j b0y8wU4dRUduN7NcsyV+0Q/F1Tvz2qtbeWT6T5cTHnoRaTaDRkxfRN1zjfLzuA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQw5bTqzQZ0; Thu, 18 Jan 2024 22:26:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQW8v090659; Thu, 18 Jan 2024 22:26:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQWVC090656; Thu, 18 Jan 2024 22:26:32 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:32 GMT Message-Id: <202401182226.40IMQWVC090656@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 319092aaacc6 - stable/13 - kldxref: Appease a Coverity warning List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 319092aaacc6cd642ffec049565bc5c7a4f3f3f3 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=319092aaacc6cd642ffec049565bc5c7a4f3f3f3 commit 319092aaacc6cd642ffec049565bc5c7a4f3f3f3 Author: John Baldwin AuthorDate: 2023-12-22 15:49:40 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:39 +0000 kldxref: Appease a Coverity warning While parsing .dynamic, nsym is set when parsing the symbol table from .dynsym. That parsing also sets ef->ef_symtab to a non-NULL value. The value of nsym isn't validated until after a check for ef->ef_symtab being NULL, so nsym always has a valid value when it is read. However, that chain of events is a bit much for static analysis to follow, so initialize nsym to 0 before parsing sections to quiet the warning. Reported by: Coverity Scan CID: 1532339 Sponsored by: DARPA (cherry picked from commit d281fece432f97b4424b852f23dfe1f974b9e30d) --- usr.sbin/kldxref/ef.c | 1 + 1 file changed, 1 insertion(+) diff --git a/usr.sbin/kldxref/ef.c b/usr.sbin/kldxref/ef.c index 46d3dc1f4578..fd0782ff1dd0 100644 --- a/usr.sbin/kldxref/ef.c +++ b/usr.sbin/kldxref/ef.c @@ -361,6 +361,7 @@ ef_parse_dynamic(elf_file_t ef, const GElf_Phdr *phdyn) goto out; } + nsym = 0; for (i = 0; i < nshdr; i++) { switch (shdr[i].sh_type) { case SHT_HASH: From nobody Thu Jan 18 22:26:33 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQy2JrKz578Q7; Thu, 18 Jan 2024 22:26:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQy070dz42JY; Thu, 18 Jan 2024 22:26:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616794; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fAkC4P7EhWyqVFu9CRw82l/CGGp9622lXL5+cPEgbLM=; b=xKeOpIutDrbuOQtapyTjjBL0R/jSaHil2Z6OjY688LBZdRD4y3g2jEGx7Ie6a/lbA9ctpe h6J0d5utzOkxTHrTsofVrnPCIsEZBd/aP6ZOpKrXHB9l8QeTMXdjXnl+A8Rs26cS28XJxm nalad1vUfRwfdPs666GAkV7oCJMClRhsdfPVPCPRNv2zv/0eWWWJuaYMyaHA9UA0kFt/JZ 5mBV/vc8+nXjREQmliwX1kqgi5Eoe77jjJK/a3ekSQ4q5I4Eg0ETWXw6zHkdaUDVO8reqF F8ndjFC4TJ1lwIFdw/vPj08f3qxZ6GoNiV1QQSCrL72LGFrYm2bq0Bv9EOBZUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616794; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fAkC4P7EhWyqVFu9CRw82l/CGGp9622lXL5+cPEgbLM=; b=L/hr7Gl5Sjm97uTIMaQ74IKqIwutkURDQUI5uR4Wl3yO+PzwosgXe23oiarGaBzgtOuBpb ZEG0j1LnHJZJaP4cv56nN1wGNFDa63/msNRnnZOmiurMPtD1pV7Jj6LS9yYF9Ek1iTDGA6 ZYhmhVWeA34aWqqmXq+56AHY6GOPz9KDRzEa88EWdwr3xoXdHpeQobo9nTWqIqpRLV5U6l XpNvoO4F53UZEWYTrtzJSNw95kfbAfef7/4e2Hs8Jr9t77eqojoWdK7uQLIWYvHWMHqUE3 U3nUufkVGeoccYx6VsiZ4s4bPqgLaQ1LZWROOjlZ3mzxNjtdN/DYJVBZa4eWGw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616794; a=rsa-sha256; cv=none; b=tmc9KWyR+ixs/jGjL5P1dgju8jjfISo6v+USqtqdgFYself1UeOw+n2sN3848jDsAKpSq9 cor3zT3betn2t8CyIVCLhttbf0TQhN+zGkHcHcvwPtKtTiDFVo6uxYQO8uIjF4D5AFWirN BhDnuUw5RF9V6SmBrAR7anr71GzSr1x11aJCIlORfb4FUOaXYotnivdamDQcVeKReT6VfF Nvl64Z1fG2Gt+aOG94GMLKnzzuBGIvdFqZ42R65ISg4IplgQluC15x6JaI04fyDaTikWxo gNAxDMxlcAYjzEHRvfHcRdxbkJ71ZKt2cQEOZ2PXg64cs65ftx3yCEMbAsE/1A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQx6LcZzQZ1; Thu, 18 Jan 2024 22:26:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQXSv090712; Thu, 18 Jan 2024 22:26:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQX1R090709; Thu, 18 Jan 2024 22:26:33 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:33 GMT Message-Id: <202401182226.40IMQX1R090709@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: b13e59714ffe - stable/13 - kldxref: fix bootstrapping on Linux with Clang 16 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b13e59714ffe5b756ffac134a5f802ec7aa3c5ad Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b13e59714ffe5b756ffac134a5f802ec7aa3c5ad commit b13e59714ffe5b756ffac134a5f802ec7aa3c5ad Author: Alex Richardson AuthorDate: 2024-01-02 19:06:51 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:31:52 +0000 kldxref: fix bootstrapping on Linux with Clang 16 The glibc fts_open() callback type does not have the second const qualifier and it appears that Clang 16 errors by default for mismatched function pointer types. Add an ifdef to handle this case. (cherry picked from commit 30887c7d48ead8a9151627228244dd3ed95c4c6d) --- usr.sbin/kldxref/kldxref.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/usr.sbin/kldxref/kldxref.c b/usr.sbin/kldxref/kldxref.c index 4a63c2b8e562..c4e65b7e679b 100644 --- a/usr.sbin/kldxref/kldxref.c +++ b/usr.sbin/kldxref/kldxref.c @@ -748,7 +748,11 @@ usage(void) } static int +#ifdef __GLIBC__ +compare(const FTSENT **a, const FTSENT **b) +#else compare(const FTSENT *const *a, const FTSENT *const *b) +#endif { if ((*a)->fts_info == FTS_D && (*b)->fts_info != FTS_D) From nobody Thu Jan 18 22:26:34 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHQz3DpKz578g0; Thu, 18 Jan 2024 22:26:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHQz1JLwz42b8; Thu, 18 Jan 2024 22:26:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MI2iyMrkbaGF3bdMypMe1trfNNumt9EKIiDJGAcEbAg=; b=MbHrC1J0pOEIP8cQsDHTjaRR/Js9pmYcvPJ4XlKuus9SQgIwUgLxkVdVa2phclHpKdl3AB +P+CUFkcSTcONagY7BuAbzmKPzxbMD2uqclNRHPhKqx82CIIRl2yIT4mZcnc400RKwW78+ +prdKw79vXO3Dt+y7gNzUZR/nRSLtFJRkExjCkgEDs/2sWKo+E9K58f9FsRajfoDi+v8Ro KeuYSlVGB7s7n0XL/7kojrcuqUgGlk+vvS+Qf0mBjoooMvtiibIhcVYuJAKa8oeTG/49Qm uPGn9OzTRJ4Dw4juk9r9Tj5J1Nw9Om3rIkttk6qXdiOBxozRmeL/HxuEDkDQZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MI2iyMrkbaGF3bdMypMe1trfNNumt9EKIiDJGAcEbAg=; b=ZmKrDVkp6/3oFDUvD/8AtHQQa9H2XDDh/ULaENdDRm8+l76SSvG4SHtz1zxhkjV27BgJFs Dv+18YLh+JdZIqt0LXORiMk/pmoCi69WWys52YXUt/Ykx2aOF2chfBWDcoqEwX96aTXLJz udMEVBdWcDS6AShIv/8DLQfppdRh9v14Mx3YZedU0/6xTir6KVdPjvo3kl6k1LgVVKER1N p5Y18lOHvE4ByJLwuSTt4deIO6SAMmQr9lBGyPgsaeAbmGXqV7nnbkMPk7pbbSai0ck7az 9/PTTJ3WJgP8uZtw5T7T8georTKXCbxOPg2SueQq6ac6MWhWghFaHrAdfVxqLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616795; a=rsa-sha256; cv=none; b=CGvsPaPgQQ4mLkCSyhhBLjNe4QAtYo7CHBZh0i3hByAzNGowEFzdFXe15i/znvrB3hKWmh mWEUgZ0p0dDVKWQq9oT/lWo9sTzcTabRiP3wo0q7BPcumMlF0LXPqr/Z5p5YwRe4y3ue/A Sc5SfTMO1klgtqE3KH7OcE7/W5nQKEs56qSUyZXrzknvyAdO5EoeI3v4fba4JIrhVfU6O0 vdGHRxHLyf2VuSdyha7C/++//L4hmUfpzSjlijzPI02ZOUVqSCdAr/Ge8JOypMW9KYI0bO 0Ws+btgpopg3aq/I7324K6M+TJYKNKydaJTZcdpCoQMKN0Tz2rg+TG11/GDXLw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHQz0QLJzQ6c; Thu, 18 Jan 2024 22:26:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQYdm090760; Thu, 18 Jan 2024 22:26:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQYiA090757; Thu, 18 Jan 2024 22:26:34 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:34 GMT Message-Id: <202401182226.40IMQYiA090757@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: fb4c8b2d89cb - stable/13 - kldxref: Correct contract number in license ACK List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: fb4c8b2d89cb809f04ad581e390ada4011f9d2e5 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=fb4c8b2d89cb809f04ad581e390ada4011f9d2e5 commit fb4c8b2d89cb809f04ad581e390ada4011f9d2e5 Author: John Baldwin AuthorDate: 2024-01-09 01:01:05 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:32:04 +0000 kldxref: Correct contract number in license ACK Reviewed by: brooks Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43371 (cherry picked from commit 78258ee013cfec2145060cc4c25d66f075db36d3) --- usr.sbin/kldxref/elf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/elf.c b/usr.sbin/kldxref/elf.c index cc9bf9e6cb38..e5fe90169d2c 100644 --- a/usr.sbin/kldxref/elf.c +++ b/usr.sbin/kldxref/elf.c @@ -7,7 +7,7 @@ * of Cambridge Computer Laboratory (Department of Computer Science * and Technology) under Defense Advanced Research Projects Agency * (DARPA) contract HR0011-18-C-0016 ("ECATS"), as part of the DARPA - * SSITH research programme and under DARPA Contract No. HR001122S0003 + * SSITH research programme and under DARPA Contract No. HR001123C0031 * ("MTSS"). * * Redistribution and use in source and binary forms, with or without From nobody Thu Jan 18 22:26:36 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHR05pMVz578lD; Thu, 18 Jan 2024 22:26:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHR02VVRz42Mk; Thu, 18 Jan 2024 22:26:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616796; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wN/zGov7dk3rEOEU1s53pY8hJzp7eamlFgtHvQREpK4=; b=fZebfE1fer9kdtjHQtM9PzQegNavTwwVhhJjyho9ZkxRLqCoB+CLrmo+vRcQ5yAv40kALN mWOvTmMT4MnrbZRFNxREA2zYGIjzRYRnkeSk41bxQmWRVhZXGG2q1SWMwtAIE/wEFEtZ+t zZDlSqro7SeI3J03eKHaHq2P8AWiNVLX6wach5dMooIWPpxRnLJsiePyKkR2BLMxTyjvN+ UOasHOnHBmLTq3RnR481+PCs1oYiEb5rYYDHbs2pHuXChz3WR83YcRYW8ZqT4L8EUA7/ic f2FjmgRo9qiNeaPhSnFfLpgoLYRtmhUGQG5kibzqWip4ZXCnxZzY3EIzw41QZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705616796; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wN/zGov7dk3rEOEU1s53pY8hJzp7eamlFgtHvQREpK4=; b=PWKBjY3VL9qacr7gSATBVNVi2IMf8xxKft25i8l6Rx6HEO+qVSpXiUVCcBg6Jo0qca6CF+ g+ClWKMpbeLMNwjCuJqX1LE195zStrRcFMj6blBK2dQiF2sLBmiZ28Kir0Je3vItSzZBXU I+TFNmxoGSjEZg3sLBFvYjEEVnb6vJYATcXKQu3GRFnRfi2b1AUrgRfI//IOMUb4AcrMTp H4hjXTW4aw2PlUeCAGGgQMtFtJ95vDRcAYeodV+JXSWshrNqClw5ANXAi8lUfrbMDjsKhU FQokKMdBttX9sEGT7Nt8i0qnuDVPsMVR5Mzmktl7I4p7Fhmx2Z6g/2+cOTNgwg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705616796; a=rsa-sha256; cv=none; b=uyLpKlnVkbgEJrgzSvknTT5G/v6VPCMHN9Rbnl6Mw0LaJcULUHNryzTwxb0BI3tIdChkUl 8XGDgTQs0+aTLie4TFPq4jmg51ZUMvxJO3BTeygeY9ap1sTZjmMVunZrwq87LQteiAtYgH AdHnAPqWMse2NIbyK4dgFM4UsfcI2KjX+9XbYH+pmg6NkPCD0zy3/jOckKJTO9DTPHOr1u M3Q1+zDxw2MOCcuU1eN4z+AR+n2+wvTucXzTEgAb4K28TBBZcQEETzkww4ZJ/UTwIlJ3EZ eC8NfLyRaYiXoapFx8jyWPRTrRSDRHqC/SpKsvfVERCqrRV5qY3XML8YrPhcAg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHR01WZbzQ4d; Thu, 18 Jan 2024 22:26:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMQaBY090820; Thu, 18 Jan 2024 22:26:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMQaXr090817; Thu, 18 Jan 2024 22:26:36 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:26:36 GMT Message-Id: <202401182226.40IMQaXr090817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: cad6775d969e - stable/13 - kldxref: Workaround incorrect PT_DYNAMIC in existing powerpc kernels List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: cad6775d969e66bfff46669f55f3b0def8efc0ca Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=cad6775d969e66bfff46669f55f3b0def8efc0ca commit cad6775d969e66bfff46669f55f3b0def8efc0ca Author: John Baldwin AuthorDate: 2024-01-09 18:57:48 +0000 Commit: John Baldwin CommitDate: 2024-01-18 21:32:10 +0000 kldxref: Workaround incorrect PT_DYNAMIC in existing powerpc kernels Existing powerpc kernels include additional sections beyond .dynamic in the PT_DYNAMIC segment. Relax the requirement for an exact size match of the section and segment for PowerPC files as a workaround. Reported by: jrtc27 Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D43123 (cherry picked from commit 6631e2f9b49e08f53c7beb560ee8509c343b3927) --- usr.sbin/kldxref/ef.c | 11 ++++++++++- usr.sbin/kldxref/ef.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/usr.sbin/kldxref/ef.c b/usr.sbin/kldxref/ef.c index fd0782ff1dd0..1ef27f2bc54a 100644 --- a/usr.sbin/kldxref/ef.c +++ b/usr.sbin/kldxref/ef.c @@ -248,8 +248,17 @@ ef_parse_dynamic(elf_file_t ef, const GElf_Phdr *phdyn) dynamic_idx = -1; for (i = 0; i < nshdr; i++) { if (shdr[i].sh_type == SHT_DYNAMIC) { + /* + * PowerPC kernels contain additional sections + * beyond .dynamic in PT_DYNAMIC due to a linker + * script bug. Permit a section with a smaller + * size as a workaround. + */ if (shdr[i].sh_offset != phdyn->p_offset || - shdr[i].sh_size != phdyn->p_filesz) { + ((elf_machine(ef->ef_efile) == EM_PPC || + elf_machine(ef->ef_efile) == EM_PPC64) ? + shdr[i].sh_size > phdyn->p_filesz : + shdr[i].sh_size != phdyn->p_filesz)) { warnx(".dynamic section doesn't match phdr"); error = EFTYPE; goto out; diff --git a/usr.sbin/kldxref/ef.h b/usr.sbin/kldxref/ef.h index 2909704bf2d1..25dc5216b169 100644 --- a/usr.sbin/kldxref/ef.h +++ b/usr.sbin/kldxref/ef.h @@ -100,6 +100,7 @@ struct elf_file { int ef_fd; }; +#define elf_machine(ef) ((ef)->ef_hdr.e_machine) #define elf_class(ef) ((ef)->ef_hdr.e_ident[EI_CLASS]) #define elf_encoding(ef) ((ef)->ef_hdr.e_ident[EI_DATA]) From nobody Thu Jan 18 22:31:43 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHXv7273z579Bf; Thu, 18 Jan 2024 22:31:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHXv6VdXz4CSR; Thu, 18 Jan 2024 22:31:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YGUwGJN0cP8QwkI4Aq2mwnObPcPlLqprI4tCGA9c/dI=; b=fLQ6zRSKvKfqfuLMjr5XUVhXpdMBKfpWyaQ7hSVPUrgXw9qKQty7W5+wyN+wln+rZGvXRW OCTh3LjNoi4ZgSVpdGQ5/qeaVZkntXO3i5B9tSUNd7YUxEdCclI9kKfQzYc4t6hG9uSTYb wX2wKu86ez4Ka4OAFBewZK0L4PQ9PKYK9iuddr4tmfCaLs2nUGeuIRfihQC9zi0mOybgOp wTCFNQo8XLaCmoQXKvEv4g3xULEQHkM3hFJwX3kUc5rd0DXGE1pg//2u7ytfSLCuauLyWL bNAEvpBxAEREs1eaNtjyTpiJqA1cESDVlNfNTlgWJ2sCba0YlzgKssYA2cO5kQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YGUwGJN0cP8QwkI4Aq2mwnObPcPlLqprI4tCGA9c/dI=; b=Du3IsMn14M5fuOe+qsCx5xOSvIIBW9Gd3dx4pPdNFqomWoHV16/fw+fCE+wWWc4paRW7d1 exOXKDalFXyVYoqATFRjd/hpIXi4Q0H3FZL+Dx7E62QqkT0qtXTjWtu/nUL1ND10V0SweF N4SeWH25scZYIqdnq6P/rFrd3YgGTvzOaVzeqJQGoEsJjwNkJgaSTDuGMG6kmO3SeJE1CJ xu0TQKa95d76LH9rmSmuxQ9510+gyR+oKihGvJm6gn/o0laDVADS7goVvqqyikhKF3Aa/L hGgFkWs9OxzPirvFNS1UE2di29LZeR1Pcw4BFklKFnQVty2a6LHBEPpCHrqA/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617103; a=rsa-sha256; cv=none; b=MeRIwTi5i6IxRzfHfE94Ty/yQR7QNZjsuFk789g2JpJ/Vm2yMSsAnXHPVRm+BRXjJXM3pv tJlhCmAQxmzjP0J5GK5n8b06GYDgOnqdgKU2EELPrE0cT89Q21ZfYB2gRuTNsV4zwpbsEL qO8Y11GmKr8YVWEpFHtFiwujN8Vvx3F0W6F1c4YlEHrZB8rZg04UJYE7GvVQ3eb0H7DWHo te2KfwSy/v4L8OCJ1JIrkTqIFKSfcuamUqJi+YPNRgJvt5hhoLE21OdSVks0nAkzoD/VJz N8Glaxmh/856NxNG7ZPzJS6V+ehO2Vi4euQKYN1rNALWkRYVdIMGzmYSEOEsAA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHXv5YPJzQpm; Thu, 18 Jan 2024 22:31:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMVh31005196; Thu, 18 Jan 2024 22:31:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMVhK5005193; Thu, 18 Jan 2024 22:31:43 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:31:43 GMT Message-Id: <202401182231.40IMVhK5005193@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: d735315d4dbf - stable/14 - tools/build: Provide sys/linker_set.h when cross-building List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d735315d4dbf3007a46f9069baad8056f2187b50 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d735315d4dbf3007a46f9069baad8056f2187b50 commit d735315d4dbf3007a46f9069baad8056f2187b50 Author: Jessica Clarke AuthorDate: 2023-12-13 21:43:09 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:26:48 +0000 tools/build: Provide sys/linker_set.h when cross-building This is needed for kldxref, which will shortly become a bootstrap tool. Linux can use the same one as FreeBSD (provided the cross-building sys/cdefs.h is augmented appropriately), whilst macOS needs its own Mach-O-specific implementation. Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D43049 (cherry picked from commit 881ec81372e0748f2869fe6c18e909afa8304e7a) --- tools/build/Makefile | 4 + tools/build/cross-build/include/common/sys/cdefs.h | 13 ++ .../build/cross-build/include/mac/sys/linker_set.h | 140 +++++++++++++++++++++ 3 files changed, 157 insertions(+) diff --git a/tools/build/Makefile b/tools/build/Makefile index 8ad104f904ea..bd573a38fc75 100644 --- a/tools/build/Makefile +++ b/tools/build/Makefile @@ -208,6 +208,10 @@ SRCS+= progname.c # Stub implementations of fflagstostr/strtofflags SRCS+= fflags.c +# macOS has a standalone cross-build implementation, but Linux can use the same +# ELF one as FreeBSD +SYSINCS+= ${SRCTOP}/sys/sys/linker_set.h + .endif # ${MAKE.OS} == "Linux" .if ${.MAKE.OS} == "Darwin" diff --git a/tools/build/cross-build/include/common/sys/cdefs.h b/tools/build/cross-build/include/common/sys/cdefs.h index 3fa7790841cc..3f9b7866141f 100644 --- a/tools/build/cross-build/include/common/sys/cdefs.h +++ b/tools/build/cross-build/include/common/sys/cdefs.h @@ -121,6 +121,12 @@ #endif #endif +#ifndef __WEAK +#ifdef __ELF__ +#define __WEAK(sym) __asm__(".weak " __XSTRING(sym)) +#endif +#endif + /* Some files built as part of the bootstrap libegacy use these macros, but * since we aren't actually building libc.so, we can defined them to be empty */ #ifndef __sym_compat @@ -249,6 +255,13 @@ #define __DEQUALIFY(type, var) ((type)(__uintptr_t)(const volatile void *)(var)) #endif +#ifndef __nosanitizeaddress +#if __has_attribute(no_sanitize) && defined(__clang__) +#define __nosanitizeaddress __attribute__((no_sanitize("address"))) +#else +#define __nosanitizeaddress +#endif +#endif /* Expose all declarations when using FreeBSD headers */ #define __POSIX_VISIBLE 200809 diff --git a/tools/build/cross-build/include/mac/sys/linker_set.h b/tools/build/cross-build/include/mac/sys/linker_set.h new file mode 100644 index 000000000000..c0b81747c78b --- /dev/null +++ b/tools/build/cross-build/include/mac/sys/linker_set.h @@ -0,0 +1,140 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 1999 John D. Polstra + * Copyright (c) 1999,2001 Peter Wemm + * All rights reserved. + * Copyright (c) 2023 Jessica Clarke + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _SYS_LINKER_SET_H_ +#define _SYS_LINKER_SET_H_ + +#include +#include + +/* + * The following macros are used to declare global sets of objects, which + * are collected by the linker into a `linker_set' as defined below. + * For Mach-O, this is done by constructing a separate section for each set. + */ + +#define __MAKE_SET_CONST const + +/* + * Private macros, not to be used outside this header file. + */ + +/* + * The userspace address sanitizer inserts redzones around global variables, + * violating the assumption that linker set elements are packed. + */ +#define __NOASAN __nosanitizeaddress + +#define __MAKE_SET_QV(set, sym, qv) \ + static void const * qv \ + __NOASAN \ + __set_##set##_sym_##sym __section("__DATA,set_" #set) \ + __used = &(sym) +#define __MAKE_SET(set, sym) __MAKE_SET_QV(set, sym, __MAKE_SET_CONST) + +static inline __pure2 uint8_t * +__set_getsectiondata(const char *segname, const char *sectname, + unsigned long *size) +{ + uint32_t image_count, image_index; + const struct mach_header *mh; + uint8_t *ret; + + image_count = _dyld_image_count(); + for (image_index = 0; image_index < image_count; ++image_index) { + mh = _dyld_get_image_header(image_index); + if (mh == NULL) + continue; + + ret = getsectiondata((const struct mach_header_64 *)mh, + segname, sectname, size); + if (ret != NULL) + return (ret); + } + + return (NULL); +} + +#define __SET_RANGE(set) ({ \ + unsigned long __set_size; \ + char *__set_data; \ + __set_data = __set_getsectiondata("__DATA", \ + "set_" #set, &__set_size); \ + (struct { \ + __CONCAT(__typeof_set_,set) **begin; \ + __CONCAT(__typeof_set_,set) **limit; \ + }){ \ + .begin = (__CONCAT(__typeof_set_,set) **)__set_data, \ + .limit = (__CONCAT(__typeof_set_,set) **)(__set_data + \ + __set_size) \ + }; \ +}) + +/* + * Public macros. + */ +#define TEXT_SET(set, sym) __MAKE_SET(set, sym) +#define DATA_SET(set, sym) __MAKE_SET(set, sym) +#define DATA_WSET(set, sym) __MAKE_SET_QV(set, sym, ) +#define BSS_SET(set, sym) __MAKE_SET(set, sym) +#define ABS_SET(set, sym) __MAKE_SET(set, sym) +#define SET_ENTRY(set, sym) __MAKE_SET(set, sym) + +/* + * Initialize before referring to a given linker set. + */ +#define SET_DECLARE(set, ptype) \ + typedef ptype __CONCAT(__typeof_set_,set) + +#define SET_BEGIN(set) \ + (__SET_RANGE(set).begin) +#define SET_LIMIT(set) \ + (__SET_RANGE(set).limit) + +/* + * Iterate over all the elements of a set. + * + * Sets always contain addresses of things, and "pvar" points to words + * containing those addresses. Thus is must be declared as "type **pvar", + * and the address of each set item is obtained inside the loop by "*pvar". + */ +#define SET_FOREACH(pvar, set) \ + for (pvar = SET_BEGIN(set); pvar < SET_LIMIT(set); pvar++) + +#define SET_ITEM(set, i) \ + ((SET_BEGIN(set))[i]) + +/* + * Provide a count of the items in a set. + */ +#define SET_COUNT(set) \ + (SET_LIMIT(set) - SET_BEGIN(set)) + +#endif /* _SYS_LINKER_SET_H_ */ From nobody Thu Jan 18 22:31:44 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHXx2t7vz57962; Thu, 18 Jan 2024 22:31:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHXx09Kpz4CTn; Thu, 18 Jan 2024 22:31:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=o8kgJpTnyTOeX81mIex5gqQ7/mpfOusJKW0Biqs25iI=; b=mG9Km/xD5RdJtUla2PHXo2mnvNxEvhokli7IoJjAvshZeh2WRKNoIKn1SLHEj9HCNxS7Xg tDL2Ijg3ykm0AiY5FbCwVdXApB0LfUYBNtGlw1nz69gjc55j1vDqoTcUmoK7LKFGC1JPvm V/DlvZV2clEi4inRqy+U5j+Sj2nLLzFfl5McJa5gf0dHb4rrkms0Eso+4cEDIkq2PAAlzc Ko0yl8SPxlvsJZqAbw5iQcLFlGSVv7MRmrq6/C9a8kAbvomBHiBlGjA5hftgFPVFUJZP6C zmyPg15HIEokXwIxFMs7gt2B76gy+GJgr0jyhUSpEGTNOitSCAS7TOcoUXKSFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=o8kgJpTnyTOeX81mIex5gqQ7/mpfOusJKW0Biqs25iI=; b=T65KWuT3yyINE4PsTgFh6sFwKcPMqV4+W6pBjPfl9PjxXlu13U3S1kW5q6ES+3QB5yoEt7 zPGanJ5fSux9cTg/l156OmQxapgvABSnJlp1oClne/qQTXMLpWNh5iDNL8u1dJp39uas08 fpzsH4HrI5y9P8jg5ZIztasCz+nqJET3vVbGcAx6Pq/dO8tvEz7pYOZKbWeruB2YOrvbdF +UblOQgV6GdOZFDN1WS18oqc3a0IONUI5/iNqJ2iCMUnEvJ3o+lkuO7nYgf4CKlMUcmafM TwTHJXmeHcrr7UugbY5+XahC+JIInWSib9be/pqwwRzcNkKyS0lU+XexfatAmw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617105; a=rsa-sha256; cv=none; b=QuynoyFMmfciA7PNVT9dMJnyWjPh30oCj30I6dIGb1yGgHxe9NoI+nMC5OfDlvJaKUkUYv NAgwUna0SYp6z7luOmuM7+q9Vdp8+Yv3UraLqisAAND2E9n06DHiL+/dY3ZeSVjis/E4/u QO41u0scEwUVU1wUZ4TASnHq81RbX5Jj3QLKFuzgmbrZlZTdafSgQrhaDfMmSg1QcceI/6 5n6fAkQQpnE9WToJvjMSA69ymAEY5B4tGvKBCp2xtz9CL1+ghXAx6Uhak2eSSaDb/pa/kl WSpctg1aYwxiZXbpREbhHfpVuzkloAezViE8ibIUqiMcLqnqXZgDI0O76T9GJw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHXw6M4GzQWJ; Thu, 18 Jan 2024 22:31:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMVikv005253; Thu, 18 Jan 2024 22:31:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMVifC005250; Thu, 18 Jan 2024 22:31:44 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:31:44 GMT Message-Id: <202401182231.40IMVifC005250@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 509a5d9314d1 - stable/14 - Makefile.inc1: Forward on METALOG and DISTBASE for kernel targets List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 509a5d9314d1f4af64d9f7c8a5e93f6efc50dca8 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=509a5d9314d1f4af64d9f7c8a5e93f6efc50dca8 commit 509a5d9314d1f4af64d9f7c8a5e93f6efc50dca8 Author: Jessica Clarke AuthorDate: 2023-12-13 21:43:09 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:29:19 +0000 Makefile.inc1: Forward on METALOG and DISTBASE for kernel targets Currently IMAKE_INSTALL, which includes -M METALOG, is enough for the sub-makes to work, but using kldxref for -DNO_ROOT builds will require manually adding linker.hints to the METALOG, and thus both METALOG itself and DISTBASE need to be exposed directly to the sub-makes, so do so. Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D43050 (cherry picked from commit e131d3f4f34fdbce465524f7b1093f01acc9de7c) --- Makefile.inc1 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile.inc1 b/Makefile.inc1 index 5b130d9c3271..857aed8e703c 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -1838,7 +1838,8 @@ reinstallkernel reinstallkernel.debug: _installcheck_kernel .PHONY @echo "--------------------------------------------------------------" ${_+_}cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ ${CROSSENV} PATH=${TMPPATH:Q} \ - ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//} + ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME} METALOG=${METALOG} \ + ${.TARGET:S/kernel//} @echo "--------------------------------------------------------------" @echo ">>> Installing kernel ${INSTALLKERNEL} completed on $$(LC_ALL=C date)" @echo "--------------------------------------------------------------" @@ -1850,7 +1851,8 @@ reinstallkernel reinstallkernel.debug: _installcheck_kernel .PHONY @echo "--------------------------------------------------------------" ${_+_}cd ${KRNLOBJDIR}/${_kernel}; \ ${CROSSENV} PATH=${TMPPATH:Q} \ - ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME}.${_kernel} ${.TARGET:S/kernel//} + ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME}.${_kernel} METALOG=${METALOG} \ + ${.TARGET:S/kernel//} @echo "--------------------------------------------------------------" @echo ">>> Installing kernel ${_kernel} completed on $$(LC_ALL=C date)" @echo "--------------------------------------------------------------" @@ -1870,7 +1872,8 @@ distributekernel distributekernel.debug: .PHONY ${_+_}cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ ${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.premeta/} \ ${IMAKE_MTREE} PATH=${TMPPATH:Q} ${MAKE} KERNEL=${INSTKERNNAME} \ - DESTDIR=${INSTALL_DDIR}/kernel \ + DISTBASE=/kernel DESTDIR=${INSTALL_DDIR}/kernel \ + METALOG=${METALOG:S/METALOG/kernel.premeta/} \ ${.TARGET:S/distributekernel/install/} .if defined(NO_ROOT) @sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta > \ @@ -1886,7 +1889,8 @@ distributekernel distributekernel.debug: .PHONY ${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.${_kernel}.premeta/} \ ${IMAKE_MTREE} PATH=${TMPPATH:Q} ${MAKE} \ KERNEL=${INSTKERNNAME}.${_kernel} \ - DESTDIR=${INSTALL_DDIR}/kernel.${_kernel} \ + DISTBASE=/kernel.${_kernel} DESTDIR=${INSTALL_DDIR}/kernel.${_kernel} \ + METALOG=${METALOG:S/METALOG/kernel.${_kernel}.premeta/} \ ${.TARGET:S/distributekernel/install/} .if defined(NO_ROOT) @sed -e "s|^./kernel.${_kernel}|.|" \ From nobody Thu Jan 18 22:31:45 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHXy4208z578sn; Thu, 18 Jan 2024 22:31:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHXy1mzZz4CV2; Thu, 18 Jan 2024 22:31:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PL3Jrs4Lsr6cuHFU25nAXR+rhnQ5uLsld1vwK+nPCsA=; b=G1zbeL6zMjgs9nwDLjpDGYE270Zs2s1hIb9g3zQiRBkCHDcv23RWuqZhTvzcXecO/o87Pv i1Mhg/qKZXyCN0piAfUy0ERMj45IRoBL+dniyqNE5mxYsVP2LmQrIxDCcbgi6spN3gwgzm c2zLPHqrLPOdmSMXxCuz965kKgwWwIlbCHhbazCNiO9ijCNf0+tZeVw3SOt3xlbMvu44/9 vEoUrNID7EzOCvUD0bt4cOoZSDJF88ybgvN0NYMxyPJOdSwqBPaqz18A5sSsjq7or9tzXK 99M8htwzh6Zg5mp1i2fdu+rNXXBl0h5RxobtEFze5rTvQ4HtcB8XEnOA/dreyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PL3Jrs4Lsr6cuHFU25nAXR+rhnQ5uLsld1vwK+nPCsA=; b=c6/LYu0j4ZbR2b+Q17pno6ro8YzvWTlxWAGZf6MlVsyaQyutirZ+CnNaruqWdl0oPYOqOt IQNLXIYhXu/vF3thgMht8hgZGHUOWjs8ayzBUkozvbAXSEotY9rtlq2ZFaQQLTRLvig6fn kKgzGHBn3Rz+Vxcan3G9nkk+vV/XZsqA+QmiH7AW6xOOOcl9iIZEEQDjHuUmJigw7x6z5B 9E6g6oXMWAnbjhczTJ+N7xzAe1m5MJkwDCMi41STUJcD5juIVz9JQZ0RkoFLk3KTfTMjVS CCK2/7U6K0KabXHypqm8itKSjAo2cW2N5ED4rrUl/p9IX3uDrNuIi9ZNKJoOcA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617106; a=rsa-sha256; cv=none; b=ArQ9LHB3WjmtpQ4w1y99jCkrTd1woN7YjtPxTzHOKLirCq9y504zzSsNKfWIFH9giD2KF0 4aY7/MSHYza6GngKtTsqHDgrCyCyMh8ZnKN4PJKlV+/cfCMlDhEarRSYDAGg14R8X8naK3 qALsu8U9HnpWSZjKbDWmKM6QRSYeKaTQ8d5GMlHw03Esdw+pjhWVsHkstOHYxVHrKQrhZe /fUfBaeeEJ1ITlUlvbqX9bH8ThMPbocjqxeDSEMFkKB1VfkJ1jknpEpwBnQzNci3HRJoO6 aW8cbkG991MCR1tJHUbsrmLtHx8pIjFQwH7Cs/bQq9tCJhjIuE3vDtc3VHduIA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHXy0YcRzQn5; Thu, 18 Jan 2024 22:31:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMVjqn005305; Thu, 18 Jan 2024 22:31:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMVjnn005302; Thu, 18 Jan 2024 22:31:45 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:31:45 GMT Message-Id: <202401182231.40IMVjnn005302@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 2fbed5e9ea84 - stable/14 - Make kldxref a bootstrap tool and use unconditionally List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2fbed5e9ea843c6747fba6d3cd209c3d5860617a Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=2fbed5e9ea843c6747fba6d3cd209c3d5860617a commit 2fbed5e9ea843c6747fba6d3cd209c3d5860617a Author: Jessica Clarke AuthorDate: 2023-12-13 21:43:10 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:30:06 +0000 Make kldxref a bootstrap tool and use unconditionally Now that kldxref is a generic cross tool and can be built on non-FreeBSD we can bootstrap it during the build and thus remove the condition for whether it exists. We also need to make sure to add it to the METALOG for -DNO_ROOT builds. Reviewed by: brooks, imp Differential Revision: https://reviews.freebsd.org/D43051 (cherry picked from commit ff7c12c1f17e52337169d8ce48433fae96a9c9db) --- Makefile.inc1 | 5 +++++ sys/conf/kmod.mk | 9 +++++---- sys/modules/Makefile | 9 +++++---- tools/build/Makefile | 2 ++ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Makefile.inc1 b/Makefile.inc1 index 857aed8e703c..3537cf5ac579 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -2409,8 +2409,12 @@ _bootstrap_tools_links+=m4 lex _elftoolchain_libs= lib/libelf lib/libdwarf lib/libzstd ${_bt}-lib/libelf: ${_bt_m4_depend} ${_bt}-lib/libdwarf: ${_bt_m4_depend} +_bt_libelf_depend=${_bt}-lib/libelf .endif +_kldxref= usr.sbin/kldxref +${_bt}-usr.sbin/kldxref: ${_bt_libelf_depend} + # flua is required to regenerate syscall files. It first appeared during the # 13.0-CURRENT cycle, thus needs to be built on -older releases and stable # branches. @@ -2672,6 +2676,7 @@ bootstrap-tools: ${_bt}-links .PHONY ${_cat} \ ${_kbdcontrol} \ ${_elftoolchain_libs} \ + ${_kldxref} \ lib/libopenbsd \ usr.bin/mandoc \ usr.bin/rpcgen \ diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk index ce1e7a31a865..48872f88932d 100644 --- a/sys/conf/kmod.mk +++ b/sys/conf/kmod.mk @@ -361,10 +361,11 @@ afterinstall: _kldxref .ORDER: realinstall _kldxref .ORDER: _installlinks _kldxref _kldxref: .PHONY - @if type kldxref >/dev/null 2>&1; then \ - ${ECHO} ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \ - ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \ - fi + ${KLDXREF_CMD} ${DESTDIR}${KMODDIR} +.if defined(NO_ROOT) && defined(METALOG) + echo ".${DISTBASE}${KMODDIR}/linker.hints type=file mode=0644 uname=root gname=wheel" | \ + cat -l >> ${METALOG} +.endif .endif .endif # !target(realinstall) diff --git a/sys/modules/Makefile b/sys/modules/Makefile index 4b98c7ed6e0d..b34d20dd9147 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -909,10 +909,11 @@ SUBDIR:= ${SUBDIR:N${reject}} .if !defined(NO_XREF) .MAKEFLAGS+= -DNO_XREF afterinstall: .PHONY - @if type kldxref >/dev/null 2>&1; then \ - ${ECHO} ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \ - ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \ - fi + ${KLDXREF_CMD} ${DESTDIR}${KMODDIR} +.if defined(NO_ROOT) && defined(METALOG) + echo ".${DISTBASE}${KMODDIR}/linker.hints type=file mode=0644 uname=root gname=wheel" | \ + cat -l >> ${METALOG} +.endif .endif SUBDIR:= ${SUBDIR:u:O} diff --git a/tools/build/Makefile b/tools/build/Makefile index bd573a38fc75..92f7d396825c 100644 --- a/tools/build/Makefile +++ b/tools/build/Makefile @@ -295,6 +295,8 @@ SYSINCS+= ${SRCTOP}/sys/sys/elf.h SYSINCS+= ${SRCTOP}/sys/sys/ctf.h # for kbdcontrol: SYSINCS+= ${SRCTOP}/sys/sys/kbio.h +# for kldxref: +SYSINCS+= ${SRCTOP}/sys/sys/module.h # We want to run the build with only ${WORLDTMP} in $PATH to ensure we don't # accidentally run tools that are incompatible but happen to be in $PATH. From nobody Thu Jan 18 22:33:42 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHbB5K5Wz579QK; Thu, 18 Jan 2024 22:33:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHbB4g5zz4DMH; Thu, 18 Jan 2024 22:33:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617222; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=J1EJkZAUad8LPRDFgaCps7f900bCAnO8uyGtzwp/MGE=; b=h65TQPzGb/RsgM/KkXhF5Oex5i0wo1GplsWkJ7Q1puV8UqhMeBN4KA3calJyZc4RPD+YUl z07QYmLNLLE03OVXNsk0kR6AinRF43lIhia5Qi0Z366XxBUWPYpVSDrmcZoahFQe5TBu6u iCQ360REH4ta7THSDBJE2645hlrnsopTeszqskI9oJmAoWmvFFNXQU+Bnpnk4yvbGYM4M/ vKXNDNTdl3gTrz6GDBuF3eluklvSscJToTt2LO7eBBnifJU+Tbf9SIEcZjCqataDRbj1Z3 9cv0Vo6C9XeIrVKqyKHBxjFAHr5XcXwUs6PplVz81QoBT8CZhJi5xmeUHgoH6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617222; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=J1EJkZAUad8LPRDFgaCps7f900bCAnO8uyGtzwp/MGE=; b=WQdkScx4q5a5rEFK6RMhm5pXrO+jnRD78wkLSscRFaBwIaN/TtuXHsQ4qFujmxcCJo8YCH WMw5Lazl4H8rm3u6RyntlDhmPTaVWab/mFNe9prbauFHwNtZOTVrAsZPWBbgEvxGKjP0/B JcZvkI1YRXdZMzGSgmyHQwJY/+aB8Nq+ogwlrAdD9UNBcCCw0n9Sqfah+sE6WhB/wmTI5L Z/QN42+nUuScI/4wH/do8xJHMVof/MpXr3v8ClyR6pQcJl0qTd8gEpHBwTMzVCbR60dfxq IO6lgGYDl7LIdAS2e0nZMdwjo3vafpxxsT1omW56ey9w8/FjWST29zWzwzQghQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617222; a=rsa-sha256; cv=none; b=BluEDXYFZF49OwRpCXToHcZX2yDV4QYf2Qi1eyCDdOxMbmWmSjBImz1UbnyJws3vyYkck8 wRcl4joZJbJnywkcZZ8FQRby+uS8uJKn5oi9xrDzUIa9dNApx+vrDs22MPg9lAes6GFtBK zQEAGiZrL6io5TUxiNDIfgpqskNRUB6v+PTMbsw3kjpnIRG6uKHjBtijHbJVizPsRmkK1i Okya23Wvyq1NXU6HbRIlPepR4na1GZq4dmiiN86P0ieY2/f3f0yOvLLqMn+trUhHcrQ9Ur YzxYHIhkda5PHiczVPGGFY0sGAWRORDoD7S74zkcqK7+q7poe05R0jhKcGMxWw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHbB3kXpzQq0; Thu, 18 Jan 2024 22:33:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMXgpB007530; Thu, 18 Jan 2024 22:33:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMXgWO007527; Thu, 18 Jan 2024 22:33:42 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:33:42 GMT Message-Id: <202401182233.40IMXgWO007527@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 8ae27e114b28 - stable/14 - acpi: Only reserve resources enumerated via _CRS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8ae27e114b28153c0bf2884c8f7bfcdeb81494f9 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=8ae27e114b28153c0bf2884c8f7bfcdeb81494f9 commit 8ae27e114b28153c0bf2884c8f7bfcdeb81494f9 Author: John Baldwin AuthorDate: 2024-01-09 19:23:10 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:33:09 +0000 acpi: Only reserve resources enumerated via _CRS In particular, don't reserve resources added by drivers via other means (e.g. acpi_bus_alloc_gas which calls bus_alloc_resource right after adding the resource). The intention of reserved resources is to ensure that a resource range that a bus driver knows is assigned to a device is reserved by the system even if no driver is attached to the device. This prevents other "wildcard" resource requests from conflicting with these resources. For ACPI, the only resources the bus driver knows about for unattached devices are the resources returned from _CRS. All of these resources are already reserved now via acpi_reserve_resources called from acpi_probe_children. As such, remove the logic from acpi_set_resource to try to reserve resources when they are set. This permits RF_SHAREABLE to work with acpi_bus_alloc_gas without requiring hacks like the current one for CPU device resources in acpi_set_resource. Reported by: gallatin (RF_SHAREABLE not working) Diagnosed by: jrtc27 (cherry picked from commit c6a488511ab1fbae8d16264b9e83c85024c9e1ce) --- sys/dev/acpica/acpi.c | 36 ------------------------------------ sys/dev/acpica/acpivar.h | 1 - 2 files changed, 37 deletions(-) diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index 491eda40b6c4..0c77da80c27e 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -1376,11 +1376,9 @@ acpi_reserve_resources(device_t dev) struct resource_list_entry *rle; struct resource_list *rl; struct acpi_device *ad; - struct acpi_softc *sc; device_t *children; int child_count, i; - sc = device_get_softc(dev); if (device_get_children(dev, &children, &child_count) != 0) return; for (i = 0; i < child_count; i++) { @@ -1422,14 +1420,12 @@ acpi_reserve_resources(device_t dev) } } free(children, M_TEMP); - sc->acpi_resources_reserved = 1; } static int acpi_set_resource(device_t dev, device_t child, int type, int rid, rman_res_t start, rman_res_t count) { - struct acpi_softc *sc = device_get_softc(dev); struct acpi_device *ad = device_get_ivars(child); struct resource_list *rl = &ad->ad_rl; ACPI_DEVICE_INFO *devinfo; @@ -1485,38 +1481,6 @@ acpi_set_resource(device_t dev, device_t child, int type, int rid, /* Add the resource. */ end = (start + count - 1); resource_list_add(rl, type, rid, start, end, count); - - /* Don't reserve resources until the system resources are allocated. */ - if (!sc->acpi_resources_reserved) - return (0); - - /* Don't reserve system resources. */ - if (ACPI_ID_PROBE(dev, child, sysres_ids, NULL) <= 0) - return (0); - - /* - * Don't reserve IRQ resources. There are many sticky things to - * get right otherwise (e.g. IRQs for psm, atkbd, and HPET when - * using legacy routing). - */ - if (type == SYS_RES_IRQ) - return (0); - - /* - * Don't reserve resources for CPU devices. Some of these - * resources need to be allocated as shareable, but reservations - * are always non-shareable. - */ - if (device_get_devclass(child) == devclass_find("cpu")) - return (0); - - /* - * Reserve the resource. - * - * XXX: Ignores failure for now. Failure here is probably a - * BIOS/firmware bug? - */ - resource_list_reserve(rl, dev, child, type, &rid, start, end, count, 0); return (0); } diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h index 5be0939ee6bb..4d76a77cdbf8 100644 --- a/sys/dev/acpica/acpivar.h +++ b/sys/dev/acpica/acpivar.h @@ -55,7 +55,6 @@ struct acpi_softc { int acpi_enabled; int acpi_sstate; int acpi_sleep_disabled; - int acpi_resources_reserved; struct sysctl_ctx_list acpi_sysctl_ctx; struct sysctl_oid *acpi_sysctl_tree; From nobody Thu Jan 18 22:33:47 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHbJ42cfz579QP; Thu, 18 Jan 2024 22:33:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHbJ0hqcz4Dhh; Thu, 18 Jan 2024 22:33:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617228; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mH2I3tyT9gLznUJLZX6PjGMdvXcvSJP5EXLtpKszmjQ=; b=F/Ml9kCMA2bqmw4xPqdjeklj3LEJB8yrrxGsukIdeYUKrUc5XLWMh/DpLHPUSFSVL4Z1GI ONNUyuEPlxJeJjbN/sEmB7YJ80dkRogvpTPggAXWKIB+mOw+Wr1aFqG5ZL4zbDk08WQXzX eDrW79XNqD8S7Ke97R1AnBTi1LhMs7tcKAGYzLKCIjfXjwFZ+xas0QQn2E/po2nokiMFS9 cv9hwTHkjcEy9vsN6lTMUwpilzFBFP0+DtPIgTUpD1GE2iEgTeWq55mPZbhtFItwrvG/5x +a1MG+Jr3HMfxZylub93FTHerslgcVszFoa/1dQ/z/Sakj250c9+NqNj4ioaDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617228; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mH2I3tyT9gLznUJLZX6PjGMdvXcvSJP5EXLtpKszmjQ=; b=RB4rHo1X2O32D928zQxRyurnSjDNJUWpSATh0pvMOzPj/UbYOoIwGyRwJ3EzgQbYxz5V3L Reb89//V7xMnZX7s9+npHwxJIQENNcS7sYVUxWi34HpO2DKgyShxB30rLbeEXZ7xanGbH5 Nq7nK34It15ehhqlo3o2wTs+W7O7CcvhlXZHqpbePxVFHDXMJk2ORxRwxHvklXbXmKk4vd jC+pNYNf0K2c80TJsdE/gootTW+nRLg5Z+RnG6atpCS2DgCnukwG+rIm25WpeiAfkGSLes 9t14/whYgPUMxmlF4RaCCiRZx1WsDFJ5U6mksrNX1stkPkHkaIFNrngGjA/8kw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617228; a=rsa-sha256; cv=none; b=J84oIoq60zUXTdjOmtIkIN534zLpetZwLlqb2Gq91l1hT76j9FevKRPUZR8PvH1EN8xB3n tBhR/Jk9k5YaRWZfQ8T6zNHKaXwhLo9qUUv51gdYN14O77Jvphx8QAs/pH2cScUzRpTopg uDuQnDiMxHZUat8yrjrNnkPI3Whx/k/M8guasDjp4r+M3Is16dxjGkcUNZP96uTnBOl4sp rTcCbnk0v2jKJ4LVp81L1ZFm+ek/qUlXmfTXhoqW/Fe72g2FuhL2EMa/x2qJn0pGhAKvup eq+luVkzT+jsCETV7+jmSQFRoMZx1l8c4abbh2VNOHtrtlGqxP2jTnzgGXSJUw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHbH6vX7zQsV; Thu, 18 Jan 2024 22:33:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMXlCP007675; Thu, 18 Jan 2024 22:33:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMXl8J007672; Thu, 18 Jan 2024 22:33:47 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:33:47 GMT Message-Id: <202401182233.40IMXl8J007672@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 468fb2f4f2c6 - stable/13 - acpi: Only reserve resources enumerated via _CRS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 468fb2f4f2c611e12de40b8661db629a2b63dd01 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=468fb2f4f2c611e12de40b8661db629a2b63dd01 commit 468fb2f4f2c611e12de40b8661db629a2b63dd01 Author: John Baldwin AuthorDate: 2024-01-09 19:23:10 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:33:14 +0000 acpi: Only reserve resources enumerated via _CRS In particular, don't reserve resources added by drivers via other means (e.g. acpi_bus_alloc_gas which calls bus_alloc_resource right after adding the resource). The intention of reserved resources is to ensure that a resource range that a bus driver knows is assigned to a device is reserved by the system even if no driver is attached to the device. This prevents other "wildcard" resource requests from conflicting with these resources. For ACPI, the only resources the bus driver knows about for unattached devices are the resources returned from _CRS. All of these resources are already reserved now via acpi_reserve_resources called from acpi_probe_children. As such, remove the logic from acpi_set_resource to try to reserve resources when they are set. This permits RF_SHAREABLE to work with acpi_bus_alloc_gas without requiring hacks like the current one for CPU device resources in acpi_set_resource. Reported by: gallatin (RF_SHAREABLE not working) Diagnosed by: jrtc27 (cherry picked from commit c6a488511ab1fbae8d16264b9e83c85024c9e1ce) --- sys/dev/acpica/acpi.c | 36 ------------------------------------ sys/dev/acpica/acpivar.h | 1 - 2 files changed, 37 deletions(-) diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index d0d2f9ddc1cd..ca88acb60966 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -1277,11 +1277,9 @@ acpi_reserve_resources(device_t dev) struct resource_list_entry *rle; struct resource_list *rl; struct acpi_device *ad; - struct acpi_softc *sc; device_t *children; int child_count, i; - sc = device_get_softc(dev); if (device_get_children(dev, &children, &child_count) != 0) return; for (i = 0; i < child_count; i++) { @@ -1323,14 +1321,12 @@ acpi_reserve_resources(device_t dev) } } free(children, M_TEMP); - sc->acpi_resources_reserved = 1; } static int acpi_set_resource(device_t dev, device_t child, int type, int rid, rman_res_t start, rman_res_t count) { - struct acpi_softc *sc = device_get_softc(dev); struct acpi_device *ad = device_get_ivars(child); struct resource_list *rl = &ad->ad_rl; ACPI_DEVICE_INFO *devinfo; @@ -1386,38 +1382,6 @@ acpi_set_resource(device_t dev, device_t child, int type, int rid, /* Add the resource. */ end = (start + count - 1); resource_list_add(rl, type, rid, start, end, count); - - /* Don't reserve resources until the system resources are allocated. */ - if (!sc->acpi_resources_reserved) - return (0); - - /* Don't reserve system resources. */ - if (ACPI_ID_PROBE(dev, child, sysres_ids, NULL) <= 0) - return (0); - - /* - * Don't reserve IRQ resources. There are many sticky things to - * get right otherwise (e.g. IRQs for psm, atkbd, and HPET when - * using legacy routing). - */ - if (type == SYS_RES_IRQ) - return (0); - - /* - * Don't reserve resources for CPU devices. Some of these - * resources need to be allocated as shareable, but reservations - * are always non-shareable. - */ - if (device_get_devclass(child) == devclass_find("cpu")) - return (0); - - /* - * Reserve the resource. - * - * XXX: Ignores failure for now. Failure here is probably a - * BIOS/firmware bug? - */ - resource_list_reserve(rl, dev, child, type, &rid, start, end, count, 0); return (0); } diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h index 896fc0c5a224..362538e47bfc 100644 --- a/sys/dev/acpica/acpivar.h +++ b/sys/dev/acpica/acpivar.h @@ -55,7 +55,6 @@ struct acpi_softc { int acpi_enabled; int acpi_sstate; int acpi_sleep_disabled; - int acpi_resources_reserved; struct sysctl_ctx_list acpi_sysctl_ctx; struct sysctl_oid *acpi_sysctl_tree; From nobody Thu Jan 18 22:39:39 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHk40t1Bz579sN; Thu, 18 Jan 2024 22:39:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHk36Kwvz4FRc; Thu, 18 Jan 2024 22:39:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617579; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i0fOP6HxRJR/4Qjn9/HzFs1bI4sfcGheUYG4v+VpB+A=; b=KqJUeEAfl0CUv8K2E/Jf5UKU4t3X5adeVjTsdSnZHq7oULSfwFFjPDbME9BMxV91p7bjX/ F35GLuxME2/L27UTEazR+rJTi19pclzpR4b8M2hfP6B2pcqLYmMeF04OUWRZdEmXnrBzVZ UDs874kHRlaLRMUVrWje+xW2KZjV0BbeoZ2BM4I6V8A9NPsHBfRtBw1GmNSq6mRrGHKdgG Q6nv2DlpZ3f91jYd5vAaSv3zS6FNIG2gKXtIaDZYPl79D8KpZBrOJCdO8brktJNpUqSk3Y t+NE98MX23vGUDe8ZQOxfCZTb8BgsXlzUJOWG4R1JDW3enqPl30M+J/r5iU0Ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617579; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i0fOP6HxRJR/4Qjn9/HzFs1bI4sfcGheUYG4v+VpB+A=; b=EOhnPOR3hfeHzdqDchjqyzQeXhWEWVZ8bXSrVXrnMMctGyBJ3cbaw4dI9UwfcaPlmlse4x aTzquSva9Suwo/9j60lqjmbRxvQtt0JTulFpuvzy5jIddSjYrnpg3nQag3OWF7F/NK5hHC QXf+OpQ6uE4jUSV3wH2gXI0zC5PCG+bzy58TMMCCPpj2c7ne6HN/P6ExFCmSuaWdlhIHR8 Ytt0DmsqSn/OXa2kA3fRQB74Ei3vXpkGaSXOt/+cal1xA7Jk3GMJBKUPjebSjLUo+0ootN d86xHt45IxpWW5+KqHgntQsLUUv/e8Vreu5TGsiuIEan883p4q2EYNBh8DGzhA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617579; a=rsa-sha256; cv=none; b=qaXjCvTbL6U3eOjWFWClC/2BielBOLlOfdbC2esM5ZsM2qPzIMCV48Srg3T6uJ0/SvyLaZ D3xDNbYUX8K7JfJKtyFVY7zqo2I3+I6N4TXY3SeS1krJrio4D56SOMU4SIhnAmRhyQZubb x5k4ROR7zWD5jKjt0zoaiqc9uJNbOa3ZqEEfJr6C8K2mVRB3g7nr60cDRFrKIJ9UNaAqa2 NVxupHGN+U1eOB1F+tv21r9AAfASmMov7DYJp18oK+NSW/Q9sJgJ9A040Y5vpvPxzuB8Gr saRO2vl1Jo/L/JTfoObQdgfQRUwQ+yFhP/NKJv+dKqPhsl9BC0nN4Ngvw46phA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHk35HybzQXR; Thu, 18 Jan 2024 22:39:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMddUt008860; Thu, 18 Jan 2024 22:39:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdd6i008857; Thu, 18 Jan 2024 22:39:39 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:39 GMT Message-Id: <202401182239.40IMdd6i008857@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 58836703dc30 - stable/14 - mbuf.9: Document mtodo List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 58836703dc30889c1526cdb9dd482f795ae4508b Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=58836703dc30889c1526cdb9dd482f795ae4508b commit 58836703dc30889c1526cdb9dd482f795ae4508b Author: John Baldwin AuthorDate: 2023-12-28 19:17:22 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:34:10 +0000 mbuf.9: Document mtodo mtodo() accepts an mbuf and offset and returns a void * pointer to the requested offset into the mbuf's associated data. Similar to mtod(), no bounds checking is performed. Reviewed by: imp, markj Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43215 (cherry picked from commit 854e1fd692185749fea092b1431efd4a8e09c2eb) --- share/man/man9/Makefile | 1 + share/man/man9/mbuf.9 | 24 +++++++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 99ec5219d8e0..77b2038628be 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -1516,6 +1516,7 @@ MLINKS+=\ mbuf.9 m_pullup.9 \ mbuf.9 m_split.9 \ mbuf.9 mtod.9 \ + mbuf.9 mtodo.9 \ mbuf.9 M_TRAILINGSPACE.9 \ mbuf.9 m_unshare.9 \ mbuf.9 M_WRITABLE.9 diff --git a/share/man/man9/mbuf.9 b/share/man/man9/mbuf.9 index 7c69ef86f63f..0b03d697b8bf 100644 --- a/share/man/man9/mbuf.9 +++ b/share/man/man9/mbuf.9 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 8, 2021 +.Dd December 28, 2023 .Dt MBUF 9 .Os .\" @@ -52,7 +52,10 @@ .Fc .\" .Ss Mbuf utility macros +.Ft type .Fn mtod "struct mbuf *mbuf" "type" +.Ft void * +.Fn mtodo "struct mbuf *mbuf" "offset" .Fn M_ALIGN "struct mbuf *mbuf" "u_int len" .Fn MH_ALIGN "struct mbuf *mbuf" "u_int len" .Ft int @@ -394,6 +397,14 @@ It is advisable to ensure that there is enough contiguous data in See .Fn m_pullup for details. +.It Fn mtodo mbuf offset +Return a data pointer at an offset (in bytes) into the data attached to +.Fa mbuf . +Returns a +.Ft void * +pointer . +.Sy Note : +The caller must ensure that the offset is in bounds of the attached data. .It Fn MGET mbuf how type Allocate an .Vt mbuf @@ -773,7 +784,9 @@ in the are contiguous and lay in the data area of .Fa mbuf , so they are accessible with -.Fn mtod mbuf type . +.Fn mtod +or +.Fn mtodo . .Fa len must be smaller than, or equal to, the size of an .Vt mbuf cluster . @@ -787,12 +800,13 @@ to the data contained in the returned mbuf is stored in If .Fa offsetp is NULL, the region may be accessed using -.Fn mtod mbuf type . +.Fn mtod mbuf type +or +.Fn mtodo mbuf 0 . If .Fa offsetp is non-NULL, the region may be accessed using -.Fn mtod mbuf uint8_t -+ *offsetp. +.Fn mtodo mbuf *offsetp . The region of the mbuf chain between its beginning and .Fa offset is not modified, therefore it is safe to hold pointers to data within From nobody Thu Jan 18 22:39:40 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHk50g61z579vQ; Thu, 18 Jan 2024 22:39:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHk502jNz4Fl2; Thu, 18 Jan 2024 22:39:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617581; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PZBNBtzdLSWIH0/mnofo/ChHrPfNASoRFoU7BVRGkOQ=; b=Poq4FJaLFnHI8GmtpGxkU2bYypZM5EtEXH3M71A3RGGTJ+9G3JVCsUSi/nZsGReKO/ovBi L3AwLbx2YqJAxUnTQPDwLTUqgNp7FPa9RrR2yxZSJA8TESsOgbigGvchRUXoYCei2SWmYn k8bFgWa+YFlFM1q2Us8UeES/PZlVWeTrK1mBJrjQgScdjMTnXrWherUhcMfjW9gYlf3zni LAUopYocuWq2xzuF14JeypoFxMd+zrvKSY63spb7NUHF3XJ9eRzL3VxGzlUwPVLjlinV20 PGpWq0HcPWRYnVoaBlzJmqiQRiIYsEGgplxAzkdm6ErPkzoLD1ZUm7DllFJLzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617581; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PZBNBtzdLSWIH0/mnofo/ChHrPfNASoRFoU7BVRGkOQ=; b=K9vJ6pmUUDH4sPnRMLjyhpRq3beDdTi0WCHYZpV760VULNCdoeywDcbqfKVO78YK79CLKu vhNskUizzPaleCxzmmEE5ysZjydy6yC+YuP8Ios/0pGPd1Krp0OliRq97SUJO4R1pM2gpu LkLHheQwBYJ7xFlCOfdyjHvUkhV83TI9wOUYdFdLYY70rT9SgIBtwdvd0ZOUaw3gKyMwO5 E6gWj9l4aah7Ys/50CfUqxCm/0W5kLvxMBiPyqSNuYd50TTLxchTN3G6ojQeV53QSK6vgL yJSD/gRDez/YT+SzD6FsjDOzvF2MM2GQtyVPgg1SknU9qfR9ThWm4/J+MtQ3vA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617581; a=rsa-sha256; cv=none; b=ttAR4+KG2xqRHgFy1hWYSM+bh/PDxiBr6cHsMhd+6/z7HwB6Wcy/BbD3y1dgJAzr39ONg/ vEIFD2IUPxoal2SdLO8ctFJU64eOlYUPkPD3SMJi4lgct/uMBJ41LuB8U0JVnOujwxTl0e dtbDEBHBKGTike5G+QCGzDAAbAxWnE1C0veUBR+UmXh139csINr0HKSzcA/SyQF7O3+t01 CYgmG9Zl410piKbn2z3oCIaKnZAQP4zwrYmkzc8/k/RrKcZ4YpqgJf7E3rVzXpPRS9nSXh 7B6+ZCU5CX8cBB3oCrszb007s/qioiAHP3Luby9tXdQwAMYv0PN4KH3USae3zw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHk46F3GzQnW; Thu, 18 Jan 2024 22:39:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdexZ008910; Thu, 18 Jan 2024 22:39:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdeP6008907; Thu, 18 Jan 2024 22:39:40 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:40 GMT Message-Id: <202401182239.40IMdeP6008907@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: e000bd2551a3 - stable/14 - sys: Style fix for M_EXT | M_EXTPG List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e000bd2551a34ae1513e90ebf258f523048584d1 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e000bd2551a34ae1513e90ebf258f523048584d1 commit e000bd2551a34ae1513e90ebf258f523048584d1 Author: John Baldwin AuthorDate: 2023-12-28 19:17:59 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:35:14 +0000 sys: Style fix for M_EXT | M_EXTPG Add a space around the | operator in places testing for either M_EXT or M_EXTPG. Reviewed by: imp, glebius Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43216 (cherry picked from commit f7d5900aa063c6e9d19e6372ba981fc76aa326a2) --- sys/kern/uipc_mbuf.c | 18 +++++++++--------- sys/netinet/tcp_output.c | 2 +- sys/netinet/tcp_pcap.c | 2 +- sys/netinet/tcp_stacks/rack.c | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c index ff934a7a8585..f1e986eaa348 100644 --- a/sys/kern/uipc_mbuf.c +++ b/sys/kern/uipc_mbuf.c @@ -238,10 +238,10 @@ mb_dupcl(struct mbuf *n, struct mbuf *m) { volatile u_int *refcnt; - KASSERT(m->m_flags & (M_EXT|M_EXTPG), - ("%s: M_EXT|M_EXTPG not set on %p", __func__, m)); - KASSERT(!(n->m_flags & (M_EXT|M_EXTPG)), - ("%s: M_EXT|M_EXTPG set on %p", __func__, n)); + KASSERT(m->m_flags & (M_EXT | M_EXTPG), + ("%s: M_EXT | M_EXTPG not set on %p", __func__, m)); + KASSERT(!(n->m_flags & (M_EXT | M_EXTPG)), + ("%s: M_EXT | M_EXTPG set on %p", __func__, n)); /* * Cache access optimization. @@ -571,7 +571,7 @@ m_copym(struct mbuf *m, int off0, int len, int wait) copyhdr = 0; } n->m_len = min(len, m->m_len - off); - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + off; mb_dupcl(n, m); } else @@ -613,7 +613,7 @@ m_copypacket(struct mbuf *m, int how) if (!m_dup_pkthdr(n, m, how)) goto nospace; n->m_len = m->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data; mb_dupcl(n, m); } else { @@ -631,7 +631,7 @@ m_copypacket(struct mbuf *m, int how) n = n->m_next; n->m_len = m->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data; mb_dupcl(n, m); } else { @@ -1072,7 +1072,7 @@ m_split(struct mbuf *m0, int len0, int wait) n->m_pkthdr.rcvif = m0->m_pkthdr.rcvif; n->m_pkthdr.len = m0->m_pkthdr.len - len0; m0->m_pkthdr.len = len0; - if (m->m_flags & (M_EXT|M_EXTPG)) + if (m->m_flags & (M_EXT | M_EXTPG)) goto extpacket; if (remain > MHLEN) { /* m can't be the lead packet */ @@ -1098,7 +1098,7 @@ m_split(struct mbuf *m0, int len0, int wait) M_ALIGN(n, remain); } extpacket: - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + len; mb_dupcl(n, m); } else { diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index 549218badcec..0d9fd8136554 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -2091,7 +2091,7 @@ tcp_m_copym(struct mbuf *m, int32_t off0, int32_t *plen, } n->m_len = mlen; len_cp += n->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + off; mb_dupcl(n, m); } else diff --git a/sys/netinet/tcp_pcap.c b/sys/netinet/tcp_pcap.c index 49ab87d814b5..f26287bd7f03 100644 --- a/sys/netinet/tcp_pcap.c +++ b/sys/netinet/tcp_pcap.c @@ -368,7 +368,7 @@ tcp_pcap_add(struct tcphdr *th, struct mbuf *m, struct mbufq *queue) * In cases where that isn't possible, settle for what we can * get. */ - if ((m->m_flags & (M_EXT|M_EXTPG)) && + if ((m->m_flags & (M_EXT | M_EXTPG)) && tcp_pcap_take_cluster_reference()) { n->m_data = m->m_data; n->m_len = m->m_len; diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index db8131ffb377..354c644bec18 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -18455,7 +18455,7 @@ rack_fo_base_copym(struct mbuf *the_m, uint32_t the_off, int32_t *plen, n->m_len = mlen; soff += mlen; len_cp += n->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + off; mb_dupcl(n, m); } else { From nobody Thu Jan 18 22:39:41 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHk62NgGz579vR; Thu, 18 Jan 2024 22:39:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHk61Hqfz4Fct; Thu, 18 Jan 2024 22:39:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617582; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rlF1UWr0OjAbV6Uja24m6+FqKbH8D+IMFl7iw0NGZ88=; b=Lv/EhUu5czIG4nwq/0ZFbZ7E+vxB+tBen03tky6AscA3ipvOSRwymkXBI0bE5Z25oJh2Qk /o2RQ2Pp1AzxeDvUXh2wJKSX48V26TtUej7IYcyfFViYeETzGdajro15ostSdagt8SwDI6 ZYmn2laEorm9MAf++P43evwaLtFoF1xhmzWE1BUW9JvpdpEr75b+xfKWXLqeF9D1ibK3Dv ZnWB5pIXCdPkZJYDcXUdOFrX5BW1YaI4qlkApxEcpKijFT7e2vGGxHULMs8fhf6M+lhZnG +AipiNHNiLFI0nZU9am8APum0qeNyfD45AAJM+pxQ92AvKhbnbPoYdMtC/vl3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617582; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rlF1UWr0OjAbV6Uja24m6+FqKbH8D+IMFl7iw0NGZ88=; b=CUQqIxCTgNaEFnITE/sLMqF5SU5IdgLEOZv2TLtg6gsQmfMcrWEou5gmYHLqhXczez5BpC czN9sbUBpFY/3BVnyCTiSyoEo8qpq6Mqwzu65Yoj/soX7xxEY8X/fbjQruDrpoZU+F13vr 0EtWEen5HQQBvZlfd8Hd02NxzRkJoYhHjvNoNj0Mz5DWwpIW8Ncr7yxPeAPlVT0iKrCJZK xtkpMcS9x05q0HhGfBnpE8vYuxWQY3YxVLYh1WdVjnPLLuoVJtJXte+UX2M+FhKN2s/OeW kTsBunH6Uo2AZw49VUPUD+uCJTFaDmLwhzRAU74iXZuuK+49fgtWPCEtED15YA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617582; a=rsa-sha256; cv=none; b=M42iVuwE9o/cvEGWXUcBdenAhj6AHgPyiyFO27ufr1rRCpJw9+grObxrDOGu2ph5hKN3yO +8dVSDd/m7h2vFQd1M0XZX3P3XkW9bya3MeKu9uZ6iuoXdXx7HVYNkwkKt0ot6yC+cSHJq 44DJv5QEEZ/sffF5PmuASLWi5x43ESDDsT4op3cxiT592/9LoAfmkMe+3UqobDZb7yWoFk saPHdo/nVcrP9jvzruMPhazy4iSbHTB/09uXS5u0/emfgHqh9Ump0iZElBFfNHX3abjLT9 Rj8Pt64NBbc9hJwQvVir+Hu/gL9eT4Spma176ZbMEsW9SH7xrQ8sk+EmEPZXGg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHk60CWvzQnX; Thu, 18 Jan 2024 22:39:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdfoh008967; Thu, 18 Jan 2024 22:39:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdf6S008964; Thu, 18 Jan 2024 22:39:41 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:41 GMT Message-Id: <202401182239.40IMdf6S008964@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 2bc7fdc3a8d0 - stable/14 - net80211 amdpu: Simplify a few loops that drain an mbufq List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2bc7fdc3a8d0d9b86c219714d93145eececfa622 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=2bc7fdc3a8d0d9b86c219714d93145eececfa622 commit 2bc7fdc3a8d0d9b86c219714d93145eececfa622 Author: John Baldwin AuthorDate: 2024-01-09 18:59:48 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:37:03 +0000 net80211 amdpu: Simplify a few loops that drain an mbufq These loops already handled a NULL return from mbufq_dequeue when the queue was empty, so remove a redundant check of mbufq_len before dequeueing. Reviewed by: bz Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43336 (cherry picked from commit 6977311633c73f594ff3dae150d6d1fe06105a8f) --- sys/net80211/ieee80211_ht.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index 61c57b87c5d7..a322c21b4673 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -521,7 +521,7 @@ ampdu_rx_purge_slot(struct ieee80211_rx_ampdu *rap, int i) struct mbuf *m; /* Walk the queue, removing frames as appropriate */ - while (mbufq_len(&rap->rxa_mq[i]) != 0) { + for (;;) { m = mbufq_dequeue(&rap->rxa_mq[i]); if (m == NULL) break; @@ -816,7 +816,7 @@ ampdu_dispatch_slot(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni, struct mbuf *m; int n = 0; - while (mbufq_len(&rap->rxa_mq[i]) != 0) { + for (;;) { m = mbufq_dequeue(&rap->rxa_mq[i]); if (m == NULL) break; From nobody Thu Jan 18 22:39:43 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHk73MHNz57B7H; Thu, 18 Jan 2024 22:39:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHk7245xz4FgD; Thu, 18 Jan 2024 22:39:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617583; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ccNrt9wgNupCXhJBjuMx9bp+fJJ9c48uNMbOsqPb4bA=; b=XM0hes4td2aNNEG2PgyPw73rGOIYbQX7NyjoAjn3OsOskfdfXcwqLCeDqgpcqcJfZG9B3V 77B8Og5XFXdmV/CgwTbk307YFOlMrdvOaW13R0WwN2nQEKQJfuDFbrWB0WS+d22hmW2mG8 FvmRGYN6035xresxynvqjMRja9DUYrgXwLnJER0aKxcEI0kPve3eGzrsQpuTkehJXbzL/N JX9MJaFSpFte/lMTE7IvJUw9lIlkHXE2KnC0G63YkSuDwDNnJSgzEcjvUCol1D5Duf9CER 0d25GVkWO0xGkSvIyG/53GslTF5t10Hbd1qFQCdEr4WOtt+8arTp6gGLr+WTnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617583; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ccNrt9wgNupCXhJBjuMx9bp+fJJ9c48uNMbOsqPb4bA=; b=FJJ3tESC4SSmRaGih9YqPAJ4J+Vh3QGXDxHd9fQlVNjRkRMRAk1m4xP+7CxV/C1orFyLOy okrg6Eg8nMvjxFqZ2vyOzhc4vRkUGLs05N7V8z2acQfGVRUmuT8RWBpbl/taCrc/nNuD6g SS0JWY8SrW+Qo9JA6cYsrRBHieifUMjzF00q2lzJs1d3l+KY2q7+h8sIpeZIY68cK/BTJ9 yQ4dYiSD/Uvkq81tUqPZkJQ3z0ojPuepnB0mivKql1xQC9abLAHerG3QDNV5lt54rHO/Jg XMwW1h+Wh6/uneuGrcYrjAZWU7XjBeT6/K3U/oBuz2p/lx3Xm2VCOuV7XNkfEg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617583; a=rsa-sha256; cv=none; b=lcN8n52ytEikbBdxf5d3V4kUSnPzqCRwDNXIS9UfrXlVnKazgYZ9Umkz4uhIF0q2rl/SUe PJnhbd8KZDtU52vQJx3eBrqTXJbi4R96XvPWcH9EEFLqFHbZAM2NmEOvkEdvLCIa3jWgY1 yjEFS8C8yyiFsYeVFudQrpQkSCBL5XG7nPux5wqRWfArUgzhCiATNFilgwP1aV1Cnw8U/x NT49RFUFILsMc+ByOHYNxHZ8bF2f5IOhhhXJC+pNjM348uBeVb2JQqOcxBPDjm8v/OjJ81 Q3QfIZlSz9Zk+z5DoaKn5Bc/Y7ziCuN/Fzq7WFtS/5RDcezYXHR9KnrZ6g857A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHk719sCzQqD; Thu, 18 Jan 2024 22:39:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdhKT009005; Thu, 18 Jan 2024 22:39:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdhi3009002; Thu, 18 Jan 2024 22:39:43 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:43 GMT Message-Id: <202401182239.40IMdhi3009002@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 68fd49e8f56a - stable/14 - mbuf: Add mbufq_empty List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 68fd49e8f56a1a5c52590626b72e8faa1d395ffb Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=68fd49e8f56a1a5c52590626b72e8faa1d395ffb commit 68fd49e8f56a1a5c52590626b72e8faa1d395ffb Author: John Baldwin AuthorDate: 2024-01-09 19:00:19 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:37:18 +0000 mbuf: Add mbufq_empty Complement to the existing mbufq_full Reviewed by: bz Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43337 (cherry picked from commit 76f405ed63540aa2d989c231f70277062e76ccfb) --- sys/sys/mbuf.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index 2183d5b848f9..757eba3165f9 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -1609,6 +1609,12 @@ mbufq_last(const struct mbufq *mq) return (STAILQ_LAST(&mq->mq_head, mbuf, m_stailqpkt)); } +static inline bool +mbufq_empty(const struct mbufq *mq) +{ + return (mq->mq_len == 0); +} + static inline int mbufq_full(const struct mbufq *mq) { From nobody Thu Jan 18 22:39:44 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHk852Rxz57B9T; Thu, 18 Jan 2024 22:39:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHk82qyXz4FrQ; Thu, 18 Jan 2024 22:39:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tLUm03HIBPMhAdfcV30RefMTzLP3vnhYOv5SPuAcj+k=; b=fLQOinZYmgwHoqNoswZMjLy3aJrWX9zltP4N1cDSAEHjveMmsgxUx+ZiYnwIst3FZPrr2W lBZIyJb43odEC2wn81CcZyl+5H7wNiJJpcL2jwB261aNOpbM7yD+hreyK7ZrW2XLMYVfHO s12MRdZn3p5x6eQY2zZf7fIPIG8BStBPDFGd46sg8mjGuFWtIF7FsLcwFYMkjjFgqULNpJ ptFqpgTh+2So+G+RcuAC7op8vhV+m+F6DSSWX60QRs9Y7hJ3jetwBvDdeWDZUffW6rpPXR NdCuEmhzyMsrz3UEVL4vlXvtvGzvTE4nan2WiRoZYMxPR0X3EGwUUsWbsUp8Eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tLUm03HIBPMhAdfcV30RefMTzLP3vnhYOv5SPuAcj+k=; b=TXv44kn0sef6VNolZn+k/o6xh+w2r7pIjMKIzGF7g1pHq1iamWEeklm/AYGBlQo3bswAcw aHoTmgaXsx1AzFB8pHmN71fkNOdG7At8AjIF7hTgqkHQiiKlIWQaOsociZWUu3euOmwj1v CuiX7rS8FjMbY0oy/fjnygzrStXKwMIywyygaZy+tqLmPJdQssyB5Q1oebTl65xyjJ66Uo kzjw6QnDzowkKmeEE00q3iB+6WXzRlZjKuyeK9BlzpXdQ2C6pf09BPoNsnAFS6xwnzx12U RXq/Dngd5KVTVicmWFNT/lPJA7XRjxjzvkIYsz8caQuj6T4+EUSAzvLiWYjQWw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617584; a=rsa-sha256; cv=none; b=QGLJ74mRJj7RNm/TTBhGjz/ZKZuv4T9MycGL6+GZ5X2GZELVuCqgoO3MNSrmAuwGyWfesj x5FhoHc9croUvLWfbp+GztspnQnJl88/dzjnPh08UuFf1JTGIXg0vIZ0zPdhGzza0jdHzH KHGnWRh/F9xwRcofQIlI3BYfpckHxqYAkaoKSna/SVWeBQnJ/FzBCDv6g53cSXJ4g5KESB I1Z8bUhmMJxBVMF/7WKuN3RIJRP9luu+6fWIWibirx8CBPj+4Qv1pEHp/bkhXW0+GZImi2 3jtHOSr2YcVTH83TX3n6eCmwp3NRs/7ZfFYI5kiKkM6eaFxO+BkPhkPfZfaAbw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHk81xnQzQqF; Thu, 18 Jan 2024 22:39:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdiGI009068; Thu, 18 Jan 2024 22:39:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdiMQ009065; Thu, 18 Jan 2024 22:39:44 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:44 GMT Message-Id: <202401182239.40IMdiMQ009065@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 9c50c9b776e3 - stable/14 - sys: Use mbufq_empty instead of comparing mbufq_len against 0 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 9c50c9b776e3023d4b24cce0a5a587a7813c6c54 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=9c50c9b776e3023d4b24cce0a5a587a7813c6c54 commit 9c50c9b776e3023d4b24cce0a5a587a7813c6c54 Author: John Baldwin AuthorDate: 2024-01-09 19:00:46 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:37:29 +0000 sys: Use mbufq_empty instead of comparing mbufq_len against 0 Reviewed by: bz, emaste Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43338 (cherry picked from commit 8cb9b68f5821e45c63ee08d8ee3029ca523ac174) --- sys/compat/linuxkpi/common/src/linux_80211.c | 2 +- sys/dev/cxgb/cxgb_sge.c | 4 ++-- sys/dev/cxgbe/tom/t4_tom.c | 4 ++-- sys/net/if_epair.c | 2 +- sys/net80211/ieee80211_ddb.c | 2 +- sys/net80211/ieee80211_ht.c | 6 +++--- sys/netinet/igmp.c | 2 +- sys/netinet6/mld6.c | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index 42fb7a60ce57..ffc28e2685de 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -3198,7 +3198,7 @@ lkpi_ic_node_free(struct ieee80211_node *ni) /* Flush mbufq (make sure to release ni refs!). */ #ifdef __notyet__ - KASSERT(mbufq_len(&lsta->txq) == 0, ("%s: lsta %p has txq len %d != 0\n", + KASSERT(mbufq_empty(&lsta->txq), ("%s: lsta %p has txq len %d != 0\n", __func__, lsta, mbufq_len(&lsta->txq))); #endif /* Drain taskq. */ diff --git a/sys/dev/cxgb/cxgb_sge.c b/sys/dev/cxgb/cxgb_sge.c index ca5ff3f1d417..f57494065aec 100644 --- a/sys/dev/cxgb/cxgb_sge.c +++ b/sys/dev/cxgb/cxgb_sge.c @@ -1838,7 +1838,7 @@ check_desc_avail(adapter_t *adap, struct sge_txq *q, * the control queue is only used for binding qsets which happens * at init time so we are guaranteed enough descriptors */ - if (__predict_false(mbufq_len(&q->sendq))) { + if (__predict_false(!mbufq_empty(&q->sendq))) { addq_exit: (void )mbufq_enqueue(&q->sendq, m); return 1; } @@ -1954,7 +1954,7 @@ again: reclaim_completed_tx_imm(q); } q->in_use++; } - if (mbufq_len(&q->sendq)) { + if (!mbufq_empty(&q->sendq)) { setbit(&qs->txq_stopped, TXQ_CTRL); if (should_restart_tx(q) && diff --git a/sys/dev/cxgbe/tom/t4_tom.c b/sys/dev/cxgbe/tom/t4_tom.c index e5b173964451..77b6ba5d4032 100644 --- a/sys/dev/cxgbe/tom/t4_tom.c +++ b/sys/dev/cxgbe/tom/t4_tom.c @@ -323,8 +323,8 @@ release_offload_resources(struct toepcb *toep) * that a normal connection's socket's so_snd would have been purged or * drained. Do _not_ clean up here. */ - MPASS(mbufq_len(&toep->ulp_pduq) == 0); - MPASS(mbufq_len(&toep->ulp_pdu_reclaimq) == 0); + MPASS(mbufq_empty(&toep->ulp_pduq)); + MPASS(mbufq_empty(&toep->ulp_pdu_reclaimq)); #ifdef INVARIANTS if (ulp_mode(toep) == ULP_MODE_TCPDDP) ddp_assert_empty(toep); diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c index 2fa016c8f35c..7bc218321f01 100644 --- a/sys/net/if_epair.c +++ b/sys/net/if_epair.c @@ -177,7 +177,7 @@ epair_tx_start_deferred(void *arg, int pending) * end up starving ourselves in a multi-epair routing configuration. */ mtx_lock(&q->mtx); - if (mbufq_len(&q->q) > 0) { + if (!mbufq_empty(&q->q)) { resched = true; q->state = EPAIR_QUEUE_WAKING; } else { diff --git a/sys/net80211/ieee80211_ddb.c b/sys/net80211/ieee80211_ddb.c index cd4a4f191745..0042d5d4aeb6 100644 --- a/sys/net80211/ieee80211_ddb.c +++ b/sys/net80211/ieee80211_ddb.c @@ -222,7 +222,7 @@ _db_show_rxampdu(const char *sep, int ix, const struct ieee80211_rx_ampdu *rap) db_printf("%s age %d nframes %d\n", sep, rap->rxa_age, rap->rxa_nframes); for (i = 0; i < IEEE80211_AGGR_BAWMAX; i++) - if (mbufq_len(&rap->rxa_mq[i]) > 0) { + if (!mbufq_empty(&rap->rxa_mq[i])) { db_printf("%s m[%2u:%4u] ", sep, i, IEEE80211_SEQ_ADD(rap->rxa_start, i)); STAILQ_FOREACH(m, &rap->rxa_mq[i].mq_head, diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index a322c21b4673..cb981014fdb9 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -571,7 +571,7 @@ ampdu_rx_add_slot(struct ieee80211_rx_ampdu *rap, int off, int tid, /* * Get the rxs of the final mbuf in the slot, if one exists. */ - if (mbufq_len(&rap->rxa_mq[off]) != 0) { + if (!mbufq_empty(&rap->rxa_mq[off])) { rxs_final = ieee80211_get_rx_params_ptr(mbufq_last(&rap->rxa_mq[off])); } @@ -601,7 +601,7 @@ ampdu_rx_add_slot(struct ieee80211_rx_ampdu *rap, int off, int tid, * If the list is empty OR we have determined we can put more * driver decap'ed AMSDU frames in here, then insert. */ - if ((mbufq_len(&rap->rxa_mq[off]) == 0) || (toss_dup == 0)) { + if (mbufq_empty(&rap->rxa_mq[off]) || (toss_dup == 0)) { if (mbufq_enqueue(&rap->rxa_mq[off], m) != 0) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT | IEEE80211_MSG_11N, ni->ni_macaddr, @@ -1079,7 +1079,7 @@ again: /* * Dispatch as many packets as we can. */ - KASSERT((mbufq_len(&rap->rxa_mq[0]) == 0), ("unexpected dup")); + KASSERT(mbufq_empty(&rap->rxa_mq[0]), ("unexpected dup")); ampdu_dispatch(ni, m); ampdu_rx_dispatch(rap, ni); return CONSUMED; diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c index c3dd0302fb39..3a60feadcdab 100644 --- a/sys/netinet/igmp.c +++ b/sys/netinet/igmp.c @@ -3381,7 +3381,7 @@ igmp_v3_dispatch_general_query(struct igmp_ifsoftc *igi) * many packets, we should finish sending them before starting of * queuing the new reply. */ - if (mbufq_len(&igi->igi_gq) != 0) + if (!mbufq_empty(&igi->igi_gq)) goto send; ifp = igi->igi_ifp; diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index 309c9d11204f..6a64d1830afd 100644 --- a/sys/netinet6/mld6.c +++ b/sys/netinet6/mld6.c @@ -2995,7 +2995,7 @@ mld_v2_dispatch_general_query(struct mld_ifsoftc *mli) * many packets, we should finish sending them before starting of * queuing the new reply. */ - if (mbufq_len(&mli->mli_gq) != 0) + if (!mbufq_empty(&mli->mli_gq)) goto send; ifp = mli->mli_ifp; From nobody Thu Jan 18 22:39:46 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHkB6ZS9z57B3k; Thu, 18 Jan 2024 22:39:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHkB2cqvz4FpQ; Thu, 18 Jan 2024 22:39:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617586; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oPaYLO6l+lgYr84XifghPW0t9vC8NOri0BMJhvrlXpc=; b=g9VFZGvylzIeH34TTaPRgxbFPWUqsNOb+bcVx8sINn1HASsSoVf7sosYQTbt1xr2SjkHJt QjgmtWlEyry7X90vIsRQYb5875p3YUcym88G5iLj4taLlQgtUH28XfazCdlKnIgrkqSHSY Y0QOkTATSDiSvf+7M5vsDHwaowO7f6FQlON8yH1ZAu3Lqug4S4/HfJQHwzQnvF9ZyjE7eM sKV9H+bRmjymZxqJ3wzATCmH1mkMimr5eiCzG1BHv4DwHjmNMU0+sUp4kJsJX/ZzpGhRHH mZNLQ4pJK4gsgTBXZOToQWLL9slhsKoJYxX0iv72WBrzvoNVhLygBa326hmUVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617586; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oPaYLO6l+lgYr84XifghPW0t9vC8NOri0BMJhvrlXpc=; b=uL1D6K0Sk4R/l4F5ufJQxqLJj11I73igi+BayUug71piq/fLv/Xe05ku0fmsEVPcV3JCkb Ow3h3pVnvExfv6YnKA0otGSQd1KXw6EW8vLxBrh2AEK4GoFxmamkbbHuTVeWvOucswVn6c hFeeTrhpb6ECXIja2mAaj/eHEXJPznKXSwW2UkyFFSogocOqPj+7kIcVXfTHTRpPtFFbcA M2kpnqwud3/oD3cN/jO/w0chaPIBdo/KREFF28cRiQr063dTtU5VFWZT80YofO2gnVKgBC DT26ot77MDyzn0p7EbgcHb3tKTixtkaGei9pEm5jEOiLrv57nJquwGSK3SSBvw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617586; a=rsa-sha256; cv=none; b=QPerCbGBgUs7k0tQgXDjLs1XjQE5L0Qj3lBACBCnYXJXJUB2EyGY5V2RkEDB9EHpVgYMMn 4Ty0OqXJmEnBqeVdPNTlJE4H/7gCR4KlgKZzY4NqlOvBeLg752dmgTvJMYTvo1V7+J3LH8 HQRGwvpBX3yTXYbqt3To2PcPvCD8H1CvBPvjxR8/krFS7fe4CbDmUS/eGnErTB/91k3F04 3hjASgsbY6jjHR5u/QeV8+L46ic9y4rXIE3IlMKD9u80oy86y3OEVhthVqq0l9MRPTDX1t tM1Ag+Fm6pK05+vc69rhjqmbvX2BnJv+qFZi0h1d2f0/oHsjRuDODjAbHHdPVg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHkB1kHzzQvn; Thu, 18 Jan 2024 22:39:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdk4E009228; Thu, 18 Jan 2024 22:39:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdkLV009225; Thu, 18 Jan 2024 22:39:46 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:46 GMT Message-Id: <202401182239.40IMdkLV009225@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: e73b54810308 - stable/13 - mbuf.9: Document mtodo List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e73b54810308327c26aeca1737c89b4b2da1fe61 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e73b54810308327c26aeca1737c89b4b2da1fe61 commit e73b54810308327c26aeca1737c89b4b2da1fe61 Author: John Baldwin AuthorDate: 2023-12-28 19:17:22 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:34:52 +0000 mbuf.9: Document mtodo mtodo() accepts an mbuf and offset and returns a void * pointer to the requested offset into the mbuf's associated data. Similar to mtod(), no bounds checking is performed. Reviewed by: imp, markj Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43215 (cherry picked from commit 854e1fd692185749fea092b1431efd4a8e09c2eb) --- share/man/man9/Makefile | 1 + share/man/man9/mbuf.9 | 24 +++++++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index d237f677311a..30712ab4f987 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -1503,6 +1503,7 @@ MLINKS+=\ mbuf.9 m_pullup.9 \ mbuf.9 m_split.9 \ mbuf.9 mtod.9 \ + mbuf.9 mtodo.9 \ mbuf.9 M_TRAILINGSPACE.9 \ mbuf.9 m_unshare.9 \ mbuf.9 M_WRITABLE.9 diff --git a/share/man/man9/mbuf.9 b/share/man/man9/mbuf.9 index 84fad793b970..2b488f59cfd6 100644 --- a/share/man/man9/mbuf.9 +++ b/share/man/man9/mbuf.9 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 8, 2021 +.Dd December 28, 2023 .Dt MBUF 9 .Os .\" @@ -52,7 +52,10 @@ .Fc .\" .Ss Mbuf utility macros +.Ft type .Fn mtod "struct mbuf *mbuf" "type" +.Ft void * +.Fn mtodo "struct mbuf *mbuf" "offset" .Fn M_ALIGN "struct mbuf *mbuf" "u_int len" .Fn MH_ALIGN "struct mbuf *mbuf" "u_int len" .Ft int @@ -392,6 +395,14 @@ It is advisable to ensure that there is enough contiguous data in See .Fn m_pullup for details. +.It Fn mtodo mbuf offset +Return a data pointer at an offset (in bytes) into the data attached to +.Fa mbuf . +Returns a +.Ft void * +pointer . +.Sy Note : +The caller must ensure that the offset is in bounds of the attached data. .It Fn MGET mbuf how type Allocate an .Vt mbuf @@ -764,7 +775,9 @@ in the are contiguous and lay in the data area of .Fa mbuf , so they are accessible with -.Fn mtod mbuf type . +.Fn mtod +or +.Fn mtodo . .Fa len must be smaller than, or equal to, the size of an .Vt mbuf cluster . @@ -778,12 +791,13 @@ to the data contained in the returned mbuf is stored in If .Fa offsetp is NULL, the region may be accessed using -.Fn mtod mbuf type . +.Fn mtod mbuf type +or +.Fn mtodo mbuf 0 . If .Fa offsetp is non-NULL, the region may be accessed using -.Fn mtod mbuf uint8_t -+ *offsetp. +.Fn mtodo mbuf *offsetp . The region of the mbuf chain between its beginning and .Fa offset is not modified, therefore it is safe to hold pointers to data within From nobody Thu Jan 18 22:39:47 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHkC56DJz579vc; Thu, 18 Jan 2024 22:39:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHkC3znjz4Fv6; Thu, 18 Jan 2024 22:39:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617587; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QooBTnnmHHzhpbhScFkVivlpZxn2kSU6oEkhmKL0zg4=; b=qf3QgRoTiAVx8sLjDwlVvNfp/l+E8peE//Zq59t7hBwT0QVtiGYIrTDu29zi80WoDttudQ GTGdIDktBAoAanihntERE3YI5ZqBlh5svk/6fYwCK/8KjDm1jpY9u7Zyxq8kzkjy5ecJY0 OO50Fvisnx1NqR0FNlJdhuYxtNLPjgmk5oxhTAvI1F0o84srRWUlCVFgnp7a+nQeaL4M3O wZ+fwYNDYth2uS2LF3CEEtH2sTZvAWZi6Ku0hBjRTp9vegNPErvDoAKDBo3dGqqYFOukty qXWh9fH8SZ3yi9VX3XUuptIlKzMThCVYQIUCxts2IvTGra3hfOpPlsiM5bh4GQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617587; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QooBTnnmHHzhpbhScFkVivlpZxn2kSU6oEkhmKL0zg4=; b=Q3ijOsrZnepUlezzcB47X8jDIUIkSG/GjN/bflarHbjy/IBFHySZ5K3x5I1qIgpjt494fe 9JRim74JQSimNGNpxsao+pCHkCAgr3CEkMkUf3htWBcyEN9/DnghVVhGNNJu6X6Xkk02tz Bsnn+fy+wldnyQ9hXPMD7G/OWI+xeKAo1GosCCf9ubGw5kRQ6xyX9f3MwpH/+LOHiYjbox uOF5bKNJ6CDTxITSZYy2t+PNTSx1UAWiOwNmIE70v4uJPZGg4M1X43EszhUQAtuv1lJvbr KAEeW5oZiENo9YIaa2bPAsqolSieZVrAOUGYXGtElUB/Z8RhFh2oCFNw8kEEjw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617587; a=rsa-sha256; cv=none; b=w9dz/0X8zaHqsPSaq+HD6tgAXpdqMehD+5CDE8q6zOF1uVRCUUkZIcO3gm21QUxPZqWhIa oIODCza8hAYwXzikQLY8wEGfzuV4VF2qrwZbl3yvFe1XdaxQGVh/liPIg2l4MebUBt4ZF9 g+VhdfWAqlFU+5vuyy8griO+rzaPjGTPGBCprPg8GiSFf7qoRWVd6sW+p07dJgDeweellJ yMjATtssyK0JyvvD81Q2kgEVLsEyY4AeX21MKUlux+W/atIi24gE6c40OTgJ8dUPzYCM7c rA8lEQOOAZhch4u4puDHX+2gFYUFijrpqXhnG01KDd4jDDWuBEnT/vjUKY0/OA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHkC2wPHzQqG; Thu, 18 Jan 2024 22:39:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdlOj009276; Thu, 18 Jan 2024 22:39:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdlF3009273; Thu, 18 Jan 2024 22:39:47 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:47 GMT Message-Id: <202401182239.40IMdlF3009273@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: b1f42294456d - stable/13 - sys: Style fix for M_EXT | M_EXTPG List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b1f42294456d7d3cb3724e1a9a79c0a89a51c24a Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b1f42294456d7d3cb3724e1a9a79c0a89a51c24a commit b1f42294456d7d3cb3724e1a9a79c0a89a51c24a Author: John Baldwin AuthorDate: 2023-12-28 19:17:59 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:35:37 +0000 sys: Style fix for M_EXT | M_EXTPG Add a space around the | operator in places testing for either M_EXT or M_EXTPG. Reviewed by: imp, glebius Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43216 (cherry picked from commit f7d5900aa063c6e9d19e6372ba981fc76aa326a2) --- sys/kern/uipc_mbuf.c | 18 +++++++++--------- sys/netinet/tcp_output.c | 2 +- sys/netinet/tcp_pcap.c | 2 +- sys/netinet/tcp_stacks/rack.c | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c index 3c77b3eaf229..6d22e8e918a4 100644 --- a/sys/kern/uipc_mbuf.c +++ b/sys/kern/uipc_mbuf.c @@ -202,10 +202,10 @@ mb_dupcl(struct mbuf *n, struct mbuf *m) { volatile u_int *refcnt; - KASSERT(m->m_flags & (M_EXT|M_EXTPG), - ("%s: M_EXT|M_EXTPG not set on %p", __func__, m)); - KASSERT(!(n->m_flags & (M_EXT|M_EXTPG)), - ("%s: M_EXT|M_EXTPG set on %p", __func__, n)); + KASSERT(m->m_flags & (M_EXT | M_EXTPG), + ("%s: M_EXT | M_EXTPG not set on %p", __func__, m)); + KASSERT(!(n->m_flags & (M_EXT | M_EXTPG)), + ("%s: M_EXT | M_EXTPG set on %p", __func__, n)); /* * Cache access optimization. @@ -535,7 +535,7 @@ m_copym(struct mbuf *m, int off0, int len, int wait) copyhdr = 0; } n->m_len = min(len, m->m_len - off); - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + off; mb_dupcl(n, m); } else @@ -577,7 +577,7 @@ m_copypacket(struct mbuf *m, int how) if (!m_dup_pkthdr(n, m, how)) goto nospace; n->m_len = m->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data; mb_dupcl(n, m); } else { @@ -595,7 +595,7 @@ m_copypacket(struct mbuf *m, int how) n = n->m_next; n->m_len = m->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data; mb_dupcl(n, m); } else { @@ -1036,7 +1036,7 @@ m_split(struct mbuf *m0, int len0, int wait) n->m_pkthdr.rcvif = m0->m_pkthdr.rcvif; n->m_pkthdr.len = m0->m_pkthdr.len - len0; m0->m_pkthdr.len = len0; - if (m->m_flags & (M_EXT|M_EXTPG)) + if (m->m_flags & (M_EXT | M_EXTPG)) goto extpacket; if (remain > MHLEN) { /* m can't be the lead packet */ @@ -1062,7 +1062,7 @@ m_split(struct mbuf *m0, int len0, int wait) M_ALIGN(n, remain); } extpacket: - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + len; mb_dupcl(n, m); } else { diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index 834bce35f5ba..ba559500552b 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -2103,7 +2103,7 @@ tcp_m_copym(struct mbuf *m, int32_t off0, int32_t *plen, } n->m_len = mlen; len_cp += n->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + off; mb_dupcl(n, m); } else diff --git a/sys/netinet/tcp_pcap.c b/sys/netinet/tcp_pcap.c index 1fdb039e00e3..05d0de6493b3 100644 --- a/sys/netinet/tcp_pcap.c +++ b/sys/netinet/tcp_pcap.c @@ -366,7 +366,7 @@ tcp_pcap_add(struct tcphdr *th, struct mbuf *m, struct mbufq *queue) * In cases where that isn't possible, settle for what we can * get. */ - if ((m->m_flags & (M_EXT|M_EXTPG)) && + if ((m->m_flags & (M_EXT | M_EXTPG)) && tcp_pcap_take_cluster_reference()) { n->m_data = m->m_data; n->m_len = m->m_len; diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index c3a24f4c19b6..3e3900844989 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -15102,7 +15102,7 @@ rack_fo_base_copym(struct mbuf *the_m, uint32_t the_off, int32_t *plen, n->m_len = mlen; soff += mlen; len_cp += n->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + off; mb_dupcl(n, m); } else { From nobody Thu Jan 18 22:39:49 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHkG1jWfz57B9Y; Thu, 18 Jan 2024 22:39:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHkF5skGz4G2x; Thu, 18 Jan 2024 22:39:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617589; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p8r0SO+LsA5LSWP0FmaNkflRGzD9v4kMqM6gJDKow8g=; b=aB6AFuYgrO1jaiXOgWp1VMdPUKwDLCitztLbUCmY+zrk6fhwgXE3IGQCI1E1PfMyvTkij5 DRwJRCFbtxYpek2IDSsq7lq3vMNF1QTod4FJzPoWb5Sui/zyKAbIs6H7WHBf5fujryRzAG JT1BS1FkuvkhSWn/T8uUC4xrUppspT+NJvyVvRFkwNh+6SGrb88WdsyAvb7XT3qw8F1ey4 aGPo/8EM7KvaFoNxi9gq+OPAe1ghgPe6Qg9Y39IVRAaDYD09EJeFtYx/96EfiPDPHQs5sS 3us6QMwIcyLsZ858/iP7LdLierXzMPZMcpvM2+EFwWFRl0ot8Vku56hLB4nrIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617589; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p8r0SO+LsA5LSWP0FmaNkflRGzD9v4kMqM6gJDKow8g=; b=cYqnxqyzfHIf/2RvbQ5ePYBvMDDoI5FVxi7q47cADEY9ndVgdRZ+MvE07LaghsEZEfoCxr juSRHL366HQaiF6Ae8E6zokJLzxZeZyxLdTqFsQvj+NwQaGDEh4nCFAn03YdTFMUfFCAhi n43E1/6DcAhdHq97i1NEUQkUvjuAmd9vs0AlJ98iQ4uOYeymyvUpTD9Kax48R7Uq4emv8z TmxAhOEAKrQSB/s26rcokuoRuljJ0h/DldwICgnNaM3ZKddvavQtam2V43Lxr56WbMOPwS uyRwPPcKqUkPr4O4ozs1uwQh3sem2rl5n6ao05GgG5ibZBCEKgRqzkWYjzNEaw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617589; a=rsa-sha256; cv=none; b=DSTn/lkBtKet9cBVhXue6gwZW8DLflEdLiJcLCWK+2DD5P6/goW1FQ3H97q2rDSEZnqdYw SjgNg9y//ftvTDdQCxtacrZQqzWKRp0bYqpL+feQguJ/M0TyZm5ba8cliSjBnbFeVUPJaR YVOVRIDlsbwhZlknW/dislEQ7LWKLujLdAOQ2kGVDYnEqy1+OajRjh7VKgu9M11kCJCCZF G/Mz7Xk8ZdqeX9UpCgkrUc9xzg+X6M+OOaKdqdZgElrbI8bSaJeIncbE1jVSUrffA3CKwY ChbsAbNm3J9rhcmtF3FJHmRHdvwopi+ezzEi9vuM3Fxu9LpeZKyGCX78hK7OyA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHkF4zYMzQdP; Thu, 18 Jan 2024 22:39:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdn9j009369; Thu, 18 Jan 2024 22:39:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdncj009366; Thu, 18 Jan 2024 22:39:49 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:49 GMT Message-Id: <202401182239.40IMdncj009366@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: c62e10adba63 - stable/13 - mbuf: Add mbufq_empty List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c62e10adba6391809ac20aaf942c1ab7ad2b255c Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=c62e10adba6391809ac20aaf942c1ab7ad2b255c commit c62e10adba6391809ac20aaf942c1ab7ad2b255c Author: John Baldwin AuthorDate: 2024-01-09 19:00:19 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:37:20 +0000 mbuf: Add mbufq_empty Complement to the existing mbufq_full Reviewed by: bz Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43337 (cherry picked from commit 76f405ed63540aa2d989c231f70277062e76ccfb) --- sys/sys/mbuf.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index d44ff5e2afb7..a92c0924386b 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -1563,6 +1563,12 @@ mbufq_last(const struct mbufq *mq) return (STAILQ_LAST(&mq->mq_head, mbuf, m_stailqpkt)); } +static inline bool +mbufq_empty(const struct mbufq *mq) +{ + return (mq->mq_len == 0); +} + static inline int mbufq_full(const struct mbufq *mq) { From nobody Thu Jan 18 22:39:48 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHkF3Z1Yz57B9X; Thu, 18 Jan 2024 22:39:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHkD4vq9z4FkL; Thu, 18 Jan 2024 22:39:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617588; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YX7QZhVSSdW8OqC5VBOkJox+y7AhTq/Dnl74trJh84Y=; b=IeVAkPRGA9Gyq89phL5pbNx2Q5fBrhmoms6iLQsgru2BB/ku6dVUOvXvIYWRRaIhNwC1Ds XN7ElPo7cKJmoRHO349gMC9Hkk432U98ZI8umcrIgrAuLe3EAGmhdCbOraou5IeAd0ahzB 4fLaqIQsGxUpdqXOboYuTeLggP3pq88A/rLS8bDzJMhmSkV7hKokUCQGi3cI0sNuhWbJBo bP20L8Vyx4x0ww9OEpA2B8Ly4+4fWIglNioFcBMSjKZXmGpjTLOFVG/bnFTJZR8brZ7n+z zulkqzok0lHvA2qcNgtbB3SExiHHPssnTILkALxr7d5J5U9MSpxyXqi+b++pUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617588; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YX7QZhVSSdW8OqC5VBOkJox+y7AhTq/Dnl74trJh84Y=; b=FHAr3sOHP3UKnp81YLr4/XxjHIhK0ytq3+JyKr5qx7FFrXopjeRyL0YcQrwBLS/WSO5uJg LAHpLd6QorU56hClwqEeamSP4DPmTbo9Fd2zD/Gl92Wo2MIrRVTj5//DwRY+Rz2hD6/myt boCUYvXxu+PwIu1s8Z36GBFEoJvqN2W9djekCZ2RtSzMVlhWwQkEK2osKV3GYqZgaEoNIn gry32VxPTfxqm8nteRKnkTeafT+Rlfqv2dfIEZ7gi1S80G2UHCPdj31nm3uoP+uXLk1vAb YSFdc9Ec7r2dCzNlmIAY1Ihc85xKCd57fZlUQ+LYfNTyFdgDmwFh7yS7tNgaRg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617588; a=rsa-sha256; cv=none; b=f2Byjoli3zZoXI3ru2Jd4AuVauMovdhB0DKgEVe9frFAaUsAfqNP3vn9AIo8I7+T/Hqiuz PLlTDN+/EE7gv5+PNygrpSKNSlBWz/vtE1Kpt81MMHKJyIX3BgM2HffSv7EI/uCh2FS0i+ d4N3IQ1SiHjzLTm0LeLwRMQjGXithtQReMjY2WItpLgmDID9Gv6wvE/p0keclrx2OZFzgw Gq3PNsK8yb3cOjCuqUokoGhbcumrtZCEt1nB392zJA9jy782JTNo77X6v/fuFLHLe9YZhk dOkilMwE1LJpyR50TCyKDMeQCYvi1Z8yVQpjK854cfDpr8DnBr7wJFUyXLblKw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHkD408TzQdN; Thu, 18 Jan 2024 22:39:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdmu4009333; Thu, 18 Jan 2024 22:39:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdmq6009330; Thu, 18 Jan 2024 22:39:48 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:48 GMT Message-Id: <202401182239.40IMdmq6009330@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 18df65561983 - stable/13 - net80211 amdpu: Simplify a few loops that drain an mbufq List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 18df65561983f3092268f841b3b6df9146e36845 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=18df65561983f3092268f841b3b6df9146e36845 commit 18df65561983f3092268f841b3b6df9146e36845 Author: John Baldwin AuthorDate: 2024-01-09 18:59:48 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:37:09 +0000 net80211 amdpu: Simplify a few loops that drain an mbufq These loops already handled a NULL return from mbufq_dequeue when the queue was empty, so remove a redundant check of mbufq_len before dequeueing. Reviewed by: bz Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43336 (cherry picked from commit 6977311633c73f594ff3dae150d6d1fe06105a8f) --- sys/net80211/ieee80211_ht.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index 626f6386865c..e4d1ae223353 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -521,7 +521,7 @@ ampdu_rx_purge_slot(struct ieee80211_rx_ampdu *rap, int i) struct mbuf *m; /* Walk the queue, removing frames as appropriate */ - while (mbufq_len(&rap->rxa_mq[i]) != 0) { + for (;;) { m = mbufq_dequeue(&rap->rxa_mq[i]); if (m == NULL) break; @@ -816,7 +816,7 @@ ampdu_dispatch_slot(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni, struct mbuf *m; int n = 0; - while (mbufq_len(&rap->rxa_mq[i]) != 0) { + for (;;) { m = mbufq_dequeue(&rap->rxa_mq[i]); if (m == NULL) break; From nobody Thu Jan 18 22:39:50 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHkH3K8Nz57B3m; Thu, 18 Jan 2024 22:39:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHkG71LJz4G35; Thu, 18 Jan 2024 22:39:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617591; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bzz/oCZ5hILGCd1Gs2H9kSxvLPVEEaXHQaVb4c4q/Yg=; b=Q+QzUQWDab0JJPMIyM4zVSL84+vegnSuW0wQhIe6E4Tsmzmxs799kfunn/BYXr324Ojz1w 4oA8OrGMlm05PoUe6cQYY/UgbRqQJ6lbRiJ8acgFGQKUlWpEyh+DlxRTAlp4gqaoU3/1SW Ay/oi+bt9j/UYcYrnf24gWqwgOKirmYA3GAlAOLrbZD1XOtmNjg30Cimq6yc1+RJjZenXF N+0GoITSIC/zk8q1kcVMqaxiPasjYXbMFkL9/Q9JeEfrWciWhqMpIgiTT2t8S9NOgbpdDf +QZ0J70PMAoyv4Pa4noFdsiCeW/Q4NSytZDGa8f1MAeuQU8eqzt+oa2HXRuH4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617591; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bzz/oCZ5hILGCd1Gs2H9kSxvLPVEEaXHQaVb4c4q/Yg=; b=a/zLCuIYpEddOEeDWd7BwLtHkRqxQ127kCmxxlfIxdWoEa8l9SD1Y6wN7U3VFQAAOkK3fg 4fSx9ZuEtPSkaPc6HU4oIJaChwXmateqiOskM4VECdYjLfZfzxItGZ8O1Wi4oaaF/GlHjU CjiE3+gcOemxDTPKoqMFeenH2aURpZdFRDcFK4LKnyvXxlCvP6B09/FCMRDVDfH0ynBoL6 rYaoSmJrJBQlPcm/KeY0YWlteDtZg09rQuEIfGMfdZ3AUE+KsoH721I0PJolgsykVw3MJV dZBjtFy3cip3QEiI63TPT0lApRGJouC/YHHTSGKkLbRcvSv3G8aC2y8PajggVg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617591; a=rsa-sha256; cv=none; b=GApw2L+uef63+iWnVT2rnpbYhva2B0zw7h4YzxpRs8S2R+Ia8uzFVV44UtD342RyYRKIi3 WpMxbCV4kuaQ9+kfPX7ChbdFc9rL2YcXq3f9oDGUoLoNvLrDoCtj6rRHi/CE4dcOXDqBHx rFeew0I0xd1hI8JJj7/eckekcFi9x0xVVc3pYPBNSRoDfcLZOPzZtkStD2iR+8jCD/Gg8c 8ek6cfCKxS4HpF098MMbsYuRxFSqicmu60rZCLcgg/AVeceOIex9qrrP8t0O8IbseIpcMT sW6BhHH+pIILYx2WIKfsQqnqv5Z5MV0popaWJWevUm+RNAd0CRG1+BX5kzJCxQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHkG66sNzQqH; Thu, 18 Jan 2024 22:39:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMdo1r009430; Thu, 18 Jan 2024 22:39:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMdoo2009427; Thu, 18 Jan 2024 22:39:50 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:39:50 GMT Message-Id: <202401182239.40IMdoo2009427@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 3c274e9efb46 - stable/13 - sys: Use mbufq_empty instead of comparing mbufq_len against 0 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 3c274e9efb46330e87ad36619c79cadedd776664 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=3c274e9efb46330e87ad36619c79cadedd776664 commit 3c274e9efb46330e87ad36619c79cadedd776664 Author: John Baldwin AuthorDate: 2024-01-09 19:00:46 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:37:32 +0000 sys: Use mbufq_empty instead of comparing mbufq_len against 0 Reviewed by: bz, emaste Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43338 (cherry picked from commit 8cb9b68f5821e45c63ee08d8ee3029ca523ac174) --- sys/compat/linuxkpi/common/src/linux_80211.c | 2 +- sys/dev/cxgb/cxgb_sge.c | 4 ++-- sys/dev/cxgbe/tom/t4_tom.c | 4 ++-- sys/net/if_epair.c | 2 +- sys/net80211/ieee80211_ddb.c | 2 +- sys/net80211/ieee80211_ht.c | 6 +++--- sys/netinet/igmp.c | 2 +- sys/netinet6/mld6.c | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index d3b5cd7a5289..340503307c97 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -3198,7 +3198,7 @@ lkpi_ic_node_free(struct ieee80211_node *ni) /* Flush mbufq (make sure to release ni refs!). */ #ifdef __notyet__ - KASSERT(mbufq_len(&lsta->txq) == 0, ("%s: lsta %p has txq len %d != 0\n", + KASSERT(mbufq_empty(&lsta->txq), ("%s: lsta %p has txq len %d != 0\n", __func__, lsta, mbufq_len(&lsta->txq))); #endif /* Drain taskq. */ diff --git a/sys/dev/cxgb/cxgb_sge.c b/sys/dev/cxgb/cxgb_sge.c index 76bac52fe7f3..9d6d181ce64e 100644 --- a/sys/dev/cxgb/cxgb_sge.c +++ b/sys/dev/cxgb/cxgb_sge.c @@ -1838,7 +1838,7 @@ check_desc_avail(adapter_t *adap, struct sge_txq *q, * the control queue is only used for binding qsets which happens * at init time so we are guaranteed enough descriptors */ - if (__predict_false(mbufq_len(&q->sendq))) { + if (__predict_false(!mbufq_empty(&q->sendq))) { addq_exit: (void )mbufq_enqueue(&q->sendq, m); return 1; } @@ -1954,7 +1954,7 @@ again: reclaim_completed_tx_imm(q); } q->in_use++; } - if (mbufq_len(&q->sendq)) { + if (!mbufq_empty(&q->sendq)) { setbit(&qs->txq_stopped, TXQ_CTRL); if (should_restart_tx(q) && diff --git a/sys/dev/cxgbe/tom/t4_tom.c b/sys/dev/cxgbe/tom/t4_tom.c index 2939ec9b5564..22c34c4d217c 100644 --- a/sys/dev/cxgbe/tom/t4_tom.c +++ b/sys/dev/cxgbe/tom/t4_tom.c @@ -327,8 +327,8 @@ release_offload_resources(struct toepcb *toep) * that a normal connection's socket's so_snd would have been purged or * drained. Do _not_ clean up here. */ - MPASS(mbufq_len(&toep->ulp_pduq) == 0); - MPASS(mbufq_len(&toep->ulp_pdu_reclaimq) == 0); + MPASS(mbufq_empty(&toep->ulp_pduq)); + MPASS(mbufq_empty(&toep->ulp_pdu_reclaimq)); #ifdef INVARIANTS if (ulp_mode(toep) == ULP_MODE_TCPDDP) ddp_assert_empty(toep); diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c index 70db87c46faa..e4b37f976a8c 100644 --- a/sys/net/if_epair.c +++ b/sys/net/if_epair.c @@ -180,7 +180,7 @@ epair_tx_start_deferred(void *arg, int pending) * end up starving ourselves in a multi-epair routing configuration. */ mtx_lock(&q->mtx); - if (mbufq_len(&q->q) > 0) { + if (!mbufq_empty(&q->q)) { resched = true; q->state = EPAIR_QUEUE_WAKING; } else { diff --git a/sys/net80211/ieee80211_ddb.c b/sys/net80211/ieee80211_ddb.c index e3464bb16b0a..29de6d10fcc3 100644 --- a/sys/net80211/ieee80211_ddb.c +++ b/sys/net80211/ieee80211_ddb.c @@ -222,7 +222,7 @@ _db_show_rxampdu(const char *sep, int ix, const struct ieee80211_rx_ampdu *rap) db_printf("%s age %d nframes %d\n", sep, rap->rxa_age, rap->rxa_nframes); for (i = 0; i < IEEE80211_AGGR_BAWMAX; i++) - if (mbufq_len(&rap->rxa_mq[i]) > 0) { + if (!mbufq_empty(&rap->rxa_mq[i])) { db_printf("%s m[%2u:%4u] ", sep, i, IEEE80211_SEQ_ADD(rap->rxa_start, i)); STAILQ_FOREACH(m, &rap->rxa_mq[i].mq_head, diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index e4d1ae223353..5daaacae8d12 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -571,7 +571,7 @@ ampdu_rx_add_slot(struct ieee80211_rx_ampdu *rap, int off, int tid, /* * Get the rxs of the final mbuf in the slot, if one exists. */ - if (mbufq_len(&rap->rxa_mq[off]) != 0) { + if (!mbufq_empty(&rap->rxa_mq[off])) { rxs_final = ieee80211_get_rx_params_ptr(mbufq_last(&rap->rxa_mq[off])); } @@ -601,7 +601,7 @@ ampdu_rx_add_slot(struct ieee80211_rx_ampdu *rap, int off, int tid, * If the list is empty OR we have determined we can put more * driver decap'ed AMSDU frames in here, then insert. */ - if ((mbufq_len(&rap->rxa_mq[off]) == 0) || (toss_dup == 0)) { + if (mbufq_empty(&rap->rxa_mq[off]) || (toss_dup == 0)) { if (mbufq_enqueue(&rap->rxa_mq[off], m) != 0) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT | IEEE80211_MSG_11N, ni->ni_macaddr, @@ -1079,7 +1079,7 @@ again: /* * Dispatch as many packets as we can. */ - KASSERT((mbufq_len(&rap->rxa_mq[0]) == 0), ("unexpected dup")); + KASSERT(mbufq_empty(&rap->rxa_mq[0]), ("unexpected dup")); ampdu_dispatch(ni, m); ampdu_rx_dispatch(rap, ni); return CONSUMED; diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c index b2a862cf491a..a775b1704d8c 100644 --- a/sys/netinet/igmp.c +++ b/sys/netinet/igmp.c @@ -3364,7 +3364,7 @@ igmp_v3_dispatch_general_query(struct igmp_ifsoftc *igi) * many packets, we should finish sending them before starting of * queuing the new reply. */ - if (mbufq_len(&igi->igi_gq) != 0) + if (!mbufq_empty(&igi->igi_gq)) goto send; ifp = igi->igi_ifp; diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index 6cd3ff9f57da..15d3b5d85fb2 100644 --- a/sys/netinet6/mld6.c +++ b/sys/netinet6/mld6.c @@ -2989,7 +2989,7 @@ mld_v2_dispatch_general_query(struct mld_ifsoftc *mli) * many packets, we should finish sending them before starting of * queuing the new reply. */ - if (mbufq_len(&mli->mli_gq) != 0) + if (!mbufq_empty(&mli->mli_gq)) goto send; ifp = mli->mli_ifp; From nobody Thu Jan 18 22:43:39 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHph0TZrz57Bd3; Thu, 18 Jan 2024 22:43:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHpg72bQz4K02; Thu, 18 Jan 2024 22:43:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617820; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JZdijU4kWFz5dMmndKlk1buQLAEO2+LdJxcvtSYZX2I=; b=N+gGwJ/IWTPXlJJhRIaObgS/rqEsxY3XoFIKwqbD57erwb8WXSPgmsOef4wN74HT5/cMUT ovJhBRLI9wTJiNgQ5qoKQ8yTqlJmSMuHEAbN+U3T/d4mFampG96DKZIEsY5QE9tKHRbeMF xKsHXt85O2QKLv7yErdpZ71FIIYapxS2t330tmGRUBP+lzixVnnbgowC3tnG8CeEhtdsA1 q4fzhGvuu8d7I6LsGgxwXtAcRUIkXySPMHY68TvFpzE5vp8GecQmWGd7PvkMHkiKGsEseo jXIj1u/THx1l4MtCX5Hy35cvPiXWs6vxo6V5B2VRm1CS+ye3SlYO3fzT1J8z3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617820; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JZdijU4kWFz5dMmndKlk1buQLAEO2+LdJxcvtSYZX2I=; b=mp1gK7OO3A02Gl20x/3UEacx0B5pkO0YLG0QpzLQFKmaj3H/YNXyXM5qLEOHUh7+Ll6OnS M8Ap7pedrwSZciEzVXLlTwDESUxSX6wp5x4SpY+aTBf5H7iNtVtReWAIazs0mg3jahjGy+ 8TsIRdgxX8zzzkug+UQ6wXy3iZaEinm38BRgw9OADb2vPxP3+NQURdFMr9PywdrS8gwp2i zH/vglmim9zYOMzVlgVPdneyTMsZYtywN6hVXcV5rQmFMwNb89mYvlj2M52CjNTidG8/BZ 26p1lKVq2lxtPTxr0nge0j6HXSYAiKKgVE1CIgAEkT4z1byy9xZ01DKIiMwWig== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617820; a=rsa-sha256; cv=none; b=dbHjIVKuRCSN1PBI1t3TD4jshA26G/E2WelGR+SVTVOSIzM27qYxdOGfJ/XmxJQUXg+VMp Cgv9n4vF7RNizleHW8katbankwURfsE66TJu0+P+Womb95fknXbzE6LMH5svk2b9ua6NUj B04B2V1SCFBXnorX56JUyMy7ecmpIwawDx0LgWCvMLOzZ0lwrkQXiG51jP1XlIzdqhpNUM eYA2uvwLybHaL8kJA+8FKbZPqh6AwZHklDavroxW3rV5mDo12L83Ted1sv3+SOeWvoEmJ0 ZWSV632GP2pgO06W9Q2VwZ0ADxQUGJQVk5rkE/yZNtW8DOTMz2VYNmWjXczJNQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHpg65WMzR48; Thu, 18 Jan 2024 22:43:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMhd1w024853; Thu, 18 Jan 2024 22:43:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMhdN7024850; Thu, 18 Jan 2024 22:43:39 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:43:39 GMT Message-Id: <202401182243.40IMhdN7024850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 0469f7ab3c7e - stable/14 - ctl: Always return errno values from ctl_port_register List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 0469f7ab3c7e460d581ba37569598e4c90395a6c Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=0469f7ab3c7e460d581ba37569598e4c90395a6c commit 0469f7ab3c7e460d581ba37569598e4c90395a6c Author: John Baldwin AuthorDate: 2023-12-27 18:09:24 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:40:31 +0000 ctl: Always return errno values from ctl_port_register Return EBUSY instead of a bare 1 if a port number is already active. Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D42929 (cherry picked from commit e03e77ba4d0570511fdc1be192459e1160c650a6) --- sys/cam/ctl/ctl_frontend.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/cam/ctl/ctl_frontend.c b/sys/cam/ctl/ctl_frontend.c index ed5e2b3ac8c9..dd4607abb76b 100644 --- a/sys/cam/ctl/ctl_frontend.c +++ b/sys/cam/ctl/ctl_frontend.c @@ -163,7 +163,7 @@ ctl_port_register(struct ctl_port *port) if ((port_num < 0) || (ctl_set_mask(softc->ctl_port_mask, port_num) < 0)) { mtx_unlock(&softc->ctl_lock); - return (1); + return (EBUSY); } softc->num_ports++; mtx_unlock(&softc->ctl_lock); From nobody Thu Jan 18 22:43:40 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHpj278mz57BY1; Thu, 18 Jan 2024 22:43:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHpj0xfsz4Jwm; Thu, 18 Jan 2024 22:43:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617821; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=galBNxDcFP0uoErUL91CYNbuFJabg6lFB6UinZq4/CU=; b=R1EAiUZpEHQ0BqJ3IogGOOIduODCPgt236Rtb/3atkpZwAAQO+w0q0F4qXAmOiI0Dn9g3M v5/DeR1dHOzjS+OQ/L0TWNIR54uPBENoB8/9FJh1VDXn7yI5LZPVOmI9vElcH2Qb87LpRg 5mYA3I77nYP7gwZ9xGF3E3M5Iz0NtBoTT7HbCWRei0GKAnPotqNGhllDS6cM2d7aZ8a1TX VKkDQS1ZzbjlyWg77k/3YGrD44g0sbeylbgy9RM6F3rkBZ7dQ3G4G8WNFnFlDtam+CYGr2 tdXg3VUzbbRpJ7q49V1sq+GHnQy4WrWzuc6rrXnmHNaF8UnxEkPe+01KiM15KQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617821; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=galBNxDcFP0uoErUL91CYNbuFJabg6lFB6UinZq4/CU=; b=ELeEj0J5g48pQazRxEYj6PqA3Cf3xdw1KSAWmQZHchkuie/ov0PBbkXK6z43oo9qBCHO8n LM2UK8wJnXRP0+/U8JhZGT8DSYsJUaWAibElJdVmEI0UzIpgeLAVNbMkESej7R3oWFL6wJ 7TgTSGqH0euXddh+T96Q2yFXhANm0dPdRFdHrStIA6UsGQTXmIZ/RoIQQLpJrxwYaKWSuN Ccb6cK+R4y9Cqr/9u6muGSXVleWX/oG/hm4QCk8SXFmxVnPSR20IIi3bUIY0VkS8pyrxGJ X4P5/aMCFirUWlz5YwdhmSDVJzLmheZeuwUUNvw1EBGw69QFVbMxTqaluPqAXA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617821; a=rsa-sha256; cv=none; b=XlQGnssrV2iglKGgGgbzf+oWnw2PgC3bunjhasbvAKiJ784Kvy+71XUUcpBxcXiiQ3ADQ+ XXcviY1RZnlCD/ojO4RLQ1qk5xvtVwSsOAzg5OUcF/dgTZG1o++AmM7sTUzM2rvL7BGQRK zh+ZaG6wlQyzSg13DEBfm2E4WMHYSA2ZlwweFBY5uJ4qsQLwixhElhDFAshx5N6LdYTW6f oQbJrEF/UXBTi6aprUi/GR0eUk/5IiCW2H7H7gDgps1qf5ApWkdQ1B8xpRl/yxgJk//d5W hpsshImnXEE/M206PZfJvf385dMDn38PfiB0aW1JF59avxgSy/C4vrbges/x8A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHpj00qfzR49; Thu, 18 Jan 2024 22:43:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMhe8B024909; Thu, 18 Jan 2024 22:43:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMhels024906; Thu, 18 Jan 2024 22:43:40 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:43:40 GMT Message-Id: <202401182243.40IMhels024906@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 99f93a33aed4 - stable/14 - ctl_frontend.h: Note that ctl_port.frontend is set by the FETD List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 99f93a33aed443194b0f30035f4883b72aa55e4c Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=99f93a33aed443194b0f30035f4883b72aa55e4c commit 99f93a33aed443194b0f30035f4883b72aa55e4c Author: John Baldwin AuthorDate: 2023-12-27 18:09:40 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:40:39 +0000 ctl_frontend.h: Note that ctl_port.frontend is set by the FETD Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D42931 (cherry picked from commit dfbb6f2e5991ecc3143d75f2358ec7f12f0656b1) --- sys/cam/ctl/ctl_frontend.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/cam/ctl/ctl_frontend.h b/sys/cam/ctl/ctl_frontend.h index f04e0d564888..650ece567e46 100644 --- a/sys/cam/ctl/ctl_frontend.h +++ b/sys/cam/ctl/ctl_frontend.h @@ -213,7 +213,7 @@ struct ctl_wwpn_iid { */ struct ctl_port { struct ctl_softc *ctl_softc; - struct ctl_frontend *frontend; + struct ctl_frontend *frontend; /* passed to CTL */ ctl_port_type port_type; /* passed to CTL */ int num_requested_ctl_io; /* passed to CTL */ char *port_name; /* passed to CTL */ From nobody Thu Jan 18 22:43:42 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHpk2dWRz57Bgq; Thu, 18 Jan 2024 22:43:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHpk21V7z4K7Z; Thu, 18 Jan 2024 22:43:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617822; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KKhNrw9lIqBjUs7mo1nXYKODUWeelOBcgBcD6rSoCEU=; b=VTShAd0xoDPuV3QuUTGPwgKb/9t/gYJIRPkC/oLQbprhUiNpGfA2qbbYmoBgYdsvcNWdiT RcTal7niCJ1vBmcotbKRwebL/f+kGl1geXHEjN/S5mLgvlv+S/nNw23qMd9AqXHfm3qPJz mJlT33/lsiY31IRRxCRY6Vo9zM+YnLxuOHui1/f5D0l/tpLVFuWBpHyq8pnmYyh/qZoyUU 5SjeiF9y8c6/ivlmxREM/twr28swjvf0m1NvT3uBR3MeJzic/EpsFl8GHVTCQ/MgT0w34W oUHfTnvsaH6VyIvWz1rYnOQkvOvc2mXQpfg9b5NDVD5PrTjAm9rOO/hz7+iT3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617822; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KKhNrw9lIqBjUs7mo1nXYKODUWeelOBcgBcD6rSoCEU=; b=DQnue1ePTEbjlHtyR+GmCNHfFpBDMkU+i5TVJiA5gZApLfs7gW5TABX52fvmOkkdfNvVPj azJ5l9T98iiEDzEpVENAtYXxLeWVUIJlik8bRCKgKYD79uvDU4a49eI/oAI9JHrYUzar4a fcWFQSJrJ6xrqpscTuA6AqUTyWYKqhS3ERna1WccSxN3WfYeXUKxrZmH2iLpwxOuaTOkF/ dFcpaQq2Li968S4oUduj982kK+RYqJY4KUcrxgujT4YV00ly0mCDL1VH5Iel/qO94rf58a n1IE0PygrNG4uBOG9u2Dp1aE8K96edXn3tNSrwEXwqbRbOxCp3ahwUiXR8vZlg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617822; a=rsa-sha256; cv=none; b=v8LpFFuuaQLqh8ukzigUj1dx8Sq+2E2MU42hQyy3cifVCSbqgSWRGeXP+8dSTeb134t0VY J1wLMp9gMj1WS+LmdOd9yh7BFFWlNRF5LtmqtkV0M7GzbxPw2auIsMUuMVYUu4XLmt6jjm 1mR8JK+4YYxaHfZ3VkmwtvFtZItyCAA6jH5umI5nsSHcljcXdSq9CViS43i0wvCycdIU/n 0Yf2pz0idXv0dZXc1/xaRp9RDhnhNq0FpxmuvGDzbxO9Y8Z/OEfx8biG1GeDWpOjYUf2KC sPIToko2/vdx30ss1ZgNHUJHctwFdBrdtxU02/RAcyGH/OMGfUhf6CS6pFZJBA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHpk10mDzQrP; Thu, 18 Jan 2024 22:43:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMhgZ9024957; Thu, 18 Jan 2024 22:43:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMhgoU024953; Thu, 18 Jan 2024 22:43:42 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:43:42 GMT Message-Id: <202401182243.40IMhgoU024953@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 873bef94a2f2 - stable/14 - ctl: Add missing comma after CTL_FLAG_ALREADY_DONE List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 873bef94a2f284406be3109e9d6d0557658ac04f Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=873bef94a2f284406be3109e9d6d0557658ac04f commit 873bef94a2f284406be3109e9d6d0557658ac04f Author: John Baldwin AuthorDate: 2023-12-27 18:09:52 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:40:45 +0000 ctl: Add missing comma after CTL_FLAG_ALREADY_DONE Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D42930 (cherry picked from commit 105eee97b0253fe6b66bf4c33fe3c4e17f30f05f) --- sys/cam/ctl/ctl_io.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/cam/ctl/ctl_io.h b/sys/cam/ctl/ctl_io.h index 115e336bd354..aa7a9c35c876 100644 --- a/sys/cam/ctl/ctl_io.h +++ b/sys/cam/ctl/ctl_io.h @@ -106,7 +106,7 @@ typedef enum { CTL_FLAG_IO_CONT = 0x00100000, /* Continue I/O instead of completing */ #if 0 - CTL_FLAG_ALREADY_DONE = 0x00200000 /* I/O already completed */ + CTL_FLAG_ALREADY_DONE = 0x00200000, /* I/O already completed */ #endif CTL_FLAG_NO_DATAMOVE = 0x00400000, CTL_FLAG_DMA_QUEUED = 0x00800000, /* DMA queued but not started*/ From nobody Thu Jan 18 22:43:43 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHpl3VdXz57BY4; Thu, 18 Jan 2024 22:43:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHpl2rM5z4KCS; Thu, 18 Jan 2024 22:43:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617823; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vgX6K72sYjondWz23kxIEGT8DLztexB5mgOuxk8WVZI=; b=E5tradSgOzIfOeAE1oxElA0lDhOrpA5YzEXSdNBZtlPkGsrS4gvQfDR1ahkMDpxhsLs9bK tTwZ54AJErxnI8o0K2skN8dOsqV4eFfh0py5UacvMZvRjYox3DjrSiCSet4wIE9TD+1qrV 0WSeZd5Ht2a/sxHOaunO5N/ihj5YZn/W8R3gTHlv1m9f9c3Uqa+RTu0y4W47YJxwtH40VV ldhNVnMG42eOY3UjBLHlmAhVmZvzUmArjnHlGk0B/TBzqL62FeXsuTSEX9rT94eziwftRh C9nvoMjoVGly2mtLbILR+uphT2Z96reGXderF8UCc2GbamR4EH8ucbwYl4ernQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617823; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vgX6K72sYjondWz23kxIEGT8DLztexB5mgOuxk8WVZI=; b=Imef8v9IDJWf6oAP26qPsP/26RDILDi/UPw5elA71xgkSCuwfTZk+iUfrDWLjAQQ40DUCU Bq5EpA4Rbv9KxL7FAfQo+u7k1390VAvCpK6aXj8Lrm/kI+QmPpwpReODPWcHigOdfsh1W4 xviqy9V/fLoIniCJ4gLHQPSDFZHAR4KalrzrKu3ZBl2SmsOJDlIT8TovBBivNPtT9imo1j ZAdjtyMLeiHnEw81WPvEcYS9cHtJjdixgWfM/qS/Ds7bLGinX4QIRROxEh9YhxIeDKPWiw PSvx8SpwF1Tw17Clz+GrelVtYT6ZPHFfqOQvvLgCCQXf+l3m273ZTOUC/eEcAQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617823; a=rsa-sha256; cv=none; b=ZlWWrdNK2jrDnB+192R7gf07GCwiUS5Out+2LqrwsQ7p6XxH9ppLKDOwu14CpUoF/Cj5G8 ieT149tLIJ4mHOd1nEJyvzBexHuOCEG9gzyMqEHYWhVbW6Hh+2D/pcYCmIy25xMwYKgcU3 M2lcpQH8/dtGWmVhEWhtuZQJAnJmkvAEL9mQS1X1I0DDyjr944EH8Wt1ZNUOZd975zYkiQ uiqi3UZ92ZLolut3+opLbiGONwD1rG+GGiSkJM5cShzBtxhfWEUonjoVgFPhK3GYzyTwn0 txCvRiipPWUv4xIob6xPj3u9Pm/yN5Fn0HxX9CXEjjgDBlK7FHJ2Xj2hFEtJpQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHpl1nsJzQrQ; Thu, 18 Jan 2024 22:43:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMhhrd025017; Thu, 18 Jan 2024 22:43:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMhhwh025014; Thu, 18 Jan 2024 22:43:43 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:43:43 GMT Message-Id: <202401182243.40IMhhwh025014@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: e467a320e3d9 - stable/14 - cltadm.8: Correct documentation of -r arg to port command List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e467a320e3d90802b78fa185f2795bee2d2b29f3 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e467a320e3d90802b78fa185f2795bee2d2b29f3 commit e467a320e3d90802b78fa185f2795bee2d2b29f3 Author: John Baldwin AuthorDate: 2023-12-27 18:10:05 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:40:54 +0000 cltadm.8: Correct documentation of -r arg to port command -r does not take a target port argument Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D42932 (cherry picked from commit f12d378f4f3f3b06597d6f11eaf320d26d8318b2) --- usr.sbin/ctladm/ctladm.8 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/ctladm/ctladm.8 b/usr.sbin/ctladm/ctladm.8 index 66d0271403fb..ba2712cb278c 100644 --- a/usr.sbin/ctladm/ctladm.8 +++ b/usr.sbin/ctladm/ctladm.8 @@ -35,7 +35,7 @@ .\" .\" $Id: //depot/users/kenm/FreeBSD-test2/usr.sbin/ctladm/ctladm.8#3 $ .\" -.Dd March 9, 2021 +.Dd December 27, 2023 .Dt CTLADM 8 .Os .Sh NAME @@ -167,7 +167,7 @@ .Op Fl W Ar wwnn .Op Fl O Ar pp|vp .Op Fl p Ar targ_port -.Op Fl r Ar targ_port +.Op Fl r .Op Fl t Ar fe_type .Nm .Ic portlist From nobody Thu Jan 18 22:43:44 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHpm5W14z57BY5; Thu, 18 Jan 2024 22:43:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHpm3xXfz4KFv; Thu, 18 Jan 2024 22:43:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617824; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=roS35OXhpfvDGmW5hueTBzYfl3tqfgymUlUeSbx+zoY=; b=Lkwvh6CsCkohY1o80tI1eHLATaVwQPUN6Cy+LRAO75oDPWzTWGsaXZi9sh9o2HPUn7oNru 2eQ1gN6ZT8v2JpGq0f0sDlXa0w7xSOyxg+SCrEARIY/Svu3yQkViphT7sH6S25USpV+Beq cZtkHDSHOMVIiQIK4fyB/jKVNQKmZChfcTeRBVgc2t+QbQuwBULOH3xIvt5sYBQud7tU4W ocjOSSS82GmklivJFrDYrcEm2xVBuR8XAB98gyNdpJysZYnB5A2AV1kNhisw9khqUnn8i0 NNODFXXr7L7DnGuHnCzw2nxCdYIdRIoa1QAU+eCkMVrCgGJiYP9j4gvFcKUxWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617824; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=roS35OXhpfvDGmW5hueTBzYfl3tqfgymUlUeSbx+zoY=; b=kxxhmAXuOAKcetR4nrO8wrbVRNrutCdV8/grn00bpdpQBTifcH0iOxNkzam+RLPuKx0t6t /ZkkErbzjjDNN19O/SO2NEn/b3rEcJH627AEwV9u0SzvTSotnrGaaYgOx02n2rxARUxeQy riNfqURnqRUrD3eLwrjIMjyhuCyRqDy+5fDha/9DtCcpWMoDMdHJcaJvzzmApR7RwNQy7O 39i4mSnVW/MJ+atvM57bgQlx1eh2QxYX01Ju0NeBKyoPZlcVfMOzfUmnJJbwphGcb20M+G b3nnLpAGwFIvcDLlkR8KDJxUMVpIT7nMuw9NTcRSJIW40kobPn7UzVTygNH8zA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617824; a=rsa-sha256; cv=none; b=Qf6mHDtd2PnuC16tGo4TCpW64U3qHmAnSZBIE6YHtgSd4uSpuwSk4gGcPPgMakCY60Yiqy KOaUYBy3HUjsJt7u1OUhnzQNUpSPMxOT8fOoeAL04I8Ki6hQ48N9C/iQnOR3kys0hn3Zl1 CZm5p3sys4JwNX9vfDXvyGaqVcphJ5DJFL+z50Ye3M7N/vsLofYH8ezWWXLWz3+wMEGblx hiF4bvDusLnJ7jX1V4JPviB3s39Ugvduv8Gg5/D4FqMHf4nDME8Fsan7Yy7FFttbBoxHT+ jZ6V1V/crjC0NizEtg07kX6At/LXfKRV8WefS3DNx4KXGXp1JzYtpiFlLTDPdw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHpm334kzQfL; Thu, 18 Jan 2024 22:43:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMhiuQ025071; Thu, 18 Jan 2024 22:43:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMhiOl025068; Thu, 18 Jan 2024 22:43:44 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:43:44 GMT Message-Id: <202401182243.40IMhiOl025068@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: f55f4ef13e06 - stable/14 - ctladm: Fix a typo and add a FALLTHROUGH annotation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f55f4ef13e06c2815861edc305e6139bd04cfbc4 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=f55f4ef13e06c2815861edc305e6139bd04cfbc4 commit f55f4ef13e06c2815861edc305e6139bd04cfbc4 Author: John Baldwin AuthorDate: 2023-12-27 18:10:42 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:41:27 +0000 ctladm: Fix a typo and add a FALLTHROUGH annotation Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D42934 (cherry picked from commit e8d83548349d8cafadd1f95667fd8b055b228931) --- usr.sbin/ctladm/ctladm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/usr.sbin/ctladm/ctladm.c b/usr.sbin/ctladm/ctladm.c index 62dd87155671..3ccf93d5e94e 100644 --- a/usr.sbin/ctladm/ctladm.c +++ b/usr.sbin/ctladm/ctladm.c @@ -574,10 +574,11 @@ cctl_port(int fd, int argc, char **argv, char *combinedopt) } case CCTL_PORT_MODE_REMOVE: if (targ_port == -1) { - warnx("%s: -r require -p", __func__); + warnx("%s: -r requires -p", __func__); retval = 1; goto bailout; } + /* FALLTHROUGH */ case CCTL_PORT_MODE_CREATE: { bzero(&req, sizeof(req)); strlcpy(req.driver, driver, sizeof(req.driver)); From nobody Thu Jan 18 22:43:45 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHpn6bdyz57BY7; Thu, 18 Jan 2024 22:43:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHpn4wbVz4KG7; Thu, 18 Jan 2024 22:43:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617825; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xgu/MXPZ/Bjx+vJAx7bRTz3SuCHC0/7h2xLCrpTtm1g=; b=M9JG6ad3iqwJmGLSg3KhgYqaKmQtEuMLqw9XeIsmkfQBwke+gJclZ94va8RaCLa+GtgzhH kT56jHfkxqzCAvujseRxlHk7PHAz4kAblRZ0ZOK4oqqWMbVszf86LHFTEWXIFd3vCJbbgq edjmVP/6gT7WzB3fOsA9zWWYtXz3MA3TIvJEBSS2tEqkUp8HUPgeIiW/xVsh2Rf1nu+Beg ZNdcf0myeyk3pCSiHpM1alqVMhZ9nWuPlbC4qIQSk3XMl5HThwcGZicfsd3ugxB4GaA0Q2 A3nJwfIHOkdkh1fPv8WQkheH7i7ncQm2t+98NWx7ANjcUDXk6gKycCnsG2nFLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617825; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xgu/MXPZ/Bjx+vJAx7bRTz3SuCHC0/7h2xLCrpTtm1g=; b=b3hArxgrjD8KI8XnL2mPWp2ghJ6rEZAEO0yIwpBH3Fe5DHrcaIyUWIfvr2leI2NUbo2FRK w6l+cf6KIvRCy0NU+NmwxMn1gXssoYfRVXRyMhxYMc934zf5SwzAbjH1IXoOtmBZ+/nK1X OjRgidpwwpFuMWxtBvZEKt3ohOR1zT6wBssiEIFBgiGpvNRP5wjkovZ+KGwJiiew3Wqo3a 6U1er3BHbvAkkszbo1ofGh23zOOvQ1i9vr/Z/2xcsFlTzxMcoaOaCLYx9RWTp1r7UINg2D bi8m4VaYNfQ8FYty6Geyph8Hx9YcBzakvtA8VVbVI83tBEqVDpyxDnalcvLSeQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617825; a=rsa-sha256; cv=none; b=bQtEmwa9feuE1S5+LUS4uL9rHXfcNWFOk6assU7N/1zSSXjy5eK1vn4SjHRR77lxhqEWe/ 84zXwUsnhX+IDkYJ9fj8qWdplfMVdio4W+8yPeVPZ9KieoKfhRr3wbtFdagDbFRezgaSC0 S5SYONOG8GYpz/oJnPn2zpIeLkO5oWXARLyswS9eRaDyW0LAGcZ6CC8SKE92kLvMoZdtfV GwLedTmxRSEmeoUzljSEkTpFIp3BtRlMicmt5RiEDXyK/NLrIendYLEHGvgmjnFx4c5q4b snO7ho/9g5lKMDHL9NuRunP+7abPPdogoVVooDfwZTRHJ96UImpfYASZO03XeQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHpn42Q5zQfN; Thu, 18 Jan 2024 22:43:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMhjKX025123; Thu, 18 Jan 2024 22:43:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMhj7i025120; Thu, 18 Jan 2024 22:43:45 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:43:45 GMT Message-Id: <202401182243.40IMhj7i025120@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 49413aa308fc - stable/14 - ctladm: Only autoload cfiscsi.ko for iSCSI-specific commands List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 49413aa308fce38b25d70af33b156191b1d6753c Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=49413aa308fce38b25d70af33b156191b1d6753c commit 49413aa308fce38b25d70af33b156191b1d6753c Author: John Baldwin AuthorDate: 2023-12-27 18:11:19 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:41:43 +0000 ctladm: Only autoload cfiscsi.ko for iSCSI-specific commands Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D42935 (cherry picked from commit 0f3210b3a7fac2cb247986dae4d68040222cdb33) --- usr.sbin/ctladm/ctladm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/usr.sbin/ctladm/ctladm.c b/usr.sbin/ctladm/ctladm.c index 3ccf93d5e94e..e99610373ff0 100644 --- a/usr.sbin/ctladm/ctladm.c +++ b/usr.sbin/ctladm/ctladm.c @@ -4145,10 +4145,16 @@ main(int argc, char **argv) goto bailout; } #ifdef WANT_ISCSI - else { + switch (command) { + case CTLADM_CMD_ISLIST: + case CTLADM_CMD_ISLOGOUT: + case CTLADM_CMD_ISTERMINATE: if (modfind("cfiscsi") == -1 && kldload("cfiscsi") == -1) warn("couldn't load cfiscsi"); + break; + default: + break; } #endif } else if ((command != CTLADM_CMD_HELP) From nobody Thu Jan 18 22:43:50 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHpt5fVKz57BdB; Thu, 18 Jan 2024 22:43:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHpt583cz4Kdc; Thu, 18 Jan 2024 22:43:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617830; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9ZppnRzmmPgdB3W0W5vBqlcfkNClDQEL84PZNC8fTvc=; b=Or8W8/oSYMlkB5nXjf5sWZKdCovU+kl1KsSnkEVX+3L0GevJ1PG//WswhJWdDBqU6vKgKq 0RyaIpKyjy4zzuARwpTbA9mhBetLYtrfS9oIegLzixzXzQBTsV8RMqY7J4YrPwLz/N6G5j c303ScWIBHm219P0XL8SZDveP7kVm/2tn2NCMT+qjDytwX6KF3VSEAxl0sqdT5iOfVvkpm 53wNd1l7DDWmWC7EdtXkd9cYJdiRHxaRIMkLJfkAn1hR0XxVtziPe77pF3DfarKX8Di4ET S1QZiwaSnHVagiFqTrTMzGSY7l8cCXMF+2f9gbTfz7LTQNz9IF2t2abPb6Hwaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617830; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9ZppnRzmmPgdB3W0W5vBqlcfkNClDQEL84PZNC8fTvc=; b=FzSRvgO18Tq+9mObMI8kASbqFsvKnvEtreMDXa799L5yOQsuizarm2LZDCMbwtmKTCmL3K eQqIqZZn13sJOgt7xyjZ0mMeO66SxBRmMGCiIXyDqz8NJNAYmCVFQ6G1IvorF4+gOhWeej mhg9YvQjNzeMJlqC5sQEZKaDmeVDF5VKMgtePUa6AobTOYvpTSqinBXlYqRssDpjsAciqq /Pjku4tW3HJzNdiS42nyyaH98wUrfOJ6/seDwYWqEKCkbhvxYreErnPcpXEOHaHgSyZngZ ICdFuBCfZxRBUeC8rpoPzPqglYlYRgb0awGxoZE8uYp27qXJlCzgVdzRyDeAHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617830; a=rsa-sha256; cv=none; b=pcd286PAVi9PBKkwbdCx2DQx+ilsb8jmrA/hq7xQq7aSqN3mDP7v9EP/irXA0a+BUkf/rA E9PBmQXz8uj82fhsyx4/V7q/EfGus4SZLO2bjio8xu0VL8I3xc+2v0zZ5Php89Gslf3iu2 srOtvgIHFfW2kUyPU+YRH/xFUVTMmtKBNXJwjgFmdftUD8mgcskHLss2EbbVYurploSYUp nUYF3Fpay4QksSPS5oCN1joF+6INNHXvPOsJXgukHiWS7bmoV0CjhTgDqbm0cM78fs8WaC Kxq9UN7pQhnCJr9ztHx73apfjoEmcfXT4WOMGMf7gK/fx7la8vE8YTVnh6R6Dw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHpt4FxRzQfP; Thu, 18 Jan 2024 22:43:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMhomS025305; Thu, 18 Jan 2024 22:43:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMho9X025302; Thu, 18 Jan 2024 22:43:50 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:43:50 GMT Message-Id: <202401182243.40IMho9X025302@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 0827fecb4ae5 - stable/13 - cltadm.8: Correct documentation of -r arg to port command List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0827fecb4ae56a6ad6fa054ef87e5a512011f426 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=0827fecb4ae56a6ad6fa054ef87e5a512011f426 commit 0827fecb4ae56a6ad6fa054ef87e5a512011f426 Author: John Baldwin AuthorDate: 2023-12-27 18:10:05 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:41:13 +0000 cltadm.8: Correct documentation of -r arg to port command -r does not take a target port argument Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D42932 (cherry picked from commit f12d378f4f3f3b06597d6f11eaf320d26d8318b2) --- usr.sbin/ctladm/ctladm.8 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/ctladm/ctladm.8 b/usr.sbin/ctladm/ctladm.8 index 66d0271403fb..ba2712cb278c 100644 --- a/usr.sbin/ctladm/ctladm.8 +++ b/usr.sbin/ctladm/ctladm.8 @@ -35,7 +35,7 @@ .\" .\" $Id: //depot/users/kenm/FreeBSD-test2/usr.sbin/ctladm/ctladm.8#3 $ .\" -.Dd March 9, 2021 +.Dd December 27, 2023 .Dt CTLADM 8 .Os .Sh NAME @@ -167,7 +167,7 @@ .Op Fl W Ar wwnn .Op Fl O Ar pp|vp .Op Fl p Ar targ_port -.Op Fl r Ar targ_port +.Op Fl r .Op Fl t Ar fe_type .Nm .Ic portlist From nobody Thu Jan 18 22:43:51 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGHpw0Mtqz57Bgw; Thu, 18 Jan 2024 22:43:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGHpv6B87z4KhV; Thu, 18 Jan 2024 22:43:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617831; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HADDkjSrU6XjwYB8txmcl1Z40jmvwGgWOGwvgp+N+h0=; b=oGFazg2MYc51R+Rpjj9Cz4gjWghyVat1mK+7W1WnrALquileaShJBKgNwJfkE6w7NQKI3h ORf0vJy7eNFBDv7wL+vcTyJcvyZXbTjIoxEtMzcwwFOLDVnRLMHdO6KxHeRFlo9sDdUBuU zhtIbHqR7v5YGpz9NDmDy1+bDhfEgoGH54LSP0gb0v72idUfRxLwy6+VHNFvaBjhmzSb42 ZGNFxCFr6sGA7HsrPZExf5nqjNjfAt5dxJX1PztzWJIvw/H8TSXIlFqdcK63l2JyTJ/4du bShFXiCXXhbtyU0mfm4kK01GffbPsklVBpcxl0RBaITLNazmmzF6Poi2T26sLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705617831; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HADDkjSrU6XjwYB8txmcl1Z40jmvwGgWOGwvgp+N+h0=; b=bUhY+rH2ooxEfcBxioY4dX1aJt4f8Z8XmcVTVZsmu3tPzxI/2Er8JWzDMoEaOsyzHU+zOc soycVxdvrv5Af4YND/tGRkJSrvpd61FSKcvuXNe72c6RUFxxmUlFjwy5+K3hhtYM2tg5Vc axdHBQnqwvuoDW4rEix+bacC4yRrzHJlbL+pZc6nshicz2zqB4jxDwuujLj4Ttm5r+jS9z 267j2qNsH4IfT97Rpoy2p6g2GUPv1m3aV/Kz41gzUlCgF4sRn1yx4ne+xLX6V2XbDHuZxV il1D91Rc68gBRmv+8gsJ/ZjRLPsGyZJkPUeJTBk998dULoyeoFNRwuHqDITJvw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705617831; a=rsa-sha256; cv=none; b=wV8WzBOyzb23nieL8FbDft16WidhX4Nk4riwhHeFwFOnuhee6S8qbyyFddjJ1jkLc00HyX YaAE6GGrAhJpMPVecS+9yIIns270+rFEdKmXfIDbaPRJrNdS0Y7c+Ya0td7X1Xsa3BDzCp t7CLCiZ3pBhQztXCdB4H0VG86BXKfwTH6nQ/0J/lxYiL9/+uQq/74Dntn18RiNAY4Gkpte DcN7Ih+FnzkW2+K3EW2E+13OEi1FFmJXnF87TabERVryvYeH8mwHxzhoqpYeARe48pGMwf Yi8wJzX3W+lblaj4VSKeMCouqGHUqX+lbMtgj3nS+D2RhuIwsPR4f02q4zJqww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGHpv5HwTzQfQ; Thu, 18 Jan 2024 22:43:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40IMhpPN025362; Thu, 18 Jan 2024 22:43:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40IMhphf025359; Thu, 18 Jan 2024 22:43:51 GMT (envelope-from git) Date: Thu, 18 Jan 2024 22:43:51 GMT Message-Id: <202401182243.40IMhphf025359@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 96d7c770efcb - stable/13 - ctladm: Fix a typo and add a FALLTHROUGH annotation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 96d7c770efcb87d0266c815ba1106a4b8b48628d Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=96d7c770efcb87d0266c815ba1106a4b8b48628d commit 96d7c770efcb87d0266c815ba1106a4b8b48628d Author: John Baldwin AuthorDate: 2023-12-27 18:10:42 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:41:30 +0000 ctladm: Fix a typo and add a FALLTHROUGH annotation Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D42934 (cherry picked from commit e8d83548349d8cafadd1f95667fd8b055b228931) --- usr.sbin/ctladm/ctladm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/usr.sbin/ctladm/ctladm.c b/usr.sbin/ctladm/ctladm.c index 0a185d16835e..1384daed74a2 100644 --- a/usr.sbin/ctladm/ctladm.c +++ b/usr.sbin/ctladm/ctladm.c @@ -574,10 +574,11 @@ cctl_port(int fd, int argc, char **argv, char *combinedopt) } case CCTL_PORT_MODE_REMOVE: if (targ_port == -1) { - warnx("%s: -r require -p", __func__); + warnx("%s: -r requires -p", __func__); retval = 1; goto bailout; } + /* FALLTHROUGH */ case CCTL_PORT_MODE_CREATE: { bzero(&req, sizeof(req)); strlcpy(req.driver, driver, sizeof(req.driver)); From nobody Thu Jan 18 23:39:11 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK2l6TBjz57HnZ; Thu, 18 Jan 2024 23:39:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK2l5pzKz4S3Z; Thu, 18 Jan 2024 23:39:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G4M/KVoBxAhQ5ABGK/9VTn8bLOv0xGiST/ZxXZrCjEU=; b=nF7M5w15RZ49TLDw1Dk0m/paffLJzAXu2QyhcvBl+wFfPB6LNmdyq6vYvvwkaiXX1UgEOP NtcZqbvnUoFfvF44YfnA71u6eThgPnlSyH5m7RkyZLCxD5YcOqvaNX/nXZqfsxlpIq89VF QcJVMMkSD61SEjfekXVR+WRcg4hnRP8On7MOkPYS1koYRmReFBhAAQqvY5LpY1LPdsWlcl QYJcnh0VU0FFn4LLv139mzZJwWNjBiGZL8YHRLuv19Rs9tRE4ykRudvMXBBoGQoEESimG4 iWo2noVF3d37cxHpEzVcgOpPimiLDzC0dkXt7eUoUmolsnJQ+sgbexlJFqDjXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G4M/KVoBxAhQ5ABGK/9VTn8bLOv0xGiST/ZxXZrCjEU=; b=fdO/9/eVCGFvcuX69qM52alCTnaJURT4ggBDV4qKNyWDu4OcGAcpoUMveWQdmCc3ugSmrq cz1BmLKr4ApX9bTufI021VKpo6DOUviEb2jB6rR2o5O2b6tjaX4onFKaOkzxZlCVAMfhbP GnHpJ8tc0fuoBengt7wD7Lq3a/oGVCKPs8++mWsw5tOqEewJnlx1jiXtImemqOPO0el0QV Hw/WVyB2yLccZ7wqARwsBLZ3zA/8PTXxvalVfEQNkQ6BvQ9u1vOaNORTtSSjBaNchVenZ2 hrUcEVyrumiQkRtaxQfYfRfPTcjY/9iPOJMQgSZpwNh62ymXH8KPjKrx3nlFVg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621151; a=rsa-sha256; cv=none; b=M3iFXuE2hWtrEenmrl3/L+bE95i/SzVigH77osSpsUnqQ5n3X5KTgfK99/QAeWL+xCZWf7 L56A5r12rjLxDb2Sssi3HlTy4KDAip+cVI5Kru87rWNZdWaD9ydwxyacJzoNq5qh4D6iud LW/q7FfnM0V1RrQtcEsQO6Z0JGXilj+ssmOvTWAKU+Rj9WginsyR/XB10yNXwLUSDpVL3I t1ovQAIi76xj7CzzKrFFklRcPydfOvw2TCy9c/9jAv+Tj665Aju+FYD4FxmKgqGx8T2oi6 CFQt/PPXR5koFTbpbrgR1BhtGYRqSfDq8sdn6fCsgKqaUoBEZvGSORVI70U00g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK2l4lyYzRtY; Thu, 18 Jan 2024 23:39:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdBkV011345; Thu, 18 Jan 2024 23:39:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdBHw011342; Thu, 18 Jan 2024 23:39:11 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:11 GMT Message-Id: <202401182339.40INdBHw011342@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 98b822fccd83 - stable/14 - pci_cfgreg: Add a PCI domain argument to the low-level register API List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 98b822fccd8350f59eb2deb842c52c35b145c2cb Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=98b822fccd8350f59eb2deb842c52c35b145c2cb commit 98b822fccd8350f59eb2deb842c52c35b145c2cb Author: John Baldwin AuthorDate: 2023-11-29 18:31:47 +0000 Commit: John Baldwin CommitDate: 2024-01-18 22:44:51 +0000 pci_cfgreg: Add a PCI domain argument to the low-level register API This commit changes the API of pci_cfgreg(read|write) to add a domain argument (referred to as a segment in ACPI parlance) (note that this is not the same as a NUMA domain, but something PCI-specific). This does not yet enable access to domains other than 0, but updates the API to support domains. Places that use hard-coded bus/slot/function addresses have been updated to hardcode a domain of 0. A few places that have the PCI domain (segment) available such as the acpi_pcib_acpi.c Host-PCI bridge driver pass the PCI domain. The hpt27xx(4) and hptnr(4) drivers fail to attach to a device not on domain 0 since they provide APIs to their binary blobs that only permit bus/slot/function addressing. The x86 non-ACPI PCI bus drivers all hardcode a domain of 0 as they do not support multiple domains. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D42827 (cherry picked from commit 1587a9db92c03c738bb3f0fc5874b43c961e7c99) --- sys/amd64/pci/pci_cfgreg.c | 62 +++++++++++++++++++--------------- sys/amd64/vmm/amd/amdvi_hw.c | 2 +- sys/amd64/vmm/amd/ivrs_drv.c | 3 +- sys/arm64/acpica/pci_cfgreg.c | 5 +-- sys/arm64/include/pci_cfgreg.h | 4 +-- sys/dev/acpica/Osd/OsdHardware.c | 6 ++-- sys/dev/acpica/acpi_pci_link.c | 33 +++++++++++------- sys/dev/acpica/acpi_pcib_acpi.c | 8 +++-- sys/dev/agp/agp_amd64.c | 71 +++++++++++++++++++++------------------ sys/dev/amdtemp/amdtemp.c | 5 +-- sys/dev/hpt27xx/hpt27xx_os_bsd.c | 8 ++--- sys/dev/hpt27xx/hpt27xx_osm_bsd.c | 5 +++ sys/dev/hptnr/hptnr_os_bsd.c | 2 +- sys/dev/hptnr/hptnr_osm_bsd.c | 5 +++ sys/dev/ichwd/ichwd.c | 8 ++--- sys/dev/ipmi/ipmi_isa.c | 2 +- sys/dev/pci/pci_subr.c | 18 +++++----- sys/dev/pci/pcib_private.h | 3 +- sys/i386/pci/pci_cfgreg.c | 62 +++++++++++++++++++--------------- sys/i386/pci/pci_pir.c | 10 +++--- sys/x86/include/pci_cfgreg.h | 4 +-- sys/x86/iommu/intel_drv.c | 2 +- sys/x86/pci/pci_bus.c | 4 +-- sys/x86/pci/pci_early_quirks.c | 47 +++++++++++++------------- sys/x86/pci/qpi.c | 2 +- sys/x86/x86/legacy.c | 8 ++--- 26 files changed, 218 insertions(+), 171 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index a9ee4bccb3a4..5218ff3a40f7 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -42,12 +42,12 @@ #include #include -static uint32_t pci_docfgregread(int bus, int slot, int func, int reg, - int bytes); -static int pciereg_cfgread(int bus, unsigned slot, unsigned func, - unsigned reg, unsigned bytes); -static void pciereg_cfgwrite(int bus, unsigned slot, unsigned func, - unsigned reg, int data, unsigned bytes); +static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, + int reg, int bytes); +static int pciereg_cfgread(int domain, int bus, unsigned slot, + unsigned func, unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(int domain, int bus, unsigned slot, + unsigned func, unsigned reg, int data, unsigned bytes); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); @@ -77,22 +77,25 @@ pci_cfgregopen(void) } static uint32_t -pci_docfgregread(int bus, int slot, int func, int reg, int bytes) +pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { + if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) + return (pcireg_cfgread(bus, slot, func, reg, bytes)); if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus) && - (bus != 0 || !(1 << slot & pcie_badslots))) - return (pciereg_cfgread(bus, slot, func, reg, bytes)); - else + (bus >= pcie_minbus && bus <= pcie_maxbus)) + return (pciereg_cfgread(domain, bus, slot, func, reg, bytes)); + else if (domain == 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); + else + return (-1); } /* * Read configuration space register */ u_int32_t -pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { uint32_t line; @@ -105,26 +108,31 @@ pci_cfgregread(int bus, int slot, int func, int reg, int bytes) * as an invalid IRQ. */ if (reg == PCIR_INTLINE && bytes == 1) { - line = pci_docfgregread(bus, slot, func, PCIR_INTLINE, 1); + line = pci_docfgregread(domain, bus, slot, func, PCIR_INTLINE, + 1); if (line == 0 || line >= 128) line = PCI_INVALID_IRQ; return (line); } - return (pci_docfgregread(bus, slot, func, reg, bytes)); + return (pci_docfgregread(domain, bus, slot, func, reg, bytes)); } /* * Write configuration space register */ void -pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) +pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, + int bytes) { + if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) { + pcireg_cfgwrite(bus, slot, func, reg, data, bytes); + return; + } if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus) && - (bus != 0 || !(1 << slot & pcie_badslots))) - pciereg_cfgwrite(bus, slot, func, reg, data, bytes); - else + (bus >= pcie_minbus && bus <= pcie_maxbus)) + pciereg_cfgwrite(domain, bus, slot, func, reg, data, bytes); + else if (domain == 0) pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } @@ -243,7 +251,7 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) if (val1 == 0xffffffff) continue; - val2 = pciereg_cfgread(0, slot, 0, 0, 4); + val2 = pciereg_cfgread(0, 0, slot, 0, 0, 4); if (val2 != val1) pcie_badslots |= (1 << slot); } @@ -268,14 +276,14 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) */ static int -pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, +pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, unsigned bytes) { vm_offset_t va; int data = -1; - if (bus < pcie_minbus || bus > pcie_maxbus || slot > PCI_SLOTMAX || - func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || + slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return (-1); va = PCIE_VADDR(pcie_base, reg, bus, slot, func); @@ -299,13 +307,13 @@ pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, } static void -pciereg_cfgwrite(int bus, unsigned slot, unsigned func, unsigned reg, int data, - unsigned bytes) +pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, + unsigned reg, int data, unsigned bytes) { vm_offset_t va; - if (bus < pcie_minbus || bus > pcie_maxbus || slot > PCI_SLOTMAX || - func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || + slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return; va = PCIE_VADDR(pcie_base, reg, bus, slot, func); diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index bef6b0038812..2707109ce587 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -125,7 +125,7 @@ static inline uint32_t amdvi_pci_read(struct amdvi_softc *softc, int off) { - return (pci_cfgregread(PCI_RID2BUS(softc->pci_rid), + return (pci_cfgregread(softc->pci_seg, PCI_RID2BUS(softc->pci_rid), PCI_RID2SLOT(softc->pci_rid), PCI_RID2FUNC(softc->pci_rid), off, 4)); } diff --git a/sys/amd64/vmm/amd/ivrs_drv.c b/sys/amd64/vmm/amd/ivrs_drv.c index d8ea2442de23..7dd68d8aea95 100644 --- a/sys/amd64/vmm/amd/ivrs_drv.c +++ b/sys/amd64/vmm/amd/ivrs_drv.c @@ -649,7 +649,8 @@ ivhd_attach(device_t dev) softc->dev = dev; ivhd = ivhd_hdrs[unit]; KASSERT(ivhd, ("ivhd is NULL")); - softc->pci_dev = pci_find_bsf(PCI_RID2BUS(ivhd->Header.DeviceId), + softc->pci_dev = pci_find_dbsf(ivhd->PciSegmentGroup, + PCI_RID2BUS(ivhd->Header.DeviceId), PCI_RID2SLOT(ivhd->Header.DeviceId), PCI_RID2FUNC(ivhd->Header.DeviceId)); diff --git a/sys/arm64/acpica/pci_cfgreg.c b/sys/arm64/acpica/pci_cfgreg.c index 97c640dfb81c..55627d4abfaf 100644 --- a/sys/arm64/acpica/pci_cfgreg.c +++ b/sys/arm64/acpica/pci_cfgreg.c @@ -41,7 +41,7 @@ * Read configuration space register */ uint32_t -pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { /* ARM64TODO */ @@ -53,7 +53,8 @@ pci_cfgregread(int bus, int slot, int func, int reg, int bytes) * Write configuration space register */ void -pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) +pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, + int bytes) { /* ARM64TODO */ diff --git a/sys/arm64/include/pci_cfgreg.h b/sys/arm64/include/pci_cfgreg.h index 2c34f62c00c8..579dcd954c9b 100644 --- a/sys/arm64/include/pci_cfgreg.h +++ b/sys/arm64/include/pci_cfgreg.h @@ -27,7 +27,7 @@ #define _MACHINE_PCI_CFGREG_H int pci_cfgregopen(void); -uint32_t pci_cfgregread(int, int, int, int, int); -void pci_cfgregwrite(int, int, int, int, u_int32_t, int); +uint32_t pci_cfgregread(int, int, int, int, int, int); +void pci_cfgregwrite(int, int, int, int, int, uint32_t, int); #endif /* !_MACHINE_PCI_CFGREG_H */ diff --git a/sys/dev/acpica/Osd/OsdHardware.c b/sys/dev/acpica/Osd/OsdHardware.c index b9c11454913b..fbaf76d2a91a 100644 --- a/sys/dev/acpica/Osd/OsdHardware.c +++ b/sys/dev/acpica/Osd/OsdHardware.c @@ -110,7 +110,7 @@ AcpiOsReadPciConfiguration(ACPI_PCI_ID *PciId, UINT32 Register, UINT64 *Value, if (!pci_cfgregopen()) return (AE_NOT_EXIST); - *(UINT64 *)Value = pci_cfgregread(PciId->Bus, PciId->Device, + *(UINT64 *)Value = pci_cfgregread(PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, Register, Width / 8); return (AE_OK); @@ -132,8 +132,8 @@ AcpiOsWritePciConfiguration (ACPI_PCI_ID *PciId, UINT32 Register, if (!pci_cfgregopen()) return (AE_NOT_EXIST); - pci_cfgregwrite(PciId->Bus, PciId->Device, PciId->Function, Register, - Value, Width / 8); + pci_cfgregwrite(PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, + Register, Value, Width / 8); return (AE_OK); #endif diff --git a/sys/dev/acpica/acpi_pci_link.c b/sys/dev/acpica/acpi_pci_link.c index f354441bfd86..dac07a07ae7d 100644 --- a/sys/dev/acpica/acpi_pci_link.c +++ b/sys/dev/acpica/acpi_pci_link.c @@ -572,16 +572,16 @@ fail: /* XXX: Note that this is identical to pci_pir_search_irq(). */ static uint8_t -acpi_pci_link_search_irq(int bus, int device, int pin) +acpi_pci_link_search_irq(int domain, int bus, int device, int pin) { uint32_t value; uint8_t func, maxfunc; /* See if we have a valid device at function 0. */ - value = pci_cfgregread(bus, device, 0, PCIR_VENDOR, 2); + value = pci_cfgregread(domain, bus, device, 0, PCIR_VENDOR, 2); if (value == PCIV_INVALID) return (PCI_INVALID_IRQ); - value = pci_cfgregread(bus, device, 0, PCIR_HDRTYPE, 1); + value = pci_cfgregread(domain, bus, device, 0, PCIR_HDRTYPE, 1); if ((value & PCIM_HDRTYPE) > PCI_MAXHDRTYPE) return (PCI_INVALID_IRQ); if (value & PCIM_MFDEV) @@ -591,10 +591,12 @@ acpi_pci_link_search_irq(int bus, int device, int pin) /* Scan all possible functions at this device. */ for (func = 0; func <= maxfunc; func++) { - value = pci_cfgregread(bus, device, func, PCIR_VENDOR, 2); + value = pci_cfgregread(domain, bus, device, func, PCIR_VENDOR, + 2); if (value == PCIV_INVALID) continue; - value = pci_cfgregread(bus, device, func, PCIR_INTPIN, 1); + value = pci_cfgregread(domain, bus, device, func, PCIR_INTPIN, + 1); /* * See if it uses the pin in question. Note that the passed @@ -603,7 +605,8 @@ acpi_pci_link_search_irq(int bus, int device, int pin) */ if (value != pin + 1) continue; - value = pci_cfgregread(bus, device, func, PCIR_INTLINE, 1); + value = pci_cfgregread(domain, bus, device, func, PCIR_INTLINE, + 1); if (bootverbose) printf( "ACPI: Found matching pin for %d.%d.INT%c at func %d: %d\n", @@ -638,18 +641,22 @@ acpi_pci_link_add_reference(device_t dev, int index, device_t pcib, int slot, { struct link *link; uint8_t bios_irq; - uintptr_t bus; + uintptr_t bus, domain; /* - * Look up the PCI bus for the specified PCI bridge device. Note - * that the PCI bridge device might not have any children yet. - * However, looking up its bus number doesn't require a valid child - * device, so we just pass NULL. + * Look up the PCI domain and bus for the specified PCI bridge + * device. Note that the PCI bridge device might not have any + * children yet. However, looking up these IVARs doesn't + * require a valid child device, so we just pass NULL. */ if (BUS_READ_IVAR(pcib, NULL, PCIB_IVAR_BUS, &bus) != 0) { device_printf(pcib, "Unable to read PCI bus number"); panic("PCI bridge without a bus number"); } + if (BUS_READ_IVAR(pcib, NULL, PCIB_IVAR_DOMAIN, &domain) != 0) { + device_printf(pcib, "Unable to read PCI domain number"); + panic("PCI bridge without a domain number"); + } /* Bump the reference count. */ ACPI_SERIAL_BEGIN(pci_link); @@ -667,7 +674,7 @@ acpi_pci_link_add_reference(device_t dev, int index, device_t pcib, int slot, * The BIOS only routes interrupts via ISA IRQs using the ATPICs * (8259As). Thus, if this link is routed via an ISA IRQ, go * look to see if the BIOS routed an IRQ for this link at the - * indicated (bus, slot, pin). If so, we prefer that IRQ for + * indicated (domain, bus, slot, pin). If so, we prefer that IRQ for * this link and add that IRQ to our list of known-good IRQs. * This provides a good work-around for link devices whose _CRS * method is either broken or bogus. We only use the value @@ -684,7 +691,7 @@ acpi_pci_link_add_reference(device_t dev, int index, device_t pcib, int slot, } /* Try to find a BIOS IRQ setting from any matching devices. */ - bios_irq = acpi_pci_link_search_irq(bus, slot, pin); + bios_irq = acpi_pci_link_search_irq(domain, bus, slot, pin); if (!PCI_INTERRUPT_VALID(bios_irq)) { ACPI_SERIAL_END(pci_link); return; diff --git a/sys/dev/acpica/acpi_pcib_acpi.c b/sys/dev/acpica/acpi_pcib_acpi.c index a66ca1199af7..06e6bc233720 100644 --- a/sys/dev/acpica/acpi_pcib_acpi.c +++ b/sys/dev/acpica/acpi_pcib_acpi.c @@ -629,14 +629,18 @@ static uint32_t acpi_pcib_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, int bytes) { - return (pci_cfgregread(bus, slot, func, reg, bytes)); + struct acpi_hpcib_softc *sc = device_get_softc(dev); + + return (pci_cfgregread(sc->ap_segment, bus, slot, func, reg, bytes)); } static void acpi_pcib_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, uint32_t data, int bytes) { - pci_cfgregwrite(bus, slot, func, reg, data, bytes); + struct acpi_hpcib_softc *sc = device_get_softc(dev); + + pci_cfgregwrite(sc->ap_segment, bus, slot, func, reg, data, bytes); } static int diff --git a/sys/dev/agp/agp_amd64.c b/sys/dev/agp/agp_amd64.c index a123e6f3bbfd..9b5a4c342dac 100644 --- a/sys/dev/agp/agp_amd64.c +++ b/sys/dev/agp/agp_amd64.c @@ -119,10 +119,10 @@ static int agp_amd64_nvidia_match(uint16_t devid) { /* XXX nForce3 requires secondary AGP bridge at 0:11:0. */ - if (pci_cfgregread(0, 11, 0, PCIR_CLASS, 1) != PCIC_BRIDGE || - pci_cfgregread(0, 11, 0, PCIR_SUBCLASS, 1) != PCIS_BRIDGE_PCI || - pci_cfgregread(0, 11, 0, PCIR_VENDOR, 2) != 0x10de || - pci_cfgregread(0, 11, 0, PCIR_DEVICE, 2) != devid) + if (pci_cfgregread(0, 0, 11, 0, PCIR_CLASS, 1) != PCIC_BRIDGE || + pci_cfgregread(0, 0, 11, 0, PCIR_SUBCLASS, 1) != PCIS_BRIDGE_PCI || + pci_cfgregread(0, 0, 11, 0, PCIR_VENDOR, 2) != 0x10de || + pci_cfgregread(0, 0, 11, 0, PCIR_DEVICE, 2) != devid) return (ENXIO); return (0); @@ -132,11 +132,11 @@ static int agp_amd64_via_match(void) { /* XXX Some VIA bridge requires secondary AGP bridge at 0:1:0. */ - if (pci_cfgregread(0, 1, 0, PCIR_CLASS, 1) != PCIC_BRIDGE || - pci_cfgregread(0, 1, 0, PCIR_SUBCLASS, 1) != PCIS_BRIDGE_PCI || - pci_cfgregread(0, 1, 0, PCIR_VENDOR, 2) != 0x1106 || - pci_cfgregread(0, 1, 0, PCIR_DEVICE, 2) != 0xb188 || - (pci_cfgregread(0, 1, 0, AGP_VIA_AGPSEL, 1) & 2)) + if (pci_cfgregread(0, 0, 1, 0, PCIR_CLASS, 1) != PCIC_BRIDGE || + pci_cfgregread(0, 0, 1, 0, PCIR_SUBCLASS, 1) != PCIS_BRIDGE_PCI || + pci_cfgregread(0, 0, 1, 0, PCIR_VENDOR, 2) != 0x1106 || + pci_cfgregread(0, 0, 1, 0, PCIR_DEVICE, 2) != 0xb188 || + (pci_cfgregread(0, 0, 1, 0, AGP_VIA_AGPSEL, 1) & 2)) return (0); return (1); @@ -166,7 +166,7 @@ agp_amd64_attach(device_t dev) int i, n, error; for (i = 0, n = 0; i < PCI_SLOTMAX && n < AMD64_MAX_MCTRL; i++) { - devid = pci_cfgregread(0, i, 3, 0, 4); + devid = pci_cfgregread(0, 0, i, 3, 0, 4); if (devid == 0x11031022 || devid == 0x12031022) { sc->mctrl[n] = i; n++; @@ -228,11 +228,11 @@ agp_amd64_attach(device_t dev) /* Install the gatt and enable aperture. */ for (i = 0; i < sc->n_mctrl; i++) { - pci_cfgregwrite(0, sc->mctrl[i], 3, AGP_AMD64_ATTBASE, + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_ATTBASE, (uint32_t)(gatt->ag_physical >> 8) & AGP_AMD64_ATTBASE_MASK, 4); - pci_cfgregwrite(0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, - (pci_cfgregread(0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, 4) | + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, + (pci_cfgregread(0, 0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, 4) | AGP_AMD64_APCTRL_GARTEN) & ~(AGP_AMD64_APCTRL_DISGARTCPU | AGP_AMD64_APCTRL_DISGARTIO), 4); @@ -250,8 +250,8 @@ agp_amd64_detach(device_t dev) agp_free_cdev(dev); for (i = 0; i < sc->n_mctrl; i++) - pci_cfgregwrite(0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, - pci_cfgregread(0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, 4) & + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, + pci_cfgregread(0, 0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, 4) & ~AGP_AMD64_APCTRL_GARTEN, 4); AGP_SET_APERTURE(dev, sc->initial_aperture); @@ -279,7 +279,7 @@ agp_amd64_get_aperture(device_t dev) struct agp_amd64_softc *sc = device_get_softc(dev); uint32_t i; - i = (pci_cfgregread(0, sc->mctrl[0], 3, AGP_AMD64_APCTRL, 4) & + i = (pci_cfgregread(0, 0, sc->mctrl[0], 3, AGP_AMD64_APCTRL, 4) & AGP_AMD64_APCTRL_SIZE_MASK) >> 1; if (i >= AGP_AMD64_TABLE_SIZE) @@ -302,8 +302,8 @@ agp_amd64_set_aperture(device_t dev, uint32_t aperture) return (EINVAL); for (j = 0; j < sc->n_mctrl; j++) - pci_cfgregwrite(0, sc->mctrl[j], 3, AGP_AMD64_APCTRL, - (pci_cfgregread(0, sc->mctrl[j], 3, AGP_AMD64_APCTRL, 4) & + pci_cfgregwrite(0, 0, sc->mctrl[j], 3, AGP_AMD64_APCTRL, + (pci_cfgregread(0, 0, sc->mctrl[j], 3, AGP_AMD64_APCTRL, 4) & ~(AGP_AMD64_APCTRL_SIZE_MASK)) | (i << 1), 4); switch (pci_get_vendor(dev)) { @@ -357,10 +357,15 @@ agp_amd64_flush_tlb(device_t dev) struct agp_amd64_softc *sc = device_get_softc(dev); int i; - for (i = 0; i < sc->n_mctrl; i++) - pci_cfgregwrite(0, sc->mctrl[i], 3, AGP_AMD64_CACHECTRL, - pci_cfgregread(0, sc->mctrl[i], 3, AGP_AMD64_CACHECTRL, 4) | - AGP_AMD64_CACHECTRL_INVGART, 4); + for (i = 0; i < sc->n_mctrl; i++) { + uint32_t val; + + val = pci_cfgregread(0, 0, sc->mctrl[i], 3, AGP_AMD64_CACHECTRL, + 4); + val |= AGP_AMD64_CACHECTRL_INVGART; + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_CACHECTRL, val, + 4); + } } static void @@ -373,7 +378,7 @@ agp_amd64_apbase_fixup(device_t dev) sc->apbase = rman_get_start(sc->agp.as_aperture); apbase = (sc->apbase >> 25) & AGP_AMD64_APBASE_MASK; for (i = 0; i < sc->n_mctrl; i++) - pci_cfgregwrite(0, sc->mctrl[i], 3, + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_APBASE, apbase, 4); } @@ -419,8 +424,8 @@ agp_amd64_nvidia_init(device_t dev) pci_write_config(dev, AGP_AMD64_NVIDIA_0_APBASE, (pci_read_config(dev, AGP_AMD64_NVIDIA_0_APBASE, 4) & 0x0000000f) | sc->apbase, 4); - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APBASE1, sc->apbase, 4); - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APBASE2, sc->apbase, 4); + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APBASE1, sc->apbase, 4); + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APBASE2, sc->apbase, 4); } static int @@ -439,12 +444,12 @@ agp_amd64_nvidia_set_aperture(device_t dev, uint32_t aperture) return (EINVAL); } - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APSIZE, - (pci_cfgregread(0, 11, 0, AGP_AMD64_NVIDIA_1_APSIZE, 4) & + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APSIZE, + (pci_cfgregread(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APSIZE, 4) & 0xfffffff0) | apsize, 4); - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APLIMIT1, + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APLIMIT1, sc->apbase + aperture - 1, 4); - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APLIMIT2, + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APLIMIT2, sc->apbase + aperture - 1, 4); return (0); @@ -456,9 +461,9 @@ agp_amd64_via_init(device_t dev) struct agp_amd64_softc *sc = device_get_softc(dev); agp_amd64_apbase_fixup(dev); - pci_cfgregwrite(0, 1, 0, AGP3_VIA_ATTBASE, sc->gatt->ag_physical, 4); - pci_cfgregwrite(0, 1, 0, AGP3_VIA_GARTCTRL, - pci_cfgregread(0, 1, 0, AGP3_VIA_ATTBASE, 4) | 0x180, 4); + pci_cfgregwrite(0, 0, 1, 0, AGP3_VIA_ATTBASE, sc->gatt->ag_physical, 4); + pci_cfgregwrite(0, 0, 1, 0, AGP3_VIA_GARTCTRL, + pci_cfgregread(0, 0, 1, 0, AGP3_VIA_ATTBASE, 4) | 0x180, 4); } static int @@ -469,7 +474,7 @@ agp_amd64_via_set_aperture(device_t dev, uint32_t aperture) apsize = ((aperture - 1) >> 20) ^ 0xff; if ((((apsize ^ 0xff) << 20) | ((1 << 20) - 1)) + 1 != aperture) return (EINVAL); - pci_cfgregwrite(0, 1, 0, AGP3_VIA_APSIZE, apsize, 1); + pci_cfgregwrite(0, 0, 1, 0, AGP3_VIA_APSIZE, apsize, 1); return (0); } diff --git a/sys/dev/amdtemp/amdtemp.c b/sys/dev/amdtemp/amdtemp.c index 47c36174d73c..b01ebe101c6b 100644 --- a/sys/dev/amdtemp/amdtemp.c +++ b/sys/dev/amdtemp/amdtemp.c @@ -435,8 +435,9 @@ amdtemp_attach(device_t dev) erratum319 = 1; break; case 1: /* Socket AM2+ or AM3 */ - if ((pci_cfgregread(pci_get_bus(dev), - pci_get_slot(dev), 2, AMDTEMP_DRAM_CONF_HIGH, 2) & + if ((pci_cfgregread(pci_get_domain(dev), + pci_get_bus(dev), pci_get_slot(dev), 2, + AMDTEMP_DRAM_CONF_HIGH, 2) & AMDTEMP_DRAM_MODE_DDR3) != 0 || model > 0x04 || (model == 0x04 && (cpuid & CPUID_STEPPING) >= 3)) break; diff --git a/sys/dev/hpt27xx/hpt27xx_os_bsd.c b/sys/dev/hpt27xx/hpt27xx_os_bsd.c index ebd58e771462..f4bbcfd11e82 100644 --- a/sys/dev/hpt27xx/hpt27xx_os_bsd.c +++ b/sys/dev/hpt27xx/hpt27xx_os_bsd.c @@ -90,19 +90,19 @@ BUS_ADDRESS get_dmapool_phy_addr(void *osext, void * dmapool_virt_addr) /* PCI space access */ HPT_U8 pcicfg_read_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg) { - return (HPT_U8)pci_cfgregread(bus, dev, func, reg, 1); + return (HPT_U8)pci_cfgregread(0, bus, dev, func, reg, 1); } HPT_U32 pcicfg_read_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg) { - return (HPT_U32)pci_cfgregread(bus, dev, func, reg, 4); + return (HPT_U32)pci_cfgregread(0, bus, dev, func, reg, 4); } void pcicfg_write_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U8 v) { - pci_cfgregwrite(bus, dev, func, reg, v, 1); + pci_cfgregwrite(0, bus, dev, func, reg, v, 1); } void pcicfg_write_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U32 v) { - pci_cfgregwrite(bus, dev, func, reg, v, 4); + pci_cfgregwrite(0, bus, dev, func, reg, v, 4); }/* PCI space access */ void *os_map_pci_bar( diff --git a/sys/dev/hpt27xx/hpt27xx_osm_bsd.c b/sys/dev/hpt27xx/hpt27xx_osm_bsd.c index 7eb7dbc8fc72..32d3e465c569 100644 --- a/sys/dev/hpt27xx/hpt27xx_osm_bsd.c +++ b/sys/dev/hpt27xx/hpt27xx_osm_bsd.c @@ -75,6 +75,11 @@ static int hpt_attach(device_t dev) PVBUS vbus; PVBUS_EXT vbus_ext; + if (pci_get_domain(dev) != 0) { + device_printf(dev, "does not support PCI domains\n"); + return (ENXIO); + } + KdPrint(("hpt_attach(%d/%d/%d)", pci_get_bus(dev), pci_get_slot(dev), pci_get_function(dev))); him = hpt_match(dev, 1); diff --git a/sys/dev/hptnr/hptnr_os_bsd.c b/sys/dev/hptnr/hptnr_os_bsd.c index 62b852ddb6af..59f6fb651db9 100644 --- a/sys/dev/hptnr/hptnr_os_bsd.c +++ b/sys/dev/hptnr/hptnr_os_bsd.c @@ -88,7 +88,7 @@ BUS_ADDRESS get_dmapool_phy_addr(void *osext, void * dmapool_virt_addr) HPT_U32 pcicfg_read_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg) { - return (HPT_U32)pci_cfgregread(bus, dev, func, reg, 4); + return (HPT_U32)pci_cfgregread(0, bus, dev, func, reg, 4); }/* PCI space access */ void *os_map_pci_bar( diff --git a/sys/dev/hptnr/hptnr_osm_bsd.c b/sys/dev/hptnr/hptnr_osm_bsd.c index c1c908b62c9d..00774bf9be4a 100644 --- a/sys/dev/hptnr/hptnr_osm_bsd.c +++ b/sys/dev/hptnr/hptnr_osm_bsd.c @@ -77,6 +77,11 @@ static int hpt_attach(device_t dev) PVBUS vbus; PVBUS_EXT vbus_ext; + if (pci_get_domain(dev) != 0) { + device_printf(dev, "does not support PCI domains\n"); + return (ENXIO); + } + KdPrint(("hpt_attach(%d/%d/%d)", pci_get_bus(dev), pci_get_slot(dev), pci_get_function(dev))); him = hpt_match(dev, 1); diff --git a/sys/dev/ichwd/ichwd.c b/sys/dev/ichwd/ichwd.c index e07618f5548a..0270128f0766 100644 --- a/sys/dev/ichwd/ichwd.c +++ b/sys/dev/ichwd/ichwd.c @@ -699,12 +699,12 @@ ichwd_identify(driver_t *driver, device_t parent) * Space via the bridge's BAR. * Then hide back the bridge. */ - pci_cfgregwrite(0, 31, 1, 0xe1, 0, 1); - base_address64 = pci_cfgregread(0, 31, 1, SBREG_BAR + 4, 4); + pci_cfgregwrite(0, 0, 31, 1, 0xe1, 0, 1); + base_address64 = pci_cfgregread(0, 0, 31, 1, SBREG_BAR + 4, 4); base_address64 <<= 32; - base_address64 |= pci_cfgregread(0, 31, 1, SBREG_BAR, 4); + base_address64 |= pci_cfgregread(0, 0, 31, 1, SBREG_BAR, 4); base_address64 &= ~0xfull; - pci_cfgregwrite(0, 31, 1, 0xe1, 1, 1); + pci_cfgregwrite(0, 0, 31, 1, 0xe1, 1, 1); /* * No Reboot bit is in General Control register, offset 0xc, diff --git a/sys/dev/ipmi/ipmi_isa.c b/sys/dev/ipmi/ipmi_isa.c index f873a9ce2ae5..144b5be1ec00 100644 --- a/sys/dev/ipmi/ipmi_isa.c +++ b/sys/dev/ipmi/ipmi_isa.c @@ -67,7 +67,7 @@ ipmi_isa_identify(driver_t *driver, device_t parent) * create an isa ipmi device. For now we hardcode the list * of bus, device, function tuples. */ - devid = pci_cfgregread(0, 4, 2, PCIR_DEVVENDOR, 4); + devid = pci_cfgregread(0, 0, 4, 2, PCIR_DEVVENDOR, 4); if (devid != 0xffffffff && ipmi_pci_match(devid & 0xffff, devid >> 16) != NULL) return; diff --git a/sys/dev/pci/pci_subr.c b/sys/dev/pci/pci_subr.c index c869959da73d..71485875ebe3 100644 --- a/sys/dev/pci/pci_subr.c +++ b/sys/dev/pci/pci_subr.c @@ -53,7 +53,7 @@ host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, { uint32_t id; - id = read_config(bus, slot, func, PCIR_DEVVENDOR, 4); + id = read_config(0, bus, slot, func, PCIR_DEVVENDOR, 4); if (id == 0xffffffff) return (0); @@ -61,12 +61,12 @@ host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, case 0x12258086: /* Intel 824?? */ /* XXX This is a guess */ - /* *busnum = read_config(bus, slot, func, 0x41, 1); */ + /* *busnum = read_config(0, bus, slot, func, 0x41, 1); */ *busnum = bus; break; case 0x84c48086: /* Intel 82454KX/GX (Orion) */ - *busnum = read_config(bus, slot, func, 0x4a, 1); + *busnum = read_config(0, bus, slot, func, 0x4a, 1); break; case 0x84ca8086: /* @@ -85,19 +85,19 @@ host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, switch (slot) { case 0x12: /* Intel 82454NX PXB#0, Bus#A */ - *busnum = read_config(bus, 0x10, func, 0xd0, 1); + *busnum = read_config(0, bus, 0x10, func, 0xd0, 1); break; case 0x13: /* Intel 82454NX PXB#0, Bus#B */ - *busnum = read_config(bus, 0x10, func, 0xd1, 1) + 1; + *busnum = read_config(0, bus, 0x10, func, 0xd1, 1) + 1; break; case 0x14: /* Intel 82454NX PXB#1, Bus#A */ - *busnum = read_config(bus, 0x10, func, 0xd3, 1); + *busnum = read_config(0, bus, 0x10, func, 0xd3, 1); break; case 0x15: /* Intel 82454NX PXB#1, Bus#B */ - *busnum = read_config(bus, 0x10, func, 0xd4, 1) + 1; + *busnum = read_config(0, bus, 0x10, func, 0xd4, 1) + 1; break; } break; @@ -116,12 +116,12 @@ host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, case 0x02011166: case 0x02251166: case 0x03021014: - *busnum = read_config(bus, slot, func, 0x44, 1); + *busnum = read_config(0, bus, slot, func, 0x44, 1); break; /* Compaq/HP -- vendor 0x0e11 */ case 0x60100e11: - *busnum = read_config(bus, slot, func, 0xc8, 1); + *busnum = read_config(0, bus, slot, func, 0xc8, 1); break; default: /* Don't know how to read bus number. */ diff --git a/sys/dev/pci/pcib_private.h b/sys/dev/pci/pcib_private.h index e1e15caa17e4..cf689026a033 100644 --- a/sys/dev/pci/pcib_private.h +++ b/sys/dev/pci/pcib_private.h @@ -148,7 +148,8 @@ struct pcib_softc #define PCIB_SUPPORTED_ARI_VER 1 -typedef uint32_t pci_read_config_fn(int b, int s, int f, int reg, int width); +typedef uint32_t pci_read_config_fn(int d, int b, int s, int f, int reg, + int width); int host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, uint8_t *busnum); diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index a838f0a276f3..a512e3ea2c66 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -75,15 +75,15 @@ static int mcfg_enable = 1; SYSCTL_INT(_hw_pci, OID_AUTO, mcfg, CTLFLAG_RDTUN, &mcfg_enable, 0, "Enable support for PCI-e memory mapped config access"); -static uint32_t pci_docfgregread(int bus, int slot, int func, int reg, - int bytes); +static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, + int reg, int bytes); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); static int pcireg_cfgopen(void); -static int pciereg_cfgread(int bus, unsigned slot, unsigned func, - unsigned reg, unsigned bytes); -static void pciereg_cfgwrite(int bus, unsigned slot, unsigned func, - unsigned reg, int data, unsigned bytes); +static int pciereg_cfgread(int domain, int bus, unsigned slot, + unsigned func, unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(int domain, int bus, unsigned slot, + unsigned func, unsigned reg, int data, unsigned bytes); /* * Some BIOS writers seem to want to ignore the spec and put @@ -151,22 +151,25 @@ pci_cfgregopen(void) } static uint32_t -pci_docfgregread(int bus, int slot, int func, int reg, int bytes) +pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { + if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) + return (pcireg_cfgread(bus, slot, func, reg, bytes)); if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus) && - (bus != 0 || !(1 << slot & pcie_badslots))) - return (pciereg_cfgread(bus, slot, func, reg, bytes)); - else + (bus >= pcie_minbus && bus <= pcie_maxbus)) + return (pciereg_cfgread(domain, bus, slot, func, reg, bytes)); + else if (domain == 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); + else + return (-1); } /* * Read configuration space register */ u_int32_t -pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { uint32_t line; @@ -176,24 +179,29 @@ pci_cfgregread(int bus, int slot, int func, int reg, int bytes) * the code uses 255 as an invalid IRQ. */ if (reg == PCIR_INTLINE && bytes == 1) { - line = pci_docfgregread(bus, slot, func, PCIR_INTLINE, 1); + line = pci_docfgregread(domain, bus, slot, func, PCIR_INTLINE, + 1); return (pci_i386_map_intline(line)); } - return (pci_docfgregread(bus, slot, func, reg, bytes)); + return (pci_docfgregread(domain, bus, slot, func, reg, bytes)); } /* * Write configuration space register */ void -pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) +pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, + int bytes) { + if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) { + pcireg_cfgwrite(bus, slot, func, reg, data, bytes); + return; + } if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus) && - (bus != 0 || !(1 << slot & pcie_badslots))) - pciereg_cfgwrite(bus, slot, func, reg, data, bytes); - else + (bus >= pcie_minbus && bus <= pcie_maxbus)) + pciereg_cfgwrite(domain, bus, slot, func, reg, data, bytes); + else if (domain == 0) pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } @@ -506,7 +514,7 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) if (val1 == 0xffffffff) continue; - val2 = pciereg_cfgread(0, slot, 0, 0, 4); + val2 = pciereg_cfgread(0, 0, slot, 0, 0, 4); if (val2 != val1) pcie_badslots |= (1 << slot); } @@ -570,14 +578,14 @@ pciereg_findaddr(int bus, unsigned slot, unsigned func, unsigned reg) */ static int -pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, +pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, unsigned bytes) { vm_offset_t va; int data = -1; - if (bus < pcie_minbus || bus > pcie_maxbus || slot > PCI_SLOTMAX || - func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || + slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return (-1); critical_enter(); @@ -603,13 +611,13 @@ pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, } static void -pciereg_cfgwrite(int bus, unsigned slot, unsigned func, unsigned reg, int data, - unsigned bytes) +pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, + unsigned reg, int data, unsigned bytes) { vm_offset_t va; - if (bus < pcie_minbus || bus > pcie_maxbus || slot > PCI_SLOTMAX || - func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || + slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return; critical_enter(); diff --git a/sys/i386/pci/pci_pir.c b/sys/i386/pci/pci_pir.c index fe21b5faef87..d3ae100a43d0 100644 --- a/sys/i386/pci/pci_pir.c +++ b/sys/i386/pci/pci_pir.c @@ -265,10 +265,10 @@ pci_pir_search_irq(int bus, int device, int pin) uint8_t func, maxfunc; /* See if we have a valid device at function 0. */ - value = pci_cfgregread(bus, device, 0, PCIR_VENDOR, 2); + value = pci_cfgregread(0, bus, device, 0, PCIR_VENDOR, 2); if (value == PCIV_INVALID) return (PCI_INVALID_IRQ); - value = pci_cfgregread(bus, device, 0, PCIR_HDRTYPE, 1); + value = pci_cfgregread(0, bus, device, 0, PCIR_HDRTYPE, 1); if ((value & PCIM_HDRTYPE) > PCI_MAXHDRTYPE) return (PCI_INVALID_IRQ); if (value & PCIM_MFDEV) @@ -278,10 +278,10 @@ pci_pir_search_irq(int bus, int device, int pin) /* Scan all possible functions at this device. */ for (func = 0; func <= maxfunc; func++) { - value = pci_cfgregread(bus, device, func, PCIR_VENDOR, 2); + value = pci_cfgregread(0, bus, device, func, PCIR_VENDOR, 2); if (value == PCIV_INVALID) continue; - value = pci_cfgregread(bus, device, func, PCIR_INTPIN, 1); + value = pci_cfgregread(0, bus, device, func, PCIR_INTPIN, 1); /* * See if it uses the pin in question. Note that the passed @@ -290,7 +290,7 @@ pci_pir_search_irq(int bus, int device, int pin) */ if (value != pin + 1) continue; - value = pci_cfgregread(bus, device, func, PCIR_INTLINE, 1); + value = pci_cfgregread(0, bus, device, func, PCIR_INTLINE, 1); if (bootverbose) printf( "$PIR: Found matching pin for %d.%d.INT%c at func %d: %d\n", diff --git a/sys/x86/include/pci_cfgreg.h b/sys/x86/include/pci_cfgreg.h index 890d7233f658..370113b9d7bd 100644 --- a/sys/x86/include/pci_cfgreg.h +++ b/sys/x86/include/pci_cfgreg.h @@ -58,8 +58,8 @@ extern int cfgmech; rman_res_t hostb_alloc_start(int type, rman_res_t start, rman_res_t end, rman_res_t count); int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus); int pci_cfgregopen(void); -u_int32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); -void pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes); +u_int32_t pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, u_int32_t data, int bytes); #ifdef __HAVE_PIR void pci_pir_open(void); int pci_pir_probe(int bus, int require_parse); diff --git a/sys/x86/iommu/intel_drv.c b/sys/x86/iommu/intel_drv.c index c4bb3a1745f4..7346162d1502 100644 --- a/sys/x86/iommu/intel_drv.c +++ b/sys/x86/iommu/intel_drv.c @@ -975,7 +975,7 @@ dmar_path_dev(int segment, int path_len, int busno, dev = pci_find_dbsf(segment, busno, path->Device, path->Function); if (i != path_len - 1) { *** 226 LINES SKIPPED *** From nobody Thu Jan 18 23:39:12 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK2n0bPcz57Ht6; Thu, 18 Jan 2024 23:39:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK2m64JZz4SN7; Thu, 18 Jan 2024 23:39:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621152; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bl0CPqAVc78cjcSgXWbnyGXx/Uvv2VkgK/C8Xl/oin4=; b=OYYOC4FXRhUszUQbh4tkQCqQrzz260s2RFlTw3tLdYd3N8MPwATafvdAg/UC8Ej629P2Xh kKDg1yYKdGQ7gUJp45dskOlqhY/zwknIdOjpYYe7w7UxZ1XnXTM9LZftXeChrFh31Lw0KH 2vPBAa/nhUgiozqZbqstmuUy31iSNDYDDCwin/qe0Ie8+OA9/WcEgGIZlScRO+k/H7a7oG JIRIqdx38j6aQBTYvwRm8dRvbOALMFOmuHUvXbBW/XYkIfBz8GGzq5w5Mi8r97INPiI5BD HmJKPHEVAkiFehaktjURvURmWaLjEPpzjwfvcOX4rFSOKh+XAndXQkGQCvLKzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621152; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bl0CPqAVc78cjcSgXWbnyGXx/Uvv2VkgK/C8Xl/oin4=; b=kdCswZpvx4wP2xMnVNrgis2WoN9cbF2g2Xu0bK8Gb0RNFPvxzbvQdGtqGK7wnfXquaSzdQ 97b2CNEL5enuQe43kILk3oAS+08lyXQV+NpoBZps7LAl4S7dcMfPf8/qZliHY9txFrr5Zo U3pT6Ac+lau1HWGbgXvXdXMV4f891n0LH4yYxhleA10an6RgWA7tirOFZq4FN2Wx/RTvgL jKiytcw0OTBkqC0El/BDAisDqNTB0rDsecQ0cOAVg+fKwBw8EgsPJywTMe4jRUjRzAsPBb nVH98N4hd7LwvTviNVCihrYZusZgn60/sFUDiT56y8xTNphZnev5b/RdOKl97w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621152; a=rsa-sha256; cv=none; b=cpEV5pCwQu67z8p3SXBGFNbl/r7AGPA1R4b83vRDgwenBbBTcFye6BPuG9i4BkQHkzh2A+ 9cSaeAaxwPJAv9f2xKt9Jx1iRRoaMwPQeD2KGoATPDLZkbDhZwSpadkAqGHSPXHxvLRpOb 73NtGSmPS/b7NCqPSQac023ReWRxrYsw0fvfxxJoLlara6GZIOiLUDbSuiY7+cY+c5SvhC r67VaE+EgOlA1VgugtM9qBH9okyB1RrSBmYtiZuSvQeTZ2BPB/RZg/ezaCm96RM0bsxXdC NLBFVMsa40DJZ0JpoQqvEJ77dVeybHDUPs2U42lo49fq2GcEv5yKr3gOqrWtuw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK2m58ZRzRkm; Thu, 18 Jan 2024 23:39:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdCaB011396; Thu, 18 Jan 2024 23:39:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdCdk011393; Thu, 18 Jan 2024 23:39:12 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:12 GMT Message-Id: <202401182339.40INdCdk011393@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: b5d2a06b2c4f - stable/14 - pci_cfgreg: Add shims to preserve ABI of pci_cfgreg(read|write) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b5d2a06b2c4f50fd20774928602a3b5f0f27b127 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b5d2a06b2c4f50fd20774928602a3b5f0f27b127 commit b5d2a06b2c4f50fd20774928602a3b5f0f27b127 Author: John Baldwin AuthorDate: 2024-01-18 23:19:11 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:19:11 +0000 pci_cfgreg: Add shims to preserve ABI of pci_cfgreg(read|write) This is a direct commit to stable/14 to preserve the ABI of the the pci_cfgregread and pci_cfgregwrite functions. The new routines are renamed to add a _domain suffix and macros map the new API to the new functions. Note: No API compatibility has been provided as modules in ports should not be using this internal API (normal PCI drivers use pci_read_config and pci_write_config with a device_t). --- sys/amd64/pci/pci_cfgreg.c | 27 ++++++++++++++++++++++++--- sys/arm64/acpica/pci_cfgreg.c | 27 ++++++++++++++++++++++++--- sys/arm64/include/pci_cfgreg.h | 7 +++++-- sys/i386/pci/pci_cfgreg.c | 20 ++++++++++++++++++++ sys/x86/include/pci_cfgreg.h | 7 +++++-- 5 files changed, 78 insertions(+), 10 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index 5218ff3a40f7..6b95c6fae0ab 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -95,7 +95,8 @@ pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) * Read configuration space register */ u_int32_t -pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) +pci_cfgregread_domain(int domain, int bus, int slot, int func, int reg, + int bytes) { uint32_t line; @@ -121,8 +122,8 @@ pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) * Write configuration space register */ void -pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, - int bytes) +pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, + uint32_t data, int bytes) { if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) { pcireg_cfgwrite(bus, slot, func, reg, data, bytes); @@ -333,3 +334,23 @@ pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, break; } } + +/* ABI compatibility shims. */ +#undef pci_cfgregread +#undef pci_cfgregwrite + +u_int32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, + int bytes); + +u_int32_t +pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +{ + return (pci_cfgregread_domain(0, bus, slot, func, reg, bytes)); +} + +void +pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, int bytes) +{ + return (pci_cfgregwrite_domain(0, bus, slot, func, reg, data, bytes)); +} diff --git a/sys/arm64/acpica/pci_cfgreg.c b/sys/arm64/acpica/pci_cfgreg.c index 55627d4abfaf..3b38be05beb5 100644 --- a/sys/arm64/acpica/pci_cfgreg.c +++ b/sys/arm64/acpica/pci_cfgreg.c @@ -41,7 +41,8 @@ * Read configuration space register */ uint32_t -pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) +pci_cfgregread_domain(int domain, int bus, int slot, int func, int reg, + int bytes) { /* ARM64TODO */ @@ -53,8 +54,8 @@ pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) * Write configuration space register */ void -pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, - int bytes) +pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, + uint32_t data, int bytes) { /* ARM64TODO */ @@ -72,3 +73,23 @@ pci_cfgregopen(void) panic("pci_cfgregopen not implemented"); return (0); } + +/* ABI compatibility shims. */ +#undef pci_cfgregread +#undef pci_cfgregwrite + +uint32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, + int bytes); + +uint32_t +pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +{ + return (pci_cfgregread_domain(0, bus, slot, func, reg, bytes)); +} + +void +pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, int bytes) +{ + return (pci_cfgregwrite_domain(0, bus, slot, func, reg, data, bytes)); +} diff --git a/sys/arm64/include/pci_cfgreg.h b/sys/arm64/include/pci_cfgreg.h index 579dcd954c9b..cce7e6bd8961 100644 --- a/sys/arm64/include/pci_cfgreg.h +++ b/sys/arm64/include/pci_cfgreg.h @@ -27,7 +27,10 @@ #define _MACHINE_PCI_CFGREG_H int pci_cfgregopen(void); -uint32_t pci_cfgregread(int, int, int, int, int, int); -void pci_cfgregwrite(int, int, int, int, int, uint32_t, int); +uint32_t pci_cfgregread_domain(int, int, int, int, int, int); +void pci_cfgregwrite_domain(int, int, int, int, int, uint32_t, int); + +#define pci_cfgregread pci_cfgregread_domain +#define pci_cfgregwrite pci_cfgregwrite_domain #endif /* !_MACHINE_PCI_CFGREG_H */ diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index a512e3ea2c66..ef712fe49fe3 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -640,3 +640,23 @@ pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, critical_exit(); } + +/* ABI compatibility shims. */ +#undef pci_cfgregread +#undef pci_cfgregwrite + +u_int32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, + int bytes); + +u_int32_t +pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +{ + return (pci_cfgregread_domain(0, bus, slot, func, reg, bytes)); +} + +void +pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, int bytes) +{ + return (pci_cfgregwrite_domain(0, bus, slot, func, reg, data, bytes)); +} diff --git a/sys/x86/include/pci_cfgreg.h b/sys/x86/include/pci_cfgreg.h index 370113b9d7bd..680a4551af07 100644 --- a/sys/x86/include/pci_cfgreg.h +++ b/sys/x86/include/pci_cfgreg.h @@ -58,12 +58,15 @@ extern int cfgmech; rman_res_t hostb_alloc_start(int type, rman_res_t start, rman_res_t end, rman_res_t count); int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus); int pci_cfgregopen(void); -u_int32_t pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes); -void pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, u_int32_t data, int bytes); +u_int32_t pci_cfgregread_domain(int domain, int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, u_int32_t data, int bytes); #ifdef __HAVE_PIR void pci_pir_open(void); int pci_pir_probe(int bus, int require_parse); int pci_pir_route_interrupt(int bus, int device, int func, int pin); #endif +#define pci_cfgregread pci_cfgregread_domain +#define pci_cfgregwrite pci_cfgregwrite_domain + #endif /* !__X86_PCI_CFGREG_H__ */ From nobody Thu Jan 18 23:39:13 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK2p1csDz57Ht9; Thu, 18 Jan 2024 23:39:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK2n72Vdz4SHt; Thu, 18 Jan 2024 23:39:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621154; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UMQ46LN7kbXSrKp1ct/WgtuukwISJJyXlD6shC0nXw8=; b=TfNba2p93pZVa3NgyteEJZx+0JpCDXsAl1zl4Pr0oz3U85g+/iyiLGoHIN5MKxyOSQPn3x XnvuRMyKhjjpe6A4koDZikYmMqwFpFRpHEQgQJvnv+D2DRe2A/+TjR3FTYi17/ykxwCRJf 4DBPvSv+KJ0VXtjSBidBKh42s9rhA8zA5FAjkSJTs2UkpfU8Nn4rtF+QYtOaf6gSB6shXU fEjvyu6sBv9LJfpMvF3meSnKC7zVHTNsZhdzNrSg2r4EEtL5mYSXONU+Bhz0LVJR9HAyPL SwNXlBtkTZHjQK7zoTbUqWr1ZiTRIST+BgK4I0fnitxjSFoIg4qx0WDADWPIhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621154; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UMQ46LN7kbXSrKp1ct/WgtuukwISJJyXlD6shC0nXw8=; b=WfBa3P1tJhko0/hNVPuNMoPMSmFlhTpMMlbtdXm9cTazJx0T5p+bycG/SJCD3qBSW+mebV 6AwbrAeEe5SBB49WK35phYHlCgefX5yL/JArLvGKPRC1VW7YTn3ffq03HyCjIboVpa1iZh XVU1g4plaI9K37pls89gc+gqEHpAWRKoYD9N87i1RALwE2hHotpE+1jFtGAzQPQjMfs0+u VkE5x98lfngT7gbHQOTc8fPxyTdUyWdh77ttQJsBS2t+BAhrNr09RaLsCpxqdHp+aI5Ay7 63MOTL3b8zS6eDpg9yy52ZbkM7wdVvi1dhlptxrTxb2vMddZ+bfbEWZtVHORcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621154; a=rsa-sha256; cv=none; b=jRFEubMSptoQPSJmRxaT/C0eyS54lXhygbQXYXvHqjOPiJQ9az/v0adWsnll52NCKeXkAz jmBowcymk/HtqO5AGsTlntJEsZdu3Rfc2SJmWG9/JUkCqid4aFzfQ6rltXOWsf3kGNL/yk 3jtENsL7DBkseb3POVm0gBM92DdUhBhzxGKWptMMDFHSL+8+dBEPm47YQPxoxOBaommfd/ hLAGjsp/96IkLHkgDtrHmYb6eraPupUxWNuclpakrUwh6U9tLrFPqvQmTmvIZLrUXxnCCB ZaGX3w6APvoEN7xoTL4QIoF36o6TEQEFex81PdyQvy0DhtM8x8Dn4DE+HK4Ssg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK2n670fzS6n; Thu, 18 Jan 2024 23:39:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdDwh011432; Thu, 18 Jan 2024 23:39:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdDQt011429; Thu, 18 Jan 2024 23:39:13 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:13 GMT Message-Id: <202401182339.40INdDQt011429@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 1fc6f25daf30 - stable/14 - x86: Refactor pcie_cfgregopen List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1fc6f25daf301a876a543ff86842e23fc1cc9830 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=1fc6f25daf301a876a543ff86842e23fc1cc9830 commit 1fc6f25daf301a876a543ff86842e23fc1cc9830 Author: John Baldwin AuthorDate: 2023-11-29 18:32:16 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:23:32 +0000 x86: Refactor pcie_cfgregopen Split out some bits of pcie_cfgregopen that only need to be executed once into helper functions in preparation for supporting multiple MCFG entries. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D42829 (cherry picked from commit 9893a4fd31fa4b2e19a7b9cf786f49b9de50b407) --- sys/amd64/pci/pci_cfgreg.c | 43 +++++++++++++++----------- sys/i386/pci/pci_cfgreg.c | 75 ++++++++++++++++++++++++++++------------------ 2 files changed, 71 insertions(+), 47 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index 6b95c6fae0ab..dd177b6e9a8c 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -218,28 +218,12 @@ pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes) mtx_unlock_spin(&pcicfg_mtx); } -int -pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +static void +pcie_init_badslots(void) { uint32_t val1, val2; int slot; - if (!mcfg_enable) - return (0); - - if (minbus != 0) - return (0); - - if (bootverbose) - printf("PCIe: Memory Mapped configuration base @ 0x%lx\n", - base); - - /* XXX: We should make sure this really fits into the direct map. */ - pcie_base = (vm_offset_t)pmap_mapdev_pciecfg(base, (maxbus + 1) << 20); - pcie_minbus = minbus; - pcie_maxbus = maxbus; - cfgmech = CFGMECH_PCIE; - /* * On some AMD systems, some of the devices on bus 0 are * inaccessible using memory-mapped PCI config access. Walk @@ -257,6 +241,29 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) pcie_badslots |= (1 << slot); } } +} + +int +pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +{ + + if (!mcfg_enable) + return (0); + + if (minbus != 0) + return (0); + + if (bootverbose) + printf("PCIe: Memory Mapped configuration base @ 0x%lx\n", + base); + + /* XXX: We should make sure this really fits into the direct map. */ + pcie_base = (vm_offset_t)pmap_mapdev_pciecfg(base, (maxbus + 1) << 20); + pcie_minbus = minbus; + pcie_maxbus = maxbus; + cfgmech = CFGMECH_PCIE; + + pcie_init_badslots(); return (1); } diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index ef712fe49fe3..2129782063d3 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -437,8 +437,8 @@ pcireg_cfgopen(void) return (cfgmech); } -int -pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +static bool +pcie_init_cache(void) { struct pcie_cfg_list *pcielist; struct pcie_cfg_elem *pcie_array, *elem; @@ -446,26 +446,7 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) struct pcpu *pc; #endif vm_offset_t va; - uint32_t val1, val2; - int i, slot; - - if (!mcfg_enable) - return (0); - - if (minbus != 0) - return (0); - - if (!pae_mode && base >= 0x100000000) { - if (bootverbose) - printf( - "PCI: Memory Mapped PCI configuration area base 0x%jx too high\n", - (uintmax_t)base); - return (0); - } - - if (bootverbose) - printf("PCIe: Memory Mapped configuration base @ 0x%jx\n", - (uintmax_t)base); + int i; #ifdef SMP STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) @@ -474,12 +455,12 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) pcie_array = malloc(sizeof(struct pcie_cfg_elem) * PCIE_CACHE, M_DEVBUF, M_NOWAIT); if (pcie_array == NULL) - return (0); + return (false); va = kva_alloc(PCIE_CACHE * PAGE_SIZE); if (va == 0) { free(pcie_array, M_DEVBUF); - return (0); + return (false); } #ifdef SMP @@ -495,12 +476,14 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) TAILQ_INSERT_HEAD(pcielist, elem, elem); } } + return (true); +} - pcie_base = base; - pcie_minbus = minbus; - pcie_maxbus = maxbus; - cfgmech = CFGMECH_PCIE; - devmax = 32; +static void +pcie_init_badslots(void) +{ + uint32_t val1, val2; + int slot; /* * On some AMD systems, some of the devices on bus 0 are @@ -519,6 +502,40 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) pcie_badslots |= (1 << slot); } } +} + +int +pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +{ + + if (!mcfg_enable) + return (0); + + if (minbus != 0) + return (0); + + if (!pae_mode && base >= 0x100000000) { + if (bootverbose) + printf( + "PCI: Memory Mapped PCI configuration area base 0x%jx too high\n", + (uintmax_t)base); + return (0); + } + + if (bootverbose) + printf("PCIe: Memory Mapped configuration base @ 0x%jx\n", + (uintmax_t)base); + + if (!pcie_init_cache()) + return (0); + + pcie_base = base; + pcie_minbus = minbus; + pcie_maxbus = maxbus; + cfgmech = CFGMECH_PCIE; + devmax = 32; + + pcie_init_badslots(); return (1); } From nobody Thu Jan 18 23:39:14 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK2q5q0jz57Hyy; Thu, 18 Jan 2024 23:39:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK2q1PVnz4SNM; Thu, 18 Jan 2024 23:39:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621155; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Zn6ZxxnUpClCoYyIwhO4dsqgaYuxF1AzxlrzI+soBD8=; b=AlOCZ/Evgl6xjn4T4cbFsc7zLiWBt9R5laufVtDQCZmYHsOPp8/2zRbrnaIM0Ed32QaOJS rQRJekveVS0ryntZABYjgdBCuQs/+v2Bv3PtZxzN6P0K/KYWFNy1ExjoTPqWXtuZkstiTl WJcpdzEeVMZs2aOwG5n58Yp1X46CVxbxfNm+7SXs8BTXT7chuD/7I20k8+g0wOI9nQez9l OPrs//kHSv6K198P86bd5NEa3umJFS07HWRzZX6JdBobefn3NnteNHrvM6lxJ6sRyX+Oi2 wuUjdV9bUvMQCo36WbKMEFaRNpFzdLyvX0TCVW89AuzjpCUO0CaQ8mSp1uPA4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621155; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Zn6ZxxnUpClCoYyIwhO4dsqgaYuxF1AzxlrzI+soBD8=; b=kLz6oVc3lrbVPZ/DDQXN+KN5Y4G/40CtYM2ukEje0OFGjpvMOVtGrXW/nx9HhcspJmRHQp vw2z0229nXX9NherB93dECCgDzDejII1V4kPR2dVUS03HxQGrI7AbWCDcI/oEcN1Kfj3tu oWrvMspW9aLoDLrASWIHvdXvdfKPzJx72v1Sb5dJBq2EersHgm4IGe+2Y0bRxEpdnfnV9x ev+EPu3lW0YG/wHnE3N6I3ZmOaI/K90mTPrvj7MtXAM3+0UGKpBrGrTxUH4XaMWA41gsP3 emdqwOdEtbiFyfKs0aVCROfqzZWxYYHxdE3eawsw0duGrTaBOCY5oHV9ZQ7VJQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621155; a=rsa-sha256; cv=none; b=EeJY1j9XNIyDeG1D9vNs6ByQKc0/Jb3oCGb/cluvfRomCbz6uAzxYXFfSr55SzcWkMP4Fa CDkI6WKT9ykIgVitPaJoGrwnS18vTndmoALc+NAZ/btKkf6TWHHeCelnkwmfuFEEeJ32BB IKZjZ+dPRb/+RzUX3jUKu06t/LgiJfefVL+RQXcdyioON83cgfiirIccqUa6D/P8XPfFFh 6Ibd1XVRGZ4HtYJV5r+RUTU6mBSXB+otmoPhkdp9NOeRC2UOIqNspqCJmPsZ1nM72XcvEo iU5TP6a37m5aV4ebb/ya516NfBFnzT9iEeBUDLAzL++TOpsX2zg4M6HtNOEMDg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK2q01qwzSMT; Thu, 18 Jan 2024 23:39:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdEqq011483; Thu, 18 Jan 2024 23:39:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdEnT011481; Thu, 18 Jan 2024 23:39:14 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:14 GMT Message-Id: <202401182339.40INdEnT011481@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 4b5f64408804 - stable/14 - x86: Support multiple PCI MCFG regions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4b5f64408804384809e2e8954f6d5e7e95b8dbaa Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=4b5f64408804384809e2e8954f6d5e7e95b8dbaa commit 4b5f64408804384809e2e8954f6d5e7e95b8dbaa Author: John Baldwin AuthorDate: 2023-11-29 18:32:39 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:23:44 +0000 x86: Support multiple PCI MCFG regions In particular, this enables support for PCI config access for domains (segments) other than 0. Reported by: cperciva Tested by: cperciva (m7i.metal-48xl AWS instance) Reviewed by: imp Relnotes: yes Differential Revision: https://reviews.freebsd.org/D42828 (cherry picked from commit f54a3890b1f419d4a9edc99000efef52b9071b8f) --- sys/amd64/pci/pci_cfgreg.c | 122 ++++++++++++++++++++++++++------------- sys/dev/acpica/acpi.c | 7 +-- sys/i386/pci/pci_cfgreg.c | 133 ++++++++++++++++++++++++++++++------------- sys/x86/include/pci_cfgreg.h | 2 +- sys/x86/x86/legacy.c | 4 +- 5 files changed, 181 insertions(+), 87 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index dd177b6e9a8c..0f591cb0112a 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -42,12 +43,21 @@ #include #include +struct pcie_mcfg_region { + char *base; + uint16_t domain; + uint8_t minbus; + uint8_t maxbus; +}; + static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes); -static int pciereg_cfgread(int domain, int bus, unsigned slot, - unsigned func, unsigned reg, unsigned bytes); -static void pciereg_cfgwrite(int domain, int bus, unsigned slot, - unsigned func, unsigned reg, int data, unsigned bytes); +static struct pcie_mcfg_region *pcie_lookup_region(int domain, int bus); +static int pciereg_cfgread(struct pcie_mcfg_region *region, int bus, + unsigned slot, unsigned func, unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(struct pcie_mcfg_region *region, int bus, + unsigned slot, unsigned func, unsigned reg, int data, + unsigned bytes); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); @@ -60,11 +70,12 @@ SYSCTL_DECL(_hw_pci); */ int cfgmech = CFGMECH_1; -static vm_offset_t pcie_base; -static int pcie_minbus, pcie_maxbus; +static struct pcie_mcfg_region *mcfg_regions; +static int mcfg_numregions; static uint32_t pcie_badslots; static struct mtx pcicfg_mtx; MTX_SYSINIT(pcicfg_mtx, &pcicfg_mtx, "pcicfg_mtx", MTX_SPIN); + static int mcfg_enable = 1; SYSCTL_INT(_hw_pci, OID_AUTO, mcfg, CTLFLAG_RDTUN, &mcfg_enable, 0, "Enable support for PCI-e memory mapped config access"); @@ -76,16 +87,33 @@ pci_cfgregopen(void) return (1); } +static struct pcie_mcfg_region * +pcie_lookup_region(int domain, int bus) +{ + for (int i = 0; i < mcfg_numregions; i++) + if (mcfg_regions[i].domain == domain && + bus >= mcfg_regions[i].minbus && + bus <= mcfg_regions[i].maxbus) + return (&mcfg_regions[i]); + return (NULL); +} + static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); - if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus)) - return (pciereg_cfgread(domain, bus, slot, func, reg, bytes)); - else if (domain == 0) + if (cfgmech == CFGMECH_PCIE) { + struct pcie_mcfg_region *region; + + region = pcie_lookup_region(domain, bus); + if (region != NULL) + return (pciereg_cfgread(region, bus, slot, func, reg, + bytes)); + } + + if (domain == 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); else return (-1); @@ -130,10 +158,18 @@ pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, return; } - if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus)) - pciereg_cfgwrite(domain, bus, slot, func, reg, data, bytes); - else if (domain == 0) + if (cfgmech == CFGMECH_PCIE) { + struct pcie_mcfg_region *region; + + region = pcie_lookup_region(domain, bus); + if (region != NULL) { + pciereg_cfgwrite(region, bus, slot, func, reg, data, + bytes); + return; + } + } + + if (domain == 0) pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } @@ -219,7 +255,7 @@ pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes) } static void -pcie_init_badslots(void) +pcie_init_badslots(struct pcie_mcfg_region *region) { uint32_t val1, val2; int slot; @@ -236,7 +272,7 @@ pcie_init_badslots(void) if (val1 == 0xffffffff) continue; - val2 = pciereg_cfgread(0, 0, slot, 0, 0, 4); + val2 = pciereg_cfgread(region, 0, slot, 0, 0, 4); if (val2 != val1) pcie_badslots |= (1 << slot); } @@ -244,26 +280,34 @@ pcie_init_badslots(void) } int -pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) { + struct pcie_mcfg_region *region; if (!mcfg_enable) return (0); - if (minbus != 0) - return (0); - if (bootverbose) - printf("PCIe: Memory Mapped configuration base @ 0x%lx\n", - base); + printf("PCI: MCFG domain %u bus %u-%u base @ 0x%lx\n", + domain, minbus, maxbus, base); + + /* Resize the array. */ + mcfg_regions = realloc(mcfg_regions, + sizeof(*mcfg_regions) * (mcfg_numregions + 1), M_DEVBUF, M_WAITOK); + + region = &mcfg_regions[mcfg_numregions]; /* XXX: We should make sure this really fits into the direct map. */ - pcie_base = (vm_offset_t)pmap_mapdev_pciecfg(base, (maxbus + 1) << 20); - pcie_minbus = minbus; - pcie_maxbus = maxbus; + region->base = pmap_mapdev_pciecfg(base, (maxbus + 1 - minbus) << 20); + region->domain = domain; + region->minbus = minbus; + region->maxbus = maxbus; + mcfg_numregions++; + cfgmech = CFGMECH_PCIE; - pcie_init_badslots(); + if (domain == 0 && minbus == 0) + pcie_init_badslots(region); return (1); } @@ -284,17 +328,18 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) */ static int -pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, - unsigned bytes) +pciereg_cfgread(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg, unsigned bytes) { - vm_offset_t va; + char *va; int data = -1; - if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || - slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) + MPASS(bus >= region->minbus && bus <= region->maxbus); + + if (slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return (-1); - va = PCIE_VADDR(pcie_base, reg, bus, slot, func); + va = PCIE_VADDR(region->base, reg, bus - region->minbus, slot, func); switch (bytes) { case 4: @@ -315,16 +360,17 @@ pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, } static void -pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, - unsigned reg, int data, unsigned bytes) +pciereg_cfgwrite(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg, int data, unsigned bytes) { - vm_offset_t va; + char *va; + + MPASS(bus >= region->minbus && bus <= region->maxbus); - if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || - slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return; - va = PCIE_VADDR(pcie_base, reg, bus, slot, func); + va = PCIE_VADDR(region->base, reg, bus - region->minbus, slot, func); switch (bytes) { case 4: diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index 0c77da80c27e..9196c446ae80 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -2190,11 +2190,8 @@ acpi_enable_pcie(void) end = (ACPI_MCFG_ALLOCATION *)((char *)hdr + hdr->Length); alloc = (ACPI_MCFG_ALLOCATION *)((ACPI_TABLE_MCFG *)hdr + 1); while (alloc < end) { - if (alloc->PciSegment == 0) { - pcie_cfgregopen(alloc->Address, alloc->StartBusNumber, - alloc->EndBusNumber); - return; - } + pcie_cfgregopen(alloc->Address, alloc->PciSegment, + alloc->StartBusNumber, alloc->EndBusNumber); alloc++; } #endif diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index 2129782063d3..231205dde28c 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -55,6 +55,13 @@ printf a ; \ } while(0) +struct pcie_mcfg_region { + uint64_t base; + uint16_t domain; + uint8_t minbus; + uint8_t maxbus; +}; + #define PCIE_CACHE 8 struct pcie_cfg_elem { TAILQ_ENTRY(pcie_cfg_elem) elem; @@ -64,26 +71,30 @@ struct pcie_cfg_elem { SYSCTL_DECL(_hw_pci); +static struct pcie_mcfg_region *mcfg_regions; +static int mcfg_numregions; static TAILQ_HEAD(pcie_cfg_list, pcie_cfg_elem) pcie_list[MAXCPU]; -static uint64_t pcie_base; -static int pcie_minbus, pcie_maxbus; +static int pcie_cache_initted; static uint32_t pcie_badslots; int cfgmech; static int devmax; static struct mtx pcicfg_mtx; + static int mcfg_enable = 1; SYSCTL_INT(_hw_pci, OID_AUTO, mcfg, CTLFLAG_RDTUN, &mcfg_enable, 0, "Enable support for PCI-e memory mapped config access"); static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes); +static struct pcie_mcfg_region *pcie_lookup_region(int domain, int bus); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); static int pcireg_cfgopen(void); -static int pciereg_cfgread(int domain, int bus, unsigned slot, - unsigned func, unsigned reg, unsigned bytes); -static void pciereg_cfgwrite(int domain, int bus, unsigned slot, - unsigned func, unsigned reg, int data, unsigned bytes); +static int pciereg_cfgread(struct pcie_mcfg_region *region, int bus, + unsigned slot, unsigned func, unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(struct pcie_mcfg_region *region, int bus, + unsigned slot, unsigned func, unsigned reg, int data, + unsigned bytes); /* * Some BIOS writers seem to want to ignore the spec and put @@ -150,16 +161,33 @@ pci_cfgregopen(void) return (1); } +static struct pcie_mcfg_region * +pcie_lookup_region(int domain, int bus) +{ + for (int i = 0; i < mcfg_numregions; i++) + if (mcfg_regions[i].domain == domain && + bus >= mcfg_regions[i].minbus && + bus <= mcfg_regions[i].maxbus) + return (&mcfg_regions[i]); + return (NULL); +} + static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); - if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus)) - return (pciereg_cfgread(domain, bus, slot, func, reg, bytes)); - else if (domain == 0) + if (cfgmech == CFGMECH_PCIE) { + struct pcie_mcfg_region *region; + + region = pcie_lookup_region(domain, bus); + if (region != NULL) + return (pciereg_cfgread(region, bus, slot, func, reg, + bytes)); + } + + if (domain == 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); else return (-1); @@ -198,10 +226,18 @@ pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, return; } - if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus)) - pciereg_cfgwrite(domain, bus, slot, func, reg, data, bytes); - else if (domain == 0) + if (cfgmech == CFGMECH_PCIE) { + struct pcie_mcfg_region *region; + + region = pcie_lookup_region(domain, bus); + if (region != NULL) { + pciereg_cfgwrite(region, bus, slot, func, reg, data, + bytes); + return; + } + } + + if (domain == 0) pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } @@ -480,7 +516,7 @@ pcie_init_cache(void) } static void -pcie_init_badslots(void) +pcie_init_badslots(struct pcie_mcfg_region *region) { uint32_t val1, val2; int slot; @@ -497,7 +533,7 @@ pcie_init_badslots(void) if (val1 == 0xffffffff) continue; - val2 = pciereg_cfgread(0, 0, slot, 0, 0, 4); + val2 = pciereg_cfgread(region, 0, slot, 0, 0, 4); if (val2 != val1) pcie_badslots |= (1 << slot); } @@ -505,37 +541,51 @@ pcie_init_badslots(void) } int -pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) { + struct pcie_mcfg_region *region; if (!mcfg_enable) return (0); - if (minbus != 0) - return (0); - if (!pae_mode && base >= 0x100000000) { if (bootverbose) printf( - "PCI: Memory Mapped PCI configuration area base 0x%jx too high\n", - (uintmax_t)base); + "PCI: MCFG domain %u bus %u-%u base 0x%jx too high\n", + domain, minbus, maxbus, (uintmax_t)base); return (0); } if (bootverbose) - printf("PCIe: Memory Mapped configuration base @ 0x%jx\n", - (uintmax_t)base); + printf("PCI: MCFG domain %u bus %u-%u base @ 0x%jx\n", + domain, minbus, maxbus, (uintmax_t)base); + + if (pcie_cache_initted == 0) { + if (!pcie_init_cache()) + pcie_cache_initted = -1; + else + pcie_cache_initted = 1; + } - if (!pcie_init_cache()) + if (pcie_cache_initted == -1) return (0); - pcie_base = base; - pcie_minbus = minbus; - pcie_maxbus = maxbus; + /* Resize the array. */ + mcfg_regions = realloc(mcfg_regions, + sizeof(*mcfg_regions) * (mcfg_numregions + 1), M_DEVBUF, M_WAITOK); + + region = &mcfg_regions[mcfg_numregions]; + region->base = base; + region->domain = domain; + region->minbus = minbus; + region->maxbus = maxbus; + mcfg_numregions++; + cfgmech = CFGMECH_PCIE; devmax = 32; - pcie_init_badslots(); + if (domain == 0 && minbus == 0) + pcie_init_badslots(region); return (1); } @@ -548,13 +598,16 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) ((reg) & 0xfff))) static __inline vm_offset_t -pciereg_findaddr(int bus, unsigned slot, unsigned func, unsigned reg) +pciereg_findaddr(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg) { struct pcie_cfg_list *pcielist; struct pcie_cfg_elem *elem; vm_paddr_t pa, papage; - pa = PCIE_PADDR(pcie_base, reg, bus, slot, func); + MPASS(bus >= region->minbus && bus <= region->maxbus); + + pa = PCIE_PADDR(region->base, reg, bus - region->minbus, slot, func); papage = pa & ~PAGE_MASK; /* @@ -595,18 +648,17 @@ pciereg_findaddr(int bus, unsigned slot, unsigned func, unsigned reg) */ static int -pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, - unsigned bytes) +pciereg_cfgread(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg, unsigned bytes) { vm_offset_t va; int data = -1; - if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || - slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return (-1); critical_enter(); - va = pciereg_findaddr(bus, slot, func, reg); + va = pciereg_findaddr(region, bus, slot, func, reg); switch (bytes) { case 4: @@ -628,17 +680,16 @@ pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, } static void -pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, - unsigned reg, int data, unsigned bytes) +pciereg_cfgwrite(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg, int data, unsigned bytes) { vm_offset_t va; - if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || - slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return; critical_enter(); - va = pciereg_findaddr(bus, slot, func, reg); + va = pciereg_findaddr(region, bus, slot, func, reg); switch (bytes) { case 4: diff --git a/sys/x86/include/pci_cfgreg.h b/sys/x86/include/pci_cfgreg.h index 680a4551af07..f80cfe2e49f4 100644 --- a/sys/x86/include/pci_cfgreg.h +++ b/sys/x86/include/pci_cfgreg.h @@ -56,7 +56,7 @@ enum { extern int cfgmech; rman_res_t hostb_alloc_start(int type, rman_res_t start, rman_res_t end, rman_res_t count); -int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus); +int pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus); int pci_cfgregopen(void); u_int32_t pci_cfgregread_domain(int domain, int bus, int slot, int func, int reg, int bytes); void pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, u_int32_t data, int bytes); diff --git a/sys/x86/x86/legacy.c b/sys/x86/x86/legacy.c index 4e76e5b674a9..6ece5e085dab 100644 --- a/sys/x86/x86/legacy.c +++ b/sys/x86/x86/legacy.c @@ -133,14 +133,14 @@ legacy_pci_cfgregopen(device_t dev) case 0x3592: /* Intel 7520 or 7320 */ pciebar = pci_cfgregread(0, 0, 0, 0, 0xce, 2) << 16; - pcie_cfgregopen(pciebar, 0, 255); + pcie_cfgregopen(pciebar, 0, 0, 255); break; case 0x2580: case 0x2584: case 0x2590: /* Intel 915, 925, or 915GM */ pciebar = pci_cfgregread(0, 0, 0, 0, 0x48, 4); - pcie_cfgregopen(pciebar, 0, 255); + pcie_cfgregopen(pciebar, 0, 0, 255); break; } } From nobody Thu Jan 18 23:39:16 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK2r3RQDz57HtF; Thu, 18 Jan 2024 23:39:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK2r2NFjz4SNX; Thu, 18 Jan 2024 23:39:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621156; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5TRukxK3u+fJ3m7QPOKlda0fL3dAFzSiJQlxZ0nVZ+o=; b=KLQQzMxfMlFIPRX99LJpV3PYeBx9cj9/cvQMKTggIelcmm+rkkG/m9WBIQdexX2Df7M3gS eohmmNkr/WdJPLJEdfAIyQm6TzNyRCuR8+b3MIJ04gShcGFvjBhA6ghD5GI5vAy7FB2sUn 0k0Vdm2IfI5J2w2wdV4PPS0zxNh5q01H0ltugKHg/a4UttI8c2ef04dxxt0RW6xYaIxfv5 s12M54t+I4lXL7rmwkaR/oaSta54k8Yl1ZLf4B5lxjoYbV+cYvP0PaXVWr5kg5bPz9L6tC gJErKVUzLUmhhpZXIUwzHItvRwx74Rk1dYmGojJTqWT5wLAZzq770yfJXS2tuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621156; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5TRukxK3u+fJ3m7QPOKlda0fL3dAFzSiJQlxZ0nVZ+o=; b=GF33d25+93s3WYl32gf0Ks5PTTu4KqLRf4uKQN96MFY2OCWRLXu1AsQoRWwwMI+Em2Qw2T //vDhBIsB/7x5WBw25JuqpmTkhn7RsLncWmD603oynA9pc+RsSDDch3sitTyVNqB+oB94T z31iDmkWwhwRNJHxgoVQ7RbIF0SEJJE0Oy7kRj0i5sau8zZ31fPsWQAKZrHoY3+V6MjGH7 LHK/a4WpQYQ7z3hc7Tv6TO84LUrf6Znkt+WieVakuQ3lQhBNFbPZJb+rvcei42ZlBFloXf xlG8kUmcPqkuo0PPObKkrt4N2Sz8B/FocPgUXW4gUHyM7SmAqXF6cCMBqoMZXw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621156; a=rsa-sha256; cv=none; b=gTK2bciBYxYdHsg+k1K2fdkbqHd9dbrT4YCSdu7X84DkPd8MmoMt+5wCpBAESmkw5mt+QF i9Kl8esoHSmKCQIS4hF8lpAbX1XfEIzenyZ/CMkfNveGWt5UE8+I6Fibg2/tDIYHbr62qM s6nEUCyhzDHgMX6d48ieaHGcmlkiq9ibHy5mZ1Rr+LV4C4ThafK+QuhxQAGtlqbza3oRtg 2h9ylER1cCxt3IMLReP80/a7KhNlqmrU2LSNjIMvU82EZaJUJEBMo0pCxnAOHE1y97duhP rwKdp59tM+NrX4WUd6Y0Gx8sLIykzl94pKl3C60DCVKmpPA99dkSiSBDUwdAGg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK2r0mffzRq8; Thu, 18 Jan 2024 23:39:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdGcL011534; Thu, 18 Jan 2024 23:39:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdGh8011531; Thu, 18 Jan 2024 23:39:16 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:16 GMT Message-Id: <202401182339.40INdGh8011531@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 6a75d3b3fbe4 - stable/14 - x86: Adjust base addr for PCI MCFG regions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6a75d3b3fbe4c66bf9b8c18db55bba19ffb492e4 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6a75d3b3fbe4c66bf9b8c18db55bba19ffb492e4 commit 6a75d3b3fbe4c66bf9b8c18db55bba19ffb492e4 Author: Colin Percival AuthorDate: 2023-12-27 08:09:08 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:24:35 +0000 x86: Adjust base addr for PCI MCFG regions Each bus gets 1 MB of address space; the actual base address for an MCFG bus range is the address from the table plus the starting bus number times 1 MB. The PCI spec is unclear on this point, but this change matches what Linux does, which is likely enough of a de facto standard regardless of what any de jure standard might attempt to say. Fixes: f54a3890b1f4 ("x86: Support multiple PCI MCFG regions") Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D43206 (cherry picked from commit 61e2161367bb4e68e603f53b1107f9427f988861) --- sys/amd64/pci/pci_cfgreg.c | 2 +- sys/i386/pci/pci_cfgreg.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index 0f591cb0112a..e026eb57c413 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -298,7 +298,7 @@ pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) region = &mcfg_regions[mcfg_numregions]; /* XXX: We should make sure this really fits into the direct map. */ - region->base = pmap_mapdev_pciecfg(base, (maxbus + 1 - minbus) << 20); + region->base = pmap_mapdev_pciecfg(base + (minbus << 20), (maxbus + 1 - minbus) << 20); region->domain = domain; region->minbus = minbus; region->maxbus = maxbus; diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index 231205dde28c..d5896c0d4583 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -575,7 +575,7 @@ pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) sizeof(*mcfg_regions) * (mcfg_numregions + 1), M_DEVBUF, M_WAITOK); region = &mcfg_regions[mcfg_numregions]; - region->base = base; + region->base = base + (minbus << 20); region->domain = domain; region->minbus = minbus; region->maxbus = maxbus; From nobody Thu Jan 18 23:39:22 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK2y6Rl6z57Hnl; Thu, 18 Jan 2024 23:39:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK2y4m7Tz4SRH; Thu, 18 Jan 2024 23:39:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621162; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9gNkYeEXzbrtkUU+zmfAp63PO+JQ3KsVvJSUCIk0+Fk=; b=MPdqVbI/GhWApnvpL6vdRurzYPxoYmsc+0PH6MLbvd0Fsh9EHiE2fnCg2AGF/O1eHdsduh RnmG9VOlvqmdVwqtRcx461BNn03zdP116mAT2u5cfrXQf/Sp4SuJhNv/2pNi86nmMCEbHI hG/6wCO2BlxxsNQ6OHvtKbDhRyvv3fJhMVrtoIn2YCSlv1HbbgCnd9YPJFmMpvi/KJHtzo PcxngLVI+lf9g7jIJftz60THNNwx8LGgQol7ZytaKiONBNOOPO1ZOuaq9qLePmkMUl+jeq IL99Q2IzDg/AWI47bQdCO5oIv9GETmJtP1zhGlKwQCMNoiwhA5ULYYUc+5HO7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621162; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9gNkYeEXzbrtkUU+zmfAp63PO+JQ3KsVvJSUCIk0+Fk=; b=sJsspsNrLK7wK08asdrSrzeCpjT7foFiPFTTz/aAeun3lPiu6RmYJ+6fG2VoiCaj6eRPm2 CGWUKG6R0IroCs2hDssn4pGAYbryB+JIxRY8PjHnCfjY2vt0r07Cdyei5tpSmkj5KuxA3R 1LLoITG3m8P9IE2nmKKzoBXsMd2FWVDReRA4N9d2sf9+G7ij0/EabcHwqlLNXW8XHP+IXz YDmAsj1gATAqB9GLxOlFZzcPO2YSs3EMjsxyqfpiIiM6ZGx1d417TATt+iIks3aAb8zsNJ 8/t63hVwVS9VH8/4vWhvdTKayGnGf6pb8GFAuHWhhfY42uNGS8cwVxYzR6b3Ow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621162; a=rsa-sha256; cv=none; b=xHji+4szw7oZfd8Hi1L1eAsRHLsURb200ubM9oS51v5tJz9kRQaZX+bbpLMCX3beGoI1wj utQ8ew107FnUHM9adWhtvsjslpUl6GHmnn7yutKc2TIjB+tE/GLWBGO7wGu+4upRX+GWmB rP+BUGQ3dCu5elvrwsvoyBFVylZyl7fbMR3QP1X47e2BDq+5LS+C+OdyeiJ8Pb5GhvpmAM i126fgyYmFSFthTNbKosRcVu0BZlvs29WjXnVw+M4pE+ypuoMQGWgwehMGcRQiTN7xEBQW IL2V9psh54cD0ZV+3twLXektNTXUa27fT2EawEaJ3Flq4PXfMKvZyVIC75gmOw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK2y33n3zRkn; Thu, 18 Jan 2024 23:39:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdMHb011773; Thu, 18 Jan 2024 23:39:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdMRh011770; Thu, 18 Jan 2024 23:39:22 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:22 GMT Message-Id: <202401182339.40INdMRh011770@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: d72a6e531022 - stable/13 - pci_cfgreg: Add shims to preserve ABI of pci_cfgreg(read|write) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d72a6e5310221822aeb336d84e38ab5ecd37ea64 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d72a6e5310221822aeb336d84e38ab5ecd37ea64 commit d72a6e5310221822aeb336d84e38ab5ecd37ea64 Author: John Baldwin AuthorDate: 2024-01-18 23:19:11 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:27:25 +0000 pci_cfgreg: Add shims to preserve ABI of pci_cfgreg(read|write) This is a direct commit to stable/14 to preserve the ABI of the the pci_cfgregread and pci_cfgregwrite functions. The new routines are renamed to add a _domain suffix and macros map the new API to the new functions. Note: No API compatibility has been provided as modules in ports should not be using this internal API (normal PCI drivers use pci_read_config and pci_write_config with a device_t). (cherry picked from commit b5d2a06b2c4f50fd20774928602a3b5f0f27b127) --- sys/amd64/pci/pci_cfgreg.c | 27 ++++++++++++++++++++++++--- sys/arm64/acpica/pci_cfgreg.c | 27 ++++++++++++++++++++++++--- sys/arm64/include/pci_cfgreg.h | 7 +++++-- sys/i386/pci/pci_cfgreg.c | 20 ++++++++++++++++++++ sys/x86/include/pci_cfgreg.h | 7 +++++-- 5 files changed, 78 insertions(+), 10 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index 5218ff3a40f7..6b95c6fae0ab 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -95,7 +95,8 @@ pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) * Read configuration space register */ u_int32_t -pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) +pci_cfgregread_domain(int domain, int bus, int slot, int func, int reg, + int bytes) { uint32_t line; @@ -121,8 +122,8 @@ pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) * Write configuration space register */ void -pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, - int bytes) +pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, + uint32_t data, int bytes) { if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) { pcireg_cfgwrite(bus, slot, func, reg, data, bytes); @@ -333,3 +334,23 @@ pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, break; } } + +/* ABI compatibility shims. */ +#undef pci_cfgregread +#undef pci_cfgregwrite + +u_int32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, + int bytes); + +u_int32_t +pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +{ + return (pci_cfgregread_domain(0, bus, slot, func, reg, bytes)); +} + +void +pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, int bytes) +{ + return (pci_cfgregwrite_domain(0, bus, slot, func, reg, data, bytes)); +} diff --git a/sys/arm64/acpica/pci_cfgreg.c b/sys/arm64/acpica/pci_cfgreg.c index 55627d4abfaf..3b38be05beb5 100644 --- a/sys/arm64/acpica/pci_cfgreg.c +++ b/sys/arm64/acpica/pci_cfgreg.c @@ -41,7 +41,8 @@ * Read configuration space register */ uint32_t -pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) +pci_cfgregread_domain(int domain, int bus, int slot, int func, int reg, + int bytes) { /* ARM64TODO */ @@ -53,8 +54,8 @@ pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) * Write configuration space register */ void -pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, - int bytes) +pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, + uint32_t data, int bytes) { /* ARM64TODO */ @@ -72,3 +73,23 @@ pci_cfgregopen(void) panic("pci_cfgregopen not implemented"); return (0); } + +/* ABI compatibility shims. */ +#undef pci_cfgregread +#undef pci_cfgregwrite + +uint32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, + int bytes); + +uint32_t +pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +{ + return (pci_cfgregread_domain(0, bus, slot, func, reg, bytes)); +} + +void +pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, int bytes) +{ + return (pci_cfgregwrite_domain(0, bus, slot, func, reg, data, bytes)); +} diff --git a/sys/arm64/include/pci_cfgreg.h b/sys/arm64/include/pci_cfgreg.h index 579dcd954c9b..cce7e6bd8961 100644 --- a/sys/arm64/include/pci_cfgreg.h +++ b/sys/arm64/include/pci_cfgreg.h @@ -27,7 +27,10 @@ #define _MACHINE_PCI_CFGREG_H int pci_cfgregopen(void); -uint32_t pci_cfgregread(int, int, int, int, int, int); -void pci_cfgregwrite(int, int, int, int, int, uint32_t, int); +uint32_t pci_cfgregread_domain(int, int, int, int, int, int); +void pci_cfgregwrite_domain(int, int, int, int, int, uint32_t, int); + +#define pci_cfgregread pci_cfgregread_domain +#define pci_cfgregwrite pci_cfgregwrite_domain #endif /* !_MACHINE_PCI_CFGREG_H */ diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index a512e3ea2c66..ef712fe49fe3 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -640,3 +640,23 @@ pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, critical_exit(); } + +/* ABI compatibility shims. */ +#undef pci_cfgregread +#undef pci_cfgregwrite + +u_int32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, + int bytes); + +u_int32_t +pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +{ + return (pci_cfgregread_domain(0, bus, slot, func, reg, bytes)); +} + +void +pci_cfgregwrite(int bus, int slot, int func, int reg, uint32_t data, int bytes) +{ + return (pci_cfgregwrite_domain(0, bus, slot, func, reg, data, bytes)); +} diff --git a/sys/x86/include/pci_cfgreg.h b/sys/x86/include/pci_cfgreg.h index 370113b9d7bd..680a4551af07 100644 --- a/sys/x86/include/pci_cfgreg.h +++ b/sys/x86/include/pci_cfgreg.h @@ -58,12 +58,15 @@ extern int cfgmech; rman_res_t hostb_alloc_start(int type, rman_res_t start, rman_res_t end, rman_res_t count); int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus); int pci_cfgregopen(void); -u_int32_t pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes); -void pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, u_int32_t data, int bytes); +u_int32_t pci_cfgregread_domain(int domain, int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, u_int32_t data, int bytes); #ifdef __HAVE_PIR void pci_pir_open(void); int pci_pir_probe(int bus, int require_parse); int pci_pir_route_interrupt(int bus, int device, int func, int pin); #endif +#define pci_cfgregread pci_cfgregread_domain +#define pci_cfgregwrite pci_cfgregwrite_domain + #endif /* !__X86_PCI_CFGREG_H__ */ From nobody Thu Jan 18 23:39:21 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK2x4FVhz57Hj0; Thu, 18 Jan 2024 23:39:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK2x3G1bz4SPb; Thu, 18 Jan 2024 23:39:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621161; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vA89Q2aLT/FkN2wxEuoipvwWuRlHr/tLAJGcVnd4EW8=; b=Z8k1fiEmsiP9WMZx4cxuG4jGkoc/rgZRRimMjuUn2kJoHnOktsxQMBvHos3v62AJHi8IYi OgaBaykXyYudJgL1aSwHmhjyGdqnDWzxMkC+WIKnL4JCo7giVunKHCSPbcQCn/zLwXUZHE EkK7KIjK4NHKwUqAAEb7rPvpmgLCJoIakzzk608o3QV54eorlJGB8fltnKiAcDHB8vnMbD qNEN1Gq5roE7hTMxuYs6DkRogSx6gvwDaZ7K6GXKZnY6rL5TjHOq/XwR+VD37EVogKCwh5 K6yVdG/1ER7dGU1en6xvDgIbpfK+DHTIW498bAhn/AarqwN5dd5fhBpNOyUh1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621161; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vA89Q2aLT/FkN2wxEuoipvwWuRlHr/tLAJGcVnd4EW8=; b=vEDpMXISvm51kUwYi/ZOcOC8Os5dnm/QJK6FB1pcwUc1E9I2RH1qtR6nbDz0UY7qXAsgco OUZ8jVWzNYqLPwwGvyAtbFknZELQa+zHveRBXoO2J60A4u90Kbfl6nBrP/UM366BDpmT1d +t7kCU0dYsy2uiZwyDNBZ9pPsGBkQnNODsHt5CSM6ba9MLlcO0Wjt4bd5fm4bZIEcF9bZb CzpFnqnLIOQjizB1XWvX85JrJvwGJlBofcWqGDrxrSqlElLsRL/3gKhN87ApSvcBkYlmg6 7fH4IO2O5IXn8hL1UcGUeFd2QRE4sX5Bk3LsZU/bOEHASC2DTQjds29B3992NA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621161; a=rsa-sha256; cv=none; b=IdYQSj7cj2dy+teO/z6yiQkbMQH63m8NIabydSC4hAMmj2G7Zw1rWfRXUp3MOjbWFL5bPZ HkpMlQMrfpR/ec6LNHeMJPe4vUPlbZQFu52/KNVISEuoEQwxFnBwXcpQJP4ZA1wgk7bBOu RfBPEV1WJoo+4US2a+KK8n0WYe3AWIigwVNDmT/ul70SnNI0EdlzI1e5S0zgYeS4QU4vgq g6RhTpW00c9Fyt9j8XZzu+m1Yn+SoHHQ8EgOJ9AICFVrprDHGUd/RNouLawPpmyydHRKKn ZsWJsGRDdTvEsZvTkMilPLV+cqA2rec2krrzyXIgMgaVtWTSJjAU0UBEryfbbg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK2x250RzRq9; Thu, 18 Jan 2024 23:39:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdL2v011721; Thu, 18 Jan 2024 23:39:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdLsA011718; Thu, 18 Jan 2024 23:39:21 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:21 GMT Message-Id: <202401182339.40INdLsA011718@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 325e60b1e652 - stable/13 - pci_cfgreg: Add a PCI domain argument to the low-level register API List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 325e60b1e6527a6bdc9e9bca2c9ad5ff0b4f22fd Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=325e60b1e6527a6bdc9e9bca2c9ad5ff0b4f22fd commit 325e60b1e6527a6bdc9e9bca2c9ad5ff0b4f22fd Author: John Baldwin AuthorDate: 2023-11-29 18:31:47 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:27:22 +0000 pci_cfgreg: Add a PCI domain argument to the low-level register API This commit changes the API of pci_cfgreg(read|write) to add a domain argument (referred to as a segment in ACPI parlance) (note that this is not the same as a NUMA domain, but something PCI-specific). This does not yet enable access to domains other than 0, but updates the API to support domains. Places that use hard-coded bus/slot/function addresses have been updated to hardcode a domain of 0. A few places that have the PCI domain (segment) available such as the acpi_pcib_acpi.c Host-PCI bridge driver pass the PCI domain. The hpt27xx(4) and hptnr(4) drivers fail to attach to a device not on domain 0 since they provide APIs to their binary blobs that only permit bus/slot/function addressing. The x86 non-ACPI PCI bus drivers all hardcode a domain of 0 as they do not support multiple domains. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D42827 (cherry picked from commit 1587a9db92c03c738bb3f0fc5874b43c961e7c99) --- sys/amd64/pci/pci_cfgreg.c | 62 +++++++++++++++++++--------------- sys/amd64/vmm/amd/amdvi_hw.c | 2 +- sys/amd64/vmm/amd/ivrs_drv.c | 3 +- sys/arm64/acpica/pci_cfgreg.c | 5 +-- sys/arm64/include/pci_cfgreg.h | 4 +-- sys/dev/acpica/Osd/OsdHardware.c | 6 ++-- sys/dev/acpica/acpi_pci_link.c | 33 +++++++++++------- sys/dev/acpica/acpi_pcib_acpi.c | 8 +++-- sys/dev/agp/agp_amd64.c | 71 +++++++++++++++++++++------------------ sys/dev/amdtemp/amdtemp.c | 5 +-- sys/dev/hpt27xx/hpt27xx_os_bsd.c | 8 ++--- sys/dev/hpt27xx/hpt27xx_osm_bsd.c | 5 +++ sys/dev/hptnr/hptnr_os_bsd.c | 2 +- sys/dev/hptnr/hptnr_osm_bsd.c | 5 +++ sys/dev/ichwd/ichwd.c | 8 ++--- sys/dev/ipmi/ipmi_isa.c | 2 +- sys/dev/pci/pci_subr.c | 18 +++++----- sys/dev/pci/pcib_private.h | 3 +- sys/i386/pci/pci_cfgreg.c | 62 +++++++++++++++++++--------------- sys/i386/pci/pci_pir.c | 10 +++--- sys/x86/include/pci_cfgreg.h | 4 +-- sys/x86/iommu/intel_drv.c | 2 +- sys/x86/pci/pci_bus.c | 4 +-- sys/x86/pci/pci_early_quirks.c | 41 +++++++++++----------- sys/x86/pci/qpi.c | 2 +- sys/x86/x86/legacy.c | 8 ++--- 26 files changed, 215 insertions(+), 168 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index a9ee4bccb3a4..5218ff3a40f7 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -42,12 +42,12 @@ #include #include -static uint32_t pci_docfgregread(int bus, int slot, int func, int reg, - int bytes); -static int pciereg_cfgread(int bus, unsigned slot, unsigned func, - unsigned reg, unsigned bytes); -static void pciereg_cfgwrite(int bus, unsigned slot, unsigned func, - unsigned reg, int data, unsigned bytes); +static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, + int reg, int bytes); +static int pciereg_cfgread(int domain, int bus, unsigned slot, + unsigned func, unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(int domain, int bus, unsigned slot, + unsigned func, unsigned reg, int data, unsigned bytes); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); @@ -77,22 +77,25 @@ pci_cfgregopen(void) } static uint32_t -pci_docfgregread(int bus, int slot, int func, int reg, int bytes) +pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { + if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) + return (pcireg_cfgread(bus, slot, func, reg, bytes)); if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus) && - (bus != 0 || !(1 << slot & pcie_badslots))) - return (pciereg_cfgread(bus, slot, func, reg, bytes)); - else + (bus >= pcie_minbus && bus <= pcie_maxbus)) + return (pciereg_cfgread(domain, bus, slot, func, reg, bytes)); + else if (domain == 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); + else + return (-1); } /* * Read configuration space register */ u_int32_t -pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { uint32_t line; @@ -105,26 +108,31 @@ pci_cfgregread(int bus, int slot, int func, int reg, int bytes) * as an invalid IRQ. */ if (reg == PCIR_INTLINE && bytes == 1) { - line = pci_docfgregread(bus, slot, func, PCIR_INTLINE, 1); + line = pci_docfgregread(domain, bus, slot, func, PCIR_INTLINE, + 1); if (line == 0 || line >= 128) line = PCI_INVALID_IRQ; return (line); } - return (pci_docfgregread(bus, slot, func, reg, bytes)); + return (pci_docfgregread(domain, bus, slot, func, reg, bytes)); } /* * Write configuration space register */ void -pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) +pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, + int bytes) { + if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) { + pcireg_cfgwrite(bus, slot, func, reg, data, bytes); + return; + } if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus) && - (bus != 0 || !(1 << slot & pcie_badslots))) - pciereg_cfgwrite(bus, slot, func, reg, data, bytes); - else + (bus >= pcie_minbus && bus <= pcie_maxbus)) + pciereg_cfgwrite(domain, bus, slot, func, reg, data, bytes); + else if (domain == 0) pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } @@ -243,7 +251,7 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) if (val1 == 0xffffffff) continue; - val2 = pciereg_cfgread(0, slot, 0, 0, 4); + val2 = pciereg_cfgread(0, 0, slot, 0, 0, 4); if (val2 != val1) pcie_badslots |= (1 << slot); } @@ -268,14 +276,14 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) */ static int -pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, +pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, unsigned bytes) { vm_offset_t va; int data = -1; - if (bus < pcie_minbus || bus > pcie_maxbus || slot > PCI_SLOTMAX || - func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || + slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return (-1); va = PCIE_VADDR(pcie_base, reg, bus, slot, func); @@ -299,13 +307,13 @@ pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, } static void -pciereg_cfgwrite(int bus, unsigned slot, unsigned func, unsigned reg, int data, - unsigned bytes) +pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, + unsigned reg, int data, unsigned bytes) { vm_offset_t va; - if (bus < pcie_minbus || bus > pcie_maxbus || slot > PCI_SLOTMAX || - func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || + slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return; va = PCIE_VADDR(pcie_base, reg, bus, slot, func); diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index bef6b0038812..2707109ce587 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -125,7 +125,7 @@ static inline uint32_t amdvi_pci_read(struct amdvi_softc *softc, int off) { - return (pci_cfgregread(PCI_RID2BUS(softc->pci_rid), + return (pci_cfgregread(softc->pci_seg, PCI_RID2BUS(softc->pci_rid), PCI_RID2SLOT(softc->pci_rid), PCI_RID2FUNC(softc->pci_rid), off, 4)); } diff --git a/sys/amd64/vmm/amd/ivrs_drv.c b/sys/amd64/vmm/amd/ivrs_drv.c index 53acc8e5e53d..f45e292b11a2 100644 --- a/sys/amd64/vmm/amd/ivrs_drv.c +++ b/sys/amd64/vmm/amd/ivrs_drv.c @@ -649,7 +649,8 @@ ivhd_attach(device_t dev) softc->dev = dev; ivhd = ivhd_hdrs[unit]; KASSERT(ivhd, ("ivhd is NULL")); - softc->pci_dev = pci_find_bsf(PCI_RID2BUS(ivhd->Header.DeviceId), + softc->pci_dev = pci_find_dbsf(ivhd->PciSegmentGroup, + PCI_RID2BUS(ivhd->Header.DeviceId), PCI_RID2SLOT(ivhd->Header.DeviceId), PCI_RID2FUNC(ivhd->Header.DeviceId)); diff --git a/sys/arm64/acpica/pci_cfgreg.c b/sys/arm64/acpica/pci_cfgreg.c index 97c640dfb81c..55627d4abfaf 100644 --- a/sys/arm64/acpica/pci_cfgreg.c +++ b/sys/arm64/acpica/pci_cfgreg.c @@ -41,7 +41,7 @@ * Read configuration space register */ uint32_t -pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { /* ARM64TODO */ @@ -53,7 +53,8 @@ pci_cfgregread(int bus, int slot, int func, int reg, int bytes) * Write configuration space register */ void -pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) +pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, + int bytes) { /* ARM64TODO */ diff --git a/sys/arm64/include/pci_cfgreg.h b/sys/arm64/include/pci_cfgreg.h index 2c34f62c00c8..579dcd954c9b 100644 --- a/sys/arm64/include/pci_cfgreg.h +++ b/sys/arm64/include/pci_cfgreg.h @@ -27,7 +27,7 @@ #define _MACHINE_PCI_CFGREG_H int pci_cfgregopen(void); -uint32_t pci_cfgregread(int, int, int, int, int); -void pci_cfgregwrite(int, int, int, int, u_int32_t, int); +uint32_t pci_cfgregread(int, int, int, int, int, int); +void pci_cfgregwrite(int, int, int, int, int, uint32_t, int); #endif /* !_MACHINE_PCI_CFGREG_H */ diff --git a/sys/dev/acpica/Osd/OsdHardware.c b/sys/dev/acpica/Osd/OsdHardware.c index b9c11454913b..fbaf76d2a91a 100644 --- a/sys/dev/acpica/Osd/OsdHardware.c +++ b/sys/dev/acpica/Osd/OsdHardware.c @@ -110,7 +110,7 @@ AcpiOsReadPciConfiguration(ACPI_PCI_ID *PciId, UINT32 Register, UINT64 *Value, if (!pci_cfgregopen()) return (AE_NOT_EXIST); - *(UINT64 *)Value = pci_cfgregread(PciId->Bus, PciId->Device, + *(UINT64 *)Value = pci_cfgregread(PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, Register, Width / 8); return (AE_OK); @@ -132,8 +132,8 @@ AcpiOsWritePciConfiguration (ACPI_PCI_ID *PciId, UINT32 Register, if (!pci_cfgregopen()) return (AE_NOT_EXIST); - pci_cfgregwrite(PciId->Bus, PciId->Device, PciId->Function, Register, - Value, Width / 8); + pci_cfgregwrite(PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, + Register, Value, Width / 8); return (AE_OK); #endif diff --git a/sys/dev/acpica/acpi_pci_link.c b/sys/dev/acpica/acpi_pci_link.c index c168fe3b5fc9..e9c5b0f94f84 100644 --- a/sys/dev/acpica/acpi_pci_link.c +++ b/sys/dev/acpica/acpi_pci_link.c @@ -572,16 +572,16 @@ fail: /* XXX: Note that this is identical to pci_pir_search_irq(). */ static uint8_t -acpi_pci_link_search_irq(int bus, int device, int pin) +acpi_pci_link_search_irq(int domain, int bus, int device, int pin) { uint32_t value; uint8_t func, maxfunc; /* See if we have a valid device at function 0. */ - value = pci_cfgregread(bus, device, 0, PCIR_VENDOR, 2); + value = pci_cfgregread(domain, bus, device, 0, PCIR_VENDOR, 2); if (value == PCIV_INVALID) return (PCI_INVALID_IRQ); - value = pci_cfgregread(bus, device, 0, PCIR_HDRTYPE, 1); + value = pci_cfgregread(domain, bus, device, 0, PCIR_HDRTYPE, 1); if ((value & PCIM_HDRTYPE) > PCI_MAXHDRTYPE) return (PCI_INVALID_IRQ); if (value & PCIM_MFDEV) @@ -591,10 +591,12 @@ acpi_pci_link_search_irq(int bus, int device, int pin) /* Scan all possible functions at this device. */ for (func = 0; func <= maxfunc; func++) { - value = pci_cfgregread(bus, device, func, PCIR_VENDOR, 2); + value = pci_cfgregread(domain, bus, device, func, PCIR_VENDOR, + 2); if (value == PCIV_INVALID) continue; - value = pci_cfgregread(bus, device, func, PCIR_INTPIN, 1); + value = pci_cfgregread(domain, bus, device, func, PCIR_INTPIN, + 1); /* * See if it uses the pin in question. Note that the passed @@ -603,7 +605,8 @@ acpi_pci_link_search_irq(int bus, int device, int pin) */ if (value != pin + 1) continue; - value = pci_cfgregread(bus, device, func, PCIR_INTLINE, 1); + value = pci_cfgregread(domain, bus, device, func, PCIR_INTLINE, + 1); if (bootverbose) printf( "ACPI: Found matching pin for %d.%d.INT%c at func %d: %d\n", @@ -638,18 +641,22 @@ acpi_pci_link_add_reference(device_t dev, int index, device_t pcib, int slot, { struct link *link; uint8_t bios_irq; - uintptr_t bus; + uintptr_t bus, domain; /* - * Look up the PCI bus for the specified PCI bridge device. Note - * that the PCI bridge device might not have any children yet. - * However, looking up its bus number doesn't require a valid child - * device, so we just pass NULL. + * Look up the PCI domain and bus for the specified PCI bridge + * device. Note that the PCI bridge device might not have any + * children yet. However, looking up these IVARs doesn't + * require a valid child device, so we just pass NULL. */ if (BUS_READ_IVAR(pcib, NULL, PCIB_IVAR_BUS, &bus) != 0) { device_printf(pcib, "Unable to read PCI bus number"); panic("PCI bridge without a bus number"); } + if (BUS_READ_IVAR(pcib, NULL, PCIB_IVAR_DOMAIN, &domain) != 0) { + device_printf(pcib, "Unable to read PCI domain number"); + panic("PCI bridge without a domain number"); + } /* Bump the reference count. */ ACPI_SERIAL_BEGIN(pci_link); @@ -667,7 +674,7 @@ acpi_pci_link_add_reference(device_t dev, int index, device_t pcib, int slot, * The BIOS only routes interrupts via ISA IRQs using the ATPICs * (8259As). Thus, if this link is routed via an ISA IRQ, go * look to see if the BIOS routed an IRQ for this link at the - * indicated (bus, slot, pin). If so, we prefer that IRQ for + * indicated (domain, bus, slot, pin). If so, we prefer that IRQ for * this link and add that IRQ to our list of known-good IRQs. * This provides a good work-around for link devices whose _CRS * method is either broken or bogus. We only use the value @@ -684,7 +691,7 @@ acpi_pci_link_add_reference(device_t dev, int index, device_t pcib, int slot, } /* Try to find a BIOS IRQ setting from any matching devices. */ - bios_irq = acpi_pci_link_search_irq(bus, slot, pin); + bios_irq = acpi_pci_link_search_irq(domain, bus, slot, pin); if (!PCI_INTERRUPT_VALID(bios_irq)) { ACPI_SERIAL_END(pci_link); return; diff --git a/sys/dev/acpica/acpi_pcib_acpi.c b/sys/dev/acpica/acpi_pcib_acpi.c index e2b3bfa6374d..17e3ae35e157 100644 --- a/sys/dev/acpica/acpi_pcib_acpi.c +++ b/sys/dev/acpica/acpi_pcib_acpi.c @@ -630,14 +630,18 @@ static uint32_t acpi_pcib_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, int bytes) { - return (pci_cfgregread(bus, slot, func, reg, bytes)); + struct acpi_hpcib_softc *sc = device_get_softc(dev); + + return (pci_cfgregread(sc->ap_segment, bus, slot, func, reg, bytes)); } static void acpi_pcib_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, uint32_t data, int bytes) { - pci_cfgregwrite(bus, slot, func, reg, data, bytes); + struct acpi_hpcib_softc *sc = device_get_softc(dev); + + pci_cfgregwrite(sc->ap_segment, bus, slot, func, reg, data, bytes); } static int diff --git a/sys/dev/agp/agp_amd64.c b/sys/dev/agp/agp_amd64.c index a2b6ffab95ea..22c0ef4e17f0 100644 --- a/sys/dev/agp/agp_amd64.c +++ b/sys/dev/agp/agp_amd64.c @@ -119,10 +119,10 @@ static int agp_amd64_nvidia_match(uint16_t devid) { /* XXX nForce3 requires secondary AGP bridge at 0:11:0. */ - if (pci_cfgregread(0, 11, 0, PCIR_CLASS, 1) != PCIC_BRIDGE || - pci_cfgregread(0, 11, 0, PCIR_SUBCLASS, 1) != PCIS_BRIDGE_PCI || - pci_cfgregread(0, 11, 0, PCIR_VENDOR, 2) != 0x10de || - pci_cfgregread(0, 11, 0, PCIR_DEVICE, 2) != devid) + if (pci_cfgregread(0, 0, 11, 0, PCIR_CLASS, 1) != PCIC_BRIDGE || + pci_cfgregread(0, 0, 11, 0, PCIR_SUBCLASS, 1) != PCIS_BRIDGE_PCI || + pci_cfgregread(0, 0, 11, 0, PCIR_VENDOR, 2) != 0x10de || + pci_cfgregread(0, 0, 11, 0, PCIR_DEVICE, 2) != devid) return (ENXIO); return (0); @@ -132,11 +132,11 @@ static int agp_amd64_via_match(void) { /* XXX Some VIA bridge requires secondary AGP bridge at 0:1:0. */ - if (pci_cfgregread(0, 1, 0, PCIR_CLASS, 1) != PCIC_BRIDGE || - pci_cfgregread(0, 1, 0, PCIR_SUBCLASS, 1) != PCIS_BRIDGE_PCI || - pci_cfgregread(0, 1, 0, PCIR_VENDOR, 2) != 0x1106 || - pci_cfgregread(0, 1, 0, PCIR_DEVICE, 2) != 0xb188 || - (pci_cfgregread(0, 1, 0, AGP_VIA_AGPSEL, 1) & 2)) + if (pci_cfgregread(0, 0, 1, 0, PCIR_CLASS, 1) != PCIC_BRIDGE || + pci_cfgregread(0, 0, 1, 0, PCIR_SUBCLASS, 1) != PCIS_BRIDGE_PCI || + pci_cfgregread(0, 0, 1, 0, PCIR_VENDOR, 2) != 0x1106 || + pci_cfgregread(0, 0, 1, 0, PCIR_DEVICE, 2) != 0xb188 || + (pci_cfgregread(0, 0, 1, 0, AGP_VIA_AGPSEL, 1) & 2)) return (0); return (1); @@ -166,7 +166,7 @@ agp_amd64_attach(device_t dev) int i, n, error; for (i = 0, n = 0; i < PCI_SLOTMAX && n < AMD64_MAX_MCTRL; i++) { - devid = pci_cfgregread(0, i, 3, 0, 4); + devid = pci_cfgregread(0, 0, i, 3, 0, 4); if (devid == 0x11031022 || devid == 0x12031022) { sc->mctrl[n] = i; n++; @@ -228,11 +228,11 @@ agp_amd64_attach(device_t dev) /* Install the gatt and enable aperture. */ for (i = 0; i < sc->n_mctrl; i++) { - pci_cfgregwrite(0, sc->mctrl[i], 3, AGP_AMD64_ATTBASE, + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_ATTBASE, (uint32_t)(gatt->ag_physical >> 8) & AGP_AMD64_ATTBASE_MASK, 4); - pci_cfgregwrite(0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, - (pci_cfgregread(0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, 4) | + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, + (pci_cfgregread(0, 0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, 4) | AGP_AMD64_APCTRL_GARTEN) & ~(AGP_AMD64_APCTRL_DISGARTCPU | AGP_AMD64_APCTRL_DISGARTIO), 4); @@ -250,8 +250,8 @@ agp_amd64_detach(device_t dev) agp_free_cdev(dev); for (i = 0; i < sc->n_mctrl; i++) - pci_cfgregwrite(0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, - pci_cfgregread(0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, 4) & + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, + pci_cfgregread(0, 0, sc->mctrl[i], 3, AGP_AMD64_APCTRL, 4) & ~AGP_AMD64_APCTRL_GARTEN, 4); AGP_SET_APERTURE(dev, sc->initial_aperture); @@ -279,7 +279,7 @@ agp_amd64_get_aperture(device_t dev) struct agp_amd64_softc *sc = device_get_softc(dev); uint32_t i; - i = (pci_cfgregread(0, sc->mctrl[0], 3, AGP_AMD64_APCTRL, 4) & + i = (pci_cfgregread(0, 0, sc->mctrl[0], 3, AGP_AMD64_APCTRL, 4) & AGP_AMD64_APCTRL_SIZE_MASK) >> 1; if (i >= AGP_AMD64_TABLE_SIZE) @@ -302,8 +302,8 @@ agp_amd64_set_aperture(device_t dev, uint32_t aperture) return (EINVAL); for (j = 0; j < sc->n_mctrl; j++) - pci_cfgregwrite(0, sc->mctrl[j], 3, AGP_AMD64_APCTRL, - (pci_cfgregread(0, sc->mctrl[j], 3, AGP_AMD64_APCTRL, 4) & + pci_cfgregwrite(0, 0, sc->mctrl[j], 3, AGP_AMD64_APCTRL, + (pci_cfgregread(0, 0, sc->mctrl[j], 3, AGP_AMD64_APCTRL, 4) & ~(AGP_AMD64_APCTRL_SIZE_MASK)) | (i << 1), 4); switch (pci_get_vendor(dev)) { @@ -357,10 +357,15 @@ agp_amd64_flush_tlb(device_t dev) struct agp_amd64_softc *sc = device_get_softc(dev); int i; - for (i = 0; i < sc->n_mctrl; i++) - pci_cfgregwrite(0, sc->mctrl[i], 3, AGP_AMD64_CACHECTRL, - pci_cfgregread(0, sc->mctrl[i], 3, AGP_AMD64_CACHECTRL, 4) | - AGP_AMD64_CACHECTRL_INVGART, 4); + for (i = 0; i < sc->n_mctrl; i++) { + uint32_t val; + + val = pci_cfgregread(0, 0, sc->mctrl[i], 3, AGP_AMD64_CACHECTRL, + 4); + val |= AGP_AMD64_CACHECTRL_INVGART; + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_CACHECTRL, val, + 4); + } } static void @@ -373,7 +378,7 @@ agp_amd64_apbase_fixup(device_t dev) sc->apbase = rman_get_start(sc->agp.as_aperture); apbase = (sc->apbase >> 25) & AGP_AMD64_APBASE_MASK; for (i = 0; i < sc->n_mctrl; i++) - pci_cfgregwrite(0, sc->mctrl[i], 3, + pci_cfgregwrite(0, 0, sc->mctrl[i], 3, AGP_AMD64_APBASE, apbase, 4); } @@ -419,8 +424,8 @@ agp_amd64_nvidia_init(device_t dev) pci_write_config(dev, AGP_AMD64_NVIDIA_0_APBASE, (pci_read_config(dev, AGP_AMD64_NVIDIA_0_APBASE, 4) & 0x0000000f) | sc->apbase, 4); - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APBASE1, sc->apbase, 4); - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APBASE2, sc->apbase, 4); + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APBASE1, sc->apbase, 4); + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APBASE2, sc->apbase, 4); } static int @@ -439,12 +444,12 @@ agp_amd64_nvidia_set_aperture(device_t dev, uint32_t aperture) return (EINVAL); } - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APSIZE, - (pci_cfgregread(0, 11, 0, AGP_AMD64_NVIDIA_1_APSIZE, 4) & + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APSIZE, + (pci_cfgregread(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APSIZE, 4) & 0xfffffff0) | apsize, 4); - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APLIMIT1, + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APLIMIT1, sc->apbase + aperture - 1, 4); - pci_cfgregwrite(0, 11, 0, AGP_AMD64_NVIDIA_1_APLIMIT2, + pci_cfgregwrite(0, 0, 11, 0, AGP_AMD64_NVIDIA_1_APLIMIT2, sc->apbase + aperture - 1, 4); return (0); @@ -456,9 +461,9 @@ agp_amd64_via_init(device_t dev) struct agp_amd64_softc *sc = device_get_softc(dev); agp_amd64_apbase_fixup(dev); - pci_cfgregwrite(0, 1, 0, AGP3_VIA_ATTBASE, sc->gatt->ag_physical, 4); - pci_cfgregwrite(0, 1, 0, AGP3_VIA_GARTCTRL, - pci_cfgregread(0, 1, 0, AGP3_VIA_ATTBASE, 4) | 0x180, 4); + pci_cfgregwrite(0, 0, 1, 0, AGP3_VIA_ATTBASE, sc->gatt->ag_physical, 4); + pci_cfgregwrite(0, 0, 1, 0, AGP3_VIA_GARTCTRL, + pci_cfgregread(0, 0, 1, 0, AGP3_VIA_ATTBASE, 4) | 0x180, 4); } static int @@ -469,7 +474,7 @@ agp_amd64_via_set_aperture(device_t dev, uint32_t aperture) apsize = ((aperture - 1) >> 20) ^ 0xff; if ((((apsize ^ 0xff) << 20) | ((1 << 20) - 1)) + 1 != aperture) return (EINVAL); - pci_cfgregwrite(0, 1, 0, AGP3_VIA_APSIZE, apsize, 1); + pci_cfgregwrite(0, 0, 1, 0, AGP3_VIA_APSIZE, apsize, 1); return (0); } diff --git a/sys/dev/amdtemp/amdtemp.c b/sys/dev/amdtemp/amdtemp.c index 715b17492686..2ead5ba96cf5 100644 --- a/sys/dev/amdtemp/amdtemp.c +++ b/sys/dev/amdtemp/amdtemp.c @@ -431,8 +431,9 @@ amdtemp_attach(device_t dev) erratum319 = 1; break; case 1: /* Socket AM2+ or AM3 */ - if ((pci_cfgregread(pci_get_bus(dev), - pci_get_slot(dev), 2, AMDTEMP_DRAM_CONF_HIGH, 2) & + if ((pci_cfgregread(pci_get_domain(dev), + pci_get_bus(dev), pci_get_slot(dev), 2, + AMDTEMP_DRAM_CONF_HIGH, 2) & AMDTEMP_DRAM_MODE_DDR3) != 0 || model > 0x04 || (model == 0x04 && (cpuid & CPUID_STEPPING) >= 3)) break; diff --git a/sys/dev/hpt27xx/hpt27xx_os_bsd.c b/sys/dev/hpt27xx/hpt27xx_os_bsd.c index ebd58e771462..f4bbcfd11e82 100644 --- a/sys/dev/hpt27xx/hpt27xx_os_bsd.c +++ b/sys/dev/hpt27xx/hpt27xx_os_bsd.c @@ -90,19 +90,19 @@ BUS_ADDRESS get_dmapool_phy_addr(void *osext, void * dmapool_virt_addr) /* PCI space access */ HPT_U8 pcicfg_read_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg) { - return (HPT_U8)pci_cfgregread(bus, dev, func, reg, 1); + return (HPT_U8)pci_cfgregread(0, bus, dev, func, reg, 1); } HPT_U32 pcicfg_read_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg) { - return (HPT_U32)pci_cfgregread(bus, dev, func, reg, 4); + return (HPT_U32)pci_cfgregread(0, bus, dev, func, reg, 4); } void pcicfg_write_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U8 v) { - pci_cfgregwrite(bus, dev, func, reg, v, 1); + pci_cfgregwrite(0, bus, dev, func, reg, v, 1); } void pcicfg_write_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U32 v) { - pci_cfgregwrite(bus, dev, func, reg, v, 4); + pci_cfgregwrite(0, bus, dev, func, reg, v, 4); }/* PCI space access */ void *os_map_pci_bar( diff --git a/sys/dev/hpt27xx/hpt27xx_osm_bsd.c b/sys/dev/hpt27xx/hpt27xx_osm_bsd.c index 45d1b24e54e5..2c760d2e9009 100644 --- a/sys/dev/hpt27xx/hpt27xx_osm_bsd.c +++ b/sys/dev/hpt27xx/hpt27xx_osm_bsd.c @@ -75,6 +75,11 @@ static int hpt_attach(device_t dev) PVBUS vbus; PVBUS_EXT vbus_ext; + if (pci_get_domain(dev) != 0) { + device_printf(dev, "does not support PCI domains\n"); + return (ENXIO); + } + KdPrint(("hpt_attach(%d/%d/%d)", pci_get_bus(dev), pci_get_slot(dev), pci_get_function(dev))); him = hpt_match(dev, 1); diff --git a/sys/dev/hptnr/hptnr_os_bsd.c b/sys/dev/hptnr/hptnr_os_bsd.c index 62b852ddb6af..59f6fb651db9 100644 --- a/sys/dev/hptnr/hptnr_os_bsd.c +++ b/sys/dev/hptnr/hptnr_os_bsd.c @@ -88,7 +88,7 @@ BUS_ADDRESS get_dmapool_phy_addr(void *osext, void * dmapool_virt_addr) HPT_U32 pcicfg_read_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg) { - return (HPT_U32)pci_cfgregread(bus, dev, func, reg, 4); + return (HPT_U32)pci_cfgregread(0, bus, dev, func, reg, 4); }/* PCI space access */ void *os_map_pci_bar( diff --git a/sys/dev/hptnr/hptnr_osm_bsd.c b/sys/dev/hptnr/hptnr_osm_bsd.c index 61c34f1d677d..067b8530cd3e 100644 --- a/sys/dev/hptnr/hptnr_osm_bsd.c +++ b/sys/dev/hptnr/hptnr_osm_bsd.c @@ -77,6 +77,11 @@ static int hpt_attach(device_t dev) PVBUS vbus; PVBUS_EXT vbus_ext; + if (pci_get_domain(dev) != 0) { + device_printf(dev, "does not support PCI domains\n"); + return (ENXIO); + } + KdPrint(("hpt_attach(%d/%d/%d)", pci_get_bus(dev), pci_get_slot(dev), pci_get_function(dev))); him = hpt_match(dev, 1); diff --git a/sys/dev/ichwd/ichwd.c b/sys/dev/ichwd/ichwd.c index 4d517d81063a..c65b3f1687f2 100644 --- a/sys/dev/ichwd/ichwd.c +++ b/sys/dev/ichwd/ichwd.c @@ -698,12 +698,12 @@ ichwd_identify(driver_t *driver, device_t parent) * Space via the bridge's BAR. * Then hide back the bridge. */ - pci_cfgregwrite(0, 31, 1, 0xe1, 0, 1); - base_address64 = pci_cfgregread(0, 31, 1, SBREG_BAR + 4, 4); + pci_cfgregwrite(0, 0, 31, 1, 0xe1, 0, 1); + base_address64 = pci_cfgregread(0, 0, 31, 1, SBREG_BAR + 4, 4); base_address64 <<= 32; - base_address64 |= pci_cfgregread(0, 31, 1, SBREG_BAR, 4); + base_address64 |= pci_cfgregread(0, 0, 31, 1, SBREG_BAR, 4); base_address64 &= ~0xfull; - pci_cfgregwrite(0, 31, 1, 0xe1, 1, 1); + pci_cfgregwrite(0, 0, 31, 1, 0xe1, 1, 1); /* * No Reboot bit is in General Control register, offset 0xc, diff --git a/sys/dev/ipmi/ipmi_isa.c b/sys/dev/ipmi/ipmi_isa.c index 70d1c2e129aa..e0bf8952e279 100644 --- a/sys/dev/ipmi/ipmi_isa.c +++ b/sys/dev/ipmi/ipmi_isa.c @@ -67,7 +67,7 @@ ipmi_isa_identify(driver_t *driver, device_t parent) * create an isa ipmi device. For now we hardcode the list * of bus, device, function tuples. */ - devid = pci_cfgregread(0, 4, 2, PCIR_DEVVENDOR, 4); + devid = pci_cfgregread(0, 0, 4, 2, PCIR_DEVVENDOR, 4); if (devid != 0xffffffff && ipmi_pci_match(devid & 0xffff, devid >> 16) != NULL) return; diff --git a/sys/dev/pci/pci_subr.c b/sys/dev/pci/pci_subr.c index c869959da73d..71485875ebe3 100644 --- a/sys/dev/pci/pci_subr.c +++ b/sys/dev/pci/pci_subr.c @@ -53,7 +53,7 @@ host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, { uint32_t id; - id = read_config(bus, slot, func, PCIR_DEVVENDOR, 4); + id = read_config(0, bus, slot, func, PCIR_DEVVENDOR, 4); if (id == 0xffffffff) return (0); @@ -61,12 +61,12 @@ host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, case 0x12258086: /* Intel 824?? */ /* XXX This is a guess */ - /* *busnum = read_config(bus, slot, func, 0x41, 1); */ + /* *busnum = read_config(0, bus, slot, func, 0x41, 1); */ *busnum = bus; break; case 0x84c48086: /* Intel 82454KX/GX (Orion) */ - *busnum = read_config(bus, slot, func, 0x4a, 1); + *busnum = read_config(0, bus, slot, func, 0x4a, 1); break; case 0x84ca8086: /* @@ -85,19 +85,19 @@ host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, switch (slot) { case 0x12: /* Intel 82454NX PXB#0, Bus#A */ - *busnum = read_config(bus, 0x10, func, 0xd0, 1); + *busnum = read_config(0, bus, 0x10, func, 0xd0, 1); break; case 0x13: /* Intel 82454NX PXB#0, Bus#B */ - *busnum = read_config(bus, 0x10, func, 0xd1, 1) + 1; + *busnum = read_config(0, bus, 0x10, func, 0xd1, 1) + 1; break; case 0x14: /* Intel 82454NX PXB#1, Bus#A */ - *busnum = read_config(bus, 0x10, func, 0xd3, 1); + *busnum = read_config(0, bus, 0x10, func, 0xd3, 1); break; case 0x15: /* Intel 82454NX PXB#1, Bus#B */ - *busnum = read_config(bus, 0x10, func, 0xd4, 1) + 1; + *busnum = read_config(0, bus, 0x10, func, 0xd4, 1) + 1; break; } break; @@ -116,12 +116,12 @@ host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, case 0x02011166: case 0x02251166: case 0x03021014: - *busnum = read_config(bus, slot, func, 0x44, 1); + *busnum = read_config(0, bus, slot, func, 0x44, 1); break; /* Compaq/HP -- vendor 0x0e11 */ case 0x60100e11: - *busnum = read_config(bus, slot, func, 0xc8, 1); + *busnum = read_config(0, bus, slot, func, 0xc8, 1); break; default: /* Don't know how to read bus number. */ diff --git a/sys/dev/pci/pcib_private.h b/sys/dev/pci/pcib_private.h index e1e15caa17e4..cf689026a033 100644 --- a/sys/dev/pci/pcib_private.h +++ b/sys/dev/pci/pcib_private.h @@ -148,7 +148,8 @@ struct pcib_softc #define PCIB_SUPPORTED_ARI_VER 1 -typedef uint32_t pci_read_config_fn(int b, int s, int f, int reg, int width); +typedef uint32_t pci_read_config_fn(int d, int b, int s, int f, int reg, + int width); int host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, uint8_t *busnum); diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index a838f0a276f3..a512e3ea2c66 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -75,15 +75,15 @@ static int mcfg_enable = 1; SYSCTL_INT(_hw_pci, OID_AUTO, mcfg, CTLFLAG_RDTUN, &mcfg_enable, 0, "Enable support for PCI-e memory mapped config access"); -static uint32_t pci_docfgregread(int bus, int slot, int func, int reg, - int bytes); +static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, + int reg, int bytes); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); static int pcireg_cfgopen(void); -static int pciereg_cfgread(int bus, unsigned slot, unsigned func, - unsigned reg, unsigned bytes); -static void pciereg_cfgwrite(int bus, unsigned slot, unsigned func, - unsigned reg, int data, unsigned bytes); +static int pciereg_cfgread(int domain, int bus, unsigned slot, + unsigned func, unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(int domain, int bus, unsigned slot, + unsigned func, unsigned reg, int data, unsigned bytes); /* * Some BIOS writers seem to want to ignore the spec and put @@ -151,22 +151,25 @@ pci_cfgregopen(void) } static uint32_t -pci_docfgregread(int bus, int slot, int func, int reg, int bytes) +pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { + if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) + return (pcireg_cfgread(bus, slot, func, reg, bytes)); if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus) && - (bus != 0 || !(1 << slot & pcie_badslots))) - return (pciereg_cfgread(bus, slot, func, reg, bytes)); - else + (bus >= pcie_minbus && bus <= pcie_maxbus)) + return (pciereg_cfgread(domain, bus, slot, func, reg, bytes)); + else if (domain == 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); + else + return (-1); } /* * Read configuration space register */ u_int32_t -pci_cfgregread(int bus, int slot, int func, int reg, int bytes) +pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { uint32_t line; @@ -176,24 +179,29 @@ pci_cfgregread(int bus, int slot, int func, int reg, int bytes) * the code uses 255 as an invalid IRQ. */ if (reg == PCIR_INTLINE && bytes == 1) { - line = pci_docfgregread(bus, slot, func, PCIR_INTLINE, 1); + line = pci_docfgregread(domain, bus, slot, func, PCIR_INTLINE, + 1); return (pci_i386_map_intline(line)); } - return (pci_docfgregread(bus, slot, func, reg, bytes)); + return (pci_docfgregread(domain, bus, slot, func, reg, bytes)); } /* * Write configuration space register */ void -pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) +pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, + int bytes) { + if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) { + pcireg_cfgwrite(bus, slot, func, reg, data, bytes); + return; + } if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus) && - (bus != 0 || !(1 << slot & pcie_badslots))) - pciereg_cfgwrite(bus, slot, func, reg, data, bytes); - else + (bus >= pcie_minbus && bus <= pcie_maxbus)) + pciereg_cfgwrite(domain, bus, slot, func, reg, data, bytes); + else if (domain == 0) pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } @@ -506,7 +514,7 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) if (val1 == 0xffffffff) continue; - val2 = pciereg_cfgread(0, slot, 0, 0, 4); + val2 = pciereg_cfgread(0, 0, slot, 0, 0, 4); if (val2 != val1) pcie_badslots |= (1 << slot); } @@ -570,14 +578,14 @@ pciereg_findaddr(int bus, unsigned slot, unsigned func, unsigned reg) */ static int -pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, +pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, unsigned bytes) { vm_offset_t va; int data = -1; - if (bus < pcie_minbus || bus > pcie_maxbus || slot > PCI_SLOTMAX || - func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || + slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return (-1); critical_enter(); @@ -603,13 +611,13 @@ pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, } static void -pciereg_cfgwrite(int bus, unsigned slot, unsigned func, unsigned reg, int data, - unsigned bytes) +pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, + unsigned reg, int data, unsigned bytes) { vm_offset_t va; - if (bus < pcie_minbus || bus > pcie_maxbus || slot > PCI_SLOTMAX || - func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || + slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return; critical_enter(); diff --git a/sys/i386/pci/pci_pir.c b/sys/i386/pci/pci_pir.c index a1bc16a3ccc2..11e8cbdef924 100644 --- a/sys/i386/pci/pci_pir.c +++ b/sys/i386/pci/pci_pir.c @@ -265,10 +265,10 @@ pci_pir_search_irq(int bus, int device, int pin) uint8_t func, maxfunc; /* See if we have a valid device at function 0. */ - value = pci_cfgregread(bus, device, 0, PCIR_VENDOR, 2); + value = pci_cfgregread(0, bus, device, 0, PCIR_VENDOR, 2); if (value == PCIV_INVALID) return (PCI_INVALID_IRQ); - value = pci_cfgregread(bus, device, 0, PCIR_HDRTYPE, 1); + value = pci_cfgregread(0, bus, device, 0, PCIR_HDRTYPE, 1); if ((value & PCIM_HDRTYPE) > PCI_MAXHDRTYPE) return (PCI_INVALID_IRQ); if (value & PCIM_MFDEV) @@ -278,10 +278,10 @@ pci_pir_search_irq(int bus, int device, int pin) /* Scan all possible functions at this device. */ for (func = 0; func <= maxfunc; func++) { - value = pci_cfgregread(bus, device, func, PCIR_VENDOR, 2); + value = pci_cfgregread(0, bus, device, func, PCIR_VENDOR, 2); if (value == PCIV_INVALID) continue; - value = pci_cfgregread(bus, device, func, PCIR_INTPIN, 1); + value = pci_cfgregread(0, bus, device, func, PCIR_INTPIN, 1); /* * See if it uses the pin in question. Note that the passed @@ -290,7 +290,7 @@ pci_pir_search_irq(int bus, int device, int pin) */ if (value != pin + 1) continue; - value = pci_cfgregread(bus, device, func, PCIR_INTLINE, 1); + value = pci_cfgregread(0, bus, device, func, PCIR_INTLINE, 1); if (bootverbose) printf( "$PIR: Found matching pin for %d.%d.INT%c at func %d: %d\n", diff --git a/sys/x86/include/pci_cfgreg.h b/sys/x86/include/pci_cfgreg.h index 890d7233f658..370113b9d7bd 100644 --- a/sys/x86/include/pci_cfgreg.h +++ b/sys/x86/include/pci_cfgreg.h @@ -58,8 +58,8 @@ extern int cfgmech; rman_res_t hostb_alloc_start(int type, rman_res_t start, rman_res_t end, rman_res_t count); int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus); int pci_cfgregopen(void); -u_int32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); -void pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes); +u_int32_t pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes); +void pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, u_int32_t data, int bytes); #ifdef __HAVE_PIR void pci_pir_open(void); int pci_pir_probe(int bus, int require_parse); diff --git a/sys/x86/iommu/intel_drv.c b/sys/x86/iommu/intel_drv.c index 4205b08cab4f..9a871e7b2cc0 100644 --- a/sys/x86/iommu/intel_drv.c +++ b/sys/x86/iommu/intel_drv.c @@ -965,7 +965,7 @@ dmar_path_dev(int segment, int path_len, int busno, dev = pci_find_dbsf(segment, busno, path->Device, path->Function); if (i != path_len - 1) { *** 210 LINES SKIPPED *** From nobody Thu Jan 18 23:39:23 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK300NJsz57Hr0; Thu, 18 Jan 2024 23:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK2z4ffjz4SMP; Thu, 18 Jan 2024 23:39:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621163; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NWiED+ghZZWcD6BKNQxqu8miMYzzzn/fV1R4zHWcrZM=; b=aNxFI2Ithx5qtMRbtWZ6i4ils9CPvACA0P7hT+cDStNY3KpJgwOEWk45TAQlpv5nVheoD5 zZfBa+C0okmQ98TZyOhLMsSUfMojr0ksWcK5uyuiZxDVNGegejHhc8tXo4jXuh+jq7YVEO lPzypKSqWb9SgpwzSwkTIO3OfjYv0n+JOzMDa+4cUU2N1lrCe1BoX8b4TrfRroXvRe7KYl 7lD7AhgPeAOyAXDZt+w3LOkZqf+6sxEBCEp3nWgEpaunCBeTW4QXRlXDhw18lTWQxZsIOx F18Ezwb60xwi6mx754J/l3s1Fmczhb+uhq9eYnunUkSkDuhbfsZcAI4A1CREWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621163; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NWiED+ghZZWcD6BKNQxqu8miMYzzzn/fV1R4zHWcrZM=; b=CRr8D9zCBEoBrZ3bDwpcG/lQuYkdKkYXpu+5P1Y46jRvsM6rzdVr9qOjkyuWWSgPUhCSao uafQ/KOtUtBdaxgnQkay7kjE3X6qFvvbBz3Sxsz2ias6oWfyxhezOPIyWJ04iKpYqFhIVt 4DmAijSKabq680VPdAiTR2PVORfb1aPZFQudACl5Kf8epB32eKpyHS3S43sqKGqOIJfGQP qDi1FR4C4bYua6jo6Oe82Gia9VncfeAKsuMNdqKavx5Oxw/LacYO7eokM2RUZkZrIC6tUA 2XUgd4BZqDRUb9WVXuZ2ztL8HrnuclhtCLGxpwNJEnW1Wkd/coNwbB0tHs5VPQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621163; a=rsa-sha256; cv=none; b=cAygfmVPAK7WkvVG/xN7NXozHcY0TtTVI3W49M/P/gO8LfqM18CS+/9XraLZRKS5cNgSri VrKcmWSmBJrdQsMXv7Z7TSP7Dv+xGX+opCPNwWYWCE5d9mYjueTfWJDOaRvkrhf4/cZGv2 JjStPdrVqOxdcLFhUm+fHU/22toBVFtJHZKys9fwUd4GuWtVyTJtB8mnSGqhP4To1VJfze sPXNJiCiFgg9GguWFWovdlLUIqb6LwGPqIxrdO0Z7/Jpj/AtTzzCpRv/qzWrRQHjBr66a9 36NMopmzi/ipnhN7jpo0sNRON5a8ojQND/TI5AenZuKGxz/zhpXRi0G9s0cZPA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK2z3l2kzSMV; Thu, 18 Jan 2024 23:39:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdNKH011809; Thu, 18 Jan 2024 23:39:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdN4R011806; Thu, 18 Jan 2024 23:39:23 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:23 GMT Message-Id: <202401182339.40INdN4R011806@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: ac64ca647dfc - stable/13 - x86: Refactor pcie_cfgregopen List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ac64ca647dfce284bba09104c65d5aff35be0ce5 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ac64ca647dfce284bba09104c65d5aff35be0ce5 commit ac64ca647dfce284bba09104c65d5aff35be0ce5 Author: John Baldwin AuthorDate: 2023-11-29 18:32:16 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:27:25 +0000 x86: Refactor pcie_cfgregopen Split out some bits of pcie_cfgregopen that only need to be executed once into helper functions in preparation for supporting multiple MCFG entries. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D42829 (cherry picked from commit 9893a4fd31fa4b2e19a7b9cf786f49b9de50b407) --- sys/amd64/pci/pci_cfgreg.c | 43 +++++++++++++++----------- sys/i386/pci/pci_cfgreg.c | 75 ++++++++++++++++++++++++++++------------------ 2 files changed, 71 insertions(+), 47 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index 6b95c6fae0ab..dd177b6e9a8c 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -218,28 +218,12 @@ pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes) mtx_unlock_spin(&pcicfg_mtx); } -int -pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +static void +pcie_init_badslots(void) { uint32_t val1, val2; int slot; - if (!mcfg_enable) - return (0); - - if (minbus != 0) - return (0); - - if (bootverbose) - printf("PCIe: Memory Mapped configuration base @ 0x%lx\n", - base); - - /* XXX: We should make sure this really fits into the direct map. */ - pcie_base = (vm_offset_t)pmap_mapdev_pciecfg(base, (maxbus + 1) << 20); - pcie_minbus = minbus; - pcie_maxbus = maxbus; - cfgmech = CFGMECH_PCIE; - /* * On some AMD systems, some of the devices on bus 0 are * inaccessible using memory-mapped PCI config access. Walk @@ -257,6 +241,29 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) pcie_badslots |= (1 << slot); } } +} + +int +pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +{ + + if (!mcfg_enable) + return (0); + + if (minbus != 0) + return (0); + + if (bootverbose) + printf("PCIe: Memory Mapped configuration base @ 0x%lx\n", + base); + + /* XXX: We should make sure this really fits into the direct map. */ + pcie_base = (vm_offset_t)pmap_mapdev_pciecfg(base, (maxbus + 1) << 20); + pcie_minbus = minbus; + pcie_maxbus = maxbus; + cfgmech = CFGMECH_PCIE; + + pcie_init_badslots(); return (1); } diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index ef712fe49fe3..2129782063d3 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -437,8 +437,8 @@ pcireg_cfgopen(void) return (cfgmech); } -int -pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +static bool +pcie_init_cache(void) { struct pcie_cfg_list *pcielist; struct pcie_cfg_elem *pcie_array, *elem; @@ -446,26 +446,7 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) struct pcpu *pc; #endif vm_offset_t va; - uint32_t val1, val2; - int i, slot; - - if (!mcfg_enable) - return (0); - - if (minbus != 0) - return (0); - - if (!pae_mode && base >= 0x100000000) { - if (bootverbose) - printf( - "PCI: Memory Mapped PCI configuration area base 0x%jx too high\n", - (uintmax_t)base); - return (0); - } - - if (bootverbose) - printf("PCIe: Memory Mapped configuration base @ 0x%jx\n", - (uintmax_t)base); + int i; #ifdef SMP STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) @@ -474,12 +455,12 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) pcie_array = malloc(sizeof(struct pcie_cfg_elem) * PCIE_CACHE, M_DEVBUF, M_NOWAIT); if (pcie_array == NULL) - return (0); + return (false); va = kva_alloc(PCIE_CACHE * PAGE_SIZE); if (va == 0) { free(pcie_array, M_DEVBUF); - return (0); + return (false); } #ifdef SMP @@ -495,12 +476,14 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) TAILQ_INSERT_HEAD(pcielist, elem, elem); } } + return (true); +} - pcie_base = base; - pcie_minbus = minbus; - pcie_maxbus = maxbus; - cfgmech = CFGMECH_PCIE; - devmax = 32; +static void +pcie_init_badslots(void) +{ + uint32_t val1, val2; + int slot; /* * On some AMD systems, some of the devices on bus 0 are @@ -519,6 +502,40 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) pcie_badslots |= (1 << slot); } } +} + +int +pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +{ + + if (!mcfg_enable) + return (0); + + if (minbus != 0) + return (0); + + if (!pae_mode && base >= 0x100000000) { + if (bootverbose) + printf( + "PCI: Memory Mapped PCI configuration area base 0x%jx too high\n", + (uintmax_t)base); + return (0); + } + + if (bootverbose) + printf("PCIe: Memory Mapped configuration base @ 0x%jx\n", + (uintmax_t)base); + + if (!pcie_init_cache()) + return (0); + + pcie_base = base; + pcie_minbus = minbus; + pcie_maxbus = maxbus; + cfgmech = CFGMECH_PCIE; + devmax = 32; + + pcie_init_badslots(); return (1); } From nobody Thu Jan 18 23:39:24 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK306rL8z57HtJ; Thu, 18 Jan 2024 23:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK305M00z4SZg; Thu, 18 Jan 2024 23:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621164; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=57QGHRbKxFwroE1cC3E8ceDYzTKy/huJEQV/FZZaUFA=; b=uT4Dv7Q2fk0z6nxYiYYmv7XXgAe4rwHCuHuqTdNgYSb2pYxbcTdEm2XLqKLOdJLbCFSFGO zb6MtfDhly8XpNS4KAFbTgXBs/wWcfYQ/6sjee7KMKj81DC9K842VLearo2mUbeupVKwNY iUEyN72Kv5n7xXtVqLehat0KMvsP9j8qKQpXwBU/VoHLomhTi+J3uxZmkHtT8vQYzTG8hA oT5NySePiCq5nMr+5qAO26jcALgLQ9N8JsE+O8IutO6RFx0L8EKCDtfNrKyA9mDf1Oqcir 6o6VGyJGBIWRtjOdqytmYcFRRmYNYbWD89aZcglFnUabFN+TWDBXAbsALbY9fQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621164; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=57QGHRbKxFwroE1cC3E8ceDYzTKy/huJEQV/FZZaUFA=; b=UMmD9XdEmj+56kP96GKIa1ZaYv8lx5D2b7asW60I8bu05dNM/PV9X0ghVd1MFI6zud2KFh a0RsdzCPL0wrLMYZZcBdAU7Kpu3bt/G4mzxG19hLNJ2i42HYk4x5ncN9O99QNQkvSFyZJy P7t403mVDMS2nZYDYtnPbkS1FeJapsRqCqzBgoweJtDjWB2QsnpFVYcmkxeETnny2S9gsL ghQhmfRyyNl2Hn5VScb7ArwkHFB7XrVjhLSlXrA8NavssLMXys+1b99Q0/NViLmI5d38lC u3BnWNN/UzfCldA6o6mAXgVmG/EVhhe7U4aIZweWGf9JXYyaitKACT3PKQCZiA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621164; a=rsa-sha256; cv=none; b=j7StbdUIgs9lE+1ORE/cmq6HIZgWZgImU1G7v9+wnr/DIAXspkpEcSirglJz1Posmga94z eStzswW1cAsEDlUQzP0a5tI1HFJK/G4WI6t40aVW4ZnGYpQ0UfENz3/UG9dwZHzhrW185+ av8cyH/1lHj+RHCY1yxvLbBj3Oe/Z7GryfsAoG4rRRv3WmERJDzreFHvJXBrZdZuQ/0Yjg q/Lr8QUaTD2d7wV3h/iJq0Dk+BQUGELfJemM8no0VVmW/KbctCgk4YpYcQXzuToA3zzbT2 3nBO9gxwd1oaQNLwg9sJmE+OKAr+L4NmJBkj1jTnA9I2vzEbrb/skt0e1BRIRw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK304RMBzSMW; Thu, 18 Jan 2024 23:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdOwY011858; Thu, 18 Jan 2024 23:39:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdO8o011855; Thu, 18 Jan 2024 23:39:24 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:24 GMT Message-Id: <202401182339.40INdO8o011855@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 0fb0306a89ad - stable/13 - x86: Support multiple PCI MCFG regions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0fb0306a89adf80f9d9af9044cb1f7af8a2f9155 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=0fb0306a89adf80f9d9af9044cb1f7af8a2f9155 commit 0fb0306a89adf80f9d9af9044cb1f7af8a2f9155 Author: John Baldwin AuthorDate: 2023-11-29 18:32:39 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:27:25 +0000 x86: Support multiple PCI MCFG regions In particular, this enables support for PCI config access for domains (segments) other than 0. Reported by: cperciva Tested by: cperciva (m7i.metal-48xl AWS instance) Reviewed by: imp Relnotes: yes Differential Revision: https://reviews.freebsd.org/D42828 (cherry picked from commit f54a3890b1f419d4a9edc99000efef52b9071b8f) --- sys/amd64/pci/pci_cfgreg.c | 122 ++++++++++++++++++++++++++------------- sys/dev/acpica/acpi.c | 7 +-- sys/i386/pci/pci_cfgreg.c | 133 ++++++++++++++++++++++++++++++------------- sys/x86/include/pci_cfgreg.h | 2 +- sys/x86/x86/legacy.c | 4 +- 5 files changed, 181 insertions(+), 87 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index dd177b6e9a8c..0f591cb0112a 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -42,12 +43,21 @@ #include #include +struct pcie_mcfg_region { + char *base; + uint16_t domain; + uint8_t minbus; + uint8_t maxbus; +}; + static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes); -static int pciereg_cfgread(int domain, int bus, unsigned slot, - unsigned func, unsigned reg, unsigned bytes); -static void pciereg_cfgwrite(int domain, int bus, unsigned slot, - unsigned func, unsigned reg, int data, unsigned bytes); +static struct pcie_mcfg_region *pcie_lookup_region(int domain, int bus); +static int pciereg_cfgread(struct pcie_mcfg_region *region, int bus, + unsigned slot, unsigned func, unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(struct pcie_mcfg_region *region, int bus, + unsigned slot, unsigned func, unsigned reg, int data, + unsigned bytes); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); @@ -60,11 +70,12 @@ SYSCTL_DECL(_hw_pci); */ int cfgmech = CFGMECH_1; -static vm_offset_t pcie_base; -static int pcie_minbus, pcie_maxbus; +static struct pcie_mcfg_region *mcfg_regions; +static int mcfg_numregions; static uint32_t pcie_badslots; static struct mtx pcicfg_mtx; MTX_SYSINIT(pcicfg_mtx, &pcicfg_mtx, "pcicfg_mtx", MTX_SPIN); + static int mcfg_enable = 1; SYSCTL_INT(_hw_pci, OID_AUTO, mcfg, CTLFLAG_RDTUN, &mcfg_enable, 0, "Enable support for PCI-e memory mapped config access"); @@ -76,16 +87,33 @@ pci_cfgregopen(void) return (1); } +static struct pcie_mcfg_region * +pcie_lookup_region(int domain, int bus) +{ + for (int i = 0; i < mcfg_numregions; i++) + if (mcfg_regions[i].domain == domain && + bus >= mcfg_regions[i].minbus && + bus <= mcfg_regions[i].maxbus) + return (&mcfg_regions[i]); + return (NULL); +} + static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); - if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus)) - return (pciereg_cfgread(domain, bus, slot, func, reg, bytes)); - else if (domain == 0) + if (cfgmech == CFGMECH_PCIE) { + struct pcie_mcfg_region *region; + + region = pcie_lookup_region(domain, bus); + if (region != NULL) + return (pciereg_cfgread(region, bus, slot, func, reg, + bytes)); + } + + if (domain == 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); else return (-1); @@ -130,10 +158,18 @@ pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, return; } - if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus)) - pciereg_cfgwrite(domain, bus, slot, func, reg, data, bytes); - else if (domain == 0) + if (cfgmech == CFGMECH_PCIE) { + struct pcie_mcfg_region *region; + + region = pcie_lookup_region(domain, bus); + if (region != NULL) { + pciereg_cfgwrite(region, bus, slot, func, reg, data, + bytes); + return; + } + } + + if (domain == 0) pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } @@ -219,7 +255,7 @@ pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes) } static void -pcie_init_badslots(void) +pcie_init_badslots(struct pcie_mcfg_region *region) { uint32_t val1, val2; int slot; @@ -236,7 +272,7 @@ pcie_init_badslots(void) if (val1 == 0xffffffff) continue; - val2 = pciereg_cfgread(0, 0, slot, 0, 0, 4); + val2 = pciereg_cfgread(region, 0, slot, 0, 0, 4); if (val2 != val1) pcie_badslots |= (1 << slot); } @@ -244,26 +280,34 @@ pcie_init_badslots(void) } int -pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) { + struct pcie_mcfg_region *region; if (!mcfg_enable) return (0); - if (minbus != 0) - return (0); - if (bootverbose) - printf("PCIe: Memory Mapped configuration base @ 0x%lx\n", - base); + printf("PCI: MCFG domain %u bus %u-%u base @ 0x%lx\n", + domain, minbus, maxbus, base); + + /* Resize the array. */ + mcfg_regions = realloc(mcfg_regions, + sizeof(*mcfg_regions) * (mcfg_numregions + 1), M_DEVBUF, M_WAITOK); + + region = &mcfg_regions[mcfg_numregions]; /* XXX: We should make sure this really fits into the direct map. */ - pcie_base = (vm_offset_t)pmap_mapdev_pciecfg(base, (maxbus + 1) << 20); - pcie_minbus = minbus; - pcie_maxbus = maxbus; + region->base = pmap_mapdev_pciecfg(base, (maxbus + 1 - minbus) << 20); + region->domain = domain; + region->minbus = minbus; + region->maxbus = maxbus; + mcfg_numregions++; + cfgmech = CFGMECH_PCIE; - pcie_init_badslots(); + if (domain == 0 && minbus == 0) + pcie_init_badslots(region); return (1); } @@ -284,17 +328,18 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) */ static int -pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, - unsigned bytes) +pciereg_cfgread(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg, unsigned bytes) { - vm_offset_t va; + char *va; int data = -1; - if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || - slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) + MPASS(bus >= region->minbus && bus <= region->maxbus); + + if (slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return (-1); - va = PCIE_VADDR(pcie_base, reg, bus, slot, func); + va = PCIE_VADDR(region->base, reg, bus - region->minbus, slot, func); switch (bytes) { case 4: @@ -315,16 +360,17 @@ pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, } static void -pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, - unsigned reg, int data, unsigned bytes) +pciereg_cfgwrite(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg, int data, unsigned bytes) { - vm_offset_t va; + char *va; + + MPASS(bus >= region->minbus && bus <= region->maxbus); - if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || - slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return; - va = PCIE_VADDR(pcie_base, reg, bus, slot, func); + va = PCIE_VADDR(region->base, reg, bus - region->minbus, slot, func); switch (bytes) { case 4: diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index ca88acb60966..fbb3c2bc7c1c 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -2091,11 +2091,8 @@ acpi_enable_pcie(void) end = (ACPI_MCFG_ALLOCATION *)((char *)hdr + hdr->Length); alloc = (ACPI_MCFG_ALLOCATION *)((ACPI_TABLE_MCFG *)hdr + 1); while (alloc < end) { - if (alloc->PciSegment == 0) { - pcie_cfgregopen(alloc->Address, alloc->StartBusNumber, - alloc->EndBusNumber); - return; - } + pcie_cfgregopen(alloc->Address, alloc->PciSegment, + alloc->StartBusNumber, alloc->EndBusNumber); alloc++; } #endif diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index 2129782063d3..231205dde28c 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -55,6 +55,13 @@ printf a ; \ } while(0) +struct pcie_mcfg_region { + uint64_t base; + uint16_t domain; + uint8_t minbus; + uint8_t maxbus; +}; + #define PCIE_CACHE 8 struct pcie_cfg_elem { TAILQ_ENTRY(pcie_cfg_elem) elem; @@ -64,26 +71,30 @@ struct pcie_cfg_elem { SYSCTL_DECL(_hw_pci); +static struct pcie_mcfg_region *mcfg_regions; +static int mcfg_numregions; static TAILQ_HEAD(pcie_cfg_list, pcie_cfg_elem) pcie_list[MAXCPU]; -static uint64_t pcie_base; -static int pcie_minbus, pcie_maxbus; +static int pcie_cache_initted; static uint32_t pcie_badslots; int cfgmech; static int devmax; static struct mtx pcicfg_mtx; + static int mcfg_enable = 1; SYSCTL_INT(_hw_pci, OID_AUTO, mcfg, CTLFLAG_RDTUN, &mcfg_enable, 0, "Enable support for PCI-e memory mapped config access"); static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes); +static struct pcie_mcfg_region *pcie_lookup_region(int domain, int bus); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); static int pcireg_cfgopen(void); -static int pciereg_cfgread(int domain, int bus, unsigned slot, - unsigned func, unsigned reg, unsigned bytes); -static void pciereg_cfgwrite(int domain, int bus, unsigned slot, - unsigned func, unsigned reg, int data, unsigned bytes); +static int pciereg_cfgread(struct pcie_mcfg_region *region, int bus, + unsigned slot, unsigned func, unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(struct pcie_mcfg_region *region, int bus, + unsigned slot, unsigned func, unsigned reg, int data, + unsigned bytes); /* * Some BIOS writers seem to want to ignore the spec and put @@ -150,16 +161,33 @@ pci_cfgregopen(void) return (1); } +static struct pcie_mcfg_region * +pcie_lookup_region(int domain, int bus) +{ + for (int i = 0; i < mcfg_numregions; i++) + if (mcfg_regions[i].domain == domain && + bus >= mcfg_regions[i].minbus && + bus <= mcfg_regions[i].maxbus) + return (&mcfg_regions[i]); + return (NULL); +} + static uint32_t pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) { if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); - if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus)) - return (pciereg_cfgread(domain, bus, slot, func, reg, bytes)); - else if (domain == 0) + if (cfgmech == CFGMECH_PCIE) { + struct pcie_mcfg_region *region; + + region = pcie_lookup_region(domain, bus); + if (region != NULL) + return (pciereg_cfgread(region, bus, slot, func, reg, + bytes)); + } + + if (domain == 0) return (pcireg_cfgread(bus, slot, func, reg, bytes)); else return (-1); @@ -198,10 +226,18 @@ pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, return; } - if (cfgmech == CFGMECH_PCIE && - (bus >= pcie_minbus && bus <= pcie_maxbus)) - pciereg_cfgwrite(domain, bus, slot, func, reg, data, bytes); - else if (domain == 0) + if (cfgmech == CFGMECH_PCIE) { + struct pcie_mcfg_region *region; + + region = pcie_lookup_region(domain, bus); + if (region != NULL) { + pciereg_cfgwrite(region, bus, slot, func, reg, data, + bytes); + return; + } + } + + if (domain == 0) pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } @@ -480,7 +516,7 @@ pcie_init_cache(void) } static void -pcie_init_badslots(void) +pcie_init_badslots(struct pcie_mcfg_region *region) { uint32_t val1, val2; int slot; @@ -497,7 +533,7 @@ pcie_init_badslots(void) if (val1 == 0xffffffff) continue; - val2 = pciereg_cfgread(0, 0, slot, 0, 0, 4); + val2 = pciereg_cfgread(region, 0, slot, 0, 0, 4); if (val2 != val1) pcie_badslots |= (1 << slot); } @@ -505,37 +541,51 @@ pcie_init_badslots(void) } int -pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) { + struct pcie_mcfg_region *region; if (!mcfg_enable) return (0); - if (minbus != 0) - return (0); - if (!pae_mode && base >= 0x100000000) { if (bootverbose) printf( - "PCI: Memory Mapped PCI configuration area base 0x%jx too high\n", - (uintmax_t)base); + "PCI: MCFG domain %u bus %u-%u base 0x%jx too high\n", + domain, minbus, maxbus, (uintmax_t)base); return (0); } if (bootverbose) - printf("PCIe: Memory Mapped configuration base @ 0x%jx\n", - (uintmax_t)base); + printf("PCI: MCFG domain %u bus %u-%u base @ 0x%jx\n", + domain, minbus, maxbus, (uintmax_t)base); + + if (pcie_cache_initted == 0) { + if (!pcie_init_cache()) + pcie_cache_initted = -1; + else + pcie_cache_initted = 1; + } - if (!pcie_init_cache()) + if (pcie_cache_initted == -1) return (0); - pcie_base = base; - pcie_minbus = minbus; - pcie_maxbus = maxbus; + /* Resize the array. */ + mcfg_regions = realloc(mcfg_regions, + sizeof(*mcfg_regions) * (mcfg_numregions + 1), M_DEVBUF, M_WAITOK); + + region = &mcfg_regions[mcfg_numregions]; + region->base = base; + region->domain = domain; + region->minbus = minbus; + region->maxbus = maxbus; + mcfg_numregions++; + cfgmech = CFGMECH_PCIE; devmax = 32; - pcie_init_badslots(); + if (domain == 0 && minbus == 0) + pcie_init_badslots(region); return (1); } @@ -548,13 +598,16 @@ pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) ((reg) & 0xfff))) static __inline vm_offset_t -pciereg_findaddr(int bus, unsigned slot, unsigned func, unsigned reg) +pciereg_findaddr(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg) { struct pcie_cfg_list *pcielist; struct pcie_cfg_elem *elem; vm_paddr_t pa, papage; - pa = PCIE_PADDR(pcie_base, reg, bus, slot, func); + MPASS(bus >= region->minbus && bus <= region->maxbus); + + pa = PCIE_PADDR(region->base, reg, bus - region->minbus, slot, func); papage = pa & ~PAGE_MASK; /* @@ -595,18 +648,17 @@ pciereg_findaddr(int bus, unsigned slot, unsigned func, unsigned reg) */ static int -pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, - unsigned bytes) +pciereg_cfgread(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg, unsigned bytes) { vm_offset_t va; int data = -1; - if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || - slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return (-1); critical_enter(); - va = pciereg_findaddr(bus, slot, func, reg); + va = pciereg_findaddr(region, bus, slot, func, reg); switch (bytes) { case 4: @@ -628,17 +680,16 @@ pciereg_cfgread(int domain, int bus, unsigned slot, unsigned func, unsigned reg, } static void -pciereg_cfgwrite(int domain, int bus, unsigned slot, unsigned func, - unsigned reg, int data, unsigned bytes) +pciereg_cfgwrite(struct pcie_mcfg_region *region, int bus, unsigned slot, + unsigned func, unsigned reg, int data, unsigned bytes) { vm_offset_t va; - if (domain != 0 || bus < pcie_minbus || bus > pcie_maxbus || - slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) + if (slot > PCI_SLOTMAX || func > PCI_FUNCMAX || reg > PCIE_REGMAX) return; critical_enter(); - va = pciereg_findaddr(bus, slot, func, reg); + va = pciereg_findaddr(region, bus, slot, func, reg); switch (bytes) { case 4: diff --git a/sys/x86/include/pci_cfgreg.h b/sys/x86/include/pci_cfgreg.h index 680a4551af07..f80cfe2e49f4 100644 --- a/sys/x86/include/pci_cfgreg.h +++ b/sys/x86/include/pci_cfgreg.h @@ -56,7 +56,7 @@ enum { extern int cfgmech; rman_res_t hostb_alloc_start(int type, rman_res_t start, rman_res_t end, rman_res_t count); -int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus); +int pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus); int pci_cfgregopen(void); u_int32_t pci_cfgregread_domain(int domain, int bus, int slot, int func, int reg, int bytes); void pci_cfgregwrite_domain(int domain, int bus, int slot, int func, int reg, u_int32_t data, int bytes); diff --git a/sys/x86/x86/legacy.c b/sys/x86/x86/legacy.c index 0921f2eb2db2..3a5e878be7ed 100644 --- a/sys/x86/x86/legacy.c +++ b/sys/x86/x86/legacy.c @@ -134,14 +134,14 @@ legacy_pci_cfgregopen(device_t dev) case 0x3592: /* Intel 7520 or 7320 */ pciebar = pci_cfgregread(0, 0, 0, 0, 0xce, 2) << 16; - pcie_cfgregopen(pciebar, 0, 255); + pcie_cfgregopen(pciebar, 0, 0, 255); break; case 0x2580: case 0x2584: case 0x2590: /* Intel 915, 925, or 915GM */ pciebar = pci_cfgregread(0, 0, 0, 0, 0x48, 4); - pcie_cfgregopen(pciebar, 0, 255); + pcie_cfgregopen(pciebar, 0, 0, 255); break; } } From nobody Thu Jan 18 23:39:25 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGK321F16z57HfN; Thu, 18 Jan 2024 23:39:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGK316KqFz4Sgm; Thu, 18 Jan 2024 23:39:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621165; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MkXc0jqR0xgQ6JfT2RdoZqPuMGT8CUeDOg8u1M+JkpU=; b=ywNVg9WheSLRPVrSP/pG3zuLhJkwiIyiGB+P1U3+MiCZuh+jeAFM3f1NXLlj5S8qOv0LSg DAAThSwli6wFvr8H0Sxy6tW0UJ9lNildU32xoDCW3ebLkqoPw+Rla11F9u5gd8POKAuiAD CKyQZro9idcSOgs6n8NNFDuans4Hzrjkl5yrB2qW60tuSzpgTa2yN0uv7mgMeDJt997NsZ VYNJjgXL06n+7pTwyQCJKVM1yXTEGWnsweoHWMk0YiMXnlD8jB6JDLeGf2HZzFQKkhjxTh OvtjEbV9f4KEFQzn4n0ha9Noy8cTY+krGq0vzgcTq6O0vXKRlfj4X5uh1isDMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705621165; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MkXc0jqR0xgQ6JfT2RdoZqPuMGT8CUeDOg8u1M+JkpU=; b=iQ1cHF9bJbH8BsJMwTQmJ954lp791lB/ZmphOgOvW0GPEEvDsb+y7uPCKMN+3JPL/KkVhN HCVpLp3ZoL+f5/BGHKKnnh3cCCvVkR+7NuvtFLDap0q+/O/cX3FmAQ1zHw5Yla+PzpgcRI Ay0KQP02idNEtDAAlp6yi7nTJcyX70ep0c9gTaaAegR+eukEvTxWa84e3NpIJUYoQhtKGS vv9a0Zc5MSGGHKB9QYrL5fkTVtA6UyXK3SlDbd5Kj+FNaChKqCN9SwpspEysSGM9tbqA0Z MeqW9ZjPFoq3xSwJXfnfI95pI4NLC3ggLqRCZ2wARo1O4ybZjg54KjN/Dyt8XQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705621165; a=rsa-sha256; cv=none; b=GBwPDOSRZ0b/0+RymGMGo6kFJ5wak5oehRlb9e6ezOs+RtQBBfQSH+YJdSIV8hsFFCPupz PJOrEkGaFGcW17+Xrx/sQOrQnyisnmhDg0PezpCBYCE14tmdiYw8Atn5gveFYxdQQ0tgDb rnraZlaXlbsvE90MLatrASCSIuHNkzLoGsqF6Lbx4KArMNJTfsQ5QBjRd6PGynXzj/vD5w 8QSOE2Pid4FjvziY6mzJoYLKFxtdyy/gQuNOJJ9slAMyNQkt+Viwfw0n/ncWv9kPMKPTVi J9Fudd4CkrPL//8SkuzWwY2+cd9NuW8fJznQpBKQaItLwO7AoRGbmx8hayEN7A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGK315RjnzRtZ; Thu, 18 Jan 2024 23:39:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40INdP5N011909; Thu, 18 Jan 2024 23:39:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40INdPIj011906; Thu, 18 Jan 2024 23:39:25 GMT (envelope-from git) Date: Thu, 18 Jan 2024 23:39:25 GMT Message-Id: <202401182339.40INdPIj011906@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 122ac7ca1424 - stable/13 - x86: Adjust base addr for PCI MCFG regions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 122ac7ca14244a865a2252c853f3601816398a95 Auto-Submitted: auto-generated The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=122ac7ca14244a865a2252c853f3601816398a95 commit 122ac7ca14244a865a2252c853f3601816398a95 Author: Colin Percival AuthorDate: 2023-12-27 08:09:08 +0000 Commit: John Baldwin CommitDate: 2024-01-18 23:27:25 +0000 x86: Adjust base addr for PCI MCFG regions Each bus gets 1 MB of address space; the actual base address for an MCFG bus range is the address from the table plus the starting bus number times 1 MB. The PCI spec is unclear on this point, but this change matches what Linux does, which is likely enough of a de facto standard regardless of what any de jure standard might attempt to say. Fixes: f54a3890b1f4 ("x86: Support multiple PCI MCFG regions") Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D43206 (cherry picked from commit 61e2161367bb4e68e603f53b1107f9427f988861) --- sys/amd64/pci/pci_cfgreg.c | 2 +- sys/i386/pci/pci_cfgreg.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index 0f591cb0112a..e026eb57c413 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -298,7 +298,7 @@ pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) region = &mcfg_regions[mcfg_numregions]; /* XXX: We should make sure this really fits into the direct map. */ - region->base = pmap_mapdev_pciecfg(base, (maxbus + 1 - minbus) << 20); + region->base = pmap_mapdev_pciecfg(base + (minbus << 20), (maxbus + 1 - minbus) << 20); region->domain = domain; region->minbus = minbus; region->maxbus = maxbus; diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index 231205dde28c..d5896c0d4583 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -575,7 +575,7 @@ pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) sizeof(*mcfg_regions) * (mcfg_numregions + 1), M_DEVBUF, M_WAITOK); region = &mcfg_regions[mcfg_numregions]; - region->base = base; + region->base = base + (minbus << 20); region->domain = domain; region->minbus = minbus; region->maxbus = maxbus; From nobody Fri Jan 19 00:00:48 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGKWj0nHqz57KgQ; Fri, 19 Jan 2024 00:00:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGKWj0Kk2z4Z0R; Fri, 19 Jan 2024 00:00:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705622449; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oVp/kJkV+iVLe0Ca2zB1Ws0VttwiaV9NP7IDqLqOAS0=; b=Kg1Vf7jhMbN3udbpWuiZzU89G+YAl1JIElwrgK+f2B0CQeLLHvmChedT0C1KOXWU032QXL 2t4iuzfNeBhsF59EH5PK1Kv131EjmpohC/lcMMT2i5jHjaadsMoS11ccs65P0OKwuEOL6V feep8UEI9SMZdnHRtMFXGpOpx6JKC9NysZ9Q5CuXOpmnhd5x/vd/vlHaksKf+xIT568v+w H7Gtc0TlqodyKzIt6rhCgo5XW2AJpHdHF0oQuSrx5OmGCP+FGz8eKj3l1S3BpE+2PMvBHy TJXIEg+7hQFmK+ZWILOlCHuXe93uoRT+TJvB9i+9PVdjKh9Al5KBrKPKjPRJng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705622449; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oVp/kJkV+iVLe0Ca2zB1Ws0VttwiaV9NP7IDqLqOAS0=; b=E+jgmXnWOoQ8m0ImcOyo3fQZylL/XHpAoqWzHHW46BoXpuTPY30Ach0JGwInTwnrA0KoDC hlWLJU4pMK5H70Owxmt6p+2Y519Vmxq1ZEkH/RsOVD5KmhKSJ6wLFUC5WvQwiySNF8cn9f AwATHtPWpw9B5w913zKDv6zbE5ZYQb9qFskNFt7fkVI1q9NbcJzl3AzXi1btHegAATXDwV Anj0nKsb5YyFzoiMpUk4NIU4vkn9EsbgxjcGYi0FJ39RAzgL5WyKQET8/y4VbzCAjglax/ LQdaYEmxm94dfUjnmbs3TSBRi0+0tPj/1GTKKfanZO8zI7E5ie1XfJJocX4QsQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705622449; a=rsa-sha256; cv=none; b=tYQBadE6exejAE82qWNJeLTUDCaAp+fW9uxCKY45fY1ajkiu66WwhmzteKt3XcmEGBsF1r HD9Tl+2a2ww6p9jiD1cxwzl+ZNBelTDRoGfDgLgUlz83CFg1ysnfDI6dRMBpfI93dnLl8f grRO7Um1Na45D2jA2wWvf+j/08Frd2okHDl4iKjYRTbUfKILTYA97HZC7Umijj0vJp48y/ zEug3PGXcwieg0vHmnbVMLb8D8aFuRIaQzkde2wt7oLTVgRg8PqMN3DHWzKLColtniE20w fdWKt4WIuv7YQfxepdQQG0sl8zuRGUIqIVOPrmeOmOKKuHTFEKk0JGMC2nwAZQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGKWh6WDKzSwc; Fri, 19 Jan 2024 00:00:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40J00mEP055367; Fri, 19 Jan 2024 00:00:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40J00mtX055364; Fri, 19 Jan 2024 00:00:48 GMT (envelope-from git) Date: Fri, 19 Jan 2024 00:00:48 GMT Message-Id: <202401190000.40J00mtX055364@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 3e51c9e331aa - stable/13 - 13.3: update stable/13 to -PRERELEASE List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 3e51c9e331aa41eafbdc6a62c23a1d941b4b0bbb Auto-Submitted: auto-generated The branch stable/13 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=3e51c9e331aa41eafbdc6a62c23a1d941b4b0bbb commit 3e51c9e331aa41eafbdc6a62c23a1d941b4b0bbb Author: Colin Percival AuthorDate: 2024-01-18 18:30:03 +0000 Commit: Colin Percival CommitDate: 2024-01-19 00:00:38 +0000 13.3: update stable/13 to -PRERELEASE This marks the start of the FreeBSD 13.3 release cycle; the stable/13 tree is now in "code slush". Developers are encouraged to prioritize fixing bugs (and/or merging bug fixes from HEAD) over new features at this time. Commit approval from re@ is not required but if new features introduce problems they may be removed from the release. Approved by: re (implicit) --- sys/conf/newvers.sh | 4 ++-- usr.bin/yacc/config.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 92b046be7203..9b2511c4ab16 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -52,8 +52,8 @@ # TYPE="FreeBSD" -REVISION="13.2" -BRANCH="STABLE" +REVISION="13.3" +BRANCH="PRERELEASE" if [ -n "${BRANCH_OVERRIDE}" ]; then BRANCH=${BRANCH_OVERRIDE} fi diff --git a/usr.bin/yacc/config.h b/usr.bin/yacc/config.h index cf7e27051509..a5e41906082b 100644 --- a/usr.bin/yacc/config.h +++ b/usr.bin/yacc/config.h @@ -86,7 +86,7 @@ #define STDC_HEADERS 1 /* Define to the system name. */ -#define SYSTEM_NAME "freebsd13.2" +#define SYSTEM_NAME "freebsd13.3" /* "Define to 1 if you want to use dbmalloc for testing." */ /* #undef USE_DBMALLOC */ From nobody Fri Jan 19 08:21:54 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGXdt4s8mz588xn; Fri, 19 Jan 2024 08:21:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGXdt4Jq2z4KVr; Fri, 19 Jan 2024 08:21:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705652514; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VOqVLd85wGlSN4r2InUU4ktdID093VH6p5tIii7h6lA=; b=DQnUvOmED5EcwH+InOO/8R0PuGr3qJnPf9aZ2OcNBi6rR/18vL3TGZ120EMN8Qi+2s+O1b 18GdYCD2JMtcz4AZMiBgHR3k0G3u1uIsqcc0CAd8fXmsfUS1NVmIm/4U3DxV9fdTh0Q7Yk e3mXYi0JjsoKgZptjh8Im0sEeZDRHmhp5RaVnELLmgy5CsJ/XeLzARck8IB30EysMutXMf 3U1GuX7W70H7HOA2F8JkLY3YQ29DXGUrl2egFKiWpk66bPLXDzOTxzYY0rmm84iDG1Xakd blaK/+YF4evdYWaRbSQ9HWYzy+oaAXRd4kQoFXK0B9J6XSFCyiJe1KeGT+PezQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705652514; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VOqVLd85wGlSN4r2InUU4ktdID093VH6p5tIii7h6lA=; b=rAWyHbiaLmiMJGN6glSTKdX4/k7H6GSCpRoL9nQgG1z94bPMpt1xAV8LfYHYsbuEBExtp0 IuT9jLls2gRMaaZ2VnoPXu4583hh/W2uv5kgd1gTQ/ygF3PBT1Lk1/tqpZmAGUWSLgfz3Q QEcJu2xV2AebpPWeJXjbr9MD/6thlG1tRiGuWnfFf9Jxm0aEJKw3kprFy45/G8h7ttQfJo xu55DE7uiAkLh4G0IxeWoZIxXww+CD3YOCKr/TDmD1R147AwvN+pwLad7Da1npue9wNEv1 45iDLBCwvwy3LNzK2XleO9CbdrwITVJq5s14PfeH1E6tntnjQF5zXkmVw6bY+A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705652514; a=rsa-sha256; cv=none; b=vjFrzJRPBdSYK3WqqCtiYwq9aG+YJsHaOFY3jgXNIOkmZiZxeJOxS+Ij7Vr6oSuzcWusun T9RTBP1GCiDti0RY1zeIAvz1quBcJuOdW27prb0A6pLG8XxYC+jWx0g6+2ItkqNmHlSgAa ZZX99oa2XAFpF7VVgpFOuuzvgYhfPQ26rI5xSv6nMUSfghBDpJTOq4V6sqBt7Ht+ZzO1Hy EuNFED7QdHKUlNtJKhw5ph81kuWtI0L9BLZu5U0CTDRdgbVGUmp82ERZZpF2htoy8oB5s5 oGU9dEVw5d2On5+14uv5RA3X8KJuULUHshtuug89jhtbHySh04X2o/4DYRIIEA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGXdt3NLMzkNd; Fri, 19 Jan 2024 08:21:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40J8LsaL002034; Fri, 19 Jan 2024 08:21:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40J8LsaT002031; Fri, 19 Jan 2024 08:21:54 GMT (envelope-from git) Date: Fri, 19 Jan 2024 08:21:54 GMT Message-Id: <202401190821.40J8LsaT002031@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Stefan =?utf-8?Q?E=C3=9Fer?= Subject: git: 62d25c65977f - stable/13 - usr.bin/gh-bc: fix missing LTO support after MFC List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: se X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 62d25c65977f5bea6553650f2acc0d15f8e13368 Auto-Submitted: auto-generated The branch stable/13 has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=62d25c65977f5bea6553650f2acc0d15f8e13368 commit 62d25c65977f5bea6553650f2acc0d15f8e13368 Author: Stefan Eßer AuthorDate: 2024-01-19 08:19:38 +0000 Commit: Stefan Eßer CommitDate: 2024-01-19 08:19:38 +0000 usr.bin/gh-bc: fix missing LTO support after MFC Restore exclusion of powerpc64 and mips* from LTO, which has been lost by the MFC of the fix for the WITHOUT_NLS_CATALOGS case. --- usr.bin/gh-bc/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/usr.bin/gh-bc/Makefile b/usr.bin/gh-bc/Makefile index e78ab4b2994b..c058b54d93f9 100644 --- a/usr.bin/gh-bc/Makefile +++ b/usr.bin/gh-bc/Makefile @@ -61,7 +61,8 @@ CFLAGS+= -DNLSPATH=/usr/share/nls/%L/%N.cat CFLAGS+= -I${BCDIR}/include # prevent floating point incompatibilities caused by -flto on some architectures -.if ${MACHINE_ARCH} != riscv64 +.if ${MACHINE_ARCH:Mmips*} == "" && ${MACHINE_ARCH} != powerpc64 && \ + ${MACHINE_ARCH} != riscv64 CFLAGS+= -flto .endif From nobody Fri Jan 19 14:25:37 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGhjY3WM6z56bR4; Fri, 19 Jan 2024 14:25:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGhjY2wCzz4tnf; Fri, 19 Jan 2024 14:25:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705674337; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dsaowdmHE8aAYNc78bPhxiDN8Xjzcd/cvJAczve6IJM=; b=uH9hv63fmqa1XUjsnOqrx0Y7mQ5cQXsX4pWmf20qqqfUER2XxtHwwLuN78Rj+jvwLsA64b c6F1M+O8wL3jRJgIWzLKl9HcI+9bkyh22DfGOn6YtOhin+oTF3AaWtLuUZaPbKDKP17LA2 qBEBa7mz30cbaJejKRSOTPk0Wh7rYDMXwZi07BeGq+GykY1j60DEPVVMKCvC7NuZZiPcme AiZa6wBoDmAFkYztAThQhqMGbhxTb25cF6GdLmJsCe358UfT4YyTfA8MImdmsxipBCdPGZ +4eP88W7Dnaap1vnVCdPS+R8nnlqeSUj6FrxQUjeeMWYvkiQLFm6RtTRfJsRrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705674337; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dsaowdmHE8aAYNc78bPhxiDN8Xjzcd/cvJAczve6IJM=; b=yschCpaM/LisI1TIYfFXsTr3NqFhwxkA60fqKUyRffEi+PtHfwLJlxsNboX0Go0QXoFyGQ SiSGqkQSJlmLmFAft/CQnztt1HMSMt2QEutmko9f3p89VY7xIFZZSINrH2NseZoSXvy0hr Zvrxgzgx2RP1UgC/gyesNRxDO+tPNdigSsmIYOiRoomP2SBqh8ZelaEBAUACcAep7qysR7 TNjtAjCLbwkM70oZoK+pUPhl61mdVOiGv7DY6o8LlRebbcrCIJEFSeWDcLECQFZoWDKPQK 5uU6QQ0SZXj2wo3uCynUX7iP0I2KBiCFPvAwprsF3hutez207PeRGhCUcSCS/A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705674337; a=rsa-sha256; cv=none; b=DR0ODk1hvIcj7YWNGTl+Z7z0AveOowIIAoFaw1IWNcB7xrOTAblZi3XX/OCsN/6k+Xqc0J RF2uuGj2FtX3xWcU+fBTSaPt15A+gcqgjiBo3vz9I02lZiHwwf7sq7IHyhxlza88lcg6oc HjfSuzeETlh/+3FRAa9HwhQCiEMoTLvfsPNnm9RuJDAxgfTzM92S211Pdisrzn5pXh2NZu l25YcrgO5mIinjes2AH1nz/Vx53IdOM5Prdqi0+xZB+1evLtcMsuB7lIUd4y9QlbOP7tvg 2OjNQjQii+MxVC1f3PgfhdCOwTsCzE1hCpzII5Fu7B60iL7UvR6a3liCKdeLZQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGhjY1p9Qztsf; Fri, 19 Jan 2024 14:25:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JEPbHB005259; Fri, 19 Jan 2024 14:25:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JEPbVc005256; Fri, 19 Jan 2024 14:25:37 GMT (envelope-from git) Date: Fri, 19 Jan 2024 14:25:37 GMT Message-Id: <202401191425.40JEPbVc005256@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: f2ad8d3a1397 - stable/14 - mail: add volatile in grabh() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f2ad8d3a1397660127f22ba9c0785ef4122a8ba5 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f2ad8d3a1397660127f22ba9c0785ef4122a8ba5 commit f2ad8d3a1397660127f22ba9c0785ef4122a8ba5 Author: Lexi Winter AuthorDate: 2024-01-04 22:34:58 +0000 Commit: Mark Johnston CommitDate: 2024-01-19 14:25:05 +0000 mail: add volatile in grabh() setjmp() requires that any stack variables modified between the setjmp call and the longjmp() must be volatile. This means that 'saveint' in grabh() must be volatile, since it's modified after the setjmp(). Otherwise, the signal handler is not properly restored, resulting in a crash (SIGBUS) if ^C is typed twice while composing. PR: 276119 Reported by: Christopher Davidson MFC after: 2 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/993 (cherry picked from commit 6c951b37170f1fb2ae8b4827070743e61b6eaed2) --- usr.bin/mail/tty.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/mail/tty.c b/usr.bin/mail/tty.c index 92cec3c6865c..37797db645c6 100644 --- a/usr.bin/mail/tty.c +++ b/usr.bin/mail/tty.c @@ -60,7 +60,7 @@ int grabh(struct header *hp, int gflags) { struct termios ttybuf; - sig_t saveint; + volatile sig_t saveint; sig_t savetstp; sig_t savettou; sig_t savettin; From nobody Fri Jan 19 14:27:00 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGhl8390Hz56c6y; Fri, 19 Jan 2024 14:27:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGhl82LNvz4vNB; Fri, 19 Jan 2024 14:27:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705674420; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=haCid6Fwk3onHOgVFq1T12JXR/lTBVrTwlR4KsTeEXM=; b=bUUOYD5o5ehj73kdzC11Z+V+11BxLqXKxpKmcqVnbywXctzuU8Pqj2y8LDZMkVqxqE9TvK 5av7GO0r+2Mz2bazjMOFctEt99JzLfaOINdbZMoJ5bKwDGtfWfvRewl3C2S1GAss+utPot lFfwZxGGp8p47qjBUMMuoJU6xf86Mcqy7XIK/GD1ridGHJfAGGWhZxNtiHUzRPWwBuRmJ8 aQtRtqN7o9Z70cLF0vjJXGr/YHR7qbUfk1jE+A8QEGwPGEUAAS4snvUSK7LXQ937EQPWG9 3w2Xug22AGmFqbc83x2wW7EGBoKDMBT01aFfSHrs+iMp0iO4ih6d+rTu3vGKXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705674420; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=haCid6Fwk3onHOgVFq1T12JXR/lTBVrTwlR4KsTeEXM=; b=tEYTB515fh5uBaYWRbnWumIX1Sgtx4szVjfHBUigJFQNVWC0Em1V8bt4cabBp/dAxqKGPC +slLU2uXc8k49xAVEDsfpdF6SLPrz2XFTH9dryIMAsmRn33+ufi8hSZsI24YSU8P72z0Gi Q/yxuAyBfNI3wMOLF7Ro6zr7RcR35Wf56Y6UVYvasPGUoor+/FHsKeIY7ilpciNjLXCOxz 2c6fgfX1E3hKcX4bcG1G0my+MBhzp3QJREr5ZJEHxt+lvLn0zO9YI9uNAYT5DBSKo4z2U5 tmIfGpHgEiDcwunTrA1VL+QribQRB2x49r5A6JDRZitSFRtCpLq8/LeL8dBMIg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705674420; a=rsa-sha256; cv=none; b=W283Yu32sx2MARppzs643ApWFDJHk+Al2A/QeY5uKmBq0Me7kxnz7ad0DeXJc31qgkytOl zsHnfc5o/Rtt+Bs2OaKZu8hhyaE4wkQioHllGt5D6SM2WQi4XHsDlEM4eSRonR53UJ+MOp X0HzhyucLQ5D4fCNtJR9eC8kU890A5qRx6aq5V9ZGS/StUzTu2ofOOI9KXhjg3FyfGz+BS I/oXHgAmfL1ocJcCiqbMQTo82VmDXyBhX6y+N7J5NT9SrOdSlGpsr0uxfcwP+H4wzWO9LI RSrS0CwdZJd3M+tcw7UYxkY3BzmK07NEsmmnQlHpxyE1zPcZBSLXWTDvNbwWIg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGhl81KmVzvHP; Fri, 19 Jan 2024 14:27:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JER0jF005575; Fri, 19 Jan 2024 14:27:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JER0ne005572; Fri, 19 Jan 2024 14:27:00 GMT (envelope-from git) Date: Fri, 19 Jan 2024 14:27:00 GMT Message-Id: <202401191427.40JER0ne005572@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 6d78f3a6310d - stable/13 - mail: add volatile in grabh() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 6d78f3a6310d0f873a8515541e6fbf62ef7237d6 Auto-Submitted: auto-generated The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=6d78f3a6310d0f873a8515541e6fbf62ef7237d6 commit 6d78f3a6310d0f873a8515541e6fbf62ef7237d6 Author: Lexi Winter AuthorDate: 2024-01-04 22:34:58 +0000 Commit: Mark Johnston CommitDate: 2024-01-19 14:26:53 +0000 mail: add volatile in grabh() setjmp() requires that any stack variables modified between the setjmp call and the longjmp() must be volatile. This means that 'saveint' in grabh() must be volatile, since it's modified after the setjmp(). Otherwise, the signal handler is not properly restored, resulting in a crash (SIGBUS) if ^C is typed twice while composing. PR: 276119 Reported by: Christopher Davidson MFC after: 2 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/993 (cherry picked from commit 6c951b37170f1fb2ae8b4827070743e61b6eaed2) --- usr.bin/mail/tty.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/mail/tty.c b/usr.bin/mail/tty.c index 62f42fc43e5d..f7e2aa148dc2 100644 --- a/usr.bin/mail/tty.c +++ b/usr.bin/mail/tty.c @@ -60,7 +60,7 @@ int grabh(struct header *hp, int gflags) { struct termios ttybuf; - sig_t saveint; + volatile sig_t saveint; sig_t savetstp; sig_t savettou; sig_t savettin; From nobody Fri Jan 19 15:00:32 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGjTs37fDz56gNQ; Fri, 19 Jan 2024 15:00:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGjTs17KCz50lT; Fri, 19 Jan 2024 15:00:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705676433; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9llMt62dxrDNRyw3P7vRc5jHYjIRKE2AkLsXAF5swCU=; b=DaUhfYr81yBvbBZHrd8YiJCaioSU7JnCqMNg1jRg55lv6k64FaxiVF8+eHlki+Ae/Dntmq bnF3Znytr7dZwjSmQ/IUqnrLL/T5m/F4zhqXVIgvOYVL3tDsY7COaQN8eRM773TPmIWKyS SHjv1/rDSFMZTISDMBMqeVc2+l27QkMmZNBwt5L3bgkPBiLz93Pfh8IGfc5csbzw0gQeAW MnkgCxVKa/ZN2vB94SElaP/zSCIzLNpgKRJ+XosPBRaDeY4YG3kMDeotjyQnnKbGUr8IeM xGd8hs/6NmmAkmRC5EeWXwblIKmgP6qZczxEgO5Wd293lD03a+V0mDpdOpAGWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705676433; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9llMt62dxrDNRyw3P7vRc5jHYjIRKE2AkLsXAF5swCU=; b=W93QIq/2+PILkVGM552+5iu6b5oS2eCbuVgJDytTMqF1gNEy17cAppi6jl+9ZPNIgsLbQf aawK6NZhYTjWfPyvuW1T0xLxbEYQC/2GEgxgJbLkdY9qPJ7NB6IVzGOTj2MJ6ToarEs33D eH17buz07T++bNZ98cd2nhvCl/4VYv50wRyFCHO77LX/PWiBHPoNxRAaiJuJFLqyPyqfXQ L1qlnyVcV9JJmj4isvRgM9wjksu2FoIiEpXSMu0oCYESA6zoDqd6sl3KgifpnixdPvPGEU a5JyLdLrhfbLHvkmUYWT3HiPyG/hRr78ayESZAvzTR6u1GgwSv+09JCPpKtUGw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705676433; a=rsa-sha256; cv=none; b=TDfN9UTaUdngH+6zvUpXoMglgKIm46nquspO12hjw3g6j/GVPzELU9bCG9yvTJTUzlrIrw 8ZxrnqxJJqVYffvLtR9UtilOedGFZjvt5fYNLthKc2r7tzzIHFuF3G2rbcF/zOJwW5GbVm htfTrXzJHJbSigj3+N3J82mmTQVgvwaHEh5Q4YCBLQw0zHbrYxrvFaknRXI2b23pTD9mlE Wtsgu2fJRi79v8Evi0NtDrSXcXlRDSCCAgJsU3P7FuG+xUPbkOrO+xGOBQGcaVVzyGTZod OF3BgknR7LaBztpKn9EubqVtuxsI3X1j1+gNGjAGQzaFmcD/lQEbvZLikg7/ug== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGjTs09l1zw0N; Fri, 19 Jan 2024 15:00:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JF0WxH066305; Fri, 19 Jan 2024 15:00:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JF0WuR066302; Fri, 19 Jan 2024 15:00:32 GMT (envelope-from git) Date: Fri, 19 Jan 2024 15:00:32 GMT Message-Id: <202401191500.40JF0WuR066302@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Martin Matuska Subject: git: f027083b906a - stable/14 - ktls: fix vnet-related panic in ktls_reset_receive_tag() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f027083b906abb67120974d9c23570c4bd46d156 Auto-Submitted: auto-generated The branch stable/14 has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=f027083b906abb67120974d9c23570c4bd46d156 commit f027083b906abb67120974d9c23570c4bd46d156 Author: Martin Matuska AuthorDate: 2024-01-11 20:31:15 +0000 Commit: Martin Matuska CommitDate: 2024-01-19 14:58:28 +0000 ktls: fix vnet-related panic in ktls_reset_receive_tag() Reviewed by: gallatin, jhb Differential Revision: https://reviews.freebsd.org/D43400 (cherry picked from commit 0e1d8481f93c58008c5a2ef68c3a46a0da83644a) --- sys/kern/uipc_ktls.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/kern/uipc_ktls.c b/sys/kern/uipc_ktls.c index c996157dbc41..91dfb8516308 100644 --- a/sys/kern/uipc_ktls.c +++ b/sys/kern/uipc_ktls.c @@ -1644,7 +1644,9 @@ out: if (ifp != NULL) if_rele(ifp); + CURVNET_SET(so->so_vnet); sorele(so); + CURVNET_RESTORE(); ktls_free(tls); } From nobody Fri Jan 19 15:46:18 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGkVf5g4Gz56lS2; Fri, 19 Jan 2024 15:46:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGkVf572Tz58HR; Fri, 19 Jan 2024 15:46:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705679178; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/t1EUviA3KFZBPyp7AZKG0fREile/30/PW8kRLvXY00=; b=IxYm9wHT5UC8cokZYiU73ENSLkxQYrVHt6ZIPkQwwXvqpQ6FBSAvVl6ZHs4usOhxffkmsJ a0qx+kgxShjuVgQFYwSBwYY43dWfTtk/k9cRwhRFvg6IY38fbz/2VYGAxiIpgmoLFZEIyi pozrn+Ra26HlVvrGqc8PWKxp4YMB8+AhvADroSMK89INlWerOeBTOv4SaFkmGnuWbWVFf8 ylAlshoUJZnAywe5RiO+okj+jAZzvqSucI8IdLURvj5hxtBwyfDzmQWp8Jqbqz42CcpgPo flda1hW8AUX5RQwUfv9QPg7BQtA97LV7iXa8A8ET3I78clSLDLButBNy/w00Nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705679178; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/t1EUviA3KFZBPyp7AZKG0fREile/30/PW8kRLvXY00=; b=qd8ZsDDjmJDoLeVULvVdCkahlxoB4lokSxruthEl5TmhCH1OTHLwxPnh19O1OTA0n8r9Ag 0KeUW6jxnlxwi1Wx0xGqZNzMgZTfbiCDnAEWuClsF6Csxxetm6S5SUAuLDj2Ve9b8MbnHc /V2FHkH+hlzSv0z+K+uAX2JVauBxIKW2MgQwfvsbW85BcQOTI067gpmV6zZx0ORF5RLUKl SPETvk6J9anO3Zy242sehmRspiq6n/02MqLtBET6hzxB4jjo7ab0UcckJUwIfETZrLxlN0 /7rMn+tooxuDgIIVm6cci2Syy2x02I0NIdOnOd+O8G212HFCfY88sAyHzib4qg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705679178; a=rsa-sha256; cv=none; b=uG7KudHKebeCpDUKh5XYz0OAUASYlX63g1lZvSBccZhRLZ/Ulf47jAonX2rYnwJ+YcpY8q OaQj6Eoig7QOGlzOu+cXQN+8LTsVa3ujLGQ1UJ3Ui3LbZiQvy5Vmxrq3zHrmMr4EnMWu4l M+g47FGg9ZCo+v7w05c+ZPKneZOKqa6owA/CJIXMx8kIPAiBUv9eBJLNYrreP0PefMw80/ OCg/tGALIuqjv4B2cuqv4lFVDzj6Epv8D+iEXPOmZYcwlwPeBlG/RbXEaRc02Nekye/9Jr mS1LDcJ9MxGWLcuuKOBv2C7HGpKt2gQGXfa6wqFoRFg9kdAhx4mM+bpKka6SVw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGkVf49T7zx7L; Fri, 19 Jan 2024 15:46:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JFkIAK041769; Fri, 19 Jan 2024 15:46:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JFkIfW041766; Fri, 19 Jan 2024 15:46:18 GMT (envelope-from git) Date: Fri, 19 Jan 2024 15:46:18 GMT Message-Id: <202401191546.40JFkIfW041766@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cheng Cui Subject: git: 404b91dac415 - stable/14 - libexec/rc/rc.initdiskless: make tar's path flexible List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cc X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 404b91dac415c5c9126fb4201145049c4d3dfbba Auto-Submitted: auto-generated The branch stable/14 has been updated by cc: URL: https://cgit.FreeBSD.org/src/commit/?id=404b91dac415c5c9126fb4201145049c4d3dfbba commit 404b91dac415c5c9126fb4201145049c4d3dfbba Author: Cheng Cui AuthorDate: 2023-11-24 15:47:18 +0000 Commit: Cheng Cui CommitDate: 2024-01-19 10:45:28 +0000 libexec/rc/rc.initdiskless: make tar's path flexible PR: 274977 (cherry picked from commit 93b7818226cf5270646725805b4a8c17a1ad3761 and from commit a04ca1c229195c7089b878a94fbe76505ea693b5) --- libexec/rc/rc.initdiskless | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libexec/rc/rc.initdiskless b/libexec/rc/rc.initdiskless index 9b37497c1e7e..8b4a01187636 100644 --- a/libexec/rc/rc.initdiskless +++ b/libexec/rc/rc.initdiskless @@ -362,6 +362,8 @@ done # so if the cpio archive is present, it prevents the files from dir/ # from being copied. +PATH=${PATH}:/rescue + for i in ${templates} ; do for j in /conf/$i/* ; do subdir=${j##*/} @@ -376,7 +378,7 @@ for i in ${templates} ; do if [ -f $j ]; then create_md $subdir echo "Loading /$subdir from cpio archive $j" - (cd / ; /rescue/tar -xpf $j) + (cd / ; tar -xpf $j) fi done for j in /conf/$i/*/extract ; do From nobody Fri Jan 19 16:24:39 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlLw1hZpz56qV9; Fri, 19 Jan 2024 16:24:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlLw0fsfz43P7; Fri, 19 Jan 2024 16:24:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705681480; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=htrNR5uiIk7rq5QI+9jsrWf0YtRuL5vS3juqPCrYo6o=; b=qCDqUQ6l6hJfZgBKrmPqFTcHhCxP+QhdFijWmw/5Yqt8WdltZIxAlKeVLYKGQ/BiLeHpJZ gKUQIGo/ilCzimQSRW5IGK43cmt+aZ4BMPXvjRyAAf+L7F8vD07V0XaQznqNu20UxAC5sW HEzyJFp2g8Ketfh6dZlVzlW9pBrEcMqaEySN+DMb/W0KO5u8GCRZLjmygAuTyFLQfdNadJ OoQefTBUjlWkatDARWOjYR4ihFYHwZ2sldimLUPooEKFEcP2bGPDpHmohFFBdXNy08x8j1 aOfIB54M6IUTJbofxARy2pMcO1q6JMfcu8oNSBtdgqxF5JIMoqc0C43C7Fm1eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705681480; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=htrNR5uiIk7rq5QI+9jsrWf0YtRuL5vS3juqPCrYo6o=; b=j2LUoi26vLm9larGt2Eh5zwKEreRgUn3tm9OhLMRmHf0L+th79e3Aw2F1iSlKUIA06GHbJ BruTAgyGXRz/qrZpO3cMxcOPyYEgbKyMKYu5Uj3ilDOFTQegrJ/Az84TVYHQeVoxoUfmVi eRunTpG+pkBu6LxK8dKJNjXgo9Yh9uzYPWaqVQyuLUQbMqBJtPT6rdmWSaYKt52gx4l7KI +rFZMZjVSc7mMMvMy/HRLONw3MvU+MNgduD97M3NrGdZUEVvjWo9qbjE0eckyKedzQExFw 8O9XBxOO9EF03XTEtwSnpOWVR5aEwvIQqDqzyvS0imJZtMa2wAeqvdXfFpHydw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705681480; a=rsa-sha256; cv=none; b=mMtwPYaRrrJq09GnNbKTMBKd6V4pPkvOPup2XdsAg/MCrxSOX55kvxaKK+PQyxfp64BAIZ FwPE3kYrCRuhQ4q1EcBG1TVMmcf4UhAyDFi/sJeoQVWojLN9JjuSf2kgF4GdUQhT3k9a9I GKUHc6cKGs4UXzX+bEKBDCY/iDobBYEy+XTdi9gom77oJg9k5XCNuYxx8w0W36Adf7rORV cnT56xThfda7aOD85w6Z1fsTQOD148/EiDRGGQxq7JXuxPJBZqiC6pySLKP3kiaDxhDac3 02jZ5hb4yJFBGsoussxtx4zuWixiboWkU2jnICPGk2TeBy3KiLhPpkiZvGudBQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlLv6qltzyW4; Fri, 19 Jan 2024 16:24:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGOdbp009103; Fri, 19 Jan 2024 16:24:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGOdJx009100; Fri, 19 Jan 2024 16:24:39 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:24:39 GMT Message-Id: <202401191624.40JGOdJx009100@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: faf11e40b49a - stable/14 - Schedule fast taskqueue callouts on right CPU. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: faf11e40b49aaa44a553df781d2716ae849bfc56 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=faf11e40b49aaa44a553df781d2716ae849bfc56 commit faf11e40b49aaa44a553df781d2716ae849bfc56 Author: Alexander Motin AuthorDate: 2023-12-27 03:30:56 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:24:35 +0000 Schedule fast taskqueue callouts on right CPU. With fast taskqueues using direct callouts we can reduce number of CPU wakeups by scheduling callout on current CPU if taskqueue calls taskqueue_enqueue_timeout() on itself. The trick won't work for regular taskqueues, since the callout thread will occupy the CPU. It also may not work in case of multiple threads since we do not know which thread will pick the task, and we do not want excessive callout migrations. So we optimize only the other cases we can. In practice this allows iichid(4) taskqueue to stay on CPU where underlying ig4(4) interrupts are routed and to not kick CPU 0 with timer interrupts on each sampling period (every 2nd/3rd sleep). MFC after: 1 month (cherry picked from commit 7bbac6419d174c98cc6ea969b68fcfe0f9a9bab8) --- sys/kern/subr_taskqueue.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_taskqueue.c b/sys/kern/subr_taskqueue.c index 07323763204d..832f120e5d82 100644 --- a/sys/kern/subr_taskqueue.c +++ b/sys/kern/subr_taskqueue.c @@ -364,8 +364,14 @@ taskqueue_enqueue_timeout_sbt(struct taskqueue *queue, if (sbt > 0) { if (queue->tq_spin) flags |= C_DIRECT_EXEC; - callout_reset_sbt(&timeout_task->c, sbt, pr, - taskqueue_timeout_func, timeout_task, flags); + if (queue->tq_spin && queue->tq_tcount == 1 && + queue->tq_threads[0] == curthread) { + callout_reset_sbt_curcpu(&timeout_task->c, sbt, pr, + taskqueue_timeout_func, timeout_task, flags); + } else { + callout_reset_sbt(&timeout_task->c, sbt, pr, + taskqueue_timeout_func, timeout_task, flags); + } } TQ_UNLOCK(queue); } From nobody Fri Jan 19 16:29:33 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlSZ0GTXz56qqg; Fri, 19 Jan 2024 16:29:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlSY6sBMz43ql; Fri, 19 Jan 2024 16:29:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705681774; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eSYryErFOKb5OFkT9L9wLoLD2pQ6fkl9QyFBAhLLR1E=; b=lrMgJLdf3PXHWEhm91SHbwHJ1TnVaS11aGsgd51tAPDx7GAjHTCbjbfdjuP/uycN5tk8VI BGB671GZ8Qa1wYm8zoN5vrDg3bi5bDe31RAYuyxwQv7K55D0EeDuIPW9VDyX1B5GMqPNgZ fteUsELJshYEULJ6n3zyXntMh+ebOyBSdjaJ4VsHTWqlBittLs0d3lgYgc9yi9GZN9pXpP YZNWkxHX5lPuHa6Nfb8ze7fzW3XzWTbBdpzRFxpFphl4JYrlEg1MYBG3eTwihXSY7reJv9 F9bxT2v+Qseqs+qM/ndrkYqOmwmoYACu+z0otxZnU0lKNX7v0NKdV9BdPLUyaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705681774; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eSYryErFOKb5OFkT9L9wLoLD2pQ6fkl9QyFBAhLLR1E=; b=ZvOYVr2uptM6WyeMSqBX0MqfbwlRecUBwv21/bEXT1Pe4p9+NnGRcaz1NBEvMNIv93Z9FS EjszuGzyv5MEHcwv6W2xKAwL3iGd1+zhnbPgp+g0pMv78KoXMDZO4Mu5cthG8SYBpDhiO/ ttvVOW0DRJv89g/JHjiBlK43JBFxTm9aVLZnK/TrYr2nIBXJL5hGAOR6mN0VZrW7wDwfJr 0qptzjwvWpbYNgpO27g5+L6aJgkMYnxEgmN9Ik/0CL7sBue9XPsCrDC9F3g8ykK5VYqhhW MP5g+JR2Gd0O0yHKaFoMbBNS7ulwSYqhRZh8f0SSczqpBRpXMN4ipmwk3yDf/w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705681774; a=rsa-sha256; cv=none; b=mLgtYLEh/YQXZSWWeZ4IKxB5fi2lpwFnCQAkchjD7kD3nyrWFibLHgBs0OnsVDAtievZJj 67sk27X+bT8PjtQMl1+/kyjoumAwIp1Lq4f2ZO03c7+skN8ZjeYXI3snzh4rAqENxWZsce v2aDWBONYXhoDuDpLJTdJMesAEY8LP98OQo1MiXJZna8IDklBlUlunwPBSTqNswDoDmW2Q RxqiPKKlURRdgK1kqOYhFyvxgdo2pmorXcmSrJcNWyasVnLLLqA5y7n7NBZ1LYy9bvmJcF xWaMvcKlliqYHOyIVa4z+K/X7qRLlIpHR3b/8JBl7O/NHTwDhJ578l23MledtQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlSY5cJCzyW5; Fri, 19 Jan 2024 16:29:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGTXLT009857; Fri, 19 Jan 2024 16:29:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGTXvC009854; Fri, 19 Jan 2024 16:29:33 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:29:33 GMT Message-Id: <202401191629.40JGTXvC009854@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 4eec3ce0d387 - stable/14 - acpi_cpu: Reduce BUS_MASTER_RLD manipulations List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4eec3ce0d38752f9b226c3cbae2d749dd37e5fdc Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=4eec3ce0d38752f9b226c3cbae2d749dd37e5fdc commit 4eec3ce0d38752f9b226c3cbae2d749dd37e5fdc Author: Alexander Motin AuthorDate: 2023-12-26 02:19:28 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:29:21 +0000 acpi_cpu: Reduce BUS_MASTER_RLD manipulations Instead of setting and clearing BUS_MASTER_RLD register on every C3 state enter/exit, set it only once if the system supports C3 state and we are going to "disable" bus master arbitration while in it. This is what Linux does for the past 14 years, and for even more time this register is not implemented in a relevant hardware. Same time since this is only a single bit in a bigger register, ACPI has to do take a global lock and do read-modify-write for it, that is too expensive, saved only by C3 not entered frequently, but enough to be seen in idle system CPU profiles. MFC after: 1 month (cherry picked from commit 5bc10feacc9d81e3bba9d28734a85e996682b408) --- sys/dev/acpica/acpi_cpu.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c index 8460cd245b0d..80855cf168e9 100644 --- a/sys/dev/acpica/acpi_cpu.c +++ b/sys/dev/acpica/acpi_cpu.c @@ -512,6 +512,9 @@ static void enable_idle(struct acpi_cpu_softc *sc) { + if (sc->cpu_cx_count > sc->cpu_non_c3 + 1 && + (cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) + AcpiWriteBitRegister(ACPI_BITREG_BUS_MASTER_RLD, 1); sc->cpu_disable_idle = FALSE; } @@ -1164,14 +1167,13 @@ acpi_cpu_idle(sbintime_t sbt) } /* - * For C3, disable bus master arbitration and enable bus master wake - * if BM control is available, otherwise flush the CPU cache. + * For C3, disable bus master arbitration if BM control is available. + * CPU may have to wake up to handle it. Otherwise flush the CPU cache. */ if (cx_next->type == ACPI_STATE_C3) { - if ((cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) { + if ((cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) AcpiWriteBitRegister(ACPI_BITREG_ARB_DISABLE, 1); - AcpiWriteBitRegister(ACPI_BITREG_BUS_MASTER_RLD, 1); - } else + else ACPI_FLUSH_CPU_CACHE(); } @@ -1206,12 +1208,10 @@ acpi_cpu_idle(sbintime_t sbt) else end_ticks = cpu_ticks(); - /* Enable bus master arbitration and disable bus master wakeup. */ + /* Enable bus master arbitration. */ if (cx_next->type == ACPI_STATE_C3 && - (cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) { + (cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) AcpiWriteBitRegister(ACPI_BITREG_ARB_DISABLE, 0); - AcpiWriteBitRegister(ACPI_BITREG_BUS_MASTER_RLD, 0); - } ACPI_ENABLE_IRQS(); if (cx_next->type == ACPI_STATE_C3) From nobody Fri Jan 19 16:33:33 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlYB0rL5z56rPm; Fri, 19 Jan 2024 16:33:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlY974q9z45Ks; Fri, 19 Jan 2024 16:33:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682014; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=odhuUiZG/VxSwArg/bFS8Rn5wqxWsXauxDAIk4X31oQ=; b=AtSwXBa/8Mb50XOFTFLDSIq+elPrtLb+3GisL7DCPT8kAHb60x0dx7Hb1Pvmzxmb20Ph/e OG2KNKo2YygJlbvSiYsYne91k/XRREmn3EmXV6NlUwUvMnvGub/nxv6wT6zzE/V2Ig+eGF 5qwRqSp5w0AIFno7+noTCrN2hD8Y9ts+DMOMBXief1VyrcUsjHWDjI9gKCDtCTLM/w7LpH J/It2p2bVxzW2srtNlCZpUfhn/rpQo8MoQj6iEsu3c627UHpIBBA69d3qY2pIvl8LbjGfw MExPeJAF/Opsm/c3j8fB9s3DigX5iMxL9tpM17PfWtPJMkZcM10frRZJ2BCclw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682014; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=odhuUiZG/VxSwArg/bFS8Rn5wqxWsXauxDAIk4X31oQ=; b=jYefgQg/pCff80HMPme2edJ8Qcvh0nxkUtfm2peF+mx/KZTxUC/MVvUo+71LiaTF2AZfZJ z3c37sY/W6b1BJcQa4LqHul4YNSybcDsGsiNz/zMA/nWnPeqQmDDAfonAIdF9yyW767K5a p7lulMiKHFuGGeB/gpP3ULnVoYgZ4yNENo/pQGWAMII1z6j+peBgLhPE+VUbdp4GBkXayw 4wexBRXSPYRbarvNeVPsFvaA8aJz88pme3M15cB2Npzv7FlJlbPlphZqNGL4gdHsJSE6Yh qVYBFtk2JnMON9PM+h6zNW4XgqgTLhsDD8hy7RobnXxsRwvEGBcAy8kzXJICiw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682014; a=rsa-sha256; cv=none; b=TmRMnQUvHMeTVqyKkziPRMQSuBghFhvR+VEK8jB8TR/7NO641coK3jlRUMllpQhSYUrHvk x1oEiXHM7JlaNMDqsLx5TRbdvwb0BbNcHjtvepw+qHmOAaU+uhcw1GyWQwQask3Ji0SRjF bGu4Gvy2/YiVcZvEj6vx2A8wbC03buwN8wZB6omPUCo8+rB3AO+sYhO1U0Zsm8H82GMjvs NBt4OH8FKARCXA6wXDv6h0uJCG+CYirqnU1K2n9/Ut3YvYomkVcKYUD4fKzGNblq2Lnrzj 5H/4r94RZDgT8YgBHYvYsq1IOqN+XfbvmELAjFsZJ0r1tHLOJ6tHZNc4b8NZaQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlY9685kzys9; Fri, 19 Jan 2024 16:33:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGXXgk025892; Fri, 19 Jan 2024 16:33:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGXXDl025889; Fri, 19 Jan 2024 16:33:33 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:33:33 GMT Message-Id: <202401191633.40JGXXDl025889@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 512235a1d36d - stable/14 - ig4: Fix FIFO depths detection List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 512235a1d36dd0a855e8a4d3e876100b5f67b3af Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=512235a1d36dd0a855e8a4d3e876100b5f67b3af commit 512235a1d36dd0a855e8a4d3e876100b5f67b3af Author: Alexander Motin AuthorDate: 2023-12-24 00:02:49 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:33:10 +0000 ig4: Fix FIFO depths detection At least on my Tiger Lake-LP queue depth detection failed before the ig4iic_set_config() call, resulting in no FIFO use. Moving it after solves the problem, getting proper 64 bytes size. On my Dell XPS 13 9310 with iichid(4) touchscreen and touchpad this by few times reduces context switch rate in the driver, and probably also improves the I2C bus utilization. MFC after: 1 month (cherry picked from commit 9c9d7fdd9f0041783955c5f540ac55a900877c0c) --- sys/dev/ichiic/ig4_iic.c | 50 ++++++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/sys/dev/ichiic/ig4_iic.c b/sys/dev/ichiic/ig4_iic.c index 195bca62928a..3a3271454738 100644 --- a/sys/dev/ichiic/ig4_iic.c +++ b/sys/dev/ichiic/ig4_iic.c @@ -847,23 +847,6 @@ ig4iic_get_config(ig4iic_softc_t *sc) sc->cfg.txfifo_depth = IG4_PARAM1_TXFIFO_DEPTH(v); if (IG4_PARAM1_RXFIFO_DEPTH(v) != 0) sc->cfg.rxfifo_depth = IG4_PARAM1_RXFIFO_DEPTH(v); - } else { - /* - * Hardware does not allow FIFO Threshold Levels value to be - * set larger than the depth of the buffer. If an attempt is - * made to do that, the actual value set will be the maximum - * depth of the buffer. - */ - v = reg_read(sc, IG4_REG_TX_TL); - reg_write(sc, IG4_REG_TX_TL, v | IG4_FIFO_MASK); - sc->cfg.txfifo_depth = - (reg_read(sc, IG4_REG_TX_TL) & IG4_FIFO_MASK) + 1; - reg_write(sc, IG4_REG_TX_TL, v); - v = reg_read(sc, IG4_REG_RX_TL); - reg_write(sc, IG4_REG_RX_TL, v | IG4_FIFO_MASK); - sc->cfg.rxfifo_depth = - (reg_read(sc, IG4_REG_RX_TL) & IG4_FIFO_MASK) + 1; - reg_write(sc, IG4_REG_RX_TL, v); } /* Override hardware config with IC_clock-based counter values */ @@ -915,8 +898,6 @@ ig4iic_get_config(ig4iic_softc_t *sc) printf(" Fast: 0x%04hx:0x%04hx:0x%04hx\n", sc->cfg.fs_scl_hcnt, sc->cfg.fs_scl_lcnt, sc->cfg.fs_sda_hold); - printf(" FIFO: RX:0x%04x: TX:0x%04x\n", - sc->cfg.rxfifo_depth, sc->cfg.txfifo_depth); } } @@ -1012,6 +993,36 @@ ig4iic_set_config(ig4iic_softc_t *sc, bool reset) return (0); } +static void +ig4iic_get_fifo(ig4iic_softc_t *sc) +{ + uint32_t v; + + /* + * Hardware does not allow FIFO Threshold Levels value to be set larger + * than the depth of the buffer. If an attempt is made to do that, the + * actual value set will be the maximum depth of the buffer. + */ + if (sc->cfg.txfifo_depth == 0) { + v = reg_read(sc, IG4_REG_TX_TL); + reg_write(sc, IG4_REG_TX_TL, v | IG4_FIFO_MASK); + sc->cfg.txfifo_depth = + (reg_read(sc, IG4_REG_TX_TL) & IG4_FIFO_MASK) + 1; + reg_write(sc, IG4_REG_TX_TL, v); + } + if (sc->cfg.rxfifo_depth == 0) { + v = reg_read(sc, IG4_REG_RX_TL); + reg_write(sc, IG4_REG_RX_TL, v | IG4_FIFO_MASK); + sc->cfg.rxfifo_depth = + (reg_read(sc, IG4_REG_RX_TL) & IG4_FIFO_MASK) + 1; + reg_write(sc, IG4_REG_RX_TL, v); + } + if (bootverbose) { + printf(" FIFO: RX:0x%04x: TX:0x%04x\n", + sc->cfg.rxfifo_depth, sc->cfg.txfifo_depth); + } +} + /* * Called from ig4iic_pci_attach/detach() */ @@ -1028,6 +1039,7 @@ ig4iic_attach(ig4iic_softc_t *sc) error = ig4iic_set_config(sc, IG4_HAS_ADDREGS(sc->version)); if (error) goto done; + ig4iic_get_fifo(sc); sc->iicbus = device_add_child(sc->dev, "iicbus", -1); if (sc->iicbus == NULL) { From nobody Fri Jan 19 16:33:34 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlYC2bp4z56rJn; Fri, 19 Jan 2024 16:33:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlYC0x47z4576; Fri, 19 Jan 2024 16:33:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682015; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sZreq9Kvu9UGuanlvWP8ykyl9rClQrTw76zr0r6P9SQ=; b=mIG5/N9tktfLXP2/I3mR08kFEEkEMoM5CZ9P+127anKhxCAdYQsDg3vF5RSGoY7jp++QCo WWOgVYf0llQ1X/0xYXOSPvtUY1pD7MaiGyqwOWZoA/57wOtmzRlm+pP2H847xcgxIVkzKr G7TfuV4BAMM1lwdLg5rb+OUdK532pMglY9r26wEsQv7UBe6eZGkGJ3bcv53PvUjeMXOYOL vkSaFcXe0NLPbGF56tfGk9oMZJlYXUn+EzixFXjvO0sIuwzRZzSLHMyD+ocC4rGoKegrcI 26EK3i4Z95Lco0yYjfZhf+bAnofkhCwalkIRbxCmGhaERuxmvwH5rxipCzuGOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682015; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sZreq9Kvu9UGuanlvWP8ykyl9rClQrTw76zr0r6P9SQ=; b=AFRk1heo84/gUKtnNtKMOcsAlDjHWbWJKjA0EAddstml7vjxaZqYzMhoJ9CzOE2xhiOjkc pkhCH6sFyB4bMru3TFI/jmnNa5i8njUuPXSYNi1TPElmKgwmO1+imZuACC8J2hru8eigMJ Pyx7295jApGDRoH0YaQXy+bPE0SEebv/O5bWQLwCRHC95x02tJemkmYkyB797xAJWL/l0h BTSQkTA3Gl6L6MQ9WtsC0dtYFWquwyQvE92sVDjwo69rhb6lkwZ+UKTM4besgbWbTXUlEB Cr1PN0pve3No26UhxyAd5Yqr7hC1Cr+lTGUfezC2t9rQU2zXjcpb1eYJ3s4MFQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682015; a=rsa-sha256; cv=none; b=kqjPM8+9VEG37yEEOIpS6kqEKz5uviKFvK/XRfo/aiILKiURnILgXZUcmIKYW/JEVTxlRg 8rGDbyG1r3VnwPwVVeKFEAxt5AUyceLcLpV1o6soqJpTNHPf8Gte9XI7e2NehBOI5QHie8 +2XuY25H9lqW3Mo0H9cOe4+3jK0atmBIBGqQkCCmLr5O2Lj0smIvN6xhQlMy5DNhh93N/3 xAI6v8F9pxQgloF0aGpDWfY6IgoRYrzRlx0armQV6ZyP1b/z/EIcjumMainlfDhZ+m9kRe qwT7Z0WLDjoETI6j0FLOdFfDaiCu0EzbQaTAjaDWGW060GKMvhNrC6p2NrkesA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlYC0150zyZp; Fri, 19 Jan 2024 16:33:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGXYSY025940; Fri, 19 Jan 2024 16:33:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGXYj4025937; Fri, 19 Jan 2024 16:33:34 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:33:34 GMT Message-Id: <202401191633.40JGXYj4025937@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 60452092dbdf - stable/14 - ig4: Actively use FIFO thresholds List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 60452092dbdf9c192dddd9b8d38feaa2b797c8b8 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=60452092dbdf9c192dddd9b8d38feaa2b797c8b8 commit 60452092dbdf9c192dddd9b8d38feaa2b797c8b8 Author: Alexander Motin AuthorDate: 2023-12-24 23:18:11 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:33:10 +0000 ig4: Actively use FIFO thresholds Before every wait for FIFO interrupt set how much data/space do we want to see there. Previous code was not using it for receive, as result aggregating interrupts only within processing latency. The new code needs only one interrupt per transfer per FIFO length. On my Dell XPS 13 9310 with iichid(4) touchscreen and touchpad this reduces the interrupt rate per device down to 2 per sample or 16-20 per second when idle and 120-160 per second when actively touched. MFC after: 1 month (cherry picked from commit 13037eaabede7fb7fbc25f4e84b549c73f9acb3c) --- sys/dev/ichiic/ig4_iic.c | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/sys/dev/ichiic/ig4_iic.c b/sys/dev/ichiic/ig4_iic.c index 3a3271454738..749a39e25117 100644 --- a/sys/dev/ichiic/ig4_iic.c +++ b/sys/dev/ichiic/ig4_iic.c @@ -347,6 +347,7 @@ set_slave_addr(ig4iic_softc_t *sc, uint8_t slave) /* * Wait for TXFIFO to drain before disabling the controller. */ + reg_write(sc, IG4_REG_TX_TL, 0); wait_intr(sc, IG4_INTR_TX_EMPTY); set_controller(sc, 0); @@ -434,16 +435,20 @@ ig4iic_read(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, return (0); while (received < len) { + /* Ensure we have some free space in TXFIFO */ burst = sc->cfg.txfifo_depth - (reg_read(sc, IG4_REG_TXFLR) & IG4_FIFOLVL_MASK); if (burst <= 0) { + reg_write(sc, IG4_REG_TX_TL, IG4_FIFO_LOWAT); error = wait_intr(sc, IG4_INTR_TX_EMPTY); if (error) break; - burst = sc->cfg.txfifo_depth; + burst = sc->cfg.txfifo_depth - + (reg_read(sc, IG4_REG_TXFLR) & IG4_FIFOLVL_MASK); } /* Ensure we have enough free space in RXFIFO */ - burst = MIN(burst, sc->cfg.rxfifo_depth - lowat); + burst = MIN(burst, sc->cfg.rxfifo_depth - + (requested - received)); target = MIN(requested + burst, (int)len); while (requested < target) { cmd = IG4_DATA_COMMAND_RD; @@ -460,13 +465,15 @@ ig4iic_read(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, lowat = IG4_FIFO_LOWAT; /* After TXFLR fills up, clear it by reading available data */ while (received < requested - lowat) { - burst = MIN((int)len - received, + burst = MIN(requested - received, reg_read(sc, IG4_REG_RXFLR) & IG4_FIFOLVL_MASK); if (burst > 0) { while (burst--) buf[received++] = 0xFF & reg_read(sc, IG4_REG_DATA_CMD); } else { + reg_write(sc, IG4_REG_RX_TL, + requested - received - lowat - 1); error = wait_intr(sc, IG4_INTR_RX_FULL); if (error) goto out; @@ -484,8 +491,7 @@ ig4iic_write(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, uint32_t cmd; int sent = 0; int burst, target; - int error; - bool lowat_set = false; + int error, lowat; if (len == 0) return (0); @@ -494,12 +500,7 @@ ig4iic_write(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, burst = sc->cfg.txfifo_depth - (reg_read(sc, IG4_REG_TXFLR) & IG4_FIFOLVL_MASK); target = MIN(sent + burst, (int)len); - /* Leave some data queued to maintain the hardware pipeline */ - if (!lowat_set && target != len) { - lowat_set = true; - reg_write(sc, IG4_REG_TX_TL, IG4_FIFO_LOWAT); - } - while(sent < target) { + while (sent < target) { cmd = buf[sent]; if (repeated_start && sent == 0) cmd |= IG4_DATA_RESTART; @@ -509,13 +510,16 @@ ig4iic_write(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, sent++; } if (sent < len) { + if (len - sent <= sc->cfg.txfifo_depth) + lowat = sc->cfg.txfifo_depth - (len - sent); + else + lowat = IG4_FIFO_LOWAT; + reg_write(sc, IG4_REG_TX_TL, lowat); error = wait_intr(sc, IG4_INTR_TX_EMPTY); if (error) break; } } - if (lowat_set) - reg_write(sc, IG4_REG_TX_TL, 0); return (error); } @@ -971,13 +975,6 @@ ig4iic_set_config(ig4iic_softc_t *sc, bool reset) (sc->cfg.bus_speed & IG4_CTL_SPEED_MASK) == IG4_CTL_SPEED_STD ? sc->cfg.ss_sda_hold : sc->cfg.fs_sda_hold); - /* - * Use a threshold of 1 so we get interrupted on each character, - * allowing us to use mtx_sleep() in our poll code. Not perfect - * but this is better than using DELAY() for receiving data. - * - * See ig4_var.h for details on interrupt handler synchronization. - */ reg_write(sc, IG4_REG_RX_TL, 0); reg_write(sc, IG4_REG_TX_TL, 0); From nobody Fri Jan 19 16:35:24 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlbJ4h2bz56rqW; Fri, 19 Jan 2024 16:35:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlbJ3sv0z45w6; Fri, 19 Jan 2024 16:35:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HkiTdXmVr9PhOuqTW4id5037MvmhwUJN/UXN0ZbOlD0=; b=TvaS3MNhV6HEpeSot7WP0m+Vn33NszMUbSxrIi47MMb8wHvRqGYen1bbQ4ZEdA1gti6Mrz uA3i+3RWMriCxis1L3R0+RtCOM5JL4hDxQ2yyQw2gD+jyTIsZFkKQb3kSZ3Cw7TSPfHjUa IkHRr6bBU10uFXBmukBpwYfPkNHoC3u4FrDCxOy2C1erTJr5K930YsCyA2BwFyCX4P+PSV vR07M0Zh4yZLf5p6J2KY7Q5CQrSI6oszx21TXcJlsx1Uq/zr/RpZ0nOK/tUbX0+DtKJR6L 5WRYRn7C4Huww8+gkopgFCNEfsjb96LELVBswRMvs6Gronwm02b3x41Jcer6jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HkiTdXmVr9PhOuqTW4id5037MvmhwUJN/UXN0ZbOlD0=; b=EB0wDQNuoNtzAa0Lz8ZZTFaFG/TuLu8gDCvq2H4DXvK/DWjmB6MB8ZV/R8SslKCK7NY2Tc FNLkns+QBjBcSOtH4u/qyS+SQrcT7x+iVL3mBP5I0eCH/oqUNbMaXdMvdkL0ccMG42m9EL 0BeWGNWDIqo3bqKEa4JqEK4klRIvcPz7mwqI6+426mOn6/bf+ZC+KobATXpd6w4Zrp73qL y5GJjWMY8KpbSlHAl0fV9E4CkQ2GIgDKlKmNmbkejIlpUqd2pq2J2hUp8R5JdfiBRqsN0N QazwPNuH18/isxBsb+klhox0ZQVeY0fvqRKV94ZuIJqUmm2T07liUU64COtQ8Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682124; a=rsa-sha256; cv=none; b=ajYXY++41kMp9i1qfaxlEdvAdslq3NG+Ce/tRh5RPl1h/YLyBA0+E9c2L+R6+VWSCjvtZ9 ceX0Dn21DE1SRD1fJx7qTKQOQy7CeeEFlXuB/adg3495gsMpv84T1QBDJeRoL5U5AazBCa jewj2H6HvatK0HK1dUclpiJEi8Rwkp5fSlkrJOV95m5H6W40AfokrskxfvhUCQGX9qoWZp TvqlcrT21l3sO+fdvCoSrPyHmOpnVaKTuSt0inTMW1Hk5CD7ss7dWdCYf1oTb8tvW0RikY kFPC6sRtvLgPPFjmatXe76labcZf9hYbsXvrHYIiON8WKGBtDN8NEI1JHQaKPA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlbJ2wcWzymJ; Fri, 19 Jan 2024 16:35:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGZOsr026314; Fri, 19 Jan 2024 16:35:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGZORS026311; Fri, 19 Jan 2024 16:35:24 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:35:24 GMT Message-Id: <202401191635.40JGZORS026311@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: c849f305614c - stable/13 - Schedule fast taskqueue callouts on right CPU. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c849f305614c51b9c71196012596266fb661c54c Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=c849f305614c51b9c71196012596266fb661c54c commit c849f305614c51b9c71196012596266fb661c54c Author: Alexander Motin AuthorDate: 2023-12-27 03:30:56 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:25:17 +0000 Schedule fast taskqueue callouts on right CPU. With fast taskqueues using direct callouts we can reduce number of CPU wakeups by scheduling callout on current CPU if taskqueue calls taskqueue_enqueue_timeout() on itself. The trick won't work for regular taskqueues, since the callout thread will occupy the CPU. It also may not work in case of multiple threads since we do not know which thread will pick the task, and we do not want excessive callout migrations. So we optimize only the other cases we can. In practice this allows iichid(4) taskqueue to stay on CPU where underlying ig4(4) interrupts are routed and to not kick CPU 0 with timer interrupts on each sampling period (every 2nd/3rd sleep). MFC after: 1 month (cherry picked from commit 7bbac6419d174c98cc6ea969b68fcfe0f9a9bab8) --- sys/kern/subr_taskqueue.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_taskqueue.c b/sys/kern/subr_taskqueue.c index 07323763204d..832f120e5d82 100644 --- a/sys/kern/subr_taskqueue.c +++ b/sys/kern/subr_taskqueue.c @@ -364,8 +364,14 @@ taskqueue_enqueue_timeout_sbt(struct taskqueue *queue, if (sbt > 0) { if (queue->tq_spin) flags |= C_DIRECT_EXEC; - callout_reset_sbt(&timeout_task->c, sbt, pr, - taskqueue_timeout_func, timeout_task, flags); + if (queue->tq_spin && queue->tq_tcount == 1 && + queue->tq_threads[0] == curthread) { + callout_reset_sbt_curcpu(&timeout_task->c, sbt, pr, + taskqueue_timeout_func, timeout_task, flags); + } else { + callout_reset_sbt(&timeout_task->c, sbt, pr, + taskqueue_timeout_func, timeout_task, flags); + } } TQ_UNLOCK(queue); } From nobody Fri Jan 19 16:36:03 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlc370ZNz56rcs; Fri, 19 Jan 2024 16:36:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlc36BgPz4657; Fri, 19 Jan 2024 16:36:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682163; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mOyoDU38G/PzsDp0RYo6dv7Cw1TJSYfesTIpujoTVgs=; b=EECYCFANxwmfq/OWy2J2/dnqeC8CeQ8UKld/OkfH0YvDnIwFK6Q7d3r411h0McErUypnzZ wqO09Mdh/aaE5BDcLwd/odO56WERaMOqBBuRuE+8Rk00WBKy/SV9Kwfcw2gz6+BrdLNykD t1ElmYSGPGplciNC0RYRODn4JEq2OxatIWI/+1a61a2FU7/XIBYL+N6/EwqWLswokwlaag ntPYx122a0gEFMXVb/HhnN7YhELiHR2TKfX1z3XKKxiGsYt9EPJTa0npiMIU3i94YPCi8i 040iFm6fauYliHN9x/KDB11HvWaSHGNILLIxMoWX77kcpwqsVUs3tkeNwK2BtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682163; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mOyoDU38G/PzsDp0RYo6dv7Cw1TJSYfesTIpujoTVgs=; b=JDUL/kXpjEC4LNn4xslEaFG37Bct2g+C2LwGt18lCNntf54hb3Ux7ern4n5AKEQ7Z6KONE Hcev08II9rdocb8ynx1JsdMtqEtrk1ExQ3W5RimS5hsA5R8lpgcOsFhIfv6mxaoeVTkMyd QLwjluOaWT+XvU1OLOkmexB4t83pH3+jA03wlMnG1tiPl3VYX8pZkE79zMKaMDqJA6E0F2 jbkgsyks60B6UJ1RBH0X757XIr61SE5At88H9F5rFNP/S+lgEU5ewtMvO7KV7gjuYK/Zdx sItZXTTS/PsrAlSwN3hycqDs6509bNVNQSAvjRgWFMLo++vyNh8C99JQXnBFDw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682163; a=rsa-sha256; cv=none; b=G4XGg2nxpH690mRWxsVXMgVZwAaByFM/cI1LOP0PZ4aRx48/aF4gohEGzkkXiJUC3aCJYe MATlBYRYAVL3NRCkBFjpEpA/6XTBd4aQ8xBH/G4MVxxWw3sX5TtJRCulHKQ7vK5u69SWs5 5e0yK2PaLCysRH+kJ5dJ65iWKrUct/OeO2xQ5UH2Bs03kgak9Z8mGPiE9hWSo0f5WixSbq /7qeIVNQFCMy4mSBIPLAgcx8sspYsU4MLV/5V2HpfMSNv/h24bqHIWQ9Uuy5foU6apMMmY +wY/0veawUudrmxlOO50II7PixWTxU6rI5MYha+U5dZf/psEfDhVduZXeZZFnA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlc35JNRzypy; Fri, 19 Jan 2024 16:36:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGa3oU026521; Fri, 19 Jan 2024 16:36:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGa389026518; Fri, 19 Jan 2024 16:36:03 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:36:03 GMT Message-Id: <202401191636.40JGa389026518@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: c71b398a1555 - stable/13 - acpi_cpu: Reduce BUS_MASTER_RLD manipulations List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c71b398a155579d3bd31b3945013488bac5cb41e Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=c71b398a155579d3bd31b3945013488bac5cb41e commit c71b398a155579d3bd31b3945013488bac5cb41e Author: Alexander Motin AuthorDate: 2023-12-26 02:19:28 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:35:54 +0000 acpi_cpu: Reduce BUS_MASTER_RLD manipulations Instead of setting and clearing BUS_MASTER_RLD register on every C3 state enter/exit, set it only once if the system supports C3 state and we are going to "disable" bus master arbitration while in it. This is what Linux does for the past 14 years, and for even more time this register is not implemented in a relevant hardware. Same time since this is only a single bit in a bigger register, ACPI has to do take a global lock and do read-modify-write for it, that is too expensive, saved only by C3 not entered frequently, but enough to be seen in idle system CPU profiles. MFC after: 1 month (cherry picked from commit 5bc10feacc9d81e3bba9d28734a85e996682b408) --- sys/dev/acpica/acpi_cpu.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c index 395faf450188..1d5b93c304b0 100644 --- a/sys/dev/acpica/acpi_cpu.c +++ b/sys/dev/acpica/acpi_cpu.c @@ -512,6 +512,9 @@ static void enable_idle(struct acpi_cpu_softc *sc) { + if (sc->cpu_cx_count > sc->cpu_non_c3 + 1 && + (cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) + AcpiWriteBitRegister(ACPI_BITREG_BUS_MASTER_RLD, 1); sc->cpu_disable_idle = FALSE; } @@ -1164,14 +1167,13 @@ acpi_cpu_idle(sbintime_t sbt) } /* - * For C3, disable bus master arbitration and enable bus master wake - * if BM control is available, otherwise flush the CPU cache. + * For C3, disable bus master arbitration if BM control is available. + * CPU may have to wake up to handle it. Otherwise flush the CPU cache. */ if (cx_next->type == ACPI_STATE_C3) { - if ((cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) { + if ((cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) AcpiWriteBitRegister(ACPI_BITREG_ARB_DISABLE, 1); - AcpiWriteBitRegister(ACPI_BITREG_BUS_MASTER_RLD, 1); - } else + else ACPI_FLUSH_CPU_CACHE(); } @@ -1206,12 +1208,10 @@ acpi_cpu_idle(sbintime_t sbt) else end_ticks = cpu_ticks(); - /* Enable bus master arbitration and disable bus master wakeup. */ + /* Enable bus master arbitration. */ if (cx_next->type == ACPI_STATE_C3 && - (cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) { + (cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0) AcpiWriteBitRegister(ACPI_BITREG_ARB_DISABLE, 0); - AcpiWriteBitRegister(ACPI_BITREG_BUS_MASTER_RLD, 0); - } ACPI_ENABLE_IRQS(); if (cx_next->type == ACPI_STATE_C3) From nobody Fri Jan 19 16:37:45 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlf20qLgz56rg0; Fri, 19 Jan 2024 16:37:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlf15spCz46L1; Fri, 19 Jan 2024 16:37:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682265; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PEcLJXMdM97biQBBgD+OhXuC6aNCxkEjpw62ey3/jkQ=; b=bufkLdl6hgaqfDYaDkx9oKtgSCQT2PdYrnvNzdBeGT+Fud1u4S9OI3YF8J/j73NzvOmtzv PQHcVFT6DOhrHx5gNHEVFf8SNHc8QQaTgvxoBLPnXkyJSUGZr4V2f8eregUJOzKIwUnVjt SLD3cwLxv89EZ0N94udm2WBWw3UJbI7+Vp2gjvHL63a5O/VbeDlxS67wsbPZ5E+MH3o+iM 7LYOn22VG4ww5Sf7HheZRfKLZe8NOb7ZOkzAQHseHKuMJr8jRsKUVE52vnwiswl8bFTLYo 6LAl+GxxvVGqRs2Dhg26L+8IF2emI7l7sNrbvOKDDoO8DmO20X+Sf2QGcmJczA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682265; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PEcLJXMdM97biQBBgD+OhXuC6aNCxkEjpw62ey3/jkQ=; b=iORyvVNoYhGOy9lUh4l6JNAWVJ87NAs3gjd2pYEhCiSsv1LH9O5v5hhVFsEYsM8vIg6MI9 neC4ahxdnyCpYDQ7GhDf9FdtEEg/qFdh43FZ8EgnRSpgeP13PiynWKFfOC5VwIsw5S390E 3SBQbfOlWhPC+evy57a8ieOcdyx7GGR6TY+kvxl5ZxenINGqD7HdqyQP+5jmLFoMvWETPh pIMm3BhGX8kvoGSvLm8258iy0kONDWb+P0xMfsfzF9vm1fHNnHIInnOV8gCyvbzi06j25U 7I9EO7rp8WRIwILYQaJyDN0G7BgCE3YpQmlWqnepUZWSmlJu0Dw2HxxItrOrzw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682265; a=rsa-sha256; cv=none; b=FoDUQ/hUYuWXhUvpxsUpwfN6HhTH6wpS2kJ3DMk0bXbz0zmgydkexDd7g7SLQqeIyXtZlm ORZEDYIQcDLvi2QK0VKUmDabkma4pVLbN/u7I+emp5bUBL02Isanr8nniqpNDwcpFRmuso kvoGYUMdMuQSQ46CJdjkK/xaY90YfV/61a4b1zDgOTWr4syLP82BwURWB4ECxEleFVeNFx GDv91PPQPrYLntRTVtrkbzFeJWjlyxdfXFnHBkgXvPQqw2AMHvStPTzCIhBMmqvdRQn9j1 pOTcRbXxhKx2PNV3n8dfhCr5Z1kZB3AVZUiufOX7DExI7QyTxcu40s+DgGXuRg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlf14z4MzyZy; Fri, 19 Jan 2024 16:37:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGbjqp026896; Fri, 19 Jan 2024 16:37:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGbjRA026893; Fri, 19 Jan 2024 16:37:45 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:37:45 GMT Message-Id: <202401191637.40JGbjRA026893@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 7033c3ddd60e - stable/14 - iichid(4): Improve idle sampling hysteresis List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 7033c3ddd60ebb6c929f8885b8ec26bbb37c79e2 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=7033c3ddd60ebb6c929f8885b8ec26bbb37c79e2 commit 7033c3ddd60ebb6c929f8885b8ec26bbb37c79e2 Author: Alexander Motin AuthorDate: 2023-12-23 03:50:52 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:34:57 +0000 iichid(4): Improve idle sampling hysteresis In sampling mode some devices return same data indefinitely even if there is nothing to report. Previous idle hysteresis implementation activated only when device returned no data, so some devices ended up polled at fast rate all the time. This new implementation compares each new report with the previous, and, if they are identical, after reaching threshold also drop sampling rate to slow. On my Dell XPS 13 9310 with iichid(4) touchscreen and touchpad this reduces idle power consumption by ~0.5W by reducing number of context switches in the driver from ~4000 to ~700 per second when not touched. MFC after: 1 month (cherry picked from commit 8c86b981240324c1daaa387d4d3f8e3e53db3d2e) --- sys/dev/iicbus/iichid.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c index 7ab5b61d9be8..1035088c11b5 100644 --- a/sys/dev/iicbus/iichid.c +++ b/sys/dev/iicbus/iichid.c @@ -108,7 +108,7 @@ enum { */ #define IICHID_SAMPLING_RATE_FAST 60 #define IICHID_SAMPLING_RATE_SLOW 10 -#define IICHID_SAMPLING_HYSTERESIS 1 +#define IICHID_SAMPLING_HYSTERESIS 12 /* ~ 2x fast / slow */ /* 5.1.1 - HID Descriptor Format */ struct i2c_hid_desc { @@ -177,9 +177,12 @@ struct iichid_softc { int sampling_rate_fast; int sampling_hysteresis; int missing_samples; /* iicbus lock */ - struct timeout_task periodic_task; /* iicbus lock */ + int dup_samples; /* iicbus lock */ + iichid_size_t dup_size; /* iicbus lock */ bool callout_setup; /* iicbus lock */ + uint8_t *dup_buf; struct taskqueue *taskqueue; + struct timeout_task periodic_task; /* iicbus lock */ struct task event_task; #endif @@ -523,7 +526,7 @@ iichid_event_task(void *context, int pending) device_t parent; iichid_size_t actual; bool bus_requested; - int error; + int error, rate; sc = context; parent = device_get_parent(sc->dev); @@ -541,18 +544,30 @@ iichid_event_task(void *context, int pending) if (actual > 0) { sc->intr_handler(sc->intr_ctx, sc->intr_buf, actual); sc->missing_samples = 0; - } else - ++sc->missing_samples; + if (sc->dup_size != actual || + memcmp(sc->dup_buf, sc->intr_buf, actual) != 0) { + sc->dup_size = actual; + memcpy(sc->dup_buf, sc->intr_buf, actual); + sc->dup_samples = 0; + } else + ++sc->dup_samples; + } else { + if (++sc->missing_samples == 1) + sc->intr_handler(sc->intr_ctx, sc->intr_buf, 0); + sc->dup_samples = 0; + } } else DPRINTF(sc, "read error occurred: %d\n", error); rearm: if (sc->callout_setup && sc->sampling_rate_slow > 0) { - if (sc->missing_samples == sc->sampling_hysteresis) - sc->intr_handler(sc->intr_ctx, sc->intr_buf, 0); - taskqueue_enqueue_timeout(sc->taskqueue, &sc->periodic_task, - hz / MAX(sc->missing_samples >= sc->sampling_hysteresis ? - sc->sampling_rate_slow : sc->sampling_rate_fast, 1)); + if (sc->missing_samples >= sc->sampling_hysteresis || + sc->dup_samples >= sc->sampling_hysteresis) + rate = sc->sampling_rate_slow; + else + rate = sc->sampling_rate_fast; + taskqueue_enqueue_timeout_sbt(sc->taskqueue, &sc->periodic_task, + SBT_1S / MAX(rate, 1), 0, C_PREL(1)); } out: if (bus_requested) @@ -725,6 +740,8 @@ iichid_reset_callout(struct iichid_softc *sc) /* Start with slow sampling. */ sc->missing_samples = sc->sampling_hysteresis; + sc->dup_samples = 0; + sc->dup_size = 0; taskqueue_enqueue(sc->taskqueue, &sc->event_task); return (0); @@ -812,6 +829,7 @@ iichid_intr_setup(device_t dev, device_t child __unused, hid_intr_t intr, sc->intr_buf = malloc(rdesc->rdsize, M_DEVBUF, M_WAITOK | M_ZERO); sc->intr_bufsize = rdesc->rdsize; #ifdef IICHID_SAMPLING + sc->dup_buf = malloc(rdesc->rdsize, M_DEVBUF, M_WAITOK | M_ZERO); taskqueue_start_threads(&sc->taskqueue, 1, PI_TTY, "%s taskq", device_get_nameunit(sc->dev)); #endif @@ -825,6 +843,7 @@ iichid_intr_unsetup(device_t dev, device_t child __unused) sc = device_get_softc(dev); #ifdef IICHID_SAMPLING taskqueue_drain_all(sc->taskqueue); + free(sc->dup_buf, M_DEVBUF); #endif free(sc->intr_buf, M_DEVBUF); } From nobody Fri Jan 19 16:37:46 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlf31lM8z56rd6; Fri, 19 Jan 2024 16:37:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlf26rkNz466k; Fri, 19 Jan 2024 16:37:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682267; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dbVhrgUCaTVRhO29+AxdL3T/WnNPhh1zhBvBVsp0uP8=; b=TbJc2mv4Kth0loEGj1gXCrDvwBBgWv04E4hOQlP9riYxXTxekNYhs0gWHn46NUh32aBsj0 R+6PGizkCClOZkby8ADHtdC9HTLIOcS8RSc5jz0NMqtR6OmD+xloBXLrPvsn0VENxYdts4 SGREgAbagpCdbeSNLrMxvuWunnjG6D+d3w50klfJ+kpnyJIsnZF3BGXmD6/8T2SzT/qnPf WqKqZHAgeW40poT/Gz3oZj+r6va/cgIiv4uhHQjayC6crDUFXRj/Set7nLUlvyBDUO+2G+ TiE9b9TqcbYDHNVNszyEkc/BCH8qqimY9SYdl+654qj1juQAEFx5QfP3D+8+mQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682267; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dbVhrgUCaTVRhO29+AxdL3T/WnNPhh1zhBvBVsp0uP8=; b=kMYOQWRmuYlszL8xxF5CFOkUQQw6M0BXxcQ/+lwS3blgqOY7LgVoPzL71+t/b+jwH1SZJ6 8np6SdXswTt1h5TmfxaJ8jCCWi/tRYPJ5381QR+LNjWKV4FJ9wIFPVaRvGQu1xDZzBwE7D 1KrAGJjkvmRYBmMtBro0ykPEjxlkWymuH2sGKQjekb72971imEzEz1F63a7poKzUOplDxM 3PN9GtUnStyChJs66oHgbipmYUVZUMSzX3UJxT7XLNF2HFuLdRNTysyZ48YaW8fBj7hbHs rjvRs5MzEgqO8LFGBypgw/DjPvgC5YZpUbcYcuKjkrPTrKF5J4zMHQW3itFMwg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682267; a=rsa-sha256; cv=none; b=aygla+lFBx0UIu3ywv12EF0tbZFm0V82zDblJ4XdOQyAer6MFAeWLsh+ERCfmFy0wB/+nK F4hXau38d/PLuu+4s1LbgZk2iqwMR1kU9SxlUyCilcXYAhXRwicpZKNMcnQJ9DFCyFxJK8 gIRKhrhGyAv7rYI425toANFTd84w5UZKg3fdqZO7PPUeKKfhk9r6w5cGvkcdZA0kYCR1k5 2p/O94mfDtjGlbCGkD0wslwn7OKSuglRftZIJ+eG7CmX3zkOGn2qSo08yqcBzjLbgGC2dN /k5XgyOZCQLQwnhacpGuORVA19mo1J5gK2qBgQTnUYV/++L46w76w3atYbrZVA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlf25xTqzymN; Fri, 19 Jan 2024 16:37:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGbklA026941; Fri, 19 Jan 2024 16:37:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGbkNS026938; Fri, 19 Jan 2024 16:37:46 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:37:46 GMT Message-Id: <202401191637.40JGbkNS026938@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 354ccf64bf5c - stable/14 - iicbb: Fix pause_sbt() arguments order List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 354ccf64bf5c5cc2d3276575f6f5537864dc3af8 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=354ccf64bf5c5cc2d3276575f6f5537864dc3af8 commit 354ccf64bf5c5cc2d3276575f6f5537864dc3af8 Author: Alexander Motin AuthorDate: 2023-12-23 23:52:17 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:34:58 +0000 iicbb: Fix pause_sbt() arguments order It should make pause interval less strict. While there, add cpu_spinwait() into a tight spin wait loop to burn less power and let other SMT thread work more. MFC after: 1 month (cherry picked from commit a74df3f96e3ea4cc632088be870d9b0b0198859c) --- sys/dev/iicbus/iicbb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/dev/iicbus/iicbb.c b/sys/dev/iicbus/iicbb.c index 3948d5d5a9f6..5d6ac48d4543 100644 --- a/sys/dev/iicbus/iicbb.c +++ b/sys/dev/iicbus/iicbb.c @@ -52,6 +52,7 @@ #include #include #include +#include #ifdef FDT #include @@ -254,11 +255,12 @@ iicbb_waitforscl(device_t dev) do { if (I2C_GETSCL(dev)) return (0); + cpu_spinwait(); now = sbinuptime(); } while (now < fast_timeout); do { I2C_DEBUG(printf(".")); - pause_sbt("iicbb-scl-low", SBT_1MS, C_PREL(8), 0); + pause_sbt("iicbb-scl-low", SBT_1MS, 0, C_PREL(2)); if (I2C_GETSCL(dev)) return (0); now = sbinuptime(); From nobody Fri Jan 19 16:37:47 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlf43Ygjz56rlN; Fri, 19 Jan 2024 16:37:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlf40hrmz46Qv; Fri, 19 Jan 2024 16:37:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682268; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WIrxK2dO03o3oowpadowMO3pAZJmq+Jf7OBlnab7NN0=; b=CJHqLD8T3Ufo4rYI7fiLyuHYw8BQbEd47dW/mVdOySujI4Gx4yNt7mb/Ad101qmv4SfsQK TiVuwy7hEXBVJ77C7/WvzzSLviXj0XZECiZCAyxKQE2fIU0MmcxJlLVbciwyXzx6EknRtL kAftKiaR3HLjv0knr/BmVbBr4F9O0E/83Kog4IK5xW4RU8zRO/hECxmdqPQGNBr7JoNfCf OVftI9PMbYkXnBQIzfhQiYlrMXLSJJuaCU9noTj9RtldwUEQJG2OO+xoBwEj5Ej1iQBkr8 mDBE9/lA1U5L8tQ77OTWRqAtbdnpf1bperB8zqcZTDBOFuqL8kxvNHximuGBAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682268; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WIrxK2dO03o3oowpadowMO3pAZJmq+Jf7OBlnab7NN0=; b=ad7Pzj6PGmlNuvin+BzMBy+ZZmEG28FsbeM4rNYZ+8kaT+51Nqk/Z5kNppZwGiPuQP9PhQ rnPzB6kojKjQtd+EMGafyg/psCti0Pti+Yw68zlhODn41DVwVdL5xs7e7mLZIvqy2Ptfl1 SlqIjXBmdB3xmUrY4rKCctwvzFInhbVhhWwPB5dJ5M1h2tZgiYkFjXMJpfyFYtx616aT2m yHhjD+hpgJSTwG2BvBRBzZnW7jawCRhL40OfZ+rPOMSznV52cH6i9irL0NcM8e/BgJxnIi YflRmd1hhNReAwStvem0RpRWxP58dMiM0ynRVrWP0CiAVZq1rrn5vgMJC66Otw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682268; a=rsa-sha256; cv=none; b=Xkigj5Pc+YjxDk4MpclLvYgceYgAVLv0CRKZ9IhnEQT2yHze/J2KnfzhjhdT3wEI8G+Jfc FfKnUyglHSWqJ4GP7ZQUUD52hO1bY2m+weWyFozInVN9IkLyuVzg6Plw2M24VYueYKm5Qu 3CXx48vT0bCS79erHGQx3cLZyhDtqYVa67GWoyAAgqDDcC+dhu3qu/isScx6SPj6CSmwOF XMnnoz51qD5tC/ZmupM+6bXa0Ny64KgR8iqnFF84/c2NXwT/YUvM1SCAz/1uqFk4XFuGdV E5s60NyVvcDB4fjL6CgsAnkMGw5weF4Yr6I6jeS6AuB1rIxvymo+ciltFGbpCg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlf36w9Czyb0; Fri, 19 Jan 2024 16:37:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGblTM026980; Fri, 19 Jan 2024 16:37:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGblPs026977; Fri, 19 Jan 2024 16:37:47 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:37:47 GMT Message-Id: <202401191637.40JGblPs026977@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 41af0b19e914 - stable/14 - iichid(4): Restore/increase sampling rate List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 41af0b19e9147baaace2c538aac057afb8b4473c Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=41af0b19e9147baaace2c538aac057afb8b4473c commit 41af0b19e9147baaace2c538aac057afb8b4473c Author: Alexander Motin AuthorDate: 2023-12-24 00:10:49 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:34:58 +0000 iichid(4): Restore/increase sampling rate My previous commit by reducing precision reduced the sampling rate from 60Hz to 40Hz on idle system. Return it back to 60-80Hz range, that should be good for mouse smoothness on 60Hz displays. MFC after: 1 months (cherry picked from commit 68e457df0268113646264883515412af4c8808cb) --- sys/dev/iicbus/iichid.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c index 1035088c11b5..84f624f9bb09 100644 --- a/sys/dev/iicbus/iichid.c +++ b/sys/dev/iicbus/iichid.c @@ -106,9 +106,9 @@ enum { * sampling_rate_fast value too high as it may result in periodical lags of * cursor motion. */ -#define IICHID_SAMPLING_RATE_FAST 60 +#define IICHID_SAMPLING_RATE_FAST 80 #define IICHID_SAMPLING_RATE_SLOW 10 -#define IICHID_SAMPLING_HYSTERESIS 12 /* ~ 2x fast / slow */ +#define IICHID_SAMPLING_HYSTERESIS 16 /* ~ 2x fast / slow */ /* 5.1.1 - HID Descriptor Format */ struct i2c_hid_desc { @@ -567,7 +567,7 @@ rearm: else rate = sc->sampling_rate_fast; taskqueue_enqueue_timeout_sbt(sc->taskqueue, &sc->periodic_task, - SBT_1S / MAX(rate, 1), 0, C_PREL(1)); + SBT_1S / MAX(rate, 1), 0, C_PREL(2)); } out: if (bus_requested) From nobody Fri Jan 19 16:37:49 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlf54d8Kz56rnl; Fri, 19 Jan 2024 16:37:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlf51hq3z46Fx; Fri, 19 Jan 2024 16:37:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682269; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xQQq5sS5IH4Ma0PJSHsRZ6dq/nzbiT6lZ8EJMiHUukQ=; b=vhTKvc/8hJbX6l7x/Qb15+l3kyfl3FWHVs9p+tn60YJzsU7AxdToyTIzuv/rJr5zdayOzp j8SB5IvsDhBHik9wHDaMo1E6/nUI1Mtn/fxKf16x7jb0+lQw6KW/uKATHegbTlsFPMURny ji38gzkTXZ3vz21/1LPHolRsN39qnQHPV+XKBiteqwDeaUuq7JC+pwCFFcKZbQ2JV4bt2j Jmsas8GM//IeFwJ27aXknOBaq6QgpxonBV8WPqbmGtuOosTSirz0Shzp2LLqt1cHHLy9WV yo9D5wn4T0lTJty1nzFkTY0ch4br/SqSJqLVDYBI2jHFAOzoFrMOSzzirT2f+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682269; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xQQq5sS5IH4Ma0PJSHsRZ6dq/nzbiT6lZ8EJMiHUukQ=; b=gKYHYGhjRNyUZ2GjLipQIePtKit9p3shYW5birS8q9CnLCz6Yaf9bi+les5P/xkLg3z5Ok NZegewM+zXaDUP8guVuXXi4QyE6mvcc5MoUaIu559CTwZI4vE6F53e1NmRENCBihhB7+Q0 3bhew9yOhplvUbpkN3aaEUzmn0TGIMwPCewML0g43oDT9mKfBMceAQ96rK6JF9Jr+4pnU1 jb64IXc/YxTzynXsGnn5QunDbjXkAzRQQOfaziGdisOH5lwK4SThQfHKkJTHsSRQ8sVqxh 2ip9thyWw2H7pTaZUrE8UXduOVfAiy1B0OQ3QshtG/rZLwleANIDJm3psWZpcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682269; a=rsa-sha256; cv=none; b=cuCLWmEuXA9h5RQJUesRZ9Ti1xglEdBS3NWwdFLAlYBTq2c2xO8OAqQp7MI0wnwt32MVQ4 fK9vFXxIyfcqf9AICkvnFu/CeULHIL1KLuitJEgBjZ98LZ+3owpZ8ZoyB+uT2gnxgJ0S3W r1VIlLavthvY7Z9uQ/3KnG2zaIUgggdZcn1oHziwyQh6/ePY5hzFwypkODBnO8Sr/BQRpC uPaTVeXE1f3689YXMnC/h6Q9sVBfQOPMOH2X8ExzXIYS7ZiZlLxzpKHkarsa/cPnFVFIna WqNtDLIpeR8Y00ljvywYTsq9odJ9nb79hu4/dHqk+v3ev5tyXvmBMOQoirUOTw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlf50p3qzyb1; Fri, 19 Jan 2024 16:37:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGbnNN027029; Fri, 19 Jan 2024 16:37:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGbnqq027026; Fri, 19 Jan 2024 16:37:49 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:37:49 GMT Message-Id: <202401191637.40JGbnqq027026@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 799f2c8cb054 - stable/14 - iichid(4): Unify two taskqueue tasks List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 799f2c8cb05407e2ca64f41b0b18438901b3d0ff Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=799f2c8cb05407e2ca64f41b0b18438901b3d0ff commit 799f2c8cb05407e2ca64f41b0b18438901b3d0ff Author: Alexander Motin AuthorDate: 2023-12-27 00:28:56 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:34:58 +0000 iichid(4): Unify two taskqueue tasks taskqueue_enqueue_timeout(0) is equivalent to taskqueue_enqueue(), so no need to create a separate periodic_task and event_task to run exactly the same handler. MFC after: 1 month (cherry picked from commit a8f80c0c16c7fb38c46ddccd7e1b06dc46c407b1) --- sys/dev/iicbus/iichid.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c index 84f624f9bb09..0752521f3884 100644 --- a/sys/dev/iicbus/iichid.c +++ b/sys/dev/iicbus/iichid.c @@ -182,8 +182,7 @@ struct iichid_softc { bool callout_setup; /* iicbus lock */ uint8_t *dup_buf; struct taskqueue *taskqueue; - struct timeout_task periodic_task; /* iicbus lock */ - struct task event_task; + struct timeout_task sampling_task; /* iicbus lock */ #endif struct task suspend_task; @@ -520,7 +519,7 @@ iichid_cmd_set_report(struct iichid_softc* sc, const void *buf, #ifdef IICHID_SAMPLING static void -iichid_event_task(void *context, int pending) +iichid_sampling_task(void *context, int pending) { struct iichid_softc *sc; device_t parent; @@ -566,7 +565,7 @@ rearm: rate = sc->sampling_rate_slow; else rate = sc->sampling_rate_fast; - taskqueue_enqueue_timeout_sbt(sc->taskqueue, &sc->periodic_task, + taskqueue_enqueue_timeout_sbt(sc->taskqueue, &sc->sampling_task, SBT_1S / MAX(rate, 1), 0, C_PREL(2)); } out: @@ -742,7 +741,7 @@ iichid_reset_callout(struct iichid_softc *sc) sc->missing_samples = sc->sampling_hysteresis; sc->dup_samples = 0; sc->dup_size = 0; - taskqueue_enqueue(sc->taskqueue, &sc->event_task); + taskqueue_enqueue_timeout(sc->taskqueue, &sc->sampling_task, 0); return (0); } @@ -752,7 +751,7 @@ iichid_teardown_callout(struct iichid_softc *sc) { sc->callout_setup = false; - taskqueue_cancel_timeout(sc->taskqueue, &sc->periodic_task, NULL); + taskqueue_cancel_timeout(sc->taskqueue, &sc->sampling_task, NULL); DPRINTF(sc, "tore callout down\n"); } @@ -1135,12 +1134,10 @@ iichid_attach(device_t dev) TASK_INIT(&sc->suspend_task, 0, iichid_suspend_task, sc); #ifdef IICHID_SAMPLING - TASK_INIT(&sc->event_task, 0, iichid_event_task, sc); - /* taskqueue_create can't fail with M_WAITOK mflag passed. */ sc->taskqueue = taskqueue_create("iichid_tq", M_WAITOK | M_ZERO, taskqueue_thread_enqueue, &sc->taskqueue); - TIMEOUT_TASK_INIT(sc->taskqueue, &sc->periodic_task, 0, - iichid_event_task, sc); + TIMEOUT_TASK_INIT(sc->taskqueue, &sc->sampling_task, 0, + iichid_sampling_task, sc); sc->sampling_rate_slow = -1; sc->sampling_rate_fast = IICHID_SAMPLING_RATE_FAST; From nobody Fri Jan 19 16:37:50 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlf63dkmz56rnm; Fri, 19 Jan 2024 16:37:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlf62hHkz46Ss; Fri, 19 Jan 2024 16:37:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682270; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iGagbPIaADdnWK43wu3lOkl5GQ0GdUjLG+bHaeZiZrk=; b=f60Srw13r3l/f5aOBEa5LnWAXdBPWR2Vp3K/Q7BMSdvXD3KLdjntEkZYVK047P8PzJckPA iZiwzByWZhcAmaaScnSa7ihPMdFD3phah6RM1eUunczEsuWH/k+mnfrb9sco5jxmhk+g/r R10gAnpkgYwAqGxtiWCx1UKgOq2IpdgbnYXg7blctZDmdxqBwBZuHmW7yjbRaghrlvlJ5P 50B3t2sXf0JJyq3aiW3Ugt3CpvOxDxNMs0Af03CRHnqowC5MJ4QU/e3xY1yyLtD95AWh26 BWxC7Cowk48wQzUg2lpGvv448ucaBznNjNnHV4GfRse86d4MG9Vq3puv8RLGvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682270; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iGagbPIaADdnWK43wu3lOkl5GQ0GdUjLG+bHaeZiZrk=; b=BVfueaGDmmMSc7QncSgCY9oQQZFY5X8sonmYbN05QfbBWI1E9EmpJZ8d6l/viPrPfgfSwm 6b1qm+zeT3QKkl85XSKYYgPjXRDTCJLuLmJPc1F69VygeI4GPxlZQUosChgETidg789KvL 82+Y8AWRY5GhfOQS4eCwodT+XRavz48Frh6XtJwf0HGl/+cu05noPRb5VPYUKQ6JNYOpKr 1Qg/I9c5FJZrkYptv7Jhw3dSx7BZB0KIXu/0qbTPBsm1pX9g6ELY72F8t6czM+E5nZ3vXR +cCMJyY28NEOFsqcorhqCYuGvZNstGQzDvNkWK/fafSzFFGO0HTXV6ILpeumvQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682270; a=rsa-sha256; cv=none; b=taCZMTNlaBqsMQDxwBVmFcbxfkICiswyGX444ey6GyyM42O5iq37vIcGXbS4XynXt/kbeJ alvJXGdTaQiXi1LPJsHmWlR0n4JqQkYFzGmW5P/sQ/aKBqxf8y5WLXXXfj/EFjpNUlZvha lq3nfanZiAyWoXzoPkEq4eCrGa15yHBqTfBx7x0Yadv0ZvPJOm+M9u/nvQvuN0iJx5xEuS iD9PsRdQO82IxEUmcdkv2QAJ9K5pRsbpUhg2Ng5h5t1NvCyLVItrUGRP9CSeoSvtILifSk URVX7loPPXiCrQN91ZFcNuY7nrjw3sRfAAMIq0lMbcW+RWCxUGkoSTcw+NW8fQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlf61p1Wzyq0; Fri, 19 Jan 2024 16:37:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGbo4o027071; Fri, 19 Jan 2024 16:37:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGbofX027068; Fri, 19 Jan 2024 16:37:50 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:37:50 GMT Message-Id: <202401191637.40JGbofX027068@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 17a6b07e0839 - stable/14 - iichid(4): Switch taskqueue to "fast" List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 17a6b07e0839df130ea3d4b9be4cc9a8c3ce6c8a Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=17a6b07e0839df130ea3d4b9be4cc9a8c3ce6c8a commit 17a6b07e0839df130ea3d4b9be4cc9a8c3ce6c8a Author: Alexander Motin AuthorDate: 2023-12-27 00:36:34 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:34:58 +0000 iichid(4): Switch taskqueue to "fast" While "fast" taskqueue may be more expensive due to spinlock use, when used mainly for timeout tasks it allows to avoid extra context switches to and from callout thread, that is even more expensive. MFC after: 1 month (cherry picked from commit 358453ce9bdd99eb69641b02f2d7e29cedecbe27) --- sys/dev/iicbus/iichid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c index 0752521f3884..ff443afbf30a 100644 --- a/sys/dev/iicbus/iichid.c +++ b/sys/dev/iicbus/iichid.c @@ -1134,7 +1134,7 @@ iichid_attach(device_t dev) TASK_INIT(&sc->suspend_task, 0, iichid_suspend_task, sc); #ifdef IICHID_SAMPLING - sc->taskqueue = taskqueue_create("iichid_tq", M_WAITOK | M_ZERO, + sc->taskqueue = taskqueue_create_fast("iichid_tq", M_WAITOK | M_ZERO, taskqueue_thread_enqueue, &sc->taskqueue); TIMEOUT_TASK_INIT(sc->taskqueue, &sc->sampling_task, 0, iichid_sampling_task, sc); From nobody Fri Jan 19 16:39:33 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlh536Gcz56s1P; Fri, 19 Jan 2024 16:39:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlh52Y7vz47lP; Fri, 19 Jan 2024 16:39:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682373; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Q9vzaWDQSwVEGg18a9u6hIgRl56W7btFMUP3SfWP5XI=; b=XQwVRFNNTFZ2bU+Rl2fCvmPBsa5c75OXBmwXhxj17VzvKXewdXW5PyxgJP3hV1wxd+FBHH KJ8NM7zbowXzHOOXQT5032v2dIvtsl807ZS2ESTwFTc9nDIARcPfTg91A6Z9CVugYVBW/H wLj36zwPuaaVqnqKp8MZm+P86U9oQY02I2M3XGFRlij/PJjtxSn+UGrM1v4VEOzlBfCWIa VeSih5sMyCAguYbPRope45m3bjmNqZm06Agu2vo4494udnhUdk0EsSip1theEzLhWserbu AUzbbqWQkJ7EyFbgf4cZlxqWJtqK3adDaA9TcUi68iuCjfckJhd2d0rIHJc4xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682373; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Q9vzaWDQSwVEGg18a9u6hIgRl56W7btFMUP3SfWP5XI=; b=yJ+zo5a+jQwZLMIZnBl7hDJYa1iw5CavogwE3X5PS1+DPMDTh+bPn+ZUD1Iy7cb3fnj0M4 5qh65sSzHHrGKJbf72seWQe6PUkuG4qLceaJ/yZfFuRieirsZhsICtIYj/xCtMZ/OE8/io doZLSPUHb0rA7xj3rYRX3shhZsJJBw2k26i+1xhMIw29TlJOd8j2lJtvGvqjo+pVg1Wo+Z 6lhnS9ALycuSxMMbyQd48vGK9DbgU9MR1yoXD6FdJi3pr7cEA6eo4OQ2Bx0mssXr/rBOIs FYF4YSLiNUYjJowL9AaeYB1Uw3qlRhLSze0sEI3h4UU6Z6QPEmEbUCeyxVst2A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682373; a=rsa-sha256; cv=none; b=D2OdJzVyqSDuzWmaj6UzJStGgFoEfhNOfiUKZnuAObAKawLHPqGqzXkg7ESAsAySh4bpVA LyAoHntLjVMZTvc9e7mFIb70wZOWM94GRgEfl6n1zkm8HvpOR+EfogFebdMhej2NlFhCRt 0nMtF4AIDomO0SkVnSxpBqhdtbumlyJop74V+vg2AU2l0/j+RcQtzKqY6RF6x/4ATKhd4r 1P6jFQ68eu33CSiUiSCmh+AKmNyFdsdUjfJMjE0tWWGz0dZqy6Gw04JWfXEdp0KWjsZ4Va ZoG1HPF/d/oLzLwECpyF36DQijfMSTgu7d9kVTk/L2WAC1r5U3rIXHRG2y8mkQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlh51cC7zyb4; Fri, 19 Jan 2024 16:39:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGdXHE027422; Fri, 19 Jan 2024 16:39:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGdXPY027419; Fri, 19 Jan 2024 16:39:33 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:39:33 GMT Message-Id: <202401191639.40JGdXPY027419@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 265a52fe6cd2 - stable/14 - acpi_lid: Remove duplicate events List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 265a52fe6cd27398c115d374bf778c7e0dfd850b Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=265a52fe6cd27398c115d374bf778c7e0dfd850b commit 265a52fe6cd27398c115d374bf778c7e0dfd850b Author: Alexander Motin AuthorDate: 2023-12-24 02:33:51 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:39:28 +0000 acpi_lid: Remove duplicate events Remove extra acpi_UserNotify() call per event. Filter duplicate notifications received from ACPI without actual status change. Without this on my Dell XPS 13 9310 I saw 4 devd events for either open or close, now only one. MFC after: 1 month (cherry picked from commit 1a3ee6002f3e008e0bc29d04c976285434503e19) --- sys/dev/acpica/acpi_lid.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sys/dev/acpica/acpi_lid.c b/sys/dev/acpica/acpi_lid.c index 44730879c31e..142791f7282a 100644 --- a/sys/dev/acpica/acpi_lid.c +++ b/sys/dev/acpica/acpi_lid.c @@ -91,7 +91,7 @@ static driver_t acpi_lid_driver = { DRIVER_MODULE(acpi_lid, acpi, acpi_lid_driver, 0, 0); MODULE_DEPEND(acpi_lid, acpi, 1, 1, 1); -static void +static int acpi_lid_status_update(struct acpi_lid_softc *sc) { ACPI_STATUS status; @@ -107,9 +107,12 @@ acpi_lid_status_update(struct acpi_lid_softc *sc) status = acpi_GetInteger(sc->lid_handle, "_LID", &lid_status); if (ACPI_FAILURE(status)) lid_status = 1; /* assume lid is opened */ + else + lid_status = (lid_status != 0); /* range check value */ - /* range check value */ - sc->lid_status = lid_status ? 1 : 0; + if (sc->lid_status == lid_status) + return (EALREADY); + sc->lid_status = lid_status; /* Send notification via devd */ acpi_UserNotify("Lid", sc->lid_handle, sc->lid_status); @@ -119,6 +122,7 @@ acpi_lid_status_update(struct acpi_lid_softc *sc) evdev_push_sw(sc->lid_evdev, SW_LID, lid_status ? 0 : 1); evdev_sync(sc->lid_evdev); #endif + return (0); } static int @@ -146,6 +150,7 @@ acpi_lid_attach(device_t dev) sc = device_get_softc(dev); sc->lid_dev = dev; acpi_lid_handle = sc->lid_handle = acpi_get_handle(dev); + sc->lid_status = -1; #ifdef EVDEV_SUPPORT /* Register evdev device before initial status update */ @@ -219,7 +224,8 @@ acpi_lid_notify_status_changed(void *arg) ACPI_SERIAL_BEGIN(lid); /* Update lid status, if any */ - acpi_lid_status_update(sc); + if (acpi_lid_status_update(sc) != 0) + goto out; acpi_sc = acpi_device_get_parent_softc(sc->lid_dev); if (acpi_sc == NULL) @@ -228,8 +234,6 @@ acpi_lid_notify_status_changed(void *arg) ACPI_VPRINT(sc->lid_dev, acpi_sc, "Lid %s\n", sc->lid_status ? "opened" : "closed"); - acpi_UserNotify("Lid", sc->lid_handle, sc->lid_status); - if (sc->lid_status == 0) EVENTHANDLER_INVOKE(acpi_sleep_event, acpi_sc->acpi_lid_switch_sx); else From nobody Fri Jan 19 16:48:03 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlsv3ss2z56t1C; Fri, 19 Jan 2024 16:48:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlsv1lbZz49B7; Fri, 19 Jan 2024 16:48:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682883; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4FjaTDfXztx3PQX4Ih8osKejvzBkxzbRnrD4x0SI2Bo=; b=BVKf5WWD6c1G2crYuwVGicooDD1QgtNoqkFBjeKCKe9R3JW/bDhihxFQjY/ljCBgqpTs9o kw86A9AqavRBzu7/4tIunjXxM+Aizr2zXN2sGvBtAD+pos3fATNFJEWChObVaFDDa04MaB 4DCHBhb5SXNVWdnScpbmfYa3GfXp36ETVBr27DWz2DbQZ41fEzBiggUuv0eLhVVVtGDf65 esMVF4rpX/45NobUL+uwdB57eimBcHNFS2fH/h57mH4xNMUmXfKuPDOtidV8U21/7X3iJF 4DPcf18NxWB/s7rT5gcLRTvL8yRBoUpFauYWbpcuqEC+6atW9p8Nz+LXWZ6pfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682883; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4FjaTDfXztx3PQX4Ih8osKejvzBkxzbRnrD4x0SI2Bo=; b=Un0BR0y3rbuR3+SNyXDwqJPg7X+d9okaK53oMz6oSPKRQOm0gaEo7skTUR3bKt9vM/Cgwf dbkSivgEhxg0moMcpbvXUHQiySQDPqHR5ySMBrgrskAG6DRE2vIMjABFgnBVHgwBNAuWGe 1ZrNf79aY3sFOL7CedRCIRArhuDbc/61UtvAeMPzY4FxqPraUBeaSYr6Ek7JSxZc5YFLh5 z7tdNJLNqMqFH9HfSu21UJxrH8kRw/N7H2tsLF/TGZXLpf3BXfas2cBSDnV3S9THLRBpVk 5BrGGubTjdwtFFpS9hwnrMiwcFamjqc1VRv/fBOpSbGINUk5pO+xJzjo8+II/g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682883; a=rsa-sha256; cv=none; b=nrw1Tig6p+YKXUm+louoHZVkdu/4kTS5+EFrI3+pcuTvvnYBwZhhg+JRw8CP9TkoD42uba ImPnANx6cBNHDvG/xcsF74rf2Rm01y+9kwovUpPudDTJG/DhpuHZKWZSZKCI3r53vyVrON haFYj1bQY+YOBQgSfFmIeCF4M0XQFvxf7WO6T3Zr/dFufYtE6UejggF7jaIZ2mp9kddywm Z9gjGiaHH60ytUm3hh286/pGPhf8c4JB+5IP5vwsYYg5RK2Z6B8kPeCWN0m3/+Rtsfvltb dq3BOl7JG8xGRUaZa66epuNxrlgXcw3cJDLyFnvXZy48Pc8LHB3RZVMUaoc4ww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlsv0qgnz106l; Fri, 19 Jan 2024 16:48:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGm3tG043931; Fri, 19 Jan 2024 16:48:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGm31O043928; Fri, 19 Jan 2024 16:48:03 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:48:03 GMT Message-Id: <202401191648.40JGm31O043928@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: d095e86f0517 - stable/14 - isp(4): Rework firmware handling/loading List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d095e86f051718740f8768b183644cbf064558f8 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=d095e86f051718740f8768b183644cbf064558f8 commit d095e86f051718740f8768b183644cbf064558f8 Author: Joerg Pulz AuthorDate: 2023-10-27 15:27:37 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:47:35 +0000 isp(4): Rework firmware handling/loading Correctly identify the active firmware in flash on adapters with primary and secondary firmware region in flash. Correctly identify the active NVRAM on adapters with primary and secondary NVRAM region in flash. Loading ispfw(4) moved from isp_pci_attach() to isp_reset(). Drop the reference to ispfw(4) after using it so one can kldunload(8) it. New isp_load_ram() function to load either ispfw(4) or flash firmware into RISC's RAM. New functions to read data from flash. The old ones will be removed later. A bunch of new helper functions to identify and validate active flash regions for firmware, auxiliary and NVRAM. Overhaul ISP_FW_* macros and make use of it when comparing firmware versions. We can handle firmware versions up to 255.255.255. Firmware load priority slightly changed: For 27xx and newer adapters: - load ispfw(4) firmware - request (active) flash firmware information - compare version numbers of ispfw(4) and flash firmware - load firmware with highest version into RISC's RAM - if loading ispfw(4) is disabled or failed - load firmware from flash - if everything else fails use MBOX_LOAD_FLASH_FIRMWARE as fallback For 26xx and older adapters nothing changed: - load ispfw(4) firmware and load it into RISC's RAM - if loading ispfw(4) is disabled or failed use MBOX_EXEC_FIRMWARE - for 26xx a preceding MBOX_LOAD_FLASH_FIRMWARE is used New read only sysctl(8)'s: dev.isp.N.fw_version_run: the firmware version actually running dev.isp.N.fw_version_ispfw: the firmware version provided by ispfw(4) dev.isp.N.fw_version_flash: the (active) firmware version in flash While here: - firmware attribute handling/parsing reworked + renamed defines from ISP2400_FW_ATTR_* to ISP_FW_ATTR_* + changed values to match new handling/parsing + added some more attributes - enable FLT support on 26xx based adapters - log level adjustments - new function return status codes (some for now, some for later use) - some minor style changes Tested and approved to work on real hardware with: - Qlogic ISP 2532 (QLogic QLE2560 8Gb FC Adapter) - Qlogic ISP 2031 (QLogic QLE2662 16Gbit 2Port FC Adapter) - Qlogic ISP 2722 (QLogic QLE2690 16Gb FC Adapter) - Qlogic ISP 2812 (QLogic QLE2772 32Gbit 2Port FC Adapter) PR: 273263 Reviewed by: mav Pull Request: https://github.com/freebsd/freebsd-src/pull/877 MFC after: 1 month Sponsored by: Technical University of Munich (cherry picked from commit 10ed63fc06cb9902cc783ce8d0086c9aa97ed1e1) --- share/man/man4/isp.4 | 21 +- sys/dev/isp/isp.c | 981 ++++++++++++++++++++++++++++++++++++++-------- sys/dev/isp/isp_freebsd.c | 21 +- sys/dev/isp/isp_freebsd.h | 2 +- sys/dev/isp/isp_pci.c | 35 +- sys/dev/isp/ispmbox.h | 62 +-- sys/dev/isp/ispreg.h | 11 + sys/dev/isp/ispvar.h | 127 ++++-- 8 files changed, 1002 insertions(+), 258 deletions(-) diff --git a/share/man/man4/isp.4 b/share/man/man4/isp.4 index 277e7775ddee..350a0ea59a64 100644 --- a/share/man/man4/isp.4 +++ b/share/man/man4/isp.4 @@ -24,7 +24,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd April 25, 2023 +.Dd October 27, 2023 .Dt ISP 4 .Os .Sh NAME @@ -80,12 +80,15 @@ FC-Tape is automatically enabled when connecting controller that supports it to a target that supports it. It may be disabled using configuration and hint options described below. .Sh FIRMWARE -Firmware loading is supported if the +Firmware loading is supported and handled by +.Xr firmware 9 . +The correct firmware is either loaded automatically, if available for this +type of adapter, or by manually loading the .Xr ispfw 4 -module is loaded. +module. It is strongly recommended that you use the firmware available from .Xr ispfw 4 -as it is the most likely to have been tested with this driver. +as it is the one that most likely has been tested with this driver. .Sh HARDWARE Cards supported by the .Nm @@ -136,7 +139,7 @@ Limit on number of Message Signaled Interrupts (MSI) to be used. .It Va hint.isp. Ns Ar N Ns Va .msix Limit on number of Extended Message Signaled Interrupts (MSI-X) to be used. .It Va hint.isp. Ns Ar N Ns Va .fwload_disable -A hint value to disable loading of firmware +A hint value to disable loading of firmware provided by .Xr ispfw 4 . .It Va hint.isp. Ns Ar N Ns Va .ignore_nvram A hint value to ignore board NVRAM settings for. @@ -210,6 +213,14 @@ The default is 1 (enabled). This is the readonly World Wide Node Name value for this port. .It Va dev.isp. Ns Ar N Ns Va .wwpn This is the readonly World Wide Port Name value for this port. +.It Va dev.isp. Ns Ar N Ns Va .fw_version_flash +The readonly flash firmware version value in the active region of the +controller. +.It Va dev.isp. Ns Ar N Ns Va .fw_version_ispfw +The readonly firmware version value provided by +.Xr ispfw 4 . +.It Va dev.isp. Ns Ar N Ns Va .fw_version_run +The readonly firmware version value currently executed on the controller. .El .Sh SEE ALSO .Xr da 4 , diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 74f90b64441c..aa2f1fb74c59 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -49,7 +49,9 @@ __KERNEL_RCSID(0, "$NetBSD$"); #include #endif #ifdef __FreeBSD__ +#include #include +#include #include #endif #ifdef __OpenBSD__ @@ -116,16 +118,31 @@ static uint16_t isp_next_handle(ispsoftc_t *, uint16_t *); static int isp_fw_state(ispsoftc_t *, int); static void isp_mboxcmd(ispsoftc_t *, mbreg_t *); +static void isp_get_flash_addrs(ispsoftc_t *); static void isp_setdfltfcparm(ispsoftc_t *, int); -static int isp_read_nvram(ispsoftc_t *, int); +static int isp_read_flash_dword(ispsoftc_t *, uint32_t, uint32_t *); +static int isp_read_flash_data(ispsoftc_t *, uint32_t *, uint32_t, uint32_t); static void isp_rd_2xxx_flash(ispsoftc_t *, uint32_t, uint32_t *); static int isp_read_flthdr_2xxx(ispsoftc_t *); static void isp_parse_flthdr_2xxx(ispsoftc_t *, uint8_t *); static int isp_read_flt_2xxx(ispsoftc_t *); static int isp_parse_flt_2xxx(ispsoftc_t *, uint8_t *); -static int isp_read_nvram_2400(ispsoftc_t *); +static int isp_read_nvram(ispsoftc_t *); static void isp_parse_nvram_2400(ispsoftc_t *, uint8_t *); +static void isp_print_image(ispsoftc_t *, char *, struct isp_image_status *); +static bool isp_check_aux_image_status_signature(struct isp_image_status *); +static bool isp_check_image_status_signature(struct isp_image_status *); +static unsigned long isp_image_status_checksum(struct isp_image_status *); +static void isp_component_status(struct active_regions *, struct isp_image_status *); +static int isp_compare_image_generation(ispsoftc_t *, struct isp_image_status *, struct isp_image_status *); +static void isp_get_aux_images(ispsoftc_t *, struct active_regions *); +static void isp_get_active_image(ispsoftc_t *, struct active_regions *); +static bool isp_risc_firmware_invalid(ispsoftc_t *, uint32_t *); +static int isp_load_ram(ispsoftc_t *, uint32_t *, uint32_t, uint32_t); +static int isp_load_risc_flash(ispsoftc_t *, uint32_t *, uint32_t); +static int isp_load_risc(ispsoftc_t *, uint32_t *); + static void isp_change_fw_state(ispsoftc_t *isp, int chan, int state) { @@ -139,6 +156,45 @@ isp_change_fw_state(ispsoftc_t *isp, int chan, int state) fcp->isp_fwstate = state; } +static void +isp_get_flash_addrs(ispsoftc_t *isp) +{ + fcparam *fcp = FCPARAM(isp, 0); + int r = 0; + + if (IS_28XX(isp)) { + fcp->flash_data_addr = ISP28XX_BASE_ADDR; + fcp->flt_region_flt = ISP28XX_FLT_ADDR; + } else if (IS_26XX(isp)) { /* 26xx and 27xx are identical */ + fcp->flash_data_addr = ISP27XX_BASE_ADDR; + fcp->flt_region_flt = ISP27XX_FLT_ADDR; + } else if (IS_25XX(isp)) { + fcp->flash_data_addr = ISP25XX_BASE_ADDR; + fcp->flt_region_flt = ISP25XX_FLT_ADDR; + } else { + fcp->flash_data_addr = ISP24XX_BASE_ADDR; + fcp->flt_region_flt = ISP24XX_FLT_ADDR; + } + fcp->flt_length = 0; + r = isp_read_flthdr_2xxx(isp); + if (r == 0) { + isp_read_flt_2xxx(isp); + } else { /* fallback to hardcoded NVRAM address */ + if (IS_28XX(isp)) { + fcp->flt_region_nvram = 0x300000; + } else if (IS_26XX(isp)) { + fcp->flash_data_addr = 0x7fe7c000; + fcp->flt_region_nvram = 0; + } else if (IS_25XX(isp)) { + fcp->flt_region_nvram = 0x48000; + } else { + fcp->flash_data_addr = 0x7ffe0000; + fcp->flt_region_nvram = 0; + } + fcp->flt_region_nvram += ISP2400_NVRAM_PORT_ADDR(isp->isp_port); + } +} + /* * Reset Hardware. * @@ -152,7 +208,7 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) { mbreg_t mbs; char *buf; - uint64_t fwt; + uint16_t fwt; uint32_t code_org, val; int loaded_fw, loops, i, dodnld = 1; const char *btype = "????"; @@ -321,41 +377,119 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) } /* - * Download new Firmware, unless requested not to do so. - * This is made slightly trickier in some cases where the - * firmware of the ROM revision is newer than the revision - * compiled into the driver. So, where we used to compare - * versions of our f/w and the ROM f/w, now we just see - * whether we have f/w at all and whether a config flag - * has disabled our download. + * Early setup DMA for the request and response queues. + * We do this now so we can use the request queue + * for dma to load firmware from. */ - if ((isp->isp_mdvec->dv_ispfw == NULL) || (isp->isp_confopts & ISP_CFG_NORELOAD)) { - dodnld = 0; - } else { - /* - * Set up DMA for the request and response queues. - * We do this now so we can use the request queue - * for dma to load firmware from. - */ - if (ISP_MBOXDMASETUP(isp) != 0) { - isp_prt(isp, ISP_LOGERR, "Cannot setup DMA"); - return; + if (ISP_MBOXDMASETUP(isp) != 0) { + isp_prt(isp, ISP_LOGERR, "Cannot setup DMA"); + return; + } + + /* + * FW load priority + * For 27xx and newer: + * Load ispfw(4) firmware unless requested not to do so. + * Request (active) flash firmware information. Compare + * version numbers of ispfw(4) and flash firmware. Load + * the highest version into RAM of the adapter. + * If loading ispfw(4) is disabled or loading it failed + * (eg. no firmware available) we just load firmware from + * flash. If this fails for whatever reason we fallback + * to let the adapter MBOX_LOAD_FLASH_FIRMWARE by itself + * followed by MBOX_EXEC_FIRMWARE and hope the best to + * get it up and running. + * + * For 26xx and older: + * Load ispfw(4) firmware unless requested not to do so + * and load it into RAM of the adapter. If loading + * ispfw(4) is disabled or loading it failed (eg. no + * firmware available) we just let the adapter + * MBOX_EXEC_FIRMWARE to start the flash firmware. + * For the 26xx a preceding MBOX_LOAD_FLASH_FIRMWARE + * is required. + */ + + fcparam *fcp = FCPARAM(isp, 0); + + /* read FLT to get flash region addresses */ + isp_get_flash_addrs(isp); + + /* set informational sysctl(8) to sane value */ + snprintf(fcp->fw_version_ispfw, sizeof(fcp->fw_version_ispfw), + "not loaded"); + snprintf(fcp->fw_version_flash, sizeof(fcp->fw_version_flash), + "not loaded"); + snprintf(fcp->fw_version_run, sizeof(fcp->fw_version_run), + "not loaded"); + + + /* Try to load ispfw(4) first */ + if (!(isp->isp_confopts & ISP_CFG_NORELOAD)) { + char fwname[32]; + snprintf(fwname, sizeof(fwname), "isp_%04x", isp->isp_did); + isp->isp_osinfo.ispfw = firmware_get(fwname); + if (isp->isp_osinfo.ispfw != NULL) { + isp->isp_mdvec->dv_ispfw = isp->isp_osinfo.ispfw->data; + const uint32_t *ispfwptr = isp->isp_mdvec->dv_ispfw; + for (i = 0; i < 4; i++) + fcp->fw_ispfwrev[i] = ispfwptr[4 + i]; + isp_prt(isp, ISP_LOGCONFIG, + "Loaded ispfw(4) firmware %s", fwname); + snprintf(fcp->fw_version_ispfw, + sizeof(fcp->fw_version_ispfw), + "%u.%u.%u", fcp->fw_ispfwrev[0], + fcp->fw_ispfwrev[1], fcp->fw_ispfwrev[2]); + isp_prt(isp, ISP_LOGCONFIG, + "Firmware revision (ispfw) %u.%u.%u (%x).", + fcp->fw_ispfwrev[0], fcp->fw_ispfwrev[1], + fcp->fw_ispfwrev[2], fcp->fw_ispfwrev[3]); + } else { + isp_prt(isp, ISP_LOGDEBUG0, + "Unable to load ispfw(4) firmware %s", fwname); } } - code_org = ISP_CODE_ORG_2400; loaded_fw = 0; + dodnld = 0; + + if (IS_27XX(isp)) { + switch (isp_load_risc(isp, 0)) { + case ISP_ABORTED: + /* download ispfw(4) as it's newer than flash */ + dodnld = 1; + break; + case ISP_SUCCESS: + /* We've loaded flash firmware */ + loaded_fw = 1; + break; + default: + /* + * Fall through to use ispfw(4) if available or + * just fall back to use MBOX_LOAD_FLASH_FIRMWARE + */ + if (isp->isp_osinfo.ispfw != NULL) + dodnld = 1; + break; + } + } else { + /* Fall through to load ispfw(4) or simply MBOX_EXEC_FIRMWARE */ + if (isp->isp_osinfo.ispfw != NULL) + dodnld = 1; + } + + code_org = ISP_CODE_ORG_2400; if (dodnld) { const uint32_t *ptr = isp->isp_mdvec->dv_ispfw; uint32_t la, wi, wl; - /* - * Keep loading until we run out of f/w. - */ + /* Keep loading until we run out of f/w. */ code_org = ptr[2]; /* 1st load address is our start addr */ for (;;) { - isp_prt(isp, ISP_LOGDEBUG0, "load 0x%x words of code at load address 0x%x", ptr[3], ptr[2]); + isp_prt(isp, ISP_LOGDEBUG2, + "Load 0x%x words of code at load address 0x%x", + ptr[3], ptr[2]); wi = 0; la = ptr[2]; @@ -368,20 +502,9 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) cp = isp->isp_rquest; for (i = 0; i < nw; i++) ISP_IOXPUT_32(isp, ptr[wi + i], &cp[i]); - MEMORYBARRIER(isp, SYNC_REQUEST, 0, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)), -1); - MBSINIT(&mbs, MBOX_LOAD_RISC_RAM, MBLOGALL, 0); - mbs.param[1] = la; - mbs.param[2] = DMA_WD1(isp->isp_rquest_dma); - mbs.param[3] = DMA_WD0(isp->isp_rquest_dma); - mbs.param[4] = nw >> 16; - mbs.param[5] = nw; - mbs.param[6] = DMA_WD3(isp->isp_rquest_dma); - mbs.param[7] = DMA_WD2(isp->isp_rquest_dma); - mbs.param[8] = la >> 16; - isp_prt(isp, ISP_LOGDEBUG0, "LOAD RISC RAM %u words at load address 0x%x", nw, la); - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { - isp_prt(isp, ISP_LOGERR, "F/W download failed"); + if (isp_load_ram(isp, cp, la, nw) != 0) { + isp_prt(isp, ISP_LOGERR, + "Failed to load firmware fragment."); return; } la += nw; @@ -395,30 +518,32 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) ptr += ptr[3]; } loaded_fw = 1; - } else if (IS_26XX(isp)) { - isp_prt(isp, ISP_LOGDEBUG1, "loading firmware from flash"); - MBSINIT(&mbs, MBOX_LOAD_FLASH_FIRMWARE, MBLOGALL, 5000000); - mbs.ibitm = 0x01; - mbs.obitm = 0x07; - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { - isp_prt(isp, ISP_LOGERR, "Flash F/W load failed"); - return; - } + /* Drop reference to ispfw(4) firmware */ + if (isp->isp_osinfo.ispfw != NULL) + firmware_put(isp->isp_osinfo.ispfw, FIRMWARE_UNLOAD); } else { - isp_prt(isp, ISP_LOGDEBUG2, "skipping f/w download"); + isp_prt(isp, ISP_LOGCONFIG, + "Skipping ispfw(4) firmware download"); } - /* - * If we loaded firmware, verify its checksum - */ + /* If we loaded firmware, verify its checksum. */ if (loaded_fw) { MBSINIT(&mbs, MBOX_VERIFY_CHECKSUM, MBLOGNONE, 0); mbs.param[1] = code_org >> 16; mbs.param[2] = code_org; isp_mboxcmd(isp, &mbs); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { - isp_prt(isp, ISP_LOGERR, dcrc); + isp_prt(isp, ISP_LOGERR, "%s: 0x%x", dcrc, + (mbs.param[2] << 16 | mbs.param[1])); + return; + } + } else if (IS_26XX(isp)) { + isp_prt(isp, ISP_LOGCONFIG, + "Instruct RISC to load firmware from flash by itself"); + MBSINIT(&mbs, MBOX_LOAD_FLASH_FIRMWARE, MBLOGALL, 5000000); + isp_mboxcmd(isp, &mbs); + if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { + isp_prt(isp, ISP_LOGERR, "Flash F/W load failed"); return; } } @@ -434,9 +559,27 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) mbs.param[2] = code_org; if (!IS_26XX(isp)) mbs.param[3] = loaded_fw ? 0 : 1; + mbs.param[4] = 0; + if (IS_27XX(isp)) + mbs.param[4] |= 0x08; /* NVME_ENABLE_FLAG */ + mbs.param[11] = 0; isp_mboxcmd(isp, &mbs); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) return; + fcp->fw_ability_mask = (mbs.param[3] << 16) | mbs.param[2]; + isp_prt(isp, ISP_LOGDEBUG0, "Firmware ability mask: 0x%x", + fcp->fw_ability_mask); + if (IS_26XX(isp)) { + fcp->max_supported_speed = mbs.param[2] & (0x1 | 0x2); + isp_prt(isp, ISP_LOGINFO, "Maximum supported speed: %s", + fcp->max_supported_speed == 0 ? "16Gbit/s" : + fcp->max_supported_speed == 1 ? "32Gbit/s" : + fcp->max_supported_speed == 2 ? "64Gbit/s" : "unknown"); + } + if (IS_28XX(isp) && (mbs.param[5] & 0x400)) { + isp_prt(isp, ISP_LOGINFO, + "HW supports EDIF (Encryption of data in flight)"); + } /* * Ask the chip for the current firmware version. @@ -452,103 +595,160 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) isp->isp_fwrev[1] = mbs.param[2]; isp->isp_fwrev[2] = mbs.param[3]; isp->isp_fwattr = mbs.param[6]; - isp->isp_fwattr |= ((uint64_t) mbs.param[15]) << 16; - if (isp->isp_fwattr & ISP2400_FW_ATTR_EXTNDED) { - isp->isp_fwattr |= - (((uint64_t) mbs.param[16]) << 32) | - (((uint64_t) mbs.param[17]) << 48); + isp->isp_fwattr_h = mbs.param[15]; + if (isp->isp_fwattr & ISP_FW_ATTR_EXTNDED) { + isp->isp_fwattr_ext[0] = mbs.param[16]; + isp->isp_fwattr_ext[1] = mbs.param[17]; } isp_prt(isp, ISP_LOGCONFIG, "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d", - btype, isp->isp_revision, dodnld? "loaded" : "resident", isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]); + btype, isp->isp_revision, dodnld ? "loaded" : "resident", + isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]); + snprintf(fcp->fw_version_run, sizeof(fcp->fw_version_run), + "%u.%u.%u", isp->isp_fwrev[0], isp->isp_fwrev[1], + isp->isp_fwrev[2]); + if (!dodnld && !IS_26XX(isp)) + snprintf(fcp->fw_version_flash, sizeof(fcp->fw_version_flash), + "%s", fcp->fw_version_run); fwt = isp->isp_fwattr; buf = FCPARAM(isp, 0)->isp_scanscratch; - ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "Attributes:"); - if (fwt & ISP2400_FW_ATTR_CLASS2) { - fwt ^=ISP2400_FW_ATTR_CLASS2; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "FW Attributes Lower:"); + if (fwt & ISP_FW_ATTR_CLASS2) { + fwt ^= ISP_FW_ATTR_CLASS2; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s Class2", buf); } - if (fwt & ISP2400_FW_ATTR_IP) { - fwt ^=ISP2400_FW_ATTR_IP; + if (fwt & ISP_FW_ATTR_IP) { + fwt ^= ISP_FW_ATTR_IP; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s IP", buf); } - if (fwt & ISP2400_FW_ATTR_MULTIID) { - fwt ^=ISP2400_FW_ATTR_MULTIID; + if (fwt & ISP_FW_ATTR_MULTIID) { + fwt ^= ISP_FW_ATTR_MULTIID; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s MultiID", buf); } - if (fwt & ISP2400_FW_ATTR_SB2) { - fwt ^=ISP2400_FW_ATTR_SB2; + if (fwt & ISP_FW_ATTR_SB2) { + fwt ^= ISP_FW_ATTR_SB2; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s SB2", buf); } - if (fwt & ISP2400_FW_ATTR_T10CRC) { - fwt ^=ISP2400_FW_ATTR_T10CRC; + if (fwt & ISP_FW_ATTR_T10CRC) { + fwt ^= ISP_FW_ATTR_T10CRC; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s T10CRC", buf); } - if (fwt & ISP2400_FW_ATTR_VI) { - fwt ^=ISP2400_FW_ATTR_VI; + if (fwt & ISP_FW_ATTR_VI) { + fwt ^= ISP_FW_ATTR_VI; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VI", buf); } - if (fwt & ISP2400_FW_ATTR_MQ) { - fwt ^=ISP2400_FW_ATTR_MQ; + if (fwt & ISP_FW_ATTR_MQ) { + fwt ^= ISP_FW_ATTR_MQ; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s MQ", buf); } - if (fwt & ISP2400_FW_ATTR_MSIX) { - fwt ^=ISP2400_FW_ATTR_MSIX; + if (fwt & ISP_FW_ATTR_MSIX) { + fwt ^= ISP_FW_ATTR_MSIX; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s MSIX", buf); } - if (fwt & ISP2400_FW_ATTR_FCOE) { - fwt ^=ISP2400_FW_ATTR_FCOE; + if (fwt & ISP_FW_ATTR_FCOE) { + fwt ^= ISP_FW_ATTR_FCOE; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s FCOE", buf); } - if (fwt & ISP2400_FW_ATTR_VP0) { - fwt ^= ISP2400_FW_ATTR_VP0; + if (fwt & ISP_FW_ATTR_VP0) { + fwt ^= ISP_FW_ATTR_VP0; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VP0_Decoupling", buf); } - if (fwt & ISP2400_FW_ATTR_EXPFW) { - fwt ^= ISP2400_FW_ATTR_EXPFW; + if (fwt & ISP_FW_ATTR_EXPFW) { + fwt ^= ISP_FW_ATTR_EXPFW; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s (Experimental)", buf); } - if (fwt & ISP2400_FW_ATTR_HOTFW) { - fwt ^= ISP2400_FW_ATTR_HOTFW; + if (fwt & ISP_FW_ATTR_HOTFW) { + fwt ^= ISP_FW_ATTR_HOTFW; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s HotFW", buf); } - fwt &= ~ISP2400_FW_ATTR_EXTNDED; - if (fwt & ISP2400_FW_ATTR_EXTVP) { - fwt ^= ISP2400_FW_ATTR_EXTVP; + fwt &= ~ISP_FW_ATTR_EXTNDED; + if (fwt) { + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), + "%s (unknown 0x%04x)", buf, fwt); + } + isp_prt(isp, ISP_LOGCONFIG, "%s", buf); + + fwt = isp->isp_fwattr_h; + buf = FCPARAM(isp, 0)->isp_scanscratch; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "FW Attributes Upper:"); + if (fwt & ISP_FW_ATTR_H_EXTVP) { + fwt ^= ISP_FW_ATTR_H_EXTVP; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s ExtVP", buf); } - if (fwt & ISP2400_FW_ATTR_VN2VN) { - fwt ^= ISP2400_FW_ATTR_VN2VN; + if (fwt & ISP_FW_ATTR_H_VN2VN) { + fwt ^= ISP_FW_ATTR_H_VN2VN; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VN2VN", buf); } - if (fwt & ISP2400_FW_ATTR_EXMOFF) { - fwt ^= ISP2400_FW_ATTR_EXMOFF; + if (fwt & ISP_FW_ATTR_H_EXMOFF) { + fwt ^= ISP_FW_ATTR_H_EXMOFF; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s EXMOFF", buf); } - if (fwt & ISP2400_FW_ATTR_NPMOFF) { - fwt ^= ISP2400_FW_ATTR_NPMOFF; + if (fwt & ISP_FW_ATTR_H_NPMOFF) { + fwt ^= ISP_FW_ATTR_H_NPMOFF; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NPMOFF", buf); } - if (fwt & ISP2400_FW_ATTR_DIFCHOP) { - fwt ^= ISP2400_FW_ATTR_DIFCHOP; + if (fwt & ISP_FW_ATTR_H_DIFCHOP) { + fwt ^= ISP_FW_ATTR_H_DIFCHOP; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s DIFCHOP", buf); } - if (fwt & ISP2400_FW_ATTR_SRIOV) { - fwt ^= ISP2400_FW_ATTR_SRIOV; + if (fwt & ISP_FW_ATTR_H_SRIOV) { + fwt ^= ISP_FW_ATTR_H_SRIOV; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s SRIOV", buf); } - if (fwt & ISP2400_FW_ATTR_ASICTMP) { - fwt ^= ISP2400_FW_ATTR_ASICTMP; + if (fwt & ISP_FW_ATTR_H_NVME) { + fwt ^= ISP_FW_ATTR_H_NVME; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NVMe", buf); + } + if (fwt & ISP_FW_ATTR_H_NVME_UP) { + fwt ^= ISP_FW_ATTR_H_NVME_UP; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NVMe(updated)", buf); + } + if (fwt & (ISP_FW_ATTR_H_NVME_FB)) { + fwt ^= (ISP_FW_ATTR_H_NVME_FB); + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NVMe(first burst)", buf); + } + if (fwt) { + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), + "%s (unknown 0x%04x)", buf, fwt); + } + isp_prt(isp, ISP_LOGCONFIG, "%s", buf); + + fwt = isp->isp_fwattr_ext[0]; + buf = FCPARAM(isp, 0)->isp_scanscratch; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "FW Ext. Attributes Lower:"); + if (fwt & ISP_FW_ATTR_E0_ASICTMP) { + fwt ^= ISP_FW_ATTR_E0_ASICTMP; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s ASICTMP", buf); } - if (fwt & ISP2400_FW_ATTR_ATIOMQ) { - fwt ^= ISP2400_FW_ATTR_ATIOMQ; + if (fwt & ISP_FW_ATTR_E0_ATIOMQ) { + fwt ^= ISP_FW_ATTR_E0_ATIOMQ; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s ATIOMQ", buf); } + if (fwt & ISP_FW_ATTR_E0_EDIF) { + fwt ^= ISP_FW_ATTR_E0_EDIF; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s EDIF", buf); + } + if (fwt & ISP_FW_ATTR_E0_SCM) { + fwt ^= ISP_FW_ATTR_E0_SCM; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s SCM", buf); + } + if (fwt & ISP_FW_ATTR_E0_NVME2) { + fwt ^= ISP_FW_ATTR_E0_NVME2; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NVMe-2", buf); + } if (fwt) { - ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s (unknown 0x%08x%08x)", buf, - (uint32_t) (fwt >> 32), (uint32_t) fwt); + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), + "%s (unknown 0x%04x)", buf, fwt); + } + isp_prt(isp, ISP_LOGCONFIG, "%s", buf); + + fwt = isp->isp_fwattr_ext[1]; + buf = FCPARAM(isp, 0)->isp_scanscratch; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "FW Ext. Attributes Upper:"); + if (fwt) { + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), + "%s (unknown 0x%04x)", buf, fwt); } isp_prt(isp, ISP_LOGCONFIG, "%s", buf); @@ -3801,14 +4001,14 @@ static const uint32_t mbpfc[] = { ISP_FC_OPMAP(0x01, 0x01), /* 0x00: MBOX_NO_OP */ ISP_FC_OPMAP(0x1f, 0x01), /* 0x01: MBOX_LOAD_RAM */ ISP_FC_OPMAP_HALF(0x07, 0xff, 0x00, 0x1f), /* 0x02: MBOX_EXEC_FIRMWARE */ - ISP_FC_OPMAP(0xdf, 0x01), /* 0x03: MBOX_DUMP_RAM */ + ISP_FC_OPMAP(0x01, 0x07), /* 0x03: MBOX_LOAD_FLASH_FIRMWARE */ ISP_FC_OPMAP(0x07, 0x07), /* 0x04: MBOX_WRITE_RAM_WORD */ ISP_FC_OPMAP(0x03, 0x07), /* 0x05: MBOX_READ_RAM_WORD */ ISP_FC_OPMAP_FULL(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff), /* 0x06: MBOX_MAILBOX_REG_TEST */ ISP_FC_OPMAP(0x07, 0x07), /* 0x07: MBOX_VERIFY_CHECKSUM */ ISP_FC_OPMAP_FULL(0x0, 0x0, 0x0, 0x01, 0x0, 0x3, 0x80, 0x7f), /* 0x08: MBOX_ABOUT_FIRMWARE */ ISP_FC_OPMAP(0xdf, 0x01), /* 0x09: MBOX_LOAD_RISC_RAM_2100 */ - ISP_FC_OPMAP(0xdf, 0x01), /* 0x0a: DUMP RAM */ + ISP_FC_OPMAP(0xdf, 0x01), /* 0x0a: MBOX_DUMP_RISC_RAM_2100 */ ISP_FC_OPMAP_HALF(0x1, 0xff, 0x0, 0x01), /* 0x0b: MBOX_LOAD_RISC_RAM */ ISP_FC_OPMAP(0x00, 0x00), /* 0x0c: */ ISP_FC_OPMAP_HALF(0x1, 0x0f, 0x0, 0x01), /* 0x0d: MBOX_WRITE_RAM_WORD_EXTENDED */ @@ -3940,14 +4140,14 @@ static const char *fc_mbcmd_names[] = { "NO-OP", /* 00h */ "LOAD RAM", "EXEC FIRMWARE", - "DUMP RAM", + "LOAD FLASH FIRMWARE", "WRITE RAM WORD", "READ RAM WORD", "MAILBOX REG TEST", "VERIFY CHECKSUM", "ABOUT FIRMWARE", "LOAD RAM (2100)", - "DUMP RAM", + "DUMP RAM (2100)", "LOAD RISC RAM", "DUMP RISC RAM", "WRITE RAM WORD EXTENDED", @@ -4084,7 +4284,7 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp) obits = ISP_FC_OBITS(opcode); if (cname == NULL) { cname = tname; - ISP_SNPRINTF(tname, sizeof tname, "opcode %x", opcode); + ISP_SNPRINTF(tname, sizeof(tname), "opcode %x", opcode); } isp_prt(isp, ISP_LOGDEBUG3, "Mailbox Command '%s'", cname); @@ -4219,7 +4419,7 @@ out: xname = "TIMEOUT"; break; default: - ISP_SNPRINTF(mname, sizeof mname, "error 0x%x", mbp->param[0]); + ISP_SNPRINTF(mname, sizeof(mname), "error 0x%x", mbp->param[0]); xname = mname; break; } @@ -4279,7 +4479,7 @@ isp_setdfltfcparm(ispsoftc_t *isp, int chan) * Give a couple of tries at reading NVRAM. */ for (i = 0; i < 2; i++) { - j = isp_read_nvram(isp, chan); + j = isp_read_nvram(isp); if (j == 0) { break; } @@ -4336,50 +4536,49 @@ cleanup: /* * NVRAM Routines */ -static int -isp_read_nvram(ispsoftc_t *isp, int bus) +static inline uint32_t +flash_data_addr(ispsoftc_t *isp, uint32_t faddr) { fcparam *fcp = FCPARAM(isp, 0); - int r = 0; - if (isp->isp_type != ISP_HA_FC_2600) { - if (IS_28XX(isp)) { - fcp->flash_data_addr = ISP28XX_BASE_ADDR; - fcp->flt_region_flt = ISP28XX_FLT_ADDR; - } else if (IS_27XX(isp)) { - fcp->flash_data_addr = ISP27XX_BASE_ADDR; - fcp->flt_region_flt = ISP27XX_FLT_ADDR; - } else if (IS_25XX(isp)) { - fcp->flash_data_addr = ISP25XX_BASE_ADDR; - fcp->flt_region_flt = ISP25XX_FLT_ADDR; - } else { - fcp->flash_data_addr = ISP24XX_BASE_ADDR; - fcp->flt_region_flt = ISP24XX_FLT_ADDR; - } - fcp->flt_length = 0; - r = isp_read_flthdr_2xxx(isp); - if (r == 0) { - isp_read_flt_2xxx(isp); - } else { /* fallback to hardcoded NVRAM address */ - if (IS_28XX(isp)) { - fcp->flt_region_nvram = 0x300000; - } else if (IS_27XX(isp)) { - fcp->flash_data_addr = 0x7fe7c000; - fcp->flt_region_nvram = 0; - } else if (IS_25XX(isp)) { - fcp->flt_region_nvram = 0x48000; - } else { - fcp->flash_data_addr = 0x7ffe0000; - fcp->flt_region_nvram = 0; - } - fcp->flt_region_nvram += ISP2400_NVRAM_PORT_ADDR(isp->isp_port); + return (fcp->flash_data_addr + faddr); +} + +static int +isp_read_flash_dword(ispsoftc_t *isp, uint32_t addr, uint32_t *data) +{ + int loops = 0; + + ISP_WRITE(isp, BIU2400_FLASH_ADDR, addr & ~0x80000000); + for (loops = 0; loops < 30000; loops++) { + if (ISP_READ(isp, BIU2400_FLASH_ADDR & 0x80000000)) { + *data = ISP_READ(isp, BIU2400_FLASH_DATA); + return (ISP_SUCCESS); } - } else { - fcp->flash_data_addr = 0x7fe7c000; - fcp->flt_region_nvram = 0; - fcp->flt_region_nvram += ISP2400_NVRAM_PORT_ADDR(isp->isp_port); + ISP_DELAY(10); } - return (isp_read_nvram_2400(isp)); + isp_prt(isp, ISP_LOGERR, + "Flash read dword at 0x%x timeout.", addr); + *data = 0xffffffff; + return (ISP_FUNCTION_TIMEOUT); +} + +static int +isp_read_flash_data(ispsoftc_t *isp, uint32_t *dwptr, uint32_t faddr, uint32_t dwords) +{ + int loops = 0; + int rval = ISP_SUCCESS; + + /* Dword reads to flash. */ + faddr = flash_data_addr(isp, faddr); + for (loops = 0; loops < dwords; loops++, faddr++, dwptr++) { + rval = isp_read_flash_dword(isp, faddr, dwptr); + if (rval != ISP_SUCCESS) + break; + htole32(*((uint32_t *)(dwptr))); + } + + return (rval); } static void @@ -4388,22 +4587,19 @@ isp_rd_2xxx_flash(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) fcparam *fcp = FCPARAM(isp, 0); int loops = 0; uint32_t base = fcp->flash_data_addr; - uint32_t tmp = 0; - ISP_WRITE(isp, BIU2400_FLASH_ADDR, base + addr); - for (loops = 0; loops < 5000; loops++) { + ISP_WRITE(isp, BIU2400_FLASH_ADDR, (base + addr) & ~0x80000000); + for (loops = 0; loops < 30000; loops++) { ISP_DELAY(10); - tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); - if ((tmp & (1U << 31)) != 0) { - break; + if (ISP_READ(isp, BIU2400_FLASH_ADDR & 0x80000000)) { + *rp = ISP_READ(isp, BIU2400_FLASH_DATA); + ISP_SWIZZLE_NVRAM_LONG(isp, rp); + return; } } - if (tmp & (1U << 31)) { - *rp = ISP_READ(isp, BIU2400_FLASH_DATA); - ISP_SWIZZLE_NVRAM_LONG(isp, rp); - } else { - *rp = 0xffffffff; - } + isp_prt(isp, ISP_LOGERR, + "Flash read dword at 0x%x timeout.", (base + addr)); + *rp = 0xffffffff; } static int @@ -4418,8 +4614,7 @@ isp_read_flthdr_2xxx(ispsoftc_t *isp) addr = fcp->flt_region_flt; dptr = (uint32_t *) flthdr_data; - isp_prt(isp, ISP_LOGDEBUG0, - "FLTL[DEF]: 0x%x", addr); + isp_prt(isp, ISP_LOGDEBUG0, "FLTL[DEF]: 0x%x", addr); for (lwrds = 0; lwrds < FLT_HEADER_SIZE >> 2; lwrds++) { isp_rd_2xxx_flash(isp, addr++, dptr++); } @@ -4651,8 +4846,8 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) break; } } - isp_prt(isp, ISP_LOGDEBUG0, - "FLT[FLT]: boot=0x%x fw=0x%x vpd_nvram=0x%x vpd=0x%x nvram 0x%x " + isp_prt(isp, ISP_LOGCONFIG, + "FLT[FLT]: boot=0x%x fw=0x%x vpd_nvram=0x%x vpd=0x%x nvram=0x%x " "fdt=0x%x flt=0x%x npiv=0x%x fcp_prif_cfg=0x%x", fcp->flt_region_boot, fcp->flt_region_fw, fcp->flt_region_vpd_nvram, fcp->flt_region_vpd, fcp->flt_region_nvram, fcp->flt_region_fdt, @@ -4662,15 +4857,465 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) return (0); } +static void +isp_print_image(ispsoftc_t *isp, char *name, struct isp_image_status *image_status) +{ + isp_prt(isp, ISP_LOGDEBUG0, + "%s %s: mask=0x%02x gen=0x%04x ver=%u.%u map=0x%01x sum=0x%08x sig=0x%08x", + name, "status", + image_status->image_status_mask, + le16toh(image_status->generation), + image_status->ver_major, + image_status->ver_minor, + image_status->bitmap, + le32toh(image_status->checksum), + le32toh(image_status->signature)); +} + +static bool +isp_check_aux_image_status_signature(struct isp_image_status *image_status) +{ + unsigned long signature = le32toh(image_status->signature); + + return (signature != ISP28XX_AUX_IMG_STATUS_SIGN); +} + +static bool +isp_check_image_status_signature(struct isp_image_status *image_status) +{ + unsigned long signature = le32toh(image_status->signature); + + return ((signature != ISP27XX_IMG_STATUS_SIGN) && + (signature != ISP28XX_IMG_STATUS_SIGN)); +} + +static unsigned long +isp_image_status_checksum(struct isp_image_status *image_status) +{ + uint32_t *p = (uint32_t *)image_status; + unsigned int n = sizeof(*image_status) / sizeof(*p); + uint32_t sum = 0; + + for ( ; n--; p++) + sum += le32toh(*((uint32_t *)(p))); + + return (sum); +} + +static inline unsigned int +isp_component_bitmask(struct isp_image_status *aux, unsigned int bitmask) +{ + return (aux->bitmap & bitmask ? + ISP27XX_SECONDARY_IMAGE : ISP27XX_PRIMARY_IMAGE); +} + +static void +isp_component_status(struct active_regions *active_regions, struct isp_image_status *aux) +{ + active_regions->aux.board_config = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_BOARD_CONFIG); + + active_regions->aux.vpd_nvram = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_VPD_NVRAM); + + active_regions->aux.npiv_config_0_1 = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_NPIV_CONFIG_0_1); + + active_regions->aux.npiv_config_2_3 = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_NPIV_CONFIG_2_3); + + active_regions->aux.nvme_params = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_NVME_PARAMS); +} + +static int +isp_compare_image_generation(ispsoftc_t *isp, + struct isp_image_status *pri_image_status, + struct isp_image_status *sec_image_status) +{ + /* calculate generation delta as uint16 (this accounts for wrap) */ + int16_t delta = + le16toh(pri_image_status->generation) - + le16toh(sec_image_status->generation); + + isp_prt(isp, ISP_LOGDEBUG0, "generation delta = %d", delta); + + return (delta); +} + *** 881 LINES SKIPPED *** From nobody Fri Jan 19 16:48:04 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGlsw4YlQz56tDM; Fri, 19 Jan 2024 16:48:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGlsw2kl6z49BJ; Fri, 19 Jan 2024 16:48:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682884; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XiMut9WTKztZQJYu3lgOpZe++wifs9lX4j+Xmna4Xms=; b=Pxjz++AHNhel854pm3tITNUtzi8HB4BccyYclbPau6+vuoBHDCxn4thBrEpC/smBn1aI/Q +bWRPPLml8H5o/pOydmoTCs4+LUNizCQ5ViaTHytVs+N8oceeZKFqK8vYSMx+ZrCI8L3Nz e1ldA5VPq8EHmuSL956fNTjj7RmWIw2uZ7p1GqLA7s8SFTbaaTnkJdwAv6lALj6JFVAi3G +mZNsb4GFC7uG80JL4wOknpA39lEqhUaSV/QO00PRcvnj+E2FTBX9yyna8KNW5y6mWm3IO sZrnpdIun9Zuw/R0yYTMXo5ec+gA+UggXwHRqo9xjWy0enBtF/HHhk2jKZD0vw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705682884; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XiMut9WTKztZQJYu3lgOpZe++wifs9lX4j+Xmna4Xms=; b=cv+HYSyvlquYMc3rDM+ub1c/vBeKSHSuJhJbJf6dUjniGKjI/JwZkjwwnPIVu4DkghGjus G9EZ0/+nyoPP/V+Ik1fJqKebN5n+4jWG7iEouUX4sAv3tl2eeU8j4j67vifdQWgDmgfwt0 dLJMc7GN6caE5pvnyUwpHtTIsSUqbw9srG3AXimu/qnX2nyiMsdej4TgQBU3ADasZcoJ+U xbVA/bCin57tq0TekokaVX8YCaHhpGThTBp3zcnCRcTkP+k4G0LE2bWkeBa8n9mDha1MG1 zoLLKKbgRWN+wLjFgClogMAsBEYmlyYhnStFIFtdCmeaYl13XzGrRWeEMYyCcA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705682884; a=rsa-sha256; cv=none; b=ykSjjiDkdqePMyEGDKrxoLMXcG2TYpeWIT0ijwIhFS1PN14/tOsSi3UNhoyjErIeHhlDVL gcs7Lv5bDwvu4mErAAyHLnaqMzwbbnfKpNIMmSdoFME0ZAq7bINYZ3R7gA2PGk7MjXe1l6 2jBZzD2cJhyrHTaxuPDrrkalDM1lRcoJzd8SA3EvmJeRZmLxpMa55Xv77j0kOw+tn1Qswu kxbbrJ+n9EDH8+P6Jaau/NQOX8RYQGDc2Og5hxKI4xh8mQyDLCRLEr5F9+vAvN/tO3ytMq uIlfQzNo01LbDV9oo7vCbgUNNDkR7vFohwB8H8+1/vrOcTKbAYaKtnAcdn+geA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGlsw1pTkzyqR; Fri, 19 Jan 2024 16:48:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGm4nt043976; Fri, 19 Jan 2024 16:48:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGm4Z1043973; Fri, 19 Jan 2024 16:48:04 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:48:04 GMT Message-Id: <202401191648.40JGm4Z1043973@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 16f4d8fc14b6 - stable/14 - isp: Fix endianness conversion in isp_read_flash_data() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 16f4d8fc14b6560f8d4744efef60932011cfcee7 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=16f4d8fc14b6560f8d4744efef60932011cfcee7 commit 16f4d8fc14b6560f8d4744efef60932011cfcee7 Author: Mark Johnston AuthorDate: 2023-12-31 23:52:52 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:47:35 +0000 isp: Fix endianness conversion in isp_read_flash_data() Reported by: Jenkins Fixes: 10ed63fc06cb ("isp(4): Rework firmware handling/loading") (cherry picked from commit 91d2a093dfaccdf288db663b6e9d47539ea1c1bf) --- sys/dev/isp/isp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index aa2f1fb74c59..b53171add5f5 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -4575,7 +4575,7 @@ isp_read_flash_data(ispsoftc_t *isp, uint32_t *dwptr, uint32_t faddr, uint32_t d rval = isp_read_flash_dword(isp, faddr, dwptr); if (rval != ISP_SUCCESS) break; - htole32(*((uint32_t *)(dwptr))); + *dwptr = htole32(*dwptr); } return (rval); From nobody Fri Jan 19 16:53:27 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm076GWfz56txG; Fri, 19 Jan 2024 16:53:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm075GPVz4BLB; Fri, 19 Jan 2024 16:53:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683207; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3Fj139/tbIB3MYah+c+YPy1angUImPct7Khk+wTuHAo=; b=kL1fOF0Wuux1MiZAXtyy86ZVBLJf3v90ma0y1xX1xTIgA3pKu+oQWVYhrQzK4O9KK1rZWz ADtxl8e4yJyYLqciM5xhQARr6JbSrp6ZbVW7O6hqrI2aZQ+1Zx+CKlE91tZ9OmSUuRrxIw R0JlKfuH3u3liOYdpRIPowQxYZ8k+M9/QW1sNbJ85fEoRKZ41DNnlW4DpjxjCZJJqbqXOo 6ubB6996HsDgCuwnq1a9JRp2+5SlE8EQOt9G06pKj6xsp6FhR0cKlQ2EwI/H2VOp3hVC8h iXOVUol6mr+ETxcPWXNibes8F9Ano03mFEYsMdGWQ4g+bdjDU5w7Tpq1sXEWbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683207; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3Fj139/tbIB3MYah+c+YPy1angUImPct7Khk+wTuHAo=; b=vNXXxzIWCT1UcDlHcEd9l6+ErKZSlTMGAahdwQwYBvup3NvsW7kVlBS6J+W/+yAu+CEIxT xZDS8nIdIN3kgWAGRQslyf60/EKCL+hosIQXma/M/tHDfay71draxoadx2MU2VVPGBufUu tooTVTuOr5rqldrCdpNLq70rjx/Rios8mScW84eDPpztvIK+OLUGIZYcN88Z3E3A4/SMVu E43GdXF8OJc+WkFRfOoucvgE6EB7k/qexJt4y59Lt5RN+wE8f8BhMXcDn8CzA7NusyGMix Futd6tXph1EaAWg60Nt61izltWJWYiDNY5oGQSMxEQ3w34WwQEQmLeaei0RdFQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683207; a=rsa-sha256; cv=none; b=GJT2G9f7swriLpnbIFRtwVNS1W+vfV5hu1ot/G4AWCPp5+//xc8rXsazS4K5XlkvrJoVSn u6RXqHn+CvofXAyOnZ83PvHllai2QgV7WCwGpZlqFEOIYsTXrQejUttggHBNiRoiW50Pft i77P0FxFUi56dUMeCmDdgqcNnY3QiYuI1SgyoUww4gUW1q2HlAWzgmOKzzfEnsmzYqaYF+ V2RxzIvS2kltkURNcH2YZ9v5B+lrJ/noLbosXqApNm6Ya7T+6i/zJef/NqkKktti/FwZJC GYIEZpWJroBayi9M2PYOi3yO5Of5oCnRFJ3kyk5OzD7pfkwWbs6joS1Nx47PcA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm074KrPz105K; Fri, 19 Jan 2024 16:53:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGrR5S059831; Fri, 19 Jan 2024 16:53:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGrRqL059828; Fri, 19 Jan 2024 16:53:27 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:27 GMT Message-Id: <202401191653.40JGrRqL059828@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 8404f3e36bc5 - stable/13 - isp: Remove unused variable. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8404f3e36bc534b19c3e58af9f5e797f8a78a957 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=8404f3e36bc534b19c3e58af9f5e797f8a78a957 commit 8404f3e36bc534b19c3e58af9f5e797f8a78a957 Author: John Baldwin AuthorDate: 2022-04-12 21:58:59 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:51:45 +0000 isp: Remove unused variable. (cherry picked from commit e4d4beba435815841616d8c4e1e94d3ff00fc36b) --- sys/dev/isp/isp_library.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/dev/isp/isp_library.c b/sys/dev/isp/isp_library.c index ce977cab36e7..29f2fff38ddb 100644 --- a/sys/dev/isp/isp_library.c +++ b/sys/dev/isp/isp_library.c @@ -1631,7 +1631,6 @@ isp_add_wwn_entry(ispsoftc_t *isp, int chan, uint64_t wwpn, uint64_t wwnn, void isp_del_wwn_entry(ispsoftc_t *isp, int chan, uint64_t wwpn, uint16_t nphdl, uint32_t s_id) { - fcparam *fcp; fcportdb_t *lp; if (nphdl >= MAX_NPORT_HANDLE) { @@ -1640,7 +1639,6 @@ isp_del_wwn_entry(ispsoftc_t *isp, int chan, uint64_t wwpn, uint16_t nphdl, uint return; } - fcp = FCPARAM(isp, chan); if (isp_find_pdb_by_handle(isp, chan, nphdl, &lp) == 0) { isp_prt(isp, ISP_LOGWARN, "Chan %d WWPN 0x%016llx PortID 0x%06x handle 0x%x cannot be found to be deleted", chan, (unsigned long long) wwpn, s_id, nphdl); From nobody Fri Jan 19 16:53:28 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm091XJRz56tsQ; Fri, 19 Jan 2024 16:53:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm086HG6z4BZ8; Fri, 19 Jan 2024 16:53:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683208; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ive0R7eSyzaH1K2M5sJdPPfBR/wqVS3ltwSJIsjIGUY=; b=cVnZ4p8F2ZcIBq9+Qe56WLmOpTpUPGV0bnipfjW5T6qp/wE6Gi7rQE3MtQrkkGtylCD7pR w5NpFM43vbDW6vFj4UXMKDn/I63VxJfCOKLc5AFWXzm3AIyqP/fgzKMwNbWeaxuVVOkQ3i vH7rqgQveO4Xb9iJ/S5zx/XHoglyFeMDN8L2wkooj1lnOwbV3LZtvzVRAdsT2iTK8S875b uh0MFMDUqPDZwcocQ/On00qbswrJe8W4e8kHJ3ntUvCPKRz4/5WPkWTbEtQOtsNKJurlkG l7tKJTzpA2p+ER0fm/GmWTnxMZJsQ5LF5vusxQwqFDaocb7aElqYjJJmGlU5+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683208; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ive0R7eSyzaH1K2M5sJdPPfBR/wqVS3ltwSJIsjIGUY=; b=lghDi3lKiFP3S5OlzrnIyLGsNWDjCZrRClHrfFFneO79UsE2c5Dc+ZzCpNyIQadFcNr5Tr 92s1j4Btz2S8C2CjYF2sC8PsvPEiRKpzKZvdx33m+n7hAwCd2v7m6bownm3VmTc1er2PgH 7OEH36TW/J33dS5NMbE96zvt1ii0/ujpK3Uj0TjvJaqjvQ5/Y8ezL/EHCG9JQQoQQZbHNC HLvF7a4NwJnWUVpSJBBNDCy4/jv18JmaQQHM/vSgzKc7/TBsv3/Z2+7pyHW91jg5x5BAOX IXi7KW04DTuTK8YRzGc24lIBN1oTPn14SmJrqnmoTTl88FzutKlbgvZdwFKTEA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683208; a=rsa-sha256; cv=none; b=YfshrhIQKqPdXVSPMu74TW2V4U6zfibMo84HbG8pZPaXXDCb6/XOXnN+2Kqk7jgHaI2ECi HgjzDpw2AoQmdNZRm9hh/o9Ou4Shyd0/RaomS5T4qwBSHXUs8SerF3EPNkt1B2B/dlGsq3 WvfAz4PHfqlRXyAB6E0gEUdsrpcfWmd7FDyO7srnYDeBQOQXZPn6IMJnhplwk5lHjYnoq9 /gsrSsr5Sp+c12T8Kbg9mVunn1DmGnkYetZGNlBE+QFwMbNs6qMjSHbXjdhULsK9xS/GTf y3+cNjcIbdw1So1My1+6us+uuvr4/QMWpCdluqopKlm9/vkaLzqYVFJZC5HfNQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm085M13zyr5; Fri, 19 Jan 2024 16:53:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGrSwf059884; Fri, 19 Jan 2024 16:53:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGrSXT059881; Fri, 19 Jan 2024 16:53:28 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:28 GMT Message-Id: <202401191653.40JGrSXT059881@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 6fdabe9b8df4 - stable/13 - isp(4): Add support for QLogic 28xx devices List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 6fdabe9b8df4493af8242fb2755b69e20d1ef042 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=6fdabe9b8df4493af8242fb2755b69e20d1ef042 commit 6fdabe9b8df4493af8242fb2755b69e20d1ef042 Author: Joerg Pulz AuthorDate: 2023-07-07 21:43:34 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:51:45 +0000 isp(4): Add support for QLogic 28xx devices This covers the following HBAs: ISP2812-based 64/32G Fibre Channel to PCIe Controller: QLE2770 Single Port 32GFC PCIe Gen4 x8 Adapter QLE2772 Dual Port 32GFC PCIe Gen4 x8 Adapter QLE2870 Single Port 64GFC PCIe Gen4 x8 Adapter QLE2872 Dual Port 64GFC PCIe Gen4 x8 Adapter ISP2814-based 64/32G Fibre Channel to PCIe Controller: QLE2774 Quad Port 32GFC PCIe Gen4 x16 Adapter QLE2874 Quad Port 64GFC PCIe Gen4 x16 Adapter While here, add required bits to support 64GB FC. Default framesize is set to 2048 for ISP28xx based HBAs for now. PR: 271062 Reviewed by: imp, mav Sponsored by: Technical University of Munich Pull Request: https://github.com/freebsd/freebsd-src/pull/726 (cherry picked from commit 407abff6a445c8db335093868e9e7e70438c5901) --- sys/dev/isp/isp.c | 14 +++++++++++++- sys/dev/isp/isp_pci.c | 28 ++++++++++++++++++++++++++++ sys/dev/isp/ispmbox.h | 3 +++ sys/dev/isp/ispvar.h | 3 +++ 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index cd60c99a40ff..6940397d10b4 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -178,6 +178,9 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) case ISP_HA_FC_2700: btype = "2700"; break; + case ISP_HA_FC_2800: + btype = "2800"; + break; default: break; } @@ -709,8 +712,11 @@ isp_init(ispsoftc_t *isp) icbp->icb_version = ICB_VERSION1; icbp->icb_maxfrmlen = DEFAULT_FRAMESIZE(isp); if (icbp->icb_maxfrmlen < ICB_MIN_FRMLEN || icbp->icb_maxfrmlen > ICB_MAX_FRMLEN) { - isp_prt(isp, ISP_LOGERR, "bad frame length (%d) from NVRAM- using %d", DEFAULT_FRAMESIZE(isp), ICB_DFLT_FRMLEN); icbp->icb_maxfrmlen = ICB_DFLT_FRMLEN; + if (IS_28XX(isp)) + icbp->icb_maxfrmlen = ICB_DFLT_FRMLEN_28XX; + + isp_prt(isp, ISP_LOGERR, "bad frame length (%d) from NVRAM - using %d", DEFAULT_FRAMESIZE(isp), icbp->icb_maxfrmlen); } if (!IS_26XX(isp)) @@ -821,12 +827,16 @@ isp_init(ispsoftc_t *isp) } else if (isp->isp_confopts & ISP_CFG_32GB) { icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK; icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_32GB; + } else if (isp->isp_confopts & ISP_CFG_64GB) { + icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK; + icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_64GB; } else { switch (icbp->icb_fwoptions3 & ICB2400_OPT3_RATE_MASK) { case ICB2400_OPT3_RATE_4GB: case ICB2400_OPT3_RATE_8GB: case ICB2400_OPT3_RATE_16GB: case ICB2400_OPT3_RATE_32GB: + case ICB2400_OPT3_RATE_64GB: case ICB2400_OPT3_RATE_AUTO: break; case ICB2400_OPT3_RATE_2GB: @@ -1536,6 +1546,8 @@ not_on_fabric: if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { if (mbs.param[1] == MBGSD_10GB) fcp->isp_gbspeed = 10; + else if (mbs.param[1] == MBGSD_64GB) + fcp->isp_gbspeed = 64; else if (mbs.param[1] == MBGSD_32GB) fcp->isp_gbspeed = 32; else if (mbs.param[1] == MBGSD_16GB) diff --git a/sys/dev/isp/isp_pci.c b/sys/dev/isp/isp_pci.c index 482b7299b446..b0adaeb663e7 100644 --- a/sys/dev/isp/isp_pci.c +++ b/sys/dev/isp/isp_pci.c @@ -97,6 +97,16 @@ static struct ispmdvec mdvec_2700 = { NULL }; +static struct ispmdvec mdvec_2800 = { + isp_pci_run_isr_2400, + isp_pci_rd_reg_2600, + isp_pci_wr_reg_2600, + isp_pci_mbxdma, + isp_send_cmd, + isp_pci_irqsetup, + NULL +}; + #ifndef PCIM_CMD_INVEN #define PCIM_CMD_INVEN 0x10 #endif @@ -141,6 +151,8 @@ static struct ispmdvec mdvec_2700 = { #define PCI_PRODUCT_QLOGIC_ISP2692 0x2b61 #define PCI_PRODUCT_QLOGIC_ISP2714 0x2071 #define PCI_PRODUCT_QLOGIC_ISP2722 0x2261 +#define PCI_PRODUCT_QLOGIC_ISP2812 0x2281 +#define PCI_PRODUCT_QLOGIC_ISP2814 0x2081 #define PCI_QLOGIC_ISP2422 \ ((PCI_PRODUCT_QLOGIC_ISP2422 << 16) | PCI_VENDOR_QLOGIC) @@ -162,6 +174,10 @@ static struct ispmdvec mdvec_2700 = { ((PCI_PRODUCT_QLOGIC_ISP2714 << 16) | PCI_VENDOR_QLOGIC) #define PCI_QLOGIC_ISP2722 \ ((PCI_PRODUCT_QLOGIC_ISP2722 << 16) | PCI_VENDOR_QLOGIC) +#define PCI_QLOGIC_ISP2812 \ + ((PCI_PRODUCT_QLOGIC_ISP2812 << 16) | PCI_VENDOR_QLOGIC) +#define PCI_QLOGIC_ISP2814 \ + ((PCI_PRODUCT_QLOGIC_ISP2814 << 16) | PCI_VENDOR_QLOGIC) #define PCI_DFLT_LTNCY 0x40 #define PCI_DFLT_LNSZ 0x10 @@ -243,6 +259,12 @@ isp_pci_probe(device_t dev) case PCI_QLOGIC_ISP2722: device_set_desc(dev, "Qlogic ISP 2722 PCI FC Adapter"); break; + case PCI_QLOGIC_ISP2812: + device_set_desc(dev, "Qlogic ISP 2812 PCI FC Adapter"); + break; + case PCI_QLOGIC_ISP2814: + device_set_desc(dev, "Qlogic ISP 2814 PCI FC Adapter"); + break; default: return (ENXIO); } @@ -491,6 +513,12 @@ isp_pci_attach(device_t dev) isp->isp_mdvec = &mdvec_2700; isp->isp_type = ISP_HA_FC_2700; break; + case PCI_QLOGIC_ISP2812: + case PCI_QLOGIC_ISP2814: + did = 0x2800; + isp->isp_mdvec = &mdvec_2800; + isp->isp_type = ISP_HA_FC_2800; + break; default: device_printf(dev, "unknown device type\n"); goto bad; diff --git a/sys/dev/isp/ispmbox.h b/sys/dev/isp/ispmbox.h index 6523dc6e6ba8..42a45e9c7ea6 100644 --- a/sys/dev/isp/ispmbox.h +++ b/sys/dev/isp/ispmbox.h @@ -178,6 +178,7 @@ #define MBGSD_8GB 0x04 /* 25XX only */ #define MBGSD_16GB 0x05 /* 26XX only */ #define MBGSD_32GB 0x06 /* 27XX only */ +#define MBGSD_64GB 0x07 /* 28XX only */ #define MBGSD_10GB 0x13 /* 26XX only */ #define MBOX_SEND_RNFT 0x005e #define MBOX_INIT_FIRMWARE 0x0060 @@ -646,6 +647,7 @@ typedef struct { #define ICB2400_OPT3_RATE_8GB 0x00008000 #define ICB2400_OPT3_RATE_16GB 0x0000A000 #define ICB2400_OPT3_RATE_32GB 0x0000C000 +#define ICB2400_OPT3_RATE_64GB 0x0000E000 #define ICB2400_OPT3_ENA_OOF_XFRDY 0x00000200 #define ICB2400_OPT3_NO_N2N_LOGI 0x00000100 #define ICB2400_OPT3_NO_LOCAL_PLOGI 0x00000080 @@ -660,6 +662,7 @@ typedef struct { #define ICB_MIN_FRMLEN 256 #define ICB_MAX_FRMLEN 2112 #define ICB_DFLT_FRMLEN 1024 +#define ICB_DFLT_FRMLEN_28XX 2048 #define ICB_DFLT_RDELAY 5 #define ICB_DFLT_RCOUNT 3 diff --git a/sys/dev/isp/ispvar.h b/sys/dev/isp/ispvar.h index 8ab25c9913d3..faf26bc7b055 100644 --- a/sys/dev/isp/ispvar.h +++ b/sys/dev/isp/ispvar.h @@ -538,6 +538,7 @@ struct ispsoftc { #define ISP_CFG_8GB 0x4000 /* force 8Gb connection (25XX only) */ #define ISP_CFG_16GB 0x8000 /* force 16Gb connection (26XX only) */ #define ISP_CFG_32GB 0x10000 /* force 32Gb connection (27XX only) */ +#define ISP_CFG_64GB 0x20000 /* force 64Gb connection (28XX only) */ /* * For each channel, the outer layers should know what role that channel @@ -606,10 +607,12 @@ struct ispsoftc { #define ISP_HA_FC_2500 0x05 #define ISP_HA_FC_2600 0x06 #define ISP_HA_FC_2700 0x07 +#define ISP_HA_FC_2800 0x08 #define IS_25XX(isp) ((isp)->isp_type >= ISP_HA_FC_2500) #define IS_26XX(isp) ((isp)->isp_type >= ISP_HA_FC_2600) #define IS_27XX(isp) ((isp)->isp_type >= ISP_HA_FC_2700) +#define IS_28XX(isp) ((isp)->isp_type >= ISP_HA_FC_2800) /* * DMA related macros From nobody Fri Jan 19 16:53:29 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm0B1dJXz56tZv; Fri, 19 Jan 2024 16:53:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm0970Vdz4BNh; Fri, 19 Jan 2024 16:53:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683210; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=o9bOOiXsnWvZyOWm/w5CgmORR84l/obUr7k+igHPBa0=; b=WKwbJ7ckZ8EXmsClMc2aEFo3N5REPLjdj7rp3/N7jeLPXHF1/zGrS3ptSoYLfJwJ9LBhEV 3PjTOqMT+hqogkE6t0iywRvKb1a8R5XZIdhnrCw5dI2fpd++D0Tt5P/e2x2m00OdLhEFJo tWuWozAFPKL/eznXDbWOV5V+bjbnh0T27DO6/Nw6HmyGNGYIybvQF3krl52AtQsVQPIlGP UxTlHf8TVKrUvHf1P0fk9wGATXuRMQtMrK+asJ2fu+Mhgq+fiE3ChqNXc7U/9V8JtZYad9 rjk2yKjg/+o33VPhA5vPsXerZeP9qjQNyqto9SodBCScb6WnHyK68k0H3MDt5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683210; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=o9bOOiXsnWvZyOWm/w5CgmORR84l/obUr7k+igHPBa0=; b=SAaN4ucqQyDvkRT+8Bg+CHkZtneXHQKHZ2cm0C+d7XIhEH+RkqwN+kxOJR5uS5nKYtrVMi /ptSXBjHbMkhOyFOfedajtAg3EeZHgf7jdNEppQ8koR1mTv3CFmy/o2bUPGfLDMJayFg+8 00+pkLCm9/a1ytBdBO4O06BatVc2mld3fo7yo+6bnWnLt3aJlzHRQNwpCf0ri+r8BxJTVf pe3tFwIxTpjwJPCOOxg22s+a/7NslA7oo+Ge1qFmb0RjePUqGSZSdO5EemCEuLQZixWDGL u9NFUwX9IB6QFHAqjqb4Bn0F1o/R5Xq2WntRX3KwFKmS87q2B9HuhxxOjBnfhA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683210; a=rsa-sha256; cv=none; b=WBpwlrs1WaGRBHQfo8Wxn/FaXBy6MrZqtDmnw8sHmonVbnjQbc0HKxbhEA9x8eRxQ9A6t/ LrGcs0Yu7K2Es9j8PDZE4XGlP6ZtuSsU7ehmS/5VDt2eiA8POi7eQJLwGyE82oT+ZnBgjZ J6ZrM4Hhuv+8IJ1w4uugkzl9AT86SR8CHJgt/MgoPTla5uih+c1REuzo+dsu0YfZsQ5RH1 8UqhyXjKWWmMgjpsm6XanORMAR5br3hSxCpzE4wtpz8PBxwDw2b3p5obRF85Z+fNUekMGS 84A48AhDaKHs7hnm9Aao8hqDsMCXvED8HThEq02mx2uFfze4y9YDou4aIlLAcw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm0965yvz105L; Fri, 19 Jan 2024 16:53:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGrThc059942; Fri, 19 Jan 2024 16:53:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGrT3T059939; Fri, 19 Jan 2024 16:53:29 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:29 GMT Message-Id: <202401191653.40JGrT3T059939@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: f0275240dc3d - stable/13 - isp(4): Fix reading NVRAM contents for 28xx based devices List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: f0275240dc3dea56c498a8e41e56c00761d3a597 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=f0275240dc3dea56c498a8e41e56c00761d3a597 commit f0275240dc3dea56c498a8e41e56c00761d3a597 Author: Joerg Pulz AuthorDate: 2023-07-07 21:43:34 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:51:45 +0000 isp(4): Fix reading NVRAM contents for 28xx based devices Use correct NVRAM address for ISP28xx based HBAs to read NVRAM contents. WWPN/WWNN and framesize are correctly read from NVRAM now. PR: 271062 Reviewed by: imp, mav Sponsored by: Technical University of Munich Pull Request: https://github.com/freebsd/freebsd-src/pull/726 (cherry picked from commit f76f7fefa1bb5dc2ec0c9e44740faac0b46dac25) --- sys/dev/isp/isp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 6940397d10b4..eddf175e669b 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -4379,7 +4379,9 @@ isp_rd_2400_nvram(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) uint32_t base = 0x7ffe0000; uint32_t tmp = 0; - if (IS_26XX(isp)) { + if (IS_28XX(isp)) { + base = 0x7fad0000; /* 0x7f7d0000 + 0x300000 */ + } else if (IS_26XX(isp)) { base = 0x7fe7c000; /* XXX: Observation, may be wrong. */ } else if (IS_25XX(isp)) { base = 0x7ff00000 | 0x48000; From nobody Fri Jan 19 16:53:31 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm0D2nV7z56tsf; Fri, 19 Jan 2024 16:53:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm0D15Dyz49lC; Fri, 19 Jan 2024 16:53:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683212; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wKc1jccgMkwOpxt7W84IK2Ick7NlpS++YASzu6a/21Q=; b=NkO6yM5qufh1s2vAsQ/gpVeByP49FXR0qFBKK1lu5iJbq3pKFV3mpKsWJ51NbcP92MTLBp ppqiJiMoH6OGj/C3pEwxsd9n5z+pge/P/zjaHzYVZH9JepP2eecPGz+icygpXxIQ2JBKDB pKdWnHVWkvekvvWxGT3wXFIfvF38tTZRR+JBvV2bZ2LRDZ5kAe0Ebz0bjPU7o/sWbTRGuC 4avMq8+LuTYVMUSKZnkRz7wb6nnYLNl7iL+FOUaREpjzl74W/EkhUsuqZMqwhobi/HFxv7 qCBZsgqf2QrTLv87EOvO8MDAAIpFicmB/I2ZkLt/E1ulcr7UJSBnkQcdIsK3ZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683212; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wKc1jccgMkwOpxt7W84IK2Ick7NlpS++YASzu6a/21Q=; b=weK5w/uz33ptmiToXg9KypTf1YVaJB/qVTi4yi4LgLiK2miHnO7JP5HNmV9QXCYk7ShC94 uqVytDJydVFMPzo16Wc21WArEyrbJhUfZUEqCIuxexw7jegxg3bmgwD0YLjnSadI2OTIdL QH++Ffc/vlIoBN8ZrdrUp2y8H9e7I83qB0Ydp4R0D3jPGVRnwF+1eUUNfx4uvUByqvVTT7 8AUxUX7xQtb54niYuE+4Z9t4tphvdLP2x6VZAfXZW5TfYImoucR98h9/6Ri1mT5MsjenUf +FM8OLGVaqfwEf9kqa7bYYNi8X18UX/GFuD5PkHDDJHXFHCPqtNH1fu+4l8bMw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683212; a=rsa-sha256; cv=none; b=GJd0F53XyzCStHAk4kRO+buB8ROvh9k30yt44oVJWsSlRB1qKzpwqK4bLlGT/qWZpAy3Mm RkEWS7xc1ij+auCTnOJXVlKUJFriw0vhbDqYmT5CQb0mzZjifCAXlPxMnficNgw/7WG3ER UlCShO6uPmNH49gXb95WyPiHDjL9E93NZZaWyJKmwFk3voIl1wWczl8uWCcq5umJaLM0NN v6btR9ogXNNfOGYTMtIw22y8AEJ3aTwG9mNUoKQfDDGDhXUCkyueEmW75yldwipuFUze6M m10zqb9S+602lHaggCXqWbigLuW5vSIqCRCE1J8P7WTjjAYquQIJmriJxHiBdA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm0D0Bczz10Jv; Fri, 19 Jan 2024 16:53:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGrVsr060061; Fri, 19 Jan 2024 16:53:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGrVjl060058; Fri, 19 Jan 2024 16:53:31 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:31 GMT Message-Id: <202401191653.40JGrVjl060058@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: de4c073977c9 - stable/13 - isp(4): Use the FLT on all supported controllers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: de4c073977c9b77d29cdfba9241a0bbe3e5de879 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=de4c073977c9b77d29cdfba9241a0bbe3e5de879 commit de4c073977c9b77d29cdfba9241a0bbe3e5de879 Author: Joerg Pulz AuthorDate: 2023-07-07 21:43:34 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:51:46 +0000 isp(4): Use the FLT on all supported controllers The ISP26xx based HBAs are left as is for now with static NVRAM addressing. Those HBAs are known as 83xx (2031 and 8031 for real) and need special handling. This is left for further investigation for now. Cosmetics: - rename functions and defines as they are no longer specific to 28xx - set reasonable log levels - sort FLT and NVRAM functions (in the order they are used) Tested and approved to work on real hardware with: - Qlogic ISP 2532 (QLogic QLE2562 8Gb 2Port FC Adapter) - Qlogic ISP 2722 (QLogic QLE2690 16Gb FC Adapter) - Qlogic ISP 2812 (QLogic QLE2772 32Gbit 2Port FC Adapter) PR: 271062 Reviewed by: imp, mav Sponsored by: Technical University of Munich Pull Request: https://github.com/freebsd/freebsd-src/pull/726 (cherry picked from commit 707e4d1b20aa3983f7cd2f444d6ce41eebc02698) --- sys/dev/isp/isp.c | 417 +++++++++++++++++++++++++++++---------------------- sys/dev/isp/ispreg.h | 29 ++-- sys/dev/isp/ispvar.h | 4 + 3 files changed, 260 insertions(+), 190 deletions(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 8eeeef33ca11..5a00a29531ea 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -118,18 +118,16 @@ static void isp_mboxcmd(ispsoftc_t *, mbreg_t *); static void isp_setdfltfcparm(ispsoftc_t *, int); static int isp_read_nvram(ispsoftc_t *, int); +static int isp_read_flthdr_2xxx(ispsoftc_t *); +static void isp_rd_2xxx_flthdr(ispsoftc_t *, uint32_t, uint32_t *); +static void isp_parse_flthdr_2xxx(ispsoftc_t *, uint8_t *); +static int isp_read_flt_2xxx(ispsoftc_t *); +static void isp_rd_2xxx_flt(ispsoftc_t *, uint32_t, uint32_t *); +static int isp_parse_flt_2xxx(ispsoftc_t *, uint8_t *); static int isp_read_nvram_2400(ispsoftc_t *); static void isp_rd_2400_nvram(ispsoftc_t *, uint32_t, uint32_t *); static void isp_parse_nvram_2400(ispsoftc_t *, uint8_t *); -static int isp_read_flthdr_28xx(ispsoftc_t *); -static void isp_rd_28xx_flthdr(ispsoftc_t *, uint32_t, uint32_t *); -static void isp_parse_flthdr_28xx(ispsoftc_t *, uint8_t *); - -static int isp_read_flt_28xx(ispsoftc_t *); -static void isp_rd_28xx_flt(ispsoftc_t *, uint32_t, uint32_t *); -static int isp_parse_flt_28xx(ispsoftc_t *, uint8_t *); - static void isp_change_fw_state(ispsoftc_t *isp, int chan, int state) { @@ -4341,157 +4339,65 @@ cleanup: static int isp_read_nvram(ispsoftc_t *isp, int bus) { - if (IS_28XX(isp)) { - fcparam *fcp = FCPARAM(isp, 0); - int r = 0; - - fcp->flash_data_addr = ISP28XX_BASE_ADDR; + fcparam *fcp = FCPARAM(isp, 0); + int r = 0; + + if (isp->isp_type != ISP_HA_FC_2600) { + if (IS_28XX(isp)) { + fcp->flash_data_addr = ISP28XX_BASE_ADDR; + fcp->flt_region_flt = ISP28XX_FLT_ADDR; + } else if (IS_27XX(isp)) { + fcp->flash_data_addr = ISP27XX_BASE_ADDR; + fcp->flt_region_flt = ISP27XX_FLT_ADDR; + } else if (IS_25XX(isp)) { + fcp->flash_data_addr = ISP25XX_BASE_ADDR; + fcp->flt_region_flt = ISP25XX_FLT_ADDR; + } else { + fcp->flash_data_addr = ISP24XX_BASE_ADDR; + fcp->flt_region_flt = ISP24XX_FLT_ADDR; + } fcp->flt_length = 0; - r = isp_read_flthdr_28xx(isp); + r = isp_read_flthdr_2xxx(isp); if (r == 0) { - isp_read_flt_28xx(isp); - } else { - fcp->flt_region_nvram = - (0x300000 + ISP2400_NVRAM_PORT_ADDR(isp->isp_port)); + isp_read_flt_2xxx(isp); + } else { /* fallback to hardcoded NVRAM address */ + if (IS_28XX(isp)) { + fcp->flt_region_nvram = 0x300000; + } else if (IS_27XX(isp)) { + fcp->flash_data_addr = 0x7fe7c000; + fcp->flt_region_nvram = 0; + } else if (IS_25XX(isp)) { + fcp->flt_region_nvram = 0x48000; + } else { + fcp->flash_data_addr = 0x7ffe0000; + fcp->flt_region_nvram = 0; + } + fcp->flt_region_nvram += ISP2400_NVRAM_PORT_ADDR(isp->isp_port); } + } else { + fcp->flash_data_addr = 0x7fe7c000; + fcp->flt_region_nvram = 0; + fcp->flt_region_nvram += ISP2400_NVRAM_PORT_ADDR(isp->isp_port); } return (isp_read_nvram_2400(isp)); } static int -isp_read_nvram_2400(ispsoftc_t *isp) -{ - fcparam *fcp = FCPARAM(isp, 0); - int retval = 0; - uint32_t addr, csum, lwrds, *dptr; - uint8_t nvram_data[ISP2400_NVRAM_SIZE]; - - if (IS_28XX(isp)) { - addr = fcp->flt_region_nvram; - } else { - addr = ISP2400_NVRAM_PORT_ADDR(isp->isp_port); - } - dptr = (uint32_t *) nvram_data; - for (lwrds = 0; lwrds < ISP2400_NVRAM_SIZE >> 2; lwrds++) { - isp_rd_2400_nvram(isp, addr++, dptr++); - } - if (nvram_data[0] != 'I' || nvram_data[1] != 'S' || - nvram_data[2] != 'P') { - isp_prt(isp, ISP_LOGWARN, "invalid NVRAM header (%x %x %x)", - nvram_data[0], nvram_data[1], nvram_data[2]); - retval = -1; - goto out; - } - dptr = (uint32_t *) nvram_data; - for (csum = 0, lwrds = 0; lwrds < ISP2400_NVRAM_SIZE >> 2; lwrds++) { - uint32_t tmp; - ISP_IOXGET_32(isp, &dptr[lwrds], tmp); - csum += tmp; - } - if (csum != 0) { - isp_prt(isp, ISP_LOGWARN, "invalid NVRAM checksum"); - retval = -1; - goto out; - } - isp_parse_nvram_2400(isp, nvram_data); -out: - return (retval); -} - -static void -isp_rd_2400_nvram(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) -{ - int loops = 0; - uint32_t base = 0x7ffe0000; - uint32_t tmp = 0; - - if (IS_28XX(isp)) { - fcparam *fcp = FCPARAM(isp, 0); - base = fcp->flash_data_addr + addr; - addr = 0; - } else if (IS_26XX(isp)) { - base = 0x7fe7c000; /* XXX: Observation, may be wrong. */ - } else if (IS_25XX(isp)) { - base = 0x7ff00000 | 0x48000; - } - ISP_WRITE(isp, BIU2400_FLASH_ADDR, base | addr); - for (loops = 0; loops < 5000; loops++) { - ISP_DELAY(10); - tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); - if ((tmp & (1U << 31)) != 0) { - break; - } - } - if (tmp & (1U << 31)) { - *rp = ISP_READ(isp, BIU2400_FLASH_DATA); - ISP_SWIZZLE_NVRAM_LONG(isp, rp); - } else { - *rp = 0xffffffff; - } -} - -static void -isp_parse_nvram_2400(ispsoftc_t *isp, uint8_t *nvram_data) +isp_read_flthdr_2xxx(ispsoftc_t *isp) { fcparam *fcp = FCPARAM(isp, 0); - uint64_t wwn; - - isp_prt(isp, ISP_LOGDEBUG0, - "NVRAM 0x%08x%08x 0x%08x%08x maxframelen %d", - (uint32_t) (ISP2400_NVRAM_NODE_NAME(nvram_data) >> 32), - (uint32_t) (ISP2400_NVRAM_NODE_NAME(nvram_data)), - (uint32_t) (ISP2400_NVRAM_PORT_NAME(nvram_data) >> 32), - (uint32_t) (ISP2400_NVRAM_PORT_NAME(nvram_data)), - ISP2400_NVRAM_MAXFRAMELENGTH(nvram_data)); - isp_prt(isp, ISP_LOGDEBUG0, - "NVRAM loopid %d fwopt1 0x%x fwopt2 0x%x fwopt3 0x%x", - ISP2400_NVRAM_HARDLOOPID(nvram_data), - ISP2400_NVRAM_FIRMWARE_OPTIONS1(nvram_data), - ISP2400_NVRAM_FIRMWARE_OPTIONS2(nvram_data), - ISP2400_NVRAM_FIRMWARE_OPTIONS3(nvram_data)); - - wwn = ISP2400_NVRAM_PORT_NAME(nvram_data); - fcp->isp_wwpn_nvram = wwn; - - wwn = ISP2400_NVRAM_NODE_NAME(nvram_data); - if (wwn) { - if ((wwn >> 60) != 2 && (wwn >> 60) != 5) { - wwn = 0; - } - } - if (wwn == 0 && (fcp->isp_wwpn_nvram >> 60) == 2) { - wwn = fcp->isp_wwpn_nvram; - wwn &= ~((uint64_t) 0xfff << 48); - } - fcp->isp_wwnn_nvram = wwn; - - if ((isp->isp_confopts & ISP_CFG_OWNFSZ) == 0) { - DEFAULT_FRAMESIZE(isp) = - ISP2400_NVRAM_MAXFRAMELENGTH(nvram_data); - } - if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0) { - fcp->isp_loopid = ISP2400_NVRAM_HARDLOOPID(nvram_data); - } - fcp->isp_fwoptions = ISP2400_NVRAM_FIRMWARE_OPTIONS1(nvram_data); - fcp->isp_xfwoptions = ISP2400_NVRAM_FIRMWARE_OPTIONS2(nvram_data); - fcp->isp_zfwoptions = ISP2400_NVRAM_FIRMWARE_OPTIONS3(nvram_data); -} - -static int -isp_read_flthdr_28xx(ispsoftc_t *isp) -{ int retval = 0; uint32_t addr, lwrds, *dptr; uint16_t csum; uint8_t flthdr_data[FLT_HEADER_SIZE]; - addr = ISP28XX_FLT_ADDR; + addr = fcp->flt_region_flt; dptr = (uint32_t *) flthdr_data; isp_prt(isp, ISP_LOGDEBUG0, - "FLTL[DEF]: 0x%x", ISP28XX_FLT_ADDR); + "FLTL[DEF]: 0x%x", addr); for (lwrds = 0; lwrds < FLT_HEADER_SIZE >> 2; lwrds++) { - isp_rd_28xx_flthdr(isp, addr++, dptr++); + isp_rd_2xxx_flthdr(isp, addr++, dptr++); } dptr = (uint32_t *) flthdr_data; for (csum = 0, lwrds = 0; lwrds < FLT_HEADER_SIZE >> 4; lwrds++) { @@ -4503,13 +4409,13 @@ isp_read_flthdr_28xx(ispsoftc_t *isp) retval = -1; goto out; } - isp_parse_flthdr_28xx(isp, flthdr_data); + isp_parse_flthdr_2xxx(isp, flthdr_data); out: return (retval); } static void -isp_rd_28xx_flthdr(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) +isp_rd_2xxx_flthdr(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) { fcparam *fcp = FCPARAM(isp, 0); int loops = 0; @@ -4533,28 +4439,28 @@ isp_rd_28xx_flthdr(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) } static void -isp_parse_flthdr_28xx(ispsoftc_t *isp, uint8_t *flthdr_data) +isp_parse_flthdr_2xxx(ispsoftc_t *isp, uint8_t *flthdr_data) { fcparam *fcp = FCPARAM(isp, 0); uint16_t ver, csum; - ver = le16toh((uint16_t) (ISP28XX_FLT_VERSION(flthdr_data))); - fcp->flt_length = le16toh((uint16_t) (ISP28XX_FLT_LENGTH(flthdr_data))); - csum = le16toh((uint16_t) (ISP28XX_FLT_CSUM(flthdr_data))); + ver = le16toh((uint16_t) (ISP2XXX_FLT_VERSION(flthdr_data))); + fcp->flt_length = le16toh((uint16_t) (ISP2XXX_FLT_LENGTH(flthdr_data))); + csum = le16toh((uint16_t) (ISP2XXX_FLT_CSUM(flthdr_data))); if ((fcp->flt_length == 0 ) || (fcp->flt_length > (FLT_HEADER_SIZE + FLT_REGIONS_SIZE))) { - isp_prt(isp, ISP_LOGWARN, + isp_prt(isp, ISP_LOGERR, "FLT[DEF]: Invalid length=0x%x(%d)", fcp->flt_length, fcp->flt_length); } - isp_prt(isp, ISP_LOGDEBUG0, + isp_prt(isp, ISP_LOGCONFIG, "FLT[DEF]: version=0x%x length=0x%x(%d) checksum=0x%x", ver, fcp->flt_length, fcp->flt_length, csum); } static int -isp_read_flt_28xx(ispsoftc_t *isp) +isp_read_flt_2xxx(ispsoftc_t *isp) { fcparam *fcp = FCPARAM(isp, 0); int retval = 0; @@ -4563,19 +4469,19 @@ isp_read_flt_28xx(ispsoftc_t *isp) uint8_t flt_data[len]; fcp->flt_region_entries = len / FLT_REGION_SIZE; - addr = ISP28XX_FLT_ADDR + (FLT_HEADER_SIZE >> 2); + addr = fcp->flt_region_flt + (FLT_HEADER_SIZE >> 2); dptr = (uint32_t *) flt_data; - isp_prt(isp, ISP_LOGDEBUG0, "FLT[DEF]: regions=%d", + isp_prt(isp, ISP_LOGCONFIG, "FLT[DEF]: regions=%d", fcp->flt_region_entries); for (lwrds = 0; lwrds < len >> 2; lwrds++) { - isp_rd_28xx_flt(isp, addr++, dptr++); + isp_rd_2xxx_flt(isp, addr++, dptr++); } - retval = isp_parse_flt_28xx(isp, flt_data); + retval = isp_parse_flt_2xxx(isp, flt_data); return (retval); } static void -isp_rd_28xx_flt(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) +isp_rd_2xxx_flt(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) { fcparam *fcp = FCPARAM(isp, 0); int loops = 0; @@ -4599,7 +4505,7 @@ isp_rd_28xx_flt(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) } static int -isp_parse_flt_28xx(ispsoftc_t *isp, uint8_t *flt_data) +isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) { fcparam *fcp = FCPARAM(isp, 0); int count; @@ -4607,17 +4513,17 @@ isp_parse_flt_28xx(ispsoftc_t *isp, uint8_t *flt_data) for (count = 0; count < fcp->flt_region_entries; count++) { region[count].code = - le16toh((uint16_t) (ISP28XX_FLT_REG_CODE(flt_data, count))); + le16toh((uint16_t) (ISP2XXX_FLT_REG_CODE(flt_data, count))); region[count].attribute = - (uint8_t) (ISP28XX_FLT_REG_ATTR(flt_data, count)); + (uint8_t) (ISP2XXX_FLT_REG_ATTR(flt_data, count)); region[count].reserved = - (uint8_t) (ISP28XX_FLT_REG_RES(flt_data, count)); + (uint8_t) (ISP2XXX_FLT_REG_RES(flt_data, count)); region[count].size = - le32toh((uint32_t) (ISP28XX_FLT_REG_SIZE(flt_data, count)) >> 2); + le32toh((uint32_t) (ISP2XXX_FLT_REG_SIZE(flt_data, count)) >> 2); region[count].start = - le32toh((uint32_t) (ISP28XX_FLT_REG_START(flt_data, count)) >> 2); + le32toh((uint32_t) (ISP2XXX_FLT_REG_START(flt_data, count)) >> 2); region[count].end = - le32toh((uint32_t) (ISP28XX_FLT_REG_END(flt_data, count)) >> 2); + le32toh((uint32_t) (ISP2XXX_FLT_REG_END(flt_data, count)) >> 2); isp_prt(isp, ISP_LOGDEBUG0, "FLT[0x%x]: start=0x%x end=0x%x size=0x%x attribute=0x%x", @@ -4641,10 +4547,14 @@ isp_parse_flt_28xx(ispsoftc_t *isp, uint8_t *flt_data) fcp->flt_region_vpd = region[count].start; break; case FLT_REG_VPD_2: + if (!IS_27XX(isp)) + break; if (isp->isp_port == 2) fcp->flt_region_vpd = region[count].start; break; case FLT_REG_VPD_3: + if (!IS_27XX(isp)) + break; if (isp->isp_port == 3) fcp->flt_region_vpd = region[count].start; break; @@ -4657,10 +4567,14 @@ isp_parse_flt_28xx(ispsoftc_t *isp, uint8_t *flt_data) fcp->flt_region_nvram = region[count].start; break; case FLT_REG_NVRAM_2: + if (!IS_27XX(isp)) + break; if (isp->isp_port == 2) fcp->flt_region_nvram = region[count].start; break; case FLT_REG_NVRAM_3: + if (!IS_27XX(isp)) + break; if (isp->isp_port == 3) fcp->flt_region_nvram = region[count].start; break; @@ -4689,48 +4603,79 @@ isp_parse_flt_28xx(ispsoftc_t *isp, uint8_t *flt_data) if (isp->isp_port == 1) fcp->flt_region_fcp_prio = region[count].start; break; + case FLT_REG_IMG_PRI_27XX: + if (IS_27XX(isp)) + fcp->flt_region_img_status_pri = region[count].start; + break; + case FLT_REG_IMG_SEC_27XX: + if (IS_27XX(isp)) + fcp->flt_region_img_status_sec = region[count].start; + break; + case FLT_REG_FW_SEC_27XX: + if (IS_27XX(isp)) + fcp->flt_region_fw_sec = region[count].start; + break; + case FLT_REG_BOOTLOAD_SEC_27XX: + if (IS_27XX(isp)) + fcp->flt_region_boot_sec = region[count].start; + break; case FLT_REG_AUX_IMG_PRI_28XX: - fcp->flt_region_aux_img_status_pri = region[count].start; + if (IS_27XX(isp)) + fcp->flt_region_aux_img_status_pri = region[count].start; break; case FLT_REG_AUX_IMG_SEC_28XX: - fcp->flt_region_aux_img_status_sec = region[count].start; + if (IS_27XX(isp)) + fcp->flt_region_aux_img_status_sec = region[count].start; break; case FLT_REG_NVRAM_SEC_28XX_0: - if (isp->isp_port == 0) - fcp->flt_region_nvram_sec = region[count].start; + if (IS_27XX(isp)) + if (isp->isp_port == 0) + fcp->flt_region_nvram_sec = region[count].start; break; case FLT_REG_NVRAM_SEC_28XX_1: - if (isp->isp_port == 1) - fcp->flt_region_nvram_sec = region[count].start; + if (IS_27XX(isp)) + if (isp->isp_port == 1) + fcp->flt_region_nvram_sec = region[count].start; break; case FLT_REG_NVRAM_SEC_28XX_2: - if (isp->isp_port == 2) - fcp->flt_region_nvram_sec = region[count].start; + if (IS_27XX(isp)) + if (isp->isp_port == 2) + fcp->flt_region_nvram_sec = region[count].start; break; case FLT_REG_NVRAM_SEC_28XX_3: - if (isp->isp_port == 3) - fcp->flt_region_nvram_sec = region[count].start; + if (IS_27XX(isp)) + if (isp->isp_port == 3) + fcp->flt_region_nvram_sec = region[count].start; break; + case FLT_REG_VPD_SEC_27XX_0: case FLT_REG_VPD_SEC_28XX_0: - fcp->flt_region_vpd_nvram_sec = region[count].start; - if (isp->isp_port == 0) - fcp->flt_region_vpd_sec = region[count].start; + if (IS_27XX(isp)) { + fcp->flt_region_vpd_nvram_sec = region[count].start; + if (isp->isp_port == 0) + fcp->flt_region_vpd_sec = region[count].start; + } break; + case FLT_REG_VPD_SEC_27XX_1: case FLT_REG_VPD_SEC_28XX_1: - if (isp->isp_port == 1) - fcp->flt_region_vpd_sec = region[count].start; + if (IS_27XX(isp)) + if (isp->isp_port == 1) + fcp->flt_region_vpd_sec = region[count].start; break; + case FLT_REG_VPD_SEC_27XX_2: case FLT_REG_VPD_SEC_28XX_2: - if (isp->isp_port == 2) - fcp->flt_region_vpd_sec = region[count].start; + if (IS_27XX(isp)) + if (isp->isp_port == 2) + fcp->flt_region_vpd_sec = region[count].start; break; + case FLT_REG_VPD_SEC_27XX_3: case FLT_REG_VPD_SEC_28XX_3: - if (isp->isp_port == 3) - fcp->flt_region_vpd_sec = region[count].start; + if (IS_27XX(isp)) + if (isp->isp_port == 3) + fcp->flt_region_vpd_sec = region[count].start; break; } } - isp_prt(isp, ISP_LOGDEBUG0, + isp_prt(isp, ISP_LOGCONFIG, "FLT[FLT]: boot=0x%x fw=0x%x vpd_nvram=0x%x vpd=0x%x nvram 0x%x " "fdt=0x%x flt=0x%x npiv=0x%x fcp_prif_cfg=0x%x", fcp->flt_region_boot, fcp->flt_region_fw, fcp->flt_region_vpd_nvram, @@ -4740,3 +4685,113 @@ isp_parse_flt_28xx(ispsoftc_t *isp, uint8_t *flt_data) return (0); } + +static int +isp_read_nvram_2400(ispsoftc_t *isp) +{ + fcparam *fcp = FCPARAM(isp, 0); + int retval = 0; + uint32_t addr, csum, lwrds, *dptr; + uint8_t nvram_data[ISP2400_NVRAM_SIZE]; + + addr = fcp->flt_region_nvram; + dptr = (uint32_t *) nvram_data; + for (lwrds = 0; lwrds < ISP2400_NVRAM_SIZE >> 2; lwrds++) { + isp_rd_2400_nvram(isp, addr++, dptr++); + } + if (nvram_data[0] != 'I' || nvram_data[1] != 'S' || + nvram_data[2] != 'P') { + isp_prt(isp, ISP_LOGWARN, "invalid NVRAM header (%x %x %x)", + nvram_data[0], nvram_data[1], nvram_data[2]); + retval = -1; + goto out; + } + dptr = (uint32_t *) nvram_data; + for (csum = 0, lwrds = 0; lwrds < ISP2400_NVRAM_SIZE >> 2; lwrds++) { + uint32_t tmp; + ISP_IOXGET_32(isp, &dptr[lwrds], tmp); + csum += tmp; + } + if (csum != 0) { + isp_prt(isp, ISP_LOGWARN, "invalid NVRAM checksum"); + retval = -1; + goto out; + } + isp_parse_nvram_2400(isp, nvram_data); +out: + return (retval); +} + +static void +isp_rd_2400_nvram(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) +{ + fcparam *fcp = FCPARAM(isp, 0); + int loops = 0; + uint32_t base; // = 0x7ffe0000; + uint32_t tmp = 0; + + base = fcp->flash_data_addr + addr; + addr = 0; + + ISP_WRITE(isp, BIU2400_FLASH_ADDR, base | addr); + for (loops = 0; loops < 5000; loops++) { + ISP_DELAY(10); + tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); + if ((tmp & (1U << 31)) != 0) { + break; + } + } + if (tmp & (1U << 31)) { + *rp = ISP_READ(isp, BIU2400_FLASH_DATA); + ISP_SWIZZLE_NVRAM_LONG(isp, rp); + } else { + *rp = 0xffffffff; + } +} + +static void +isp_parse_nvram_2400(ispsoftc_t *isp, uint8_t *nvram_data) +{ + fcparam *fcp = FCPARAM(isp, 0); + uint64_t wwn; + + isp_prt(isp, ISP_LOGDEBUG0, + "NVRAM 0x%08x%08x 0x%08x%08x maxframelen %d", + (uint32_t) (ISP2400_NVRAM_NODE_NAME(nvram_data) >> 32), + (uint32_t) (ISP2400_NVRAM_NODE_NAME(nvram_data)), + (uint32_t) (ISP2400_NVRAM_PORT_NAME(nvram_data) >> 32), + (uint32_t) (ISP2400_NVRAM_PORT_NAME(nvram_data)), + ISP2400_NVRAM_MAXFRAMELENGTH(nvram_data)); + isp_prt(isp, ISP_LOGDEBUG0, + "NVRAM loopid %d fwopt1 0x%x fwopt2 0x%x fwopt3 0x%x", + ISP2400_NVRAM_HARDLOOPID(nvram_data), + ISP2400_NVRAM_FIRMWARE_OPTIONS1(nvram_data), + ISP2400_NVRAM_FIRMWARE_OPTIONS2(nvram_data), + ISP2400_NVRAM_FIRMWARE_OPTIONS3(nvram_data)); + + wwn = ISP2400_NVRAM_PORT_NAME(nvram_data); + fcp->isp_wwpn_nvram = wwn; + + wwn = ISP2400_NVRAM_NODE_NAME(nvram_data); + if (wwn) { + if ((wwn >> 60) != 2 && (wwn >> 60) != 5) { + wwn = 0; + } + } + if (wwn == 0 && (fcp->isp_wwpn_nvram >> 60) == 2) { + wwn = fcp->isp_wwpn_nvram; + wwn &= ~((uint64_t) 0xfff << 48); + } + fcp->isp_wwnn_nvram = wwn; + + if ((isp->isp_confopts & ISP_CFG_OWNFSZ) == 0) { + DEFAULT_FRAMESIZE(isp) = + ISP2400_NVRAM_MAXFRAMELENGTH(nvram_data); + } + if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0) { + fcp->isp_loopid = ISP2400_NVRAM_HARDLOOPID(nvram_data); + } + fcp->isp_fwoptions = ISP2400_NVRAM_FIRMWARE_OPTIONS1(nvram_data); + fcp->isp_xfwoptions = ISP2400_NVRAM_FIRMWARE_OPTIONS2(nvram_data); + fcp->isp_zfwoptions = ISP2400_NVRAM_FIRMWARE_OPTIONS3(nvram_data); +} diff --git a/sys/dev/isp/ispreg.h b/sys/dev/isp/ispreg.h index 953c86f72f69..0d089608fb35 100644 --- a/sys/dev/isp/ispreg.h +++ b/sys/dev/isp/ispreg.h @@ -271,24 +271,24 @@ typedef struct { #define FLT_MAX_REGIONS 0xFF #define FLT_REGIONS_SIZE (FLT_REGION_SIZE * FLT_MAX_REGIONS) -#define ISP28XX_FLT_VERSION(c) ((c)[0] | ((c)[1] << 8)) -#define ISP28XX_FLT_LENGTH(c) ((c)[2] | ((c)[3] << 8)) -#define ISP28XX_FLT_CSUM(c) ((c)[4] | ((c)[5] << 8)) -#define ISP28XX_FLT_REG_CODE(c, o) \ +#define ISP2XXX_FLT_VERSION(c) ((c)[0] | ((c)[1] << 8)) +#define ISP2XXX_FLT_LENGTH(c) ((c)[2] | ((c)[3] << 8)) +#define ISP2XXX_FLT_CSUM(c) ((c)[4] | ((c)[5] << 8)) +#define ISP2XXX_FLT_REG_CODE(c, o) \ ((c)[0 + FLT_REGION_SIZE * o] | ((c)[1 + FLT_REGION_SIZE * o] << 8)) -#define ISP28XX_FLT_REG_ATTR(c, o) ((c)[2 + FLT_REGION_SIZE * o]) -#define ISP28XX_FLT_REG_RES(c, o) ((c)[3 + FLT_REGION_SIZE * o]) -#define ISP28XX_FLT_REG_SIZE(c, o) (\ +#define ISP2XXX_FLT_REG_ATTR(c, o) ((c)[2 + FLT_REGION_SIZE * o]) +#define ISP2XXX_FLT_REG_RES(c, o) ((c)[3 + FLT_REGION_SIZE * o]) +#define ISP2XXX_FLT_REG_SIZE(c, o) (\ ((uint32_t)(c)[4 + FLT_REGION_SIZE * o] << 0) | \ ((uint32_t)(c)[5 + FLT_REGION_SIZE * o] << 8) | \ ((uint32_t)(c)[6 + FLT_REGION_SIZE * o] << 16) | \ ((uint32_t)(c)[7 + FLT_REGION_SIZE * o] << 24)) -#define ISP28XX_FLT_REG_START(c, o) (\ +#define ISP2XXX_FLT_REG_START(c, o) (\ ((uint32_t)(c)[8 + FLT_REGION_SIZE * o] << 0) | \ ((uint32_t)(c)[9 + FLT_REGION_SIZE * o] << 8) | \ ((uint32_t)(c)[10 + FLT_REGION_SIZE * o] << 16) | \ ((uint32_t)(c)[11 + FLT_REGION_SIZE * o] << 24)) -#define ISP28XX_FLT_REG_END(c, o) (\ +#define ISP2XXX_FLT_REG_END(c, o) (\ ((uint32_t)(c)[12 + FLT_REGION_SIZE * o] << 0) | \ ((uint32_t)(c)[13 + FLT_REGION_SIZE * o] << 8) | \ ((uint32_t)(c)[14 + FLT_REGION_SIZE * o] << 16) | \ @@ -321,6 +321,17 @@ struct flt_region { #define FLT_REG_FCP_PRIO_0 0x87 #define FLT_REG_FCP_PRIO_1 0x88 +/* 27xx */ +#define FLT_REG_IMG_PRI_27XX 0x95 +#define FLT_REG_IMG_SEC_27XX 0x96 +#define FLT_REG_FW_SEC_27XX 0x02 +#define FLT_REG_BOOTLOAD_SEC_27XX 0x9 +#define FLT_REG_VPD_SEC_27XX_0 0x50 +#define FLT_REG_VPD_SEC_27XX_1 0x52 +#define FLT_REG_VPD_SEC_27XX_2 0xd8 +#define FLT_REG_VPD_SEC_27XX_3 0xda + +/* 28xx */ #define FLT_REG_AUX_IMG_PRI_28XX 0x125 #define FLT_REG_AUX_IMG_SEC_28XX 0x126 #define FLT_REG_NVRAM_SEC_28XX_0 0x10d diff --git a/sys/dev/isp/ispvar.h b/sys/dev/isp/ispvar.h index 4af309b51932..810850ef9b79 100644 --- a/sys/dev/isp/ispvar.h +++ b/sys/dev/isp/ispvar.h @@ -382,6 +382,10 @@ typedef struct { uint32_t flt_region_flt; uint32_t flt_region_fw; uint32_t flt_region_gold_fw; + uint32_t flt_region_img_status_pri; + uint32_t flt_region_img_status_sec; + uint32_t flt_region_fw_sec; + uint32_t flt_region_boot_sec; uint32_t flt_region_npiv_conf; uint32_t flt_region_nvram; uint32_t flt_region_nvram_sec; From nobody Fri Jan 19 16:53:30 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm0C6cvvz56v0m; Fri, 19 Jan 2024 16:53:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm0C0RwPz4BLC; Fri, 19 Jan 2024 16:53:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683211; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gDaKNgot+E0OLKqFjmxTgTO1JQUEQqjzl2VCMRVqs9E=; b=MvRHBRWOMO828VCSJ/p6IP4MUV3aW4qDeP3wH0YPkKfQzV0SrmFzDEysnSCWYfNk9StNlX qJk7ghDRzzdNk1+khOHVeicjkn3EnR0IzwHu62xi9z3hx3OpvIAHHYJGJn1nCqQXh2hmaV pOsBkeFh44MYUQOutaSr6jN0qV2nwJn7GTvK2rfFK2DB/xJ05nMqP+2fKyIBD6r1ox2nSG 8ASZ1dRGFLa0XvelERraG0f+gXhMrBIyQliRPH/iUYH5oKvg15oETTgKUmRTQYh9M+P1Ai iS9Fz+CGXRa6sUKlFlc6v0ACYelEhba5CNIExkpZVMwt3I0iiu1BT4lLAgRh0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683211; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gDaKNgot+E0OLKqFjmxTgTO1JQUEQqjzl2VCMRVqs9E=; b=tIUhczcte0HZX82pS2m+4eTejOLRSLyESCJLvDqOBpvniuSlWqztN4g8yVNmA0T+Kk+EHW jxAC0+7f5v9o6mK0LHO2RJSz5x4ehIZhdjFhwG6tjQa0gVrvweYZ9mh1nFTVclB+XCrGd1 cd9EV3fVqAtfQFdUdHW7Np8PhkyFtBQIzt4/RWJXEWvR4fhqy6hoIMBFZ2frla0w35uSvu ScLpQN/sesyvvXdhLSLlIVKOleUXJhjURWesB6QEMM5RpxR1WJyaeWSi/L3GE3TuEFmy+y HsQdm6SmKtgJ+mDWLAm1wGuRuwSDYnUJMUEv0QoFGOkj2PMTpQBQfwZQaEdGJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683211; a=rsa-sha256; cv=none; b=dYZKChId271qH9PKEXr3C+SotEXOWFRmHl4LLUV0QlmCCjBMZ2UiDnNbj/9lv2TjX9+2bF MOz38YcPRRFOAmlcBMwvZ/4KozMkWUwOgcQV4bGHS9cEuPE81HhGuQTlBLWfmsrYqvzUkF rBw3NuRDyET5ADfWyDO6QmNULIfSq16AxF2qB4ihqP26lXTav5AJADIbpmGiIt+aiiehd+ nQbmlFJsh/WzFFCr2joUyf5gPoVt+nOXmy+fK22AZ8lt4QW8s5CZp9KeG3RJ5Iu1U+TwW7 MAiExdHM6RiZSnSfpm40uImC+BHlVs1QJpaf1ipNGKdqX1sjnuG6abTbksS8Zw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm0B6gVyzyxn; Fri, 19 Jan 2024 16:53:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGrUPT060010; Fri, 19 Jan 2024 16:53:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGrUHR060007; Fri, 19 Jan 2024 16:53:30 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:30 GMT Message-Id: <202401191653.40JGrUHR060007@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: a922b89834ef - stable/13 - isp(4): Add support to read contents of the FLT (flash layout table) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a922b89834ef611395cb440a5b4098d2c741c5fd Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=a922b89834ef611395cb440a5b4098d2c741c5fd commit a922b89834ef611395cb440a5b4098d2c741c5fd Author: Joerg Pulz AuthorDate: 2023-07-07 21:43:34 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:51:45 +0000 isp(4): Add support to read contents of the FLT (flash layout table) The FLT is like a TOC for the flash area and contains entries for every flash region with start/end address, size and flags. Start using NVRAM addresses from FLT instead of hardcoded ones for ISP28xx based HBAs. The FLT should be available on earlier HBAs too, probably since ISP24xx based. This needs further investigation and testing. PR: 271062 Reviewed by: imp, mav Sponsored by: Technical University of Munich Pull Request: https://github.com/freebsd/freebsd-src/pull/726 (cherry picked from commit 27b4a1b7e5b871c248dc501aa359c93f7263b074) --- sys/dev/isp/isp.c | 296 ++++++++++++++++++++++++++++++++++++++++++++++++++- sys/dev/isp/ispreg.h | 81 ++++++++++++++ sys/dev/isp/ispvar.h | 22 ++++ 3 files changed, 397 insertions(+), 2 deletions(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index eddf175e669b..8eeeef33ca11 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -122,6 +122,14 @@ static int isp_read_nvram_2400(ispsoftc_t *); static void isp_rd_2400_nvram(ispsoftc_t *, uint32_t, uint32_t *); static void isp_parse_nvram_2400(ispsoftc_t *, uint8_t *); +static int isp_read_flthdr_28xx(ispsoftc_t *); +static void isp_rd_28xx_flthdr(ispsoftc_t *, uint32_t, uint32_t *); +static void isp_parse_flthdr_28xx(ispsoftc_t *, uint8_t *); + +static int isp_read_flt_28xx(ispsoftc_t *); +static void isp_rd_28xx_flt(ispsoftc_t *, uint32_t, uint32_t *); +static int isp_parse_flt_28xx(ispsoftc_t *, uint8_t *); + static void isp_change_fw_state(ispsoftc_t *isp, int chan, int state) { @@ -4333,18 +4341,36 @@ cleanup: static int isp_read_nvram(ispsoftc_t *isp, int bus) { + if (IS_28XX(isp)) { + fcparam *fcp = FCPARAM(isp, 0); + int r = 0; + fcp->flash_data_addr = ISP28XX_BASE_ADDR; + fcp->flt_length = 0; + r = isp_read_flthdr_28xx(isp); + if (r == 0) { + isp_read_flt_28xx(isp); + } else { + fcp->flt_region_nvram = + (0x300000 + ISP2400_NVRAM_PORT_ADDR(isp->isp_port)); + } + } return (isp_read_nvram_2400(isp)); } static int isp_read_nvram_2400(ispsoftc_t *isp) { + fcparam *fcp = FCPARAM(isp, 0); int retval = 0; uint32_t addr, csum, lwrds, *dptr; uint8_t nvram_data[ISP2400_NVRAM_SIZE]; - addr = ISP2400_NVRAM_PORT_ADDR(isp->isp_port); + if (IS_28XX(isp)) { + addr = fcp->flt_region_nvram; + } else { + addr = ISP2400_NVRAM_PORT_ADDR(isp->isp_port); + } dptr = (uint32_t *) nvram_data; for (lwrds = 0; lwrds < ISP2400_NVRAM_SIZE >> 2; lwrds++) { isp_rd_2400_nvram(isp, addr++, dptr++); @@ -4380,7 +4406,9 @@ isp_rd_2400_nvram(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) uint32_t tmp = 0; if (IS_28XX(isp)) { - base = 0x7fad0000; /* 0x7f7d0000 + 0x300000 */ + fcparam *fcp = FCPARAM(isp, 0); + base = fcp->flash_data_addr + addr; + addr = 0; } else if (IS_26XX(isp)) { base = 0x7fe7c000; /* XXX: Observation, may be wrong. */ } else if (IS_25XX(isp)) { @@ -4448,3 +4476,267 @@ isp_parse_nvram_2400(ispsoftc_t *isp, uint8_t *nvram_data) fcp->isp_xfwoptions = ISP2400_NVRAM_FIRMWARE_OPTIONS2(nvram_data); fcp->isp_zfwoptions = ISP2400_NVRAM_FIRMWARE_OPTIONS3(nvram_data); } + +static int +isp_read_flthdr_28xx(ispsoftc_t *isp) +{ + int retval = 0; + uint32_t addr, lwrds, *dptr; + uint16_t csum; + uint8_t flthdr_data[FLT_HEADER_SIZE]; + + addr = ISP28XX_FLT_ADDR; + dptr = (uint32_t *) flthdr_data; + + isp_prt(isp, ISP_LOGDEBUG0, + "FLTL[DEF]: 0x%x", ISP28XX_FLT_ADDR); + for (lwrds = 0; lwrds < FLT_HEADER_SIZE >> 2; lwrds++) { + isp_rd_28xx_flthdr(isp, addr++, dptr++); + } + dptr = (uint32_t *) flthdr_data; + for (csum = 0, lwrds = 0; lwrds < FLT_HEADER_SIZE >> 4; lwrds++) { + uint16_t tmp; + ISP_IOXGET_16(isp, &dptr[lwrds], tmp); + csum += tmp; + } + if (csum != 0) { + retval = -1; + goto out; + } + isp_parse_flthdr_28xx(isp, flthdr_data); +out: + return (retval); +} + +static void +isp_rd_28xx_flthdr(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) +{ + fcparam *fcp = FCPARAM(isp, 0); + int loops = 0; + uint32_t base = fcp->flash_data_addr; + uint32_t tmp = 0; + + ISP_WRITE(isp, BIU2400_FLASH_ADDR, base | addr); + for (loops = 0; loops < 5000; loops++) { + ISP_DELAY(10); + tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); + if ((tmp & (1U << 31)) != 0) { + break; + } + } + if (tmp & (1U << 31)) { + *rp = ISP_READ(isp, BIU2400_FLASH_DATA); + ISP_SWIZZLE_NVRAM_LONG(isp, rp); + } else { + *rp = 0xffffffff; + } +} + +static void +isp_parse_flthdr_28xx(ispsoftc_t *isp, uint8_t *flthdr_data) +{ + fcparam *fcp = FCPARAM(isp, 0); + uint16_t ver, csum; + + ver = le16toh((uint16_t) (ISP28XX_FLT_VERSION(flthdr_data))); + fcp->flt_length = le16toh((uint16_t) (ISP28XX_FLT_LENGTH(flthdr_data))); + csum = le16toh((uint16_t) (ISP28XX_FLT_CSUM(flthdr_data))); + + if ((fcp->flt_length == 0 ) || + (fcp->flt_length > (FLT_HEADER_SIZE + FLT_REGIONS_SIZE))) { + isp_prt(isp, ISP_LOGWARN, + "FLT[DEF]: Invalid length=0x%x(%d)", + fcp->flt_length, fcp->flt_length); + } + isp_prt(isp, ISP_LOGDEBUG0, + "FLT[DEF]: version=0x%x length=0x%x(%d) checksum=0x%x", + ver, fcp->flt_length, fcp->flt_length, csum); +} + +static int +isp_read_flt_28xx(ispsoftc_t *isp) +{ + fcparam *fcp = FCPARAM(isp, 0); + int retval = 0; + int len = fcp->flt_length - FLT_HEADER_SIZE; + uint32_t addr, lwrds, *dptr; + uint8_t flt_data[len]; + fcp->flt_region_entries = len / FLT_REGION_SIZE; + + addr = ISP28XX_FLT_ADDR + (FLT_HEADER_SIZE >> 2); + dptr = (uint32_t *) flt_data; + isp_prt(isp, ISP_LOGDEBUG0, "FLT[DEF]: regions=%d", + fcp->flt_region_entries); + for (lwrds = 0; lwrds < len >> 2; lwrds++) { + isp_rd_28xx_flt(isp, addr++, dptr++); + } + retval = isp_parse_flt_28xx(isp, flt_data); + return (retval); +} + +static void +isp_rd_28xx_flt(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) +{ + fcparam *fcp = FCPARAM(isp, 0); + int loops = 0; + uint32_t base = fcp->flash_data_addr; + uint32_t tmp = 0; + + ISP_WRITE(isp, BIU2400_FLASH_ADDR, base | addr); + for (loops = 0; loops < 5000; loops++) { + ISP_DELAY(10); + tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); + if ((tmp & (1U << 31)) != 0) { + break; + } + } + if (tmp & (1U << 31)) { + *rp = ISP_READ(isp, BIU2400_FLASH_DATA); + ISP_SWIZZLE_NVRAM_LONG(isp, rp); + } else { + *rp = 0xffffffff; + } +} + +static int +isp_parse_flt_28xx(ispsoftc_t *isp, uint8_t *flt_data) +{ + fcparam *fcp = FCPARAM(isp, 0); + int count; + struct flt_region region[fcp->flt_region_entries]; + + for (count = 0; count < fcp->flt_region_entries; count++) { + region[count].code = + le16toh((uint16_t) (ISP28XX_FLT_REG_CODE(flt_data, count))); + region[count].attribute = + (uint8_t) (ISP28XX_FLT_REG_ATTR(flt_data, count)); + region[count].reserved = + (uint8_t) (ISP28XX_FLT_REG_RES(flt_data, count)); + region[count].size = + le32toh((uint32_t) (ISP28XX_FLT_REG_SIZE(flt_data, count)) >> 2); + region[count].start = + le32toh((uint32_t) (ISP28XX_FLT_REG_START(flt_data, count)) >> 2); + region[count].end = + le32toh((uint32_t) (ISP28XX_FLT_REG_END(flt_data, count)) >> 2); + + isp_prt(isp, ISP_LOGDEBUG0, + "FLT[0x%x]: start=0x%x end=0x%x size=0x%x attribute=0x%x", + region[count].code, region[count].start, region[count].end, + region[count].size, region[count].attribute); + + switch(region[count].code) { + case FLT_REG_FW: + fcp->flt_region_fw = region[count].start; + break; + case FLT_REG_BOOT_CODE: + fcp->flt_region_boot = region[count].start; + break; + case FLT_REG_VPD_0: + fcp->flt_region_vpd_nvram = region[count].start; + if (isp->isp_port == 0) + fcp->flt_region_vpd = region[count].start; + break; + case FLT_REG_VPD_1: + if (isp->isp_port == 1) + fcp->flt_region_vpd = region[count].start; + break; + case FLT_REG_VPD_2: + if (isp->isp_port == 2) + fcp->flt_region_vpd = region[count].start; + break; + case FLT_REG_VPD_3: + if (isp->isp_port == 3) + fcp->flt_region_vpd = region[count].start; + break; + case FLT_REG_NVRAM_0: + if (isp->isp_port == 0) + fcp->flt_region_nvram = region[count].start; + break; + case FLT_REG_NVRAM_1: + if (isp->isp_port == 1) + fcp->flt_region_nvram = region[count].start; + break; + case FLT_REG_NVRAM_2: + if (isp->isp_port == 2) + fcp->flt_region_nvram = region[count].start; + break; + case FLT_REG_NVRAM_3: + if (isp->isp_port == 3) + fcp->flt_region_nvram = region[count].start; + break; + case FLT_REG_FDT: + fcp->flt_region_fdt = region[count].start; + break; + case FLT_REG_FLT: + fcp->flt_region_flt = region[count].start; + break; + case FLT_REG_NPIV_CONF_0: + if (isp->isp_port == 0) + fcp->flt_region_npiv_conf = region[count].start; + break; + case FLT_REG_NPIV_CONF_1: + if (isp->isp_port == 1) + fcp->flt_region_npiv_conf = region[count].start; + break; + case FLT_REG_GOLD_FW: + fcp->flt_region_gold_fw = region[count].start; + break; + case FLT_REG_FCP_PRIO_0: + if (isp->isp_port == 0) + fcp->flt_region_fcp_prio = region[count].start; + break; + case FLT_REG_FCP_PRIO_1: + if (isp->isp_port == 1) + fcp->flt_region_fcp_prio = region[count].start; + break; + case FLT_REG_AUX_IMG_PRI_28XX: + fcp->flt_region_aux_img_status_pri = region[count].start; + break; + case FLT_REG_AUX_IMG_SEC_28XX: + fcp->flt_region_aux_img_status_sec = region[count].start; + break; + case FLT_REG_NVRAM_SEC_28XX_0: + if (isp->isp_port == 0) + fcp->flt_region_nvram_sec = region[count].start; + break; + case FLT_REG_NVRAM_SEC_28XX_1: + if (isp->isp_port == 1) + fcp->flt_region_nvram_sec = region[count].start; + break; + case FLT_REG_NVRAM_SEC_28XX_2: + if (isp->isp_port == 2) + fcp->flt_region_nvram_sec = region[count].start; + break; + case FLT_REG_NVRAM_SEC_28XX_3: + if (isp->isp_port == 3) + fcp->flt_region_nvram_sec = region[count].start; + break; + case FLT_REG_VPD_SEC_28XX_0: + fcp->flt_region_vpd_nvram_sec = region[count].start; + if (isp->isp_port == 0) + fcp->flt_region_vpd_sec = region[count].start; + break; + case FLT_REG_VPD_SEC_28XX_1: + if (isp->isp_port == 1) + fcp->flt_region_vpd_sec = region[count].start; + break; + case FLT_REG_VPD_SEC_28XX_2: + if (isp->isp_port == 2) + fcp->flt_region_vpd_sec = region[count].start; + break; + case FLT_REG_VPD_SEC_28XX_3: + if (isp->isp_port == 3) + fcp->flt_region_vpd_sec = region[count].start; + break; + } + } + isp_prt(isp, ISP_LOGDEBUG0, + "FLT[FLT]: boot=0x%x fw=0x%x vpd_nvram=0x%x vpd=0x%x nvram 0x%x " + "fdt=0x%x flt=0x%x npiv=0x%x fcp_prif_cfg=0x%x", + fcp->flt_region_boot, fcp->flt_region_fw, fcp->flt_region_vpd_nvram, + fcp->flt_region_vpd, fcp->flt_region_nvram, fcp->flt_region_fdt, + fcp->flt_region_flt, fcp->flt_region_npiv_conf, + fcp->flt_region_fcp_prio); + + return (0); +} diff --git a/sys/dev/isp/ispreg.h b/sys/dev/isp/ispreg.h index c4e379e881b6..953c86f72f69 100644 --- a/sys/dev/isp/ispreg.h +++ b/sys/dev/isp/ispreg.h @@ -251,4 +251,85 @@ typedef struct { #define ISP2400_NVRAM_FIRMWARE_OPTIONS3(c) \ ((c)[52] | ((c)[53] << 8) | ((c)[54] << 16) | ((c)[55] << 24)) +/* + * Qlogic FLT + */ +#define ISP24XX_BASE_ADDR 0x7ff00000 +#define ISP24XX_FLT_ADDR 0x11400 + +#define ISP25XX_BASE_ADDR ISP24XX_BASE_ADDR +#define ISP25XX_FLT_ADDR 0x50400 + +#define ISP27XX_BASE_ADDR 0x7f800000 +#define ISP27XX_FLT_ADDR (0x3F1000/4) + +#define ISP28XX_BASE_ADDR 0x7f7d0000 +#define ISP28XX_FLT_ADDR (0x11000/4) + +#define FLT_HEADER_SIZE 8 +#define FLT_REGION_SIZE 16 +#define FLT_MAX_REGIONS 0xFF +#define FLT_REGIONS_SIZE (FLT_REGION_SIZE * FLT_MAX_REGIONS) + +#define ISP28XX_FLT_VERSION(c) ((c)[0] | ((c)[1] << 8)) +#define ISP28XX_FLT_LENGTH(c) ((c)[2] | ((c)[3] << 8)) +#define ISP28XX_FLT_CSUM(c) ((c)[4] | ((c)[5] << 8)) +#define ISP28XX_FLT_REG_CODE(c, o) \ + ((c)[0 + FLT_REGION_SIZE * o] | ((c)[1 + FLT_REGION_SIZE * o] << 8)) +#define ISP28XX_FLT_REG_ATTR(c, o) ((c)[2 + FLT_REGION_SIZE * o]) +#define ISP28XX_FLT_REG_RES(c, o) ((c)[3 + FLT_REGION_SIZE * o]) +#define ISP28XX_FLT_REG_SIZE(c, o) (\ + ((uint32_t)(c)[4 + FLT_REGION_SIZE * o] << 0) | \ + ((uint32_t)(c)[5 + FLT_REGION_SIZE * o] << 8) | \ + ((uint32_t)(c)[6 + FLT_REGION_SIZE * o] << 16) | \ + ((uint32_t)(c)[7 + FLT_REGION_SIZE * o] << 24)) +#define ISP28XX_FLT_REG_START(c, o) (\ + ((uint32_t)(c)[8 + FLT_REGION_SIZE * o] << 0) | \ + ((uint32_t)(c)[9 + FLT_REGION_SIZE * o] << 8) | \ + ((uint32_t)(c)[10 + FLT_REGION_SIZE * o] << 16) | \ + ((uint32_t)(c)[11 + FLT_REGION_SIZE * o] << 24)) +#define ISP28XX_FLT_REG_END(c, o) (\ + ((uint32_t)(c)[12 + FLT_REGION_SIZE * o] << 0) | \ + ((uint32_t)(c)[13 + FLT_REGION_SIZE * o] << 8) | \ + ((uint32_t)(c)[14 + FLT_REGION_SIZE * o] << 16) | \ + ((uint32_t)(c)[15 + FLT_REGION_SIZE * o] << 24)) + +struct flt_region { + uint16_t code; + uint8_t attribute; + uint8_t reserved; + uint32_t size; + uint32_t start; + uint32_t end; +}; + +#define FLT_REG_FW 0x01 +#define FLT_REG_BOOT_CODE 0x07 +#define FLT_REG_VPD_0 0x14 +#define FLT_REG_NVRAM_0 0x15 +#define FLT_REG_VPD_1 0x16 +#define FLT_REG_NVRAM_1 0x17 +#define FLT_REG_VPD_2 0xd4 +#define FLT_REG_NVRAM_2 0xd5 +#define FLT_REG_VPD_3 0xd6 +#define FLT_REG_NVRAM_3 0xd7 +#define FLT_REG_FDT 0x1a +#define FLT_REG_FLT 0x1c +#define FLT_REG_NPIV_CONF_0 0x29 +#define FLT_REG_NPIV_CONF_1 0x2a +#define FLT_REG_GOLD_FW 0x2f +#define FLT_REG_FCP_PRIO_0 0x87 +#define FLT_REG_FCP_PRIO_1 0x88 + +#define FLT_REG_AUX_IMG_PRI_28XX 0x125 +#define FLT_REG_AUX_IMG_SEC_28XX 0x126 +#define FLT_REG_NVRAM_SEC_28XX_0 0x10d +#define FLT_REG_NVRAM_SEC_28XX_1 0x10f +#define FLT_REG_NVRAM_SEC_28XX_2 0x111 +#define FLT_REG_NVRAM_SEC_28XX_3 0x113 +#define FLT_REG_VPD_SEC_28XX_0 0x10c +#define FLT_REG_VPD_SEC_28XX_1 0x10e +#define FLT_REG_VPD_SEC_28XX_2 0x110 +#define FLT_REG_VPD_SEC_28XX_3 0x112 + #endif /* _ISPREG_H */ diff --git a/sys/dev/isp/ispvar.h b/sys/dev/isp/ispvar.h index faf26bc7b055..4af309b51932 100644 --- a/sys/dev/isp/ispvar.h +++ b/sys/dev/isp/ispvar.h @@ -368,6 +368,28 @@ typedef struct { int isp_use_gft_id; /* Use GFT_ID */ int isp_use_gff_id; /* Use GFF_ID */ + uint32_t flash_data_addr; + /* + * FLT + */ + uint16_t flt_length; + uint32_t flt_region_entries; + uint32_t flt_region_aux_img_status_pri; + uint32_t flt_region_aux_img_status_sec; + uint32_t flt_region_boot; + uint32_t flt_region_fcp_prio; + uint32_t flt_region_fdt; + uint32_t flt_region_flt; + uint32_t flt_region_fw; + uint32_t flt_region_gold_fw; + uint32_t flt_region_npiv_conf; + uint32_t flt_region_nvram; + uint32_t flt_region_nvram_sec; + uint32_t flt_region_vpd; + uint32_t flt_region_vpd_nvram; + uint32_t flt_region_vpd_nvram_sec; + uint32_t flt_region_vpd_sec; + /* * Current active WWNN/WWPN */ From nobody Fri Jan 19 16:53:34 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm0G5LlFz56tXk; Fri, 19 Jan 2024 16:53:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm0G3Bcjz49tr; Fri, 19 Jan 2024 16:53:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683214; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rplMW3FPtUx42HFK3NH80024Mcd4WsOUCSU22EjAkZU=; b=vBFUO154lcq/G0Z6DMJ0vwZECzhTf5vmmibUit/zjVzljjlT1AQJ1f+9JjD84bGSdRhJtq +T9IXCMRVCTZtTD3PlDTyIjPL6dO2NlkvORHU5UpnHPVonOyO4cwRNKYm2LVQ6SWjpVN5g cXC5vmVj9S9cFcrCzAuwPavKLHA3SIFlZYgOA+ZBhKctvCgyjrR24zslVacMMkZATqtnC5 GeAXpnTt4rxJxS0yAz1Vq5mHXXmmZuRewxRVT/pakcdJm26yYgFMHD9TXRa1bRztnJDbc5 XHHIUKjmP0nrhZyo2lg10vu8O8y6TOYf0gs/8GdcBP18UdgVytvI8UyDIt80MQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683214; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rplMW3FPtUx42HFK3NH80024Mcd4WsOUCSU22EjAkZU=; b=JiMESXgLz6aL+HKSQP4SZ7cVX8oLyWAEJl24eQluLH5HeNoXBm90MD/FcQqDuOZVtXpgjU sXT2yjMmpCAL8lTvdeufZzWm93udgUbNaX9WwzxAvGnBN21UAataw1NEzJ5mLvzDli41dx Lct1EG0fy2r1ZeLcRakeVdo+RY1uLQ/3nk8CHqGlpwvDPpHvN4CNJ18NCw2B9epoX6CoWF iVze/JCDDMuGr/o7BR5BpW1Fb16TwUktROSFZmcLaD+JD2/7DPzGMrqcRVysNMmgiOSp9f fqXGeOznnxEkM2mYxXHQktQ+E+K1qoDQRrlxMIFiuvDHsP45B4lSbAN0RggE6g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683214; a=rsa-sha256; cv=none; b=yfbEhmw2NaSsuu93xyKBZkxj2uj2Aeypk9AYwhxSSGe8Ml1qDEDauyDS1IG+KpmsQKN3zh ZI6fYdpOsuYltXTArXcoqpzDwaAKhGEy/srJJJwUPQAygcSm5oRtQgCOP6XM/IshdywSWx ookZzqxvmjTnlLJIAb7m4A17rKO0tGCpzkYHFl/Bvl3Pq11d82dTqWjyZkTaRomS5M1tvP AQSb4Gsocv9YpYnaF5ydmkTcMF8/FIpaqq3A4FbczuReeG5Oc/zK4Np/4aINLlDpufibWq ICk9RbYwURGS1BePIRG0pbZtCjUpHeekoinZaNmso0oQBi0yBfl0nWED4KdjpQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm0G2HjGz102W; Fri, 19 Jan 2024 16:53:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGrYDJ060158; Fri, 19 Jan 2024 16:53:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGrYtu060155; Fri, 19 Jan 2024 16:53:34 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:34 GMT Message-Id: <202401191653.40JGrYtu060155@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 07dd91cb046b - stable/13 - isp(4): Style changes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 07dd91cb046b9cabafb19e7d1dd38a1df89133ed Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=07dd91cb046b9cabafb19e7d1dd38a1df89133ed commit 07dd91cb046b9cabafb19e7d1dd38a1df89133ed Author: Joerg Pulz AuthorDate: 2023-07-07 21:43:35 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:51:46 +0000 isp(4): Style changes Please tools/build/checkstyle9.pl as mentioned by imp@ PR: 271062 Reviewed by: imp, mav Sponsored by: Technical University of Munich Pull Request: https://github.com/freebsd/freebsd-src/pull/726 (cherry picked from commit 348ec8dc036bf4ba1f607bb8acb25a0358436cc7) --- sys/dev/isp/isp.c | 42 ++++++++++++++++++++++-------------------- sys/dev/isp/ispreg.h | 4 ++-- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 241aad838cee..74f90b64441c 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -720,7 +720,9 @@ isp_init(ispsoftc_t *isp) if (IS_28XX(isp)) icbp->icb_maxfrmlen = ICB_DFLT_FRMLEN_28XX; - isp_prt(isp, ISP_LOGERR, "bad frame length (%d) from NVRAM - using %d", DEFAULT_FRAMESIZE(isp), icbp->icb_maxfrmlen); + isp_prt(isp, ISP_LOGERR, + "bad frame length (%d) from NVRAM - using %d", + DEFAULT_FRAMESIZE(isp), icbp->icb_maxfrmlen); } if (!IS_26XX(isp)) @@ -4446,7 +4448,7 @@ isp_parse_flthdr_2xxx(ispsoftc_t *isp, uint8_t *flthdr_data) fcp->flt_length = le16toh((uint16_t) (ISP2XXX_FLT_LENGTH(flthdr_data))); csum = le16toh((uint16_t) (ISP2XXX_FLT_CSUM(flthdr_data))); - if ((fcp->flt_length == 0 ) || + if ((fcp->flt_length == 0) || (fcp->flt_length > (FLT_HEADER_SIZE + FLT_REGIONS_SIZE))) { isp_prt(isp, ISP_LOGERR, "FLT[DEF]: Invalid length=0x%x(%d)", @@ -4504,7 +4506,7 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) region[count].code, region[count].start, region[count].end, region[count].size, region[count].attribute); - switch(region[count].code) { + switch (region[count].code) { case FLT_REG_FW: fcp->flt_region_fw = region[count].start; break; @@ -4521,13 +4523,13 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) fcp->flt_region_vpd = region[count].start; break; case FLT_REG_VPD_2: - if (!IS_27XX(isp)) + if (!IS_27XX(isp)) break; if (isp->isp_port == 2) fcp->flt_region_vpd = region[count].start; break; case FLT_REG_VPD_3: - if (!IS_27XX(isp)) + if (!IS_27XX(isp)) break; if (isp->isp_port == 3) fcp->flt_region_vpd = region[count].start; @@ -4541,13 +4543,13 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) fcp->flt_region_nvram = region[count].start; break; case FLT_REG_NVRAM_2: - if (!IS_27XX(isp)) + if (!IS_27XX(isp)) break; if (isp->isp_port == 2) fcp->flt_region_nvram = region[count].start; break; case FLT_REG_NVRAM_3: - if (!IS_27XX(isp)) + if (!IS_27XX(isp)) break; if (isp->isp_port == 3) fcp->flt_region_nvram = region[count].start; @@ -4578,46 +4580,46 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) fcp->flt_region_fcp_prio = region[count].start; break; case FLT_REG_IMG_PRI_27XX: - if (IS_27XX(isp)) + if (IS_27XX(isp)) fcp->flt_region_img_status_pri = region[count].start; break; case FLT_REG_IMG_SEC_27XX: - if (IS_27XX(isp)) + if (IS_27XX(isp)) fcp->flt_region_img_status_sec = region[count].start; break; case FLT_REG_FW_SEC_27XX: - if (IS_27XX(isp)) + if (IS_27XX(isp)) fcp->flt_region_fw_sec = region[count].start; break; case FLT_REG_BOOTLOAD_SEC_27XX: - if (IS_27XX(isp)) + if (IS_27XX(isp)) fcp->flt_region_boot_sec = region[count].start; break; case FLT_REG_AUX_IMG_PRI_28XX: - if (IS_27XX(isp)) + if (IS_27XX(isp)) fcp->flt_region_aux_img_status_pri = region[count].start; break; case FLT_REG_AUX_IMG_SEC_28XX: - if (IS_27XX(isp)) + if (IS_27XX(isp)) fcp->flt_region_aux_img_status_sec = region[count].start; break; case FLT_REG_NVRAM_SEC_28XX_0: - if (IS_27XX(isp)) + if (IS_27XX(isp)) if (isp->isp_port == 0) fcp->flt_region_nvram_sec = region[count].start; break; case FLT_REG_NVRAM_SEC_28XX_1: - if (IS_27XX(isp)) + if (IS_27XX(isp)) if (isp->isp_port == 1) fcp->flt_region_nvram_sec = region[count].start; break; case FLT_REG_NVRAM_SEC_28XX_2: - if (IS_27XX(isp)) + if (IS_27XX(isp)) if (isp->isp_port == 2) fcp->flt_region_nvram_sec = region[count].start; break; case FLT_REG_NVRAM_SEC_28XX_3: - if (IS_27XX(isp)) + if (IS_27XX(isp)) if (isp->isp_port == 3) fcp->flt_region_nvram_sec = region[count].start; break; @@ -4631,19 +4633,19 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) break; case FLT_REG_VPD_SEC_27XX_1: case FLT_REG_VPD_SEC_28XX_1: - if (IS_27XX(isp)) + if (IS_27XX(isp)) if (isp->isp_port == 1) fcp->flt_region_vpd_sec = region[count].start; break; case FLT_REG_VPD_SEC_27XX_2: case FLT_REG_VPD_SEC_28XX_2: - if (IS_27XX(isp)) + if (IS_27XX(isp)) if (isp->isp_port == 2) fcp->flt_region_vpd_sec = region[count].start; break; case FLT_REG_VPD_SEC_27XX_3: case FLT_REG_VPD_SEC_28XX_3: - if (IS_27XX(isp)) + if (IS_27XX(isp)) if (isp->isp_port == 3) fcp->flt_region_vpd_sec = region[count].start; break; diff --git a/sys/dev/isp/ispreg.h b/sys/dev/isp/ispreg.h index 0d089608fb35..322b2db35fef 100644 --- a/sys/dev/isp/ispreg.h +++ b/sys/dev/isp/ispreg.h @@ -261,10 +261,10 @@ typedef struct { #define ISP25XX_FLT_ADDR 0x50400 #define ISP27XX_BASE_ADDR 0x7f800000 -#define ISP27XX_FLT_ADDR (0x3F1000/4) +#define ISP27XX_FLT_ADDR (0x3F1000 / 4) #define ISP28XX_BASE_ADDR 0x7f7d0000 -#define ISP28XX_FLT_ADDR (0x11000/4) +#define ISP28XX_FLT_ADDR (0x11000 / 4) #define FLT_HEADER_SIZE 8 #define FLT_REGION_SIZE 16 From nobody Fri Jan 19 16:53:33 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm0F3jqSz56v0n; Fri, 19 Jan 2024 16:53:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm0F2B66z4BNn; Fri, 19 Jan 2024 16:53:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683213; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=j7DQGrQczt0grEVz+018K37OQz2K/aVIDUZSLiopXw8=; b=QmZhlnC/QMXJimPi1NrdTsUUP7LapS/EG/Rqs/3ZkoHaqZSgNb/W36G9hIoBdcAGF/alTh cM8WAYnuzwgbCstscmHvajUr2tjJu6T0dxs7NNvtdHtkoDrm6Cv/f1DNOXJLeUbYX6LOHm wQSlTV1oZf8cXAWdnCysgWV+eYqTjOCqfmQghZ5tygl7IAlcOvBMrTlFOTfJaICKDUPwji 3mKADpmodViNE0s01U9uo7BFoiTtzr3CWZm2Q+ZPfo51E9+rHbojbP6y3ipv8sgBxM0/BM W55hNeT+DINk3/U0SyapVgrVsroZJXTc48gkUQDM6uqTZ+p+jUeEKZxhZgWoLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683213; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=j7DQGrQczt0grEVz+018K37OQz2K/aVIDUZSLiopXw8=; b=ZZ49LMQuVXfCaxQOM54Tw5xInCklyvkZQg0wu4dwRHNegWdaeJJXHHqO1NwxgQTh/bPg71 TtJ0qGjofqgX4YrCWFAxPVUbZR8rFNEjbM7zLTz2mkEuIamABVj4XjbaLhCNXGkudOUc7O XpscVLWe3x55X4ZSkVA+ajzRQkwgTD2JfGmXiSBgtbQOnydbc380hUzXD+PccIdt5co+oS Adt2prE9ofmRwU+rhPmm183/1ecOvJcDwolalmWjUxtgTFRXyHYyA+iZBcPCZS10IbVlkv WsimuJ0DvcKJ7jrpZE89BFELLyWS8BUWGwQLORZXZCNOtDAxvVpWzYMfvaczvg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683213; a=rsa-sha256; cv=none; b=oY/ELxeE4b2Cl61c47pfX82K2jNG1u83N+4tqLd0EapLtLViWaQT/fX+lh+IOwHfXugWO+ v5zDVythSLLd2ttM7SYG+dmTUAnE+ke5dt5uoFUH+oZt7VW27Ss/PHjcVIY+v6xmSQJOoU 7BmWXB+ycjhwzBVNd0DWBKT68a4QceAfFel26jl9p1MLTCT3uv17SdHTmeRv9xRmkxUb+W 9iNHps8FldpWgRmzVTaQ65i8Zmp93B1Ke1SWddmYQxK+s1atghACbkfyrujbXIqJQqsUYO YwC/SxiGM3fMHN3kAZB2ueXJlXSfy2v8472g+fSGY8nc2zyPvbNwr02cF2dBsg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm0F1Hl6z10MT; Fri, 19 Jan 2024 16:53:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGrXrH060121; Fri, 19 Jan 2024 16:53:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGrXvQ060118; Fri, 19 Jan 2024 16:53:33 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:33 GMT Message-Id: <202401191653.40JGrXvQ060118@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 0a38059e24d4 - stable/13 - isp(4): Remove redundant functions for reading data from FLT and flash List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0a38059e24d44c2cb573df97b26dc10a2a9053c3 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=0a38059e24d44c2cb573df97b26dc10a2a9053c3 commit 0a38059e24d44c2cb573df97b26dc10a2a9053c3 Author: Joerg Pulz AuthorDate: 2023-07-07 21:43:34 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:51:46 +0000 isp(4): Remove redundant functions for reading data from FLT and flash Rename isp_rd_2400_nvram to isp_rd_2xxx_flash. Cleanup some leftovers. Hide all output regarding FLT parsing behind ISP_LOGDEBUG0. Thanks to imp@ and mav@ for reviewing and commenting. PR: 271062 Reviewed by: imp, mav Sponsored by: Technical University of Munich Pull Request: https://github.com/freebsd/freebsd-src/pull/726 (cherry picked from commit 295fd9c1caeb42a4c93005080320d011bf01e4c0) --- sys/dev/isp/isp.c | 115 +++++++++++++++--------------------------------------- 1 file changed, 31 insertions(+), 84 deletions(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 5a00a29531ea..241aad838cee 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -118,14 +118,12 @@ static void isp_mboxcmd(ispsoftc_t *, mbreg_t *); static void isp_setdfltfcparm(ispsoftc_t *, int); static int isp_read_nvram(ispsoftc_t *, int); +static void isp_rd_2xxx_flash(ispsoftc_t *, uint32_t, uint32_t *); static int isp_read_flthdr_2xxx(ispsoftc_t *); -static void isp_rd_2xxx_flthdr(ispsoftc_t *, uint32_t, uint32_t *); static void isp_parse_flthdr_2xxx(ispsoftc_t *, uint8_t *); static int isp_read_flt_2xxx(ispsoftc_t *); -static void isp_rd_2xxx_flt(ispsoftc_t *, uint32_t, uint32_t *); static int isp_parse_flt_2xxx(ispsoftc_t *, uint8_t *); static int isp_read_nvram_2400(ispsoftc_t *); -static void isp_rd_2400_nvram(ispsoftc_t *, uint32_t, uint32_t *); static void isp_parse_nvram_2400(ispsoftc_t *, uint8_t *); static void @@ -4382,6 +4380,30 @@ isp_read_nvram(ispsoftc_t *isp, int bus) return (isp_read_nvram_2400(isp)); } +static void +isp_rd_2xxx_flash(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) +{ + fcparam *fcp = FCPARAM(isp, 0); + int loops = 0; + uint32_t base = fcp->flash_data_addr; + uint32_t tmp = 0; + + ISP_WRITE(isp, BIU2400_FLASH_ADDR, base + addr); + for (loops = 0; loops < 5000; loops++) { + ISP_DELAY(10); + tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); + if ((tmp & (1U << 31)) != 0) { + break; + } + } + if (tmp & (1U << 31)) { + *rp = ISP_READ(isp, BIU2400_FLASH_DATA); + ISP_SWIZZLE_NVRAM_LONG(isp, rp); + } else { + *rp = 0xffffffff; + } +} + static int isp_read_flthdr_2xxx(ispsoftc_t *isp) { @@ -4397,7 +4419,7 @@ isp_read_flthdr_2xxx(ispsoftc_t *isp) isp_prt(isp, ISP_LOGDEBUG0, "FLTL[DEF]: 0x%x", addr); for (lwrds = 0; lwrds < FLT_HEADER_SIZE >> 2; lwrds++) { - isp_rd_2xxx_flthdr(isp, addr++, dptr++); + isp_rd_2xxx_flash(isp, addr++, dptr++); } dptr = (uint32_t *) flthdr_data; for (csum = 0, lwrds = 0; lwrds < FLT_HEADER_SIZE >> 4; lwrds++) { @@ -4414,30 +4436,6 @@ out: return (retval); } -static void -isp_rd_2xxx_flthdr(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) -{ - fcparam *fcp = FCPARAM(isp, 0); - int loops = 0; - uint32_t base = fcp->flash_data_addr; - uint32_t tmp = 0; - - ISP_WRITE(isp, BIU2400_FLASH_ADDR, base | addr); - for (loops = 0; loops < 5000; loops++) { - ISP_DELAY(10); - tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); - if ((tmp & (1U << 31)) != 0) { - break; - } - } - if (tmp & (1U << 31)) { - *rp = ISP_READ(isp, BIU2400_FLASH_DATA); - ISP_SWIZZLE_NVRAM_LONG(isp, rp); - } else { - *rp = 0xffffffff; - } -} - static void isp_parse_flthdr_2xxx(ispsoftc_t *isp, uint8_t *flthdr_data) { @@ -4454,7 +4452,7 @@ isp_parse_flthdr_2xxx(ispsoftc_t *isp, uint8_t *flthdr_data) "FLT[DEF]: Invalid length=0x%x(%d)", fcp->flt_length, fcp->flt_length); } - isp_prt(isp, ISP_LOGCONFIG, + isp_prt(isp, ISP_LOGDEBUG0, "FLT[DEF]: version=0x%x length=0x%x(%d) checksum=0x%x", ver, fcp->flt_length, fcp->flt_length, csum); } @@ -4471,39 +4469,15 @@ isp_read_flt_2xxx(ispsoftc_t *isp) addr = fcp->flt_region_flt + (FLT_HEADER_SIZE >> 2); dptr = (uint32_t *) flt_data; - isp_prt(isp, ISP_LOGCONFIG, "FLT[DEF]: regions=%d", + isp_prt(isp, ISP_LOGDEBUG0, "FLT[DEF]: regions=%d", fcp->flt_region_entries); for (lwrds = 0; lwrds < len >> 2; lwrds++) { - isp_rd_2xxx_flt(isp, addr++, dptr++); + isp_rd_2xxx_flash(isp, addr++, dptr++); } retval = isp_parse_flt_2xxx(isp, flt_data); return (retval); } -static void -isp_rd_2xxx_flt(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) -{ - fcparam *fcp = FCPARAM(isp, 0); - int loops = 0; - uint32_t base = fcp->flash_data_addr; - uint32_t tmp = 0; - - ISP_WRITE(isp, BIU2400_FLASH_ADDR, base | addr); - for (loops = 0; loops < 5000; loops++) { - ISP_DELAY(10); - tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); - if ((tmp & (1U << 31)) != 0) { - break; - } - } - if (tmp & (1U << 31)) { - *rp = ISP_READ(isp, BIU2400_FLASH_DATA); - ISP_SWIZZLE_NVRAM_LONG(isp, rp); - } else { - *rp = 0xffffffff; - } -} - static int isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) { @@ -4675,7 +4649,7 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) break; } } - isp_prt(isp, ISP_LOGCONFIG, + isp_prt(isp, ISP_LOGDEBUG0, "FLT[FLT]: boot=0x%x fw=0x%x vpd_nvram=0x%x vpd=0x%x nvram 0x%x " "fdt=0x%x flt=0x%x npiv=0x%x fcp_prif_cfg=0x%x", fcp->flt_region_boot, fcp->flt_region_fw, fcp->flt_region_vpd_nvram, @@ -4697,7 +4671,7 @@ isp_read_nvram_2400(ispsoftc_t *isp) addr = fcp->flt_region_nvram; dptr = (uint32_t *) nvram_data; for (lwrds = 0; lwrds < ISP2400_NVRAM_SIZE >> 2; lwrds++) { - isp_rd_2400_nvram(isp, addr++, dptr++); + isp_rd_2xxx_flash(isp, addr++, dptr++); } if (nvram_data[0] != 'I' || nvram_data[1] != 'S' || nvram_data[2] != 'P') { @@ -4722,33 +4696,6 @@ out: return (retval); } -static void -isp_rd_2400_nvram(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) -{ - fcparam *fcp = FCPARAM(isp, 0); - int loops = 0; - uint32_t base; // = 0x7ffe0000; - uint32_t tmp = 0; - - base = fcp->flash_data_addr + addr; - addr = 0; - - ISP_WRITE(isp, BIU2400_FLASH_ADDR, base | addr); - for (loops = 0; loops < 5000; loops++) { - ISP_DELAY(10); - tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); - if ((tmp & (1U << 31)) != 0) { - break; - } - } - if (tmp & (1U << 31)) { - *rp = ISP_READ(isp, BIU2400_FLASH_DATA); - ISP_SWIZZLE_NVRAM_LONG(isp, rp); - } else { - *rp = 0xffffffff; - } -} - static void isp_parse_nvram_2400(ispsoftc_t *isp, uint8_t *nvram_data) { From nobody Fri Jan 19 16:53:35 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm0H5T0Vz56v0s; Fri, 19 Jan 2024 16:53:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm0H44rCz4BNs; Fri, 19 Jan 2024 16:53:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683215; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4N9FimxzNLm4ezetLacfHey79JBllqUlmwiduym6k6Y=; b=T5bCNngSIH+/WA7vKoJPSA+ZqPMZgcN+GLihosUVOV7ugliCB6QUBdQgBXUl9gm4o5WRSl cVLgq0qm+dG6r4FVDDbu9CdK48muq8iynzcfrVdI902b9+pQwfjBy1n1IuqLbpwz3OV8hv 58hXtNWHdqANzGiNM3jQHc5pJUVKAi+xV13zc49JniNTCGD+mfxGKaU2IcifQVmIGh0FEZ XuHICWLYaHyuMvtx4rW4sbakrh55tS3d6RNzOcnlTihULqghyULb87GqR9Y4g1TyuGjnH1 LoRoCYVg6qcyK9iuw0it+OnDOSHYLdcdNBO430y+EykHBu/33A+Gsh6BlwDzVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683215; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4N9FimxzNLm4ezetLacfHey79JBllqUlmwiduym6k6Y=; b=v784pVlq906P0PvtwI09i9xG2PSW1cbOEWAKEw8JuyJQ9MidoxPciK4UspmZOccn7tdTnY EKR2h2GeKNAQ1WhJ/MAJou2uXvnBlwtvDTldP39cVWTK0uK/baf6gOXV6d7jnp0UOlNY3p KdW2yXKikTVlfDO4uQ0A9aHVm6zHDbJ4TZ3Tmd+/Ll1mzlMxtR4acP4e1LzYw3fIsFNome R3rwWWx2drfq7RqxGTyQrX0rtcFfvNqNII1n92ch9X2wtu7FsPMFXi2zzGuXaSNym/V0oc i5uWcmHheQkqf3ZmKP9RmVvF+PgYr9tKr+6k7V2Y/FQhhZV6oG1+sQpwayX7BA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683215; a=rsa-sha256; cv=none; b=cuOC7H1RiVTlK9zAYVIJHgoxsGc2nMT1HYL/W1O5ntGMFCWbq6z5h5mkj2oucah8OhdzqE KYQVoVC9PG5tRg5sppKzQOAEYH3JCez+4EORqvJ8FFCEmmYn0jICXe9TWko9iHI9d/M8AH R4+ySoaUi/W1nmiKWygSN6pOjwg840NTCcldeK7PChnDxrVxV58gkJhOLhz3PKO7GQWqzs P40f5LfQhUlfhPPk34nkkD2e5yxCkH3BgqYV4IpLzm+UePzGOCFqIM1fuRFfqpCk79Vx6M VRbShwfStMZqdAUALFiSWhpU+PW8kLK2EdO3e8sELs0BRT0EueL4+s8G5SCrHA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm0H39wKz10Jw; Fri, 19 Jan 2024 16:53:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGrZoN060197; Fri, 19 Jan 2024 16:53:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGrZ75060194; Fri, 19 Jan 2024 16:53:35 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:35 GMT Message-Id: <202401191653.40JGrZ75060194@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 84f8cfcbe493 - stable/13 - isp(4): Rework firmware handling/loading List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 84f8cfcbe493dbbb657bb937fc1db47d5a8101ee Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=84f8cfcbe493dbbb657bb937fc1db47d5a8101ee commit 84f8cfcbe493dbbb657bb937fc1db47d5a8101ee Author: Joerg Pulz AuthorDate: 2023-10-27 15:27:37 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:52:40 +0000 isp(4): Rework firmware handling/loading Correctly identify the active firmware in flash on adapters with primary and secondary firmware region in flash. Correctly identify the active NVRAM on adapters with primary and secondary NVRAM region in flash. Loading ispfw(4) moved from isp_pci_attach() to isp_reset(). Drop the reference to ispfw(4) after using it so one can kldunload(8) it. New isp_load_ram() function to load either ispfw(4) or flash firmware into RISC's RAM. New functions to read data from flash. The old ones will be removed later. A bunch of new helper functions to identify and validate active flash regions for firmware, auxiliary and NVRAM. Overhaul ISP_FW_* macros and make use of it when comparing firmware versions. We can handle firmware versions up to 255.255.255. Firmware load priority slightly changed: For 27xx and newer adapters: - load ispfw(4) firmware - request (active) flash firmware information - compare version numbers of ispfw(4) and flash firmware - load firmware with highest version into RISC's RAM - if loading ispfw(4) is disabled or failed - load firmware from flash - if everything else fails use MBOX_LOAD_FLASH_FIRMWARE as fallback For 26xx and older adapters nothing changed: - load ispfw(4) firmware and load it into RISC's RAM - if loading ispfw(4) is disabled or failed use MBOX_EXEC_FIRMWARE - for 26xx a preceding MBOX_LOAD_FLASH_FIRMWARE is used New read only sysctl(8)'s: dev.isp.N.fw_version_run: the firmware version actually running dev.isp.N.fw_version_ispfw: the firmware version provided by ispfw(4) dev.isp.N.fw_version_flash: the (active) firmware version in flash While here: - firmware attribute handling/parsing reworked + renamed defines from ISP2400_FW_ATTR_* to ISP_FW_ATTR_* + changed values to match new handling/parsing + added some more attributes - enable FLT support on 26xx based adapters - log level adjustments - new function return status codes (some for now, some for later use) - some minor style changes Tested and approved to work on real hardware with: - Qlogic ISP 2532 (QLogic QLE2560 8Gb FC Adapter) - Qlogic ISP 2031 (QLogic QLE2662 16Gbit 2Port FC Adapter) - Qlogic ISP 2722 (QLogic QLE2690 16Gb FC Adapter) - Qlogic ISP 2812 (QLogic QLE2772 32Gbit 2Port FC Adapter) PR: 273263 Reviewed by: mav Pull Request: https://github.com/freebsd/freebsd-src/pull/877 MFC after: 1 month Sponsored by: Technical University of Munich (cherry picked from commit 10ed63fc06cb9902cc783ce8d0086c9aa97ed1e1) --- share/man/man4/isp.4 | 21 +- sys/dev/isp/isp.c | 981 ++++++++++++++++++++++++++++++++++++++-------- sys/dev/isp/isp_freebsd.c | 21 +- sys/dev/isp/isp_freebsd.h | 2 +- sys/dev/isp/isp_pci.c | 35 +- sys/dev/isp/ispmbox.h | 62 +-- sys/dev/isp/ispreg.h | 11 + sys/dev/isp/ispvar.h | 127 ++++-- 8 files changed, 1002 insertions(+), 258 deletions(-) diff --git a/share/man/man4/isp.4 b/share/man/man4/isp.4 index c4646aa49663..810d1ce4650c 100644 --- a/share/man/man4/isp.4 +++ b/share/man/man4/isp.4 @@ -24,7 +24,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd November 19, 2020 +.Dd October 27, 2023 .Dt ISP 4 .Os .Sh NAME @@ -80,12 +80,15 @@ FC-Tape is automatically enabled when connecting controller that supports it to a target that supports it. It may be disabled using configuration and hint options described below. .Sh FIRMWARE -Firmware loading is supported if the +Firmware loading is supported and handled by +.Xr firmware 9 . +The correct firmware is either loaded automatically, if available for this +type of adapter, or by manually loading the .Xr ispfw 4 -module is loaded. +module. It is strongly recommended that you use the firmware available from .Xr ispfw 4 -as it is the most likely to have been tested with this driver. +as it is the one that most likely has been tested with this driver. .Sh HARDWARE Cards supported by the .Nm @@ -128,7 +131,7 @@ Limit on number of Message Signaled Interrupts (MSI) to be used. .It Va hint.isp. Ns Ar N Ns Va .msix Limit on number of Extended Message Signaled Interrupts (MSI-X) to be used. .It Va hint.isp. Ns Ar N Ns Va .fwload_disable -A hint value to disable loading of firmware +A hint value to disable loading of firmware provided by .Xr ispfw 4 . .It Va hint.isp. Ns Ar N Ns Va .ignore_nvram A hint value to ignore board NVRAM settings for. @@ -202,6 +205,14 @@ The default is 1 (enabled). This is the readonly World Wide Node Name value for this port. .It Va dev.isp. Ns Ar N Ns Va .wwpn This is the readonly World Wide Port Name value for this port. +.It Va dev.isp. Ns Ar N Ns Va .fw_version_flash +The readonly flash firmware version value in the active region of the +controller. +.It Va dev.isp. Ns Ar N Ns Va .fw_version_ispfw +The readonly firmware version value provided by +.Xr ispfw 4 . +.It Va dev.isp. Ns Ar N Ns Va .fw_version_run +The readonly firmware version value currently executed on the controller. .El .Sh SEE ALSO .Xr da 4 , diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 74f90b64441c..aa2f1fb74c59 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -49,7 +49,9 @@ __KERNEL_RCSID(0, "$NetBSD$"); #include #endif #ifdef __FreeBSD__ +#include #include +#include #include #endif #ifdef __OpenBSD__ @@ -116,16 +118,31 @@ static uint16_t isp_next_handle(ispsoftc_t *, uint16_t *); static int isp_fw_state(ispsoftc_t *, int); static void isp_mboxcmd(ispsoftc_t *, mbreg_t *); +static void isp_get_flash_addrs(ispsoftc_t *); static void isp_setdfltfcparm(ispsoftc_t *, int); -static int isp_read_nvram(ispsoftc_t *, int); +static int isp_read_flash_dword(ispsoftc_t *, uint32_t, uint32_t *); +static int isp_read_flash_data(ispsoftc_t *, uint32_t *, uint32_t, uint32_t); static void isp_rd_2xxx_flash(ispsoftc_t *, uint32_t, uint32_t *); static int isp_read_flthdr_2xxx(ispsoftc_t *); static void isp_parse_flthdr_2xxx(ispsoftc_t *, uint8_t *); static int isp_read_flt_2xxx(ispsoftc_t *); static int isp_parse_flt_2xxx(ispsoftc_t *, uint8_t *); -static int isp_read_nvram_2400(ispsoftc_t *); +static int isp_read_nvram(ispsoftc_t *); static void isp_parse_nvram_2400(ispsoftc_t *, uint8_t *); +static void isp_print_image(ispsoftc_t *, char *, struct isp_image_status *); +static bool isp_check_aux_image_status_signature(struct isp_image_status *); +static bool isp_check_image_status_signature(struct isp_image_status *); +static unsigned long isp_image_status_checksum(struct isp_image_status *); +static void isp_component_status(struct active_regions *, struct isp_image_status *); +static int isp_compare_image_generation(ispsoftc_t *, struct isp_image_status *, struct isp_image_status *); +static void isp_get_aux_images(ispsoftc_t *, struct active_regions *); +static void isp_get_active_image(ispsoftc_t *, struct active_regions *); +static bool isp_risc_firmware_invalid(ispsoftc_t *, uint32_t *); +static int isp_load_ram(ispsoftc_t *, uint32_t *, uint32_t, uint32_t); +static int isp_load_risc_flash(ispsoftc_t *, uint32_t *, uint32_t); +static int isp_load_risc(ispsoftc_t *, uint32_t *); + static void isp_change_fw_state(ispsoftc_t *isp, int chan, int state) { @@ -139,6 +156,45 @@ isp_change_fw_state(ispsoftc_t *isp, int chan, int state) fcp->isp_fwstate = state; } +static void +isp_get_flash_addrs(ispsoftc_t *isp) +{ + fcparam *fcp = FCPARAM(isp, 0); + int r = 0; + + if (IS_28XX(isp)) { + fcp->flash_data_addr = ISP28XX_BASE_ADDR; + fcp->flt_region_flt = ISP28XX_FLT_ADDR; + } else if (IS_26XX(isp)) { /* 26xx and 27xx are identical */ + fcp->flash_data_addr = ISP27XX_BASE_ADDR; + fcp->flt_region_flt = ISP27XX_FLT_ADDR; + } else if (IS_25XX(isp)) { + fcp->flash_data_addr = ISP25XX_BASE_ADDR; + fcp->flt_region_flt = ISP25XX_FLT_ADDR; + } else { + fcp->flash_data_addr = ISP24XX_BASE_ADDR; + fcp->flt_region_flt = ISP24XX_FLT_ADDR; + } + fcp->flt_length = 0; + r = isp_read_flthdr_2xxx(isp); + if (r == 0) { + isp_read_flt_2xxx(isp); + } else { /* fallback to hardcoded NVRAM address */ + if (IS_28XX(isp)) { + fcp->flt_region_nvram = 0x300000; + } else if (IS_26XX(isp)) { + fcp->flash_data_addr = 0x7fe7c000; + fcp->flt_region_nvram = 0; + } else if (IS_25XX(isp)) { + fcp->flt_region_nvram = 0x48000; + } else { + fcp->flash_data_addr = 0x7ffe0000; + fcp->flt_region_nvram = 0; + } + fcp->flt_region_nvram += ISP2400_NVRAM_PORT_ADDR(isp->isp_port); + } +} + /* * Reset Hardware. * @@ -152,7 +208,7 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) { mbreg_t mbs; char *buf; - uint64_t fwt; + uint16_t fwt; uint32_t code_org, val; int loaded_fw, loops, i, dodnld = 1; const char *btype = "????"; @@ -321,41 +377,119 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) } /* - * Download new Firmware, unless requested not to do so. - * This is made slightly trickier in some cases where the - * firmware of the ROM revision is newer than the revision - * compiled into the driver. So, where we used to compare - * versions of our f/w and the ROM f/w, now we just see - * whether we have f/w at all and whether a config flag - * has disabled our download. + * Early setup DMA for the request and response queues. + * We do this now so we can use the request queue + * for dma to load firmware from. */ - if ((isp->isp_mdvec->dv_ispfw == NULL) || (isp->isp_confopts & ISP_CFG_NORELOAD)) { - dodnld = 0; - } else { - /* - * Set up DMA for the request and response queues. - * We do this now so we can use the request queue - * for dma to load firmware from. - */ - if (ISP_MBOXDMASETUP(isp) != 0) { - isp_prt(isp, ISP_LOGERR, "Cannot setup DMA"); - return; + if (ISP_MBOXDMASETUP(isp) != 0) { + isp_prt(isp, ISP_LOGERR, "Cannot setup DMA"); + return; + } + + /* + * FW load priority + * For 27xx and newer: + * Load ispfw(4) firmware unless requested not to do so. + * Request (active) flash firmware information. Compare + * version numbers of ispfw(4) and flash firmware. Load + * the highest version into RAM of the adapter. + * If loading ispfw(4) is disabled or loading it failed + * (eg. no firmware available) we just load firmware from + * flash. If this fails for whatever reason we fallback + * to let the adapter MBOX_LOAD_FLASH_FIRMWARE by itself + * followed by MBOX_EXEC_FIRMWARE and hope the best to + * get it up and running. + * + * For 26xx and older: + * Load ispfw(4) firmware unless requested not to do so + * and load it into RAM of the adapter. If loading + * ispfw(4) is disabled or loading it failed (eg. no + * firmware available) we just let the adapter + * MBOX_EXEC_FIRMWARE to start the flash firmware. + * For the 26xx a preceding MBOX_LOAD_FLASH_FIRMWARE + * is required. + */ + + fcparam *fcp = FCPARAM(isp, 0); + + /* read FLT to get flash region addresses */ + isp_get_flash_addrs(isp); + + /* set informational sysctl(8) to sane value */ + snprintf(fcp->fw_version_ispfw, sizeof(fcp->fw_version_ispfw), + "not loaded"); + snprintf(fcp->fw_version_flash, sizeof(fcp->fw_version_flash), + "not loaded"); + snprintf(fcp->fw_version_run, sizeof(fcp->fw_version_run), + "not loaded"); + + + /* Try to load ispfw(4) first */ + if (!(isp->isp_confopts & ISP_CFG_NORELOAD)) { + char fwname[32]; + snprintf(fwname, sizeof(fwname), "isp_%04x", isp->isp_did); + isp->isp_osinfo.ispfw = firmware_get(fwname); + if (isp->isp_osinfo.ispfw != NULL) { + isp->isp_mdvec->dv_ispfw = isp->isp_osinfo.ispfw->data; + const uint32_t *ispfwptr = isp->isp_mdvec->dv_ispfw; + for (i = 0; i < 4; i++) + fcp->fw_ispfwrev[i] = ispfwptr[4 + i]; + isp_prt(isp, ISP_LOGCONFIG, + "Loaded ispfw(4) firmware %s", fwname); + snprintf(fcp->fw_version_ispfw, + sizeof(fcp->fw_version_ispfw), + "%u.%u.%u", fcp->fw_ispfwrev[0], + fcp->fw_ispfwrev[1], fcp->fw_ispfwrev[2]); + isp_prt(isp, ISP_LOGCONFIG, + "Firmware revision (ispfw) %u.%u.%u (%x).", + fcp->fw_ispfwrev[0], fcp->fw_ispfwrev[1], + fcp->fw_ispfwrev[2], fcp->fw_ispfwrev[3]); + } else { + isp_prt(isp, ISP_LOGDEBUG0, + "Unable to load ispfw(4) firmware %s", fwname); } } - code_org = ISP_CODE_ORG_2400; loaded_fw = 0; + dodnld = 0; + + if (IS_27XX(isp)) { + switch (isp_load_risc(isp, 0)) { + case ISP_ABORTED: + /* download ispfw(4) as it's newer than flash */ + dodnld = 1; + break; + case ISP_SUCCESS: + /* We've loaded flash firmware */ + loaded_fw = 1; + break; + default: + /* + * Fall through to use ispfw(4) if available or + * just fall back to use MBOX_LOAD_FLASH_FIRMWARE + */ + if (isp->isp_osinfo.ispfw != NULL) + dodnld = 1; + break; + } + } else { + /* Fall through to load ispfw(4) or simply MBOX_EXEC_FIRMWARE */ + if (isp->isp_osinfo.ispfw != NULL) + dodnld = 1; + } + + code_org = ISP_CODE_ORG_2400; if (dodnld) { const uint32_t *ptr = isp->isp_mdvec->dv_ispfw; uint32_t la, wi, wl; - /* - * Keep loading until we run out of f/w. - */ + /* Keep loading until we run out of f/w. */ code_org = ptr[2]; /* 1st load address is our start addr */ for (;;) { - isp_prt(isp, ISP_LOGDEBUG0, "load 0x%x words of code at load address 0x%x", ptr[3], ptr[2]); + isp_prt(isp, ISP_LOGDEBUG2, + "Load 0x%x words of code at load address 0x%x", + ptr[3], ptr[2]); wi = 0; la = ptr[2]; @@ -368,20 +502,9 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) cp = isp->isp_rquest; for (i = 0; i < nw; i++) ISP_IOXPUT_32(isp, ptr[wi + i], &cp[i]); - MEMORYBARRIER(isp, SYNC_REQUEST, 0, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)), -1); - MBSINIT(&mbs, MBOX_LOAD_RISC_RAM, MBLOGALL, 0); - mbs.param[1] = la; - mbs.param[2] = DMA_WD1(isp->isp_rquest_dma); - mbs.param[3] = DMA_WD0(isp->isp_rquest_dma); - mbs.param[4] = nw >> 16; - mbs.param[5] = nw; - mbs.param[6] = DMA_WD3(isp->isp_rquest_dma); - mbs.param[7] = DMA_WD2(isp->isp_rquest_dma); - mbs.param[8] = la >> 16; - isp_prt(isp, ISP_LOGDEBUG0, "LOAD RISC RAM %u words at load address 0x%x", nw, la); - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { - isp_prt(isp, ISP_LOGERR, "F/W download failed"); + if (isp_load_ram(isp, cp, la, nw) != 0) { + isp_prt(isp, ISP_LOGERR, + "Failed to load firmware fragment."); return; } la += nw; @@ -395,30 +518,32 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) ptr += ptr[3]; } loaded_fw = 1; - } else if (IS_26XX(isp)) { - isp_prt(isp, ISP_LOGDEBUG1, "loading firmware from flash"); - MBSINIT(&mbs, MBOX_LOAD_FLASH_FIRMWARE, MBLOGALL, 5000000); - mbs.ibitm = 0x01; - mbs.obitm = 0x07; - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { - isp_prt(isp, ISP_LOGERR, "Flash F/W load failed"); - return; - } + /* Drop reference to ispfw(4) firmware */ + if (isp->isp_osinfo.ispfw != NULL) + firmware_put(isp->isp_osinfo.ispfw, FIRMWARE_UNLOAD); } else { - isp_prt(isp, ISP_LOGDEBUG2, "skipping f/w download"); + isp_prt(isp, ISP_LOGCONFIG, + "Skipping ispfw(4) firmware download"); } - /* - * If we loaded firmware, verify its checksum - */ + /* If we loaded firmware, verify its checksum. */ if (loaded_fw) { MBSINIT(&mbs, MBOX_VERIFY_CHECKSUM, MBLOGNONE, 0); mbs.param[1] = code_org >> 16; mbs.param[2] = code_org; isp_mboxcmd(isp, &mbs); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { - isp_prt(isp, ISP_LOGERR, dcrc); + isp_prt(isp, ISP_LOGERR, "%s: 0x%x", dcrc, + (mbs.param[2] << 16 | mbs.param[1])); + return; + } + } else if (IS_26XX(isp)) { + isp_prt(isp, ISP_LOGCONFIG, + "Instruct RISC to load firmware from flash by itself"); + MBSINIT(&mbs, MBOX_LOAD_FLASH_FIRMWARE, MBLOGALL, 5000000); + isp_mboxcmd(isp, &mbs); + if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { + isp_prt(isp, ISP_LOGERR, "Flash F/W load failed"); return; } } @@ -434,9 +559,27 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) mbs.param[2] = code_org; if (!IS_26XX(isp)) mbs.param[3] = loaded_fw ? 0 : 1; + mbs.param[4] = 0; + if (IS_27XX(isp)) + mbs.param[4] |= 0x08; /* NVME_ENABLE_FLAG */ + mbs.param[11] = 0; isp_mboxcmd(isp, &mbs); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) return; + fcp->fw_ability_mask = (mbs.param[3] << 16) | mbs.param[2]; + isp_prt(isp, ISP_LOGDEBUG0, "Firmware ability mask: 0x%x", + fcp->fw_ability_mask); + if (IS_26XX(isp)) { + fcp->max_supported_speed = mbs.param[2] & (0x1 | 0x2); + isp_prt(isp, ISP_LOGINFO, "Maximum supported speed: %s", + fcp->max_supported_speed == 0 ? "16Gbit/s" : + fcp->max_supported_speed == 1 ? "32Gbit/s" : + fcp->max_supported_speed == 2 ? "64Gbit/s" : "unknown"); + } + if (IS_28XX(isp) && (mbs.param[5] & 0x400)) { + isp_prt(isp, ISP_LOGINFO, + "HW supports EDIF (Encryption of data in flight)"); + } /* * Ask the chip for the current firmware version. @@ -452,103 +595,160 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) isp->isp_fwrev[1] = mbs.param[2]; isp->isp_fwrev[2] = mbs.param[3]; isp->isp_fwattr = mbs.param[6]; - isp->isp_fwattr |= ((uint64_t) mbs.param[15]) << 16; - if (isp->isp_fwattr & ISP2400_FW_ATTR_EXTNDED) { - isp->isp_fwattr |= - (((uint64_t) mbs.param[16]) << 32) | - (((uint64_t) mbs.param[17]) << 48); + isp->isp_fwattr_h = mbs.param[15]; + if (isp->isp_fwattr & ISP_FW_ATTR_EXTNDED) { + isp->isp_fwattr_ext[0] = mbs.param[16]; + isp->isp_fwattr_ext[1] = mbs.param[17]; } isp_prt(isp, ISP_LOGCONFIG, "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d", - btype, isp->isp_revision, dodnld? "loaded" : "resident", isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]); + btype, isp->isp_revision, dodnld ? "loaded" : "resident", + isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]); + snprintf(fcp->fw_version_run, sizeof(fcp->fw_version_run), + "%u.%u.%u", isp->isp_fwrev[0], isp->isp_fwrev[1], + isp->isp_fwrev[2]); + if (!dodnld && !IS_26XX(isp)) + snprintf(fcp->fw_version_flash, sizeof(fcp->fw_version_flash), + "%s", fcp->fw_version_run); fwt = isp->isp_fwattr; buf = FCPARAM(isp, 0)->isp_scanscratch; - ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "Attributes:"); - if (fwt & ISP2400_FW_ATTR_CLASS2) { - fwt ^=ISP2400_FW_ATTR_CLASS2; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "FW Attributes Lower:"); + if (fwt & ISP_FW_ATTR_CLASS2) { + fwt ^= ISP_FW_ATTR_CLASS2; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s Class2", buf); } - if (fwt & ISP2400_FW_ATTR_IP) { - fwt ^=ISP2400_FW_ATTR_IP; + if (fwt & ISP_FW_ATTR_IP) { + fwt ^= ISP_FW_ATTR_IP; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s IP", buf); } - if (fwt & ISP2400_FW_ATTR_MULTIID) { - fwt ^=ISP2400_FW_ATTR_MULTIID; + if (fwt & ISP_FW_ATTR_MULTIID) { + fwt ^= ISP_FW_ATTR_MULTIID; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s MultiID", buf); } - if (fwt & ISP2400_FW_ATTR_SB2) { - fwt ^=ISP2400_FW_ATTR_SB2; + if (fwt & ISP_FW_ATTR_SB2) { + fwt ^= ISP_FW_ATTR_SB2; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s SB2", buf); } - if (fwt & ISP2400_FW_ATTR_T10CRC) { - fwt ^=ISP2400_FW_ATTR_T10CRC; + if (fwt & ISP_FW_ATTR_T10CRC) { + fwt ^= ISP_FW_ATTR_T10CRC; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s T10CRC", buf); } - if (fwt & ISP2400_FW_ATTR_VI) { - fwt ^=ISP2400_FW_ATTR_VI; + if (fwt & ISP_FW_ATTR_VI) { + fwt ^= ISP_FW_ATTR_VI; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VI", buf); } - if (fwt & ISP2400_FW_ATTR_MQ) { - fwt ^=ISP2400_FW_ATTR_MQ; + if (fwt & ISP_FW_ATTR_MQ) { + fwt ^= ISP_FW_ATTR_MQ; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s MQ", buf); } - if (fwt & ISP2400_FW_ATTR_MSIX) { - fwt ^=ISP2400_FW_ATTR_MSIX; + if (fwt & ISP_FW_ATTR_MSIX) { + fwt ^= ISP_FW_ATTR_MSIX; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s MSIX", buf); } - if (fwt & ISP2400_FW_ATTR_FCOE) { - fwt ^=ISP2400_FW_ATTR_FCOE; + if (fwt & ISP_FW_ATTR_FCOE) { + fwt ^= ISP_FW_ATTR_FCOE; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s FCOE", buf); } - if (fwt & ISP2400_FW_ATTR_VP0) { - fwt ^= ISP2400_FW_ATTR_VP0; + if (fwt & ISP_FW_ATTR_VP0) { + fwt ^= ISP_FW_ATTR_VP0; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VP0_Decoupling", buf); } - if (fwt & ISP2400_FW_ATTR_EXPFW) { - fwt ^= ISP2400_FW_ATTR_EXPFW; + if (fwt & ISP_FW_ATTR_EXPFW) { + fwt ^= ISP_FW_ATTR_EXPFW; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s (Experimental)", buf); } - if (fwt & ISP2400_FW_ATTR_HOTFW) { - fwt ^= ISP2400_FW_ATTR_HOTFW; + if (fwt & ISP_FW_ATTR_HOTFW) { + fwt ^= ISP_FW_ATTR_HOTFW; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s HotFW", buf); } - fwt &= ~ISP2400_FW_ATTR_EXTNDED; - if (fwt & ISP2400_FW_ATTR_EXTVP) { - fwt ^= ISP2400_FW_ATTR_EXTVP; + fwt &= ~ISP_FW_ATTR_EXTNDED; + if (fwt) { + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), + "%s (unknown 0x%04x)", buf, fwt); + } + isp_prt(isp, ISP_LOGCONFIG, "%s", buf); + + fwt = isp->isp_fwattr_h; + buf = FCPARAM(isp, 0)->isp_scanscratch; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "FW Attributes Upper:"); + if (fwt & ISP_FW_ATTR_H_EXTVP) { + fwt ^= ISP_FW_ATTR_H_EXTVP; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s ExtVP", buf); } - if (fwt & ISP2400_FW_ATTR_VN2VN) { - fwt ^= ISP2400_FW_ATTR_VN2VN; + if (fwt & ISP_FW_ATTR_H_VN2VN) { + fwt ^= ISP_FW_ATTR_H_VN2VN; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VN2VN", buf); } - if (fwt & ISP2400_FW_ATTR_EXMOFF) { - fwt ^= ISP2400_FW_ATTR_EXMOFF; + if (fwt & ISP_FW_ATTR_H_EXMOFF) { + fwt ^= ISP_FW_ATTR_H_EXMOFF; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s EXMOFF", buf); } - if (fwt & ISP2400_FW_ATTR_NPMOFF) { - fwt ^= ISP2400_FW_ATTR_NPMOFF; + if (fwt & ISP_FW_ATTR_H_NPMOFF) { + fwt ^= ISP_FW_ATTR_H_NPMOFF; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NPMOFF", buf); } - if (fwt & ISP2400_FW_ATTR_DIFCHOP) { - fwt ^= ISP2400_FW_ATTR_DIFCHOP; + if (fwt & ISP_FW_ATTR_H_DIFCHOP) { + fwt ^= ISP_FW_ATTR_H_DIFCHOP; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s DIFCHOP", buf); } - if (fwt & ISP2400_FW_ATTR_SRIOV) { - fwt ^= ISP2400_FW_ATTR_SRIOV; + if (fwt & ISP_FW_ATTR_H_SRIOV) { + fwt ^= ISP_FW_ATTR_H_SRIOV; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s SRIOV", buf); } - if (fwt & ISP2400_FW_ATTR_ASICTMP) { - fwt ^= ISP2400_FW_ATTR_ASICTMP; + if (fwt & ISP_FW_ATTR_H_NVME) { + fwt ^= ISP_FW_ATTR_H_NVME; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NVMe", buf); + } + if (fwt & ISP_FW_ATTR_H_NVME_UP) { + fwt ^= ISP_FW_ATTR_H_NVME_UP; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NVMe(updated)", buf); + } + if (fwt & (ISP_FW_ATTR_H_NVME_FB)) { + fwt ^= (ISP_FW_ATTR_H_NVME_FB); + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NVMe(first burst)", buf); + } + if (fwt) { + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), + "%s (unknown 0x%04x)", buf, fwt); + } + isp_prt(isp, ISP_LOGCONFIG, "%s", buf); + + fwt = isp->isp_fwattr_ext[0]; + buf = FCPARAM(isp, 0)->isp_scanscratch; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "FW Ext. Attributes Lower:"); + if (fwt & ISP_FW_ATTR_E0_ASICTMP) { + fwt ^= ISP_FW_ATTR_E0_ASICTMP; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s ASICTMP", buf); } - if (fwt & ISP2400_FW_ATTR_ATIOMQ) { - fwt ^= ISP2400_FW_ATTR_ATIOMQ; + if (fwt & ISP_FW_ATTR_E0_ATIOMQ) { + fwt ^= ISP_FW_ATTR_E0_ATIOMQ; ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s ATIOMQ", buf); } + if (fwt & ISP_FW_ATTR_E0_EDIF) { + fwt ^= ISP_FW_ATTR_E0_EDIF; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s EDIF", buf); + } + if (fwt & ISP_FW_ATTR_E0_SCM) { + fwt ^= ISP_FW_ATTR_E0_SCM; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s SCM", buf); + } + if (fwt & ISP_FW_ATTR_E0_NVME2) { + fwt ^= ISP_FW_ATTR_E0_NVME2; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s NVMe-2", buf); + } if (fwt) { - ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s (unknown 0x%08x%08x)", buf, - (uint32_t) (fwt >> 32), (uint32_t) fwt); + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), + "%s (unknown 0x%04x)", buf, fwt); + } + isp_prt(isp, ISP_LOGCONFIG, "%s", buf); + + fwt = isp->isp_fwattr_ext[1]; + buf = FCPARAM(isp, 0)->isp_scanscratch; + ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "FW Ext. Attributes Upper:"); + if (fwt) { + ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), + "%s (unknown 0x%04x)", buf, fwt); } isp_prt(isp, ISP_LOGCONFIG, "%s", buf); @@ -3801,14 +4001,14 @@ static const uint32_t mbpfc[] = { ISP_FC_OPMAP(0x01, 0x01), /* 0x00: MBOX_NO_OP */ ISP_FC_OPMAP(0x1f, 0x01), /* 0x01: MBOX_LOAD_RAM */ ISP_FC_OPMAP_HALF(0x07, 0xff, 0x00, 0x1f), /* 0x02: MBOX_EXEC_FIRMWARE */ - ISP_FC_OPMAP(0xdf, 0x01), /* 0x03: MBOX_DUMP_RAM */ + ISP_FC_OPMAP(0x01, 0x07), /* 0x03: MBOX_LOAD_FLASH_FIRMWARE */ ISP_FC_OPMAP(0x07, 0x07), /* 0x04: MBOX_WRITE_RAM_WORD */ ISP_FC_OPMAP(0x03, 0x07), /* 0x05: MBOX_READ_RAM_WORD */ ISP_FC_OPMAP_FULL(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff), /* 0x06: MBOX_MAILBOX_REG_TEST */ ISP_FC_OPMAP(0x07, 0x07), /* 0x07: MBOX_VERIFY_CHECKSUM */ ISP_FC_OPMAP_FULL(0x0, 0x0, 0x0, 0x01, 0x0, 0x3, 0x80, 0x7f), /* 0x08: MBOX_ABOUT_FIRMWARE */ ISP_FC_OPMAP(0xdf, 0x01), /* 0x09: MBOX_LOAD_RISC_RAM_2100 */ - ISP_FC_OPMAP(0xdf, 0x01), /* 0x0a: DUMP RAM */ + ISP_FC_OPMAP(0xdf, 0x01), /* 0x0a: MBOX_DUMP_RISC_RAM_2100 */ ISP_FC_OPMAP_HALF(0x1, 0xff, 0x0, 0x01), /* 0x0b: MBOX_LOAD_RISC_RAM */ ISP_FC_OPMAP(0x00, 0x00), /* 0x0c: */ ISP_FC_OPMAP_HALF(0x1, 0x0f, 0x0, 0x01), /* 0x0d: MBOX_WRITE_RAM_WORD_EXTENDED */ @@ -3940,14 +4140,14 @@ static const char *fc_mbcmd_names[] = { "NO-OP", /* 00h */ "LOAD RAM", "EXEC FIRMWARE", - "DUMP RAM", + "LOAD FLASH FIRMWARE", "WRITE RAM WORD", "READ RAM WORD", "MAILBOX REG TEST", "VERIFY CHECKSUM", "ABOUT FIRMWARE", "LOAD RAM (2100)", - "DUMP RAM", + "DUMP RAM (2100)", "LOAD RISC RAM", "DUMP RISC RAM", "WRITE RAM WORD EXTENDED", @@ -4084,7 +4284,7 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp) obits = ISP_FC_OBITS(opcode); if (cname == NULL) { cname = tname; - ISP_SNPRINTF(tname, sizeof tname, "opcode %x", opcode); + ISP_SNPRINTF(tname, sizeof(tname), "opcode %x", opcode); } isp_prt(isp, ISP_LOGDEBUG3, "Mailbox Command '%s'", cname); @@ -4219,7 +4419,7 @@ out: xname = "TIMEOUT"; break; default: - ISP_SNPRINTF(mname, sizeof mname, "error 0x%x", mbp->param[0]); + ISP_SNPRINTF(mname, sizeof(mname), "error 0x%x", mbp->param[0]); xname = mname; break; } @@ -4279,7 +4479,7 @@ isp_setdfltfcparm(ispsoftc_t *isp, int chan) * Give a couple of tries at reading NVRAM. */ for (i = 0; i < 2; i++) { - j = isp_read_nvram(isp, chan); + j = isp_read_nvram(isp); if (j == 0) { break; } @@ -4336,50 +4536,49 @@ cleanup: /* * NVRAM Routines */ -static int -isp_read_nvram(ispsoftc_t *isp, int bus) +static inline uint32_t +flash_data_addr(ispsoftc_t *isp, uint32_t faddr) { fcparam *fcp = FCPARAM(isp, 0); - int r = 0; - if (isp->isp_type != ISP_HA_FC_2600) { - if (IS_28XX(isp)) { - fcp->flash_data_addr = ISP28XX_BASE_ADDR; - fcp->flt_region_flt = ISP28XX_FLT_ADDR; - } else if (IS_27XX(isp)) { - fcp->flash_data_addr = ISP27XX_BASE_ADDR; - fcp->flt_region_flt = ISP27XX_FLT_ADDR; - } else if (IS_25XX(isp)) { - fcp->flash_data_addr = ISP25XX_BASE_ADDR; - fcp->flt_region_flt = ISP25XX_FLT_ADDR; - } else { - fcp->flash_data_addr = ISP24XX_BASE_ADDR; - fcp->flt_region_flt = ISP24XX_FLT_ADDR; - } - fcp->flt_length = 0; - r = isp_read_flthdr_2xxx(isp); - if (r == 0) { - isp_read_flt_2xxx(isp); - } else { /* fallback to hardcoded NVRAM address */ - if (IS_28XX(isp)) { - fcp->flt_region_nvram = 0x300000; - } else if (IS_27XX(isp)) { - fcp->flash_data_addr = 0x7fe7c000; - fcp->flt_region_nvram = 0; - } else if (IS_25XX(isp)) { - fcp->flt_region_nvram = 0x48000; - } else { - fcp->flash_data_addr = 0x7ffe0000; - fcp->flt_region_nvram = 0; - } - fcp->flt_region_nvram += ISP2400_NVRAM_PORT_ADDR(isp->isp_port); + return (fcp->flash_data_addr + faddr); +} + +static int +isp_read_flash_dword(ispsoftc_t *isp, uint32_t addr, uint32_t *data) +{ + int loops = 0; + + ISP_WRITE(isp, BIU2400_FLASH_ADDR, addr & ~0x80000000); + for (loops = 0; loops < 30000; loops++) { + if (ISP_READ(isp, BIU2400_FLASH_ADDR & 0x80000000)) { + *data = ISP_READ(isp, BIU2400_FLASH_DATA); + return (ISP_SUCCESS); } - } else { - fcp->flash_data_addr = 0x7fe7c000; - fcp->flt_region_nvram = 0; - fcp->flt_region_nvram += ISP2400_NVRAM_PORT_ADDR(isp->isp_port); + ISP_DELAY(10); } - return (isp_read_nvram_2400(isp)); + isp_prt(isp, ISP_LOGERR, + "Flash read dword at 0x%x timeout.", addr); + *data = 0xffffffff; + return (ISP_FUNCTION_TIMEOUT); +} + +static int +isp_read_flash_data(ispsoftc_t *isp, uint32_t *dwptr, uint32_t faddr, uint32_t dwords) +{ + int loops = 0; + int rval = ISP_SUCCESS; + + /* Dword reads to flash. */ + faddr = flash_data_addr(isp, faddr); + for (loops = 0; loops < dwords; loops++, faddr++, dwptr++) { + rval = isp_read_flash_dword(isp, faddr, dwptr); + if (rval != ISP_SUCCESS) + break; + htole32(*((uint32_t *)(dwptr))); + } + + return (rval); } static void @@ -4388,22 +4587,19 @@ isp_rd_2xxx_flash(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) fcparam *fcp = FCPARAM(isp, 0); int loops = 0; uint32_t base = fcp->flash_data_addr; - uint32_t tmp = 0; - ISP_WRITE(isp, BIU2400_FLASH_ADDR, base + addr); - for (loops = 0; loops < 5000; loops++) { + ISP_WRITE(isp, BIU2400_FLASH_ADDR, (base + addr) & ~0x80000000); + for (loops = 0; loops < 30000; loops++) { ISP_DELAY(10); - tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); - if ((tmp & (1U << 31)) != 0) { - break; + if (ISP_READ(isp, BIU2400_FLASH_ADDR & 0x80000000)) { + *rp = ISP_READ(isp, BIU2400_FLASH_DATA); + ISP_SWIZZLE_NVRAM_LONG(isp, rp); + return; } } - if (tmp & (1U << 31)) { - *rp = ISP_READ(isp, BIU2400_FLASH_DATA); - ISP_SWIZZLE_NVRAM_LONG(isp, rp); - } else { - *rp = 0xffffffff; - } + isp_prt(isp, ISP_LOGERR, + "Flash read dword at 0x%x timeout.", (base + addr)); + *rp = 0xffffffff; } static int @@ -4418,8 +4614,7 @@ isp_read_flthdr_2xxx(ispsoftc_t *isp) addr = fcp->flt_region_flt; dptr = (uint32_t *) flthdr_data; - isp_prt(isp, ISP_LOGDEBUG0, - "FLTL[DEF]: 0x%x", addr); + isp_prt(isp, ISP_LOGDEBUG0, "FLTL[DEF]: 0x%x", addr); for (lwrds = 0; lwrds < FLT_HEADER_SIZE >> 2; lwrds++) { isp_rd_2xxx_flash(isp, addr++, dptr++); } @@ -4651,8 +4846,8 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) break; } } - isp_prt(isp, ISP_LOGDEBUG0, - "FLT[FLT]: boot=0x%x fw=0x%x vpd_nvram=0x%x vpd=0x%x nvram 0x%x " + isp_prt(isp, ISP_LOGCONFIG, + "FLT[FLT]: boot=0x%x fw=0x%x vpd_nvram=0x%x vpd=0x%x nvram=0x%x " "fdt=0x%x flt=0x%x npiv=0x%x fcp_prif_cfg=0x%x", fcp->flt_region_boot, fcp->flt_region_fw, fcp->flt_region_vpd_nvram, fcp->flt_region_vpd, fcp->flt_region_nvram, fcp->flt_region_fdt, @@ -4662,15 +4857,465 @@ isp_parse_flt_2xxx(ispsoftc_t *isp, uint8_t *flt_data) return (0); } +static void +isp_print_image(ispsoftc_t *isp, char *name, struct isp_image_status *image_status) +{ + isp_prt(isp, ISP_LOGDEBUG0, + "%s %s: mask=0x%02x gen=0x%04x ver=%u.%u map=0x%01x sum=0x%08x sig=0x%08x", + name, "status", + image_status->image_status_mask, + le16toh(image_status->generation), + image_status->ver_major, + image_status->ver_minor, + image_status->bitmap, + le32toh(image_status->checksum), + le32toh(image_status->signature)); +} + +static bool +isp_check_aux_image_status_signature(struct isp_image_status *image_status) +{ + unsigned long signature = le32toh(image_status->signature); + + return (signature != ISP28XX_AUX_IMG_STATUS_SIGN); +} + +static bool +isp_check_image_status_signature(struct isp_image_status *image_status) +{ + unsigned long signature = le32toh(image_status->signature); + + return ((signature != ISP27XX_IMG_STATUS_SIGN) && + (signature != ISP28XX_IMG_STATUS_SIGN)); +} + +static unsigned long +isp_image_status_checksum(struct isp_image_status *image_status) +{ + uint32_t *p = (uint32_t *)image_status; + unsigned int n = sizeof(*image_status) / sizeof(*p); + uint32_t sum = 0; + + for ( ; n--; p++) + sum += le32toh(*((uint32_t *)(p))); + + return (sum); +} + +static inline unsigned int +isp_component_bitmask(struct isp_image_status *aux, unsigned int bitmask) +{ + return (aux->bitmap & bitmask ? + ISP27XX_SECONDARY_IMAGE : ISP27XX_PRIMARY_IMAGE); +} + +static void +isp_component_status(struct active_regions *active_regions, struct isp_image_status *aux) +{ + active_regions->aux.board_config = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_BOARD_CONFIG); + + active_regions->aux.vpd_nvram = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_VPD_NVRAM); + + active_regions->aux.npiv_config_0_1 = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_NPIV_CONFIG_0_1); + + active_regions->aux.npiv_config_2_3 = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_NPIV_CONFIG_2_3); + + active_regions->aux.nvme_params = + isp_component_bitmask(aux, ISP28XX_AUX_IMG_NVME_PARAMS); +} + +static int +isp_compare_image_generation(ispsoftc_t *isp, + struct isp_image_status *pri_image_status, + struct isp_image_status *sec_image_status) +{ + /* calculate generation delta as uint16 (this accounts for wrap) */ + int16_t delta = + le16toh(pri_image_status->generation) - + le16toh(sec_image_status->generation); + + isp_prt(isp, ISP_LOGDEBUG0, "generation delta = %d", delta); + + return (delta); +} + *** 881 LINES SKIPPED *** From nobody Fri Jan 19 16:53:36 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm0K0j7Mz56v0t; Fri, 19 Jan 2024 16:53:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm0J57wJz49x5; Fri, 19 Jan 2024 16:53:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683216; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EL88yJgJY0MENFXu8Kr45OhdCyqoAbbhMrW884e+gqU=; b=IwJIrHzc0R1d9sj7jSejGrEquNz+50sKRR8Qff5Fvz7DWGWKAjZpAzHxnTYacx+ea+zqgU 9PlDdKlmokugYK0j14x5QOURt6zO+Z/80TmfZlc/9d1jQBhrI2AoG6dBDce9ddX7/9EYhy je1teTz6T7YF4v++WLvS2ksJoHA/b4KWn4SC+i4acCDJJWUWciXCy0qYGiMTtfE6H4h0ZZ 8inBBMQqlwX62H/8LJGBBHZvM7g+7z3WhxcBP1B3TshSZdvSuo2jlKI9KGRDScu+SwfKFA r2Lj2noaEwG6aBpPycjZnVTaMMCPL7nMZZsaSVkN16s6XVkTDL2PdDwUE/VnHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683216; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EL88yJgJY0MENFXu8Kr45OhdCyqoAbbhMrW884e+gqU=; b=DCn1N9B5SNCSeXpqBaroKLT0pXhXUKk6cXn/RlsffGt9ji91WTG43w+7k1AnJGWMHXsJg9 0w16+DAL8zg8wd61kZGNZcUIa/aZvNeUimVNTeERCHOkJp+Zn3ufK5G2TciSLhOUFbuS74 zoqnSdmLC5oBT1iL2mIz5e6VHF50KsVnVCN8LM8CYnZWmeEpsFcX/+n6G+K0JsYUkF5mXd 82ftpnKCaCEiWXHdUeCf7Wst/PQhxzUIjoSvFgvMZS0WJOR6bu4Yzbl+WtRUvaDjruxmHV QBUDnagbdgPSejGFdSh6UsIlECxjIM8jmsEXvF10QrDLDTZzz8CBPE3+2W3FcA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683216; a=rsa-sha256; cv=none; b=YFDUN2+/GBkiMghm2X1np/ydO0K/2Om0eP+yLhm2SJ+H1AHpC8Tn2tha8+bMVX+HyXeQ4p zNyfnIHQdIPM8Eyj55V3BgttdozWWOTStvt7fmL5VlAN5dNJcDmBha1bMcX97gEwmbdGs/ fCmLpDZMY3Qr3966lTBY1BkRJTKxWPQVz8coQnvKlCf4HfVpcMuDVi6srpRjtfjgTQqNa5 eQlzJfoizqyKF8ydVUO9vbg4rqxrBDEW9QecsZ1qr6Ff+06uZMIoj03783CvYny49LON92 hgCHjrC4HsWzNzyv9BcjUKCaYQAZFPeDDlx+CgrNdjoED8d5CQ2PviRQDaLoqQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm0J49pzzyr6; Fri, 19 Jan 2024 16:53:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGra3b060251; Fri, 19 Jan 2024 16:53:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGraVJ060248; Fri, 19 Jan 2024 16:53:36 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:53:36 GMT Message-Id: <202401191653.40JGraVJ060248@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: bdc2003fc517 - stable/13 - isp: Fix endianness conversion in isp_read_flash_data() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: bdc2003fc51734ed3bb36f82d8e7dcd5c30f41ef Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=bdc2003fc51734ed3bb36f82d8e7dcd5c30f41ef commit bdc2003fc51734ed3bb36f82d8e7dcd5c30f41ef Author: Mark Johnston AuthorDate: 2023-12-31 23:52:52 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:52:44 +0000 isp: Fix endianness conversion in isp_read_flash_data() Reported by: Jenkins Fixes: 10ed63fc06cb ("isp(4): Rework firmware handling/loading") (cherry picked from commit 91d2a093dfaccdf288db663b6e9d47539ea1c1bf) --- sys/dev/isp/isp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index aa2f1fb74c59..b53171add5f5 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -4575,7 +4575,7 @@ isp_read_flash_data(ispsoftc_t *isp, uint32_t *dwptr, uint32_t faddr, uint32_t d rval = isp_read_flash_dword(isp, faddr, dwptr); if (rval != ISP_SUCCESS) break; - htole32(*((uint32_t *)(dwptr))); + *dwptr = htole32(*dwptr); } return (rval); From nobody Fri Jan 19 16:58:04 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm5V55Dcz56vG9; Fri, 19 Jan 2024 16:58:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm5V3Jrzz4H6y; Fri, 19 Jan 2024 16:58:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683486; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BSUdNUTPaomLTQfAbzEgoJUReTbED2BX0q4IfGys69o=; b=D2WDYILU5smjVsrXki8GZmB37GlxkbPrkeehnQpaLj0XRp6pjDhlvN3S2vfOFP3hgn0tqD 7NW7UA4zL0cmC7r/1MeqoiIP3GP1iiHgLQx0wL9yXzUt8QOVVjVGwjnVAGZcyjCwCvi1UL KuBgrWT9GS7jbj0cDNkA1uAeOdlPeDUYcNnmEyIeNZ9JTu1B/pXfhm0TIr4mmXaetHMzvh DUexBPbiCud//A35O1VuvtHQv6/7fqhY01Tqa0zP7EQ+IaI4pnEivt5/JESyR+R5R36D+g zferWbRWRcoRuuOz0jAN065VxyoDKpdQH27GpCTr5KDKAqMg0/F/gadkplgXSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683486; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BSUdNUTPaomLTQfAbzEgoJUReTbED2BX0q4IfGys69o=; b=tCoOD2RAVtP8CrtT9VD3AZC8m8ep9baKD6DIpQKj/uSDbWB/NXCSuX8JYg8tf+BN9q/IrC wdAjWMzDAq++jjdB3yK4ENOAftENm1IiYf++6+KAyVDuQMauTaxV5JrvREj3WlkfYDwMff e6HnnwIj+KxgrzwtUX7s3l0IN5CdRjur/ZSYBI17KZPL44WSAAF0Afn90ad0S6SByTBtwK ppxXFCFAlJffXd0bxtZvoucMgWvlKFZ1rGTZ7UffLVJy26zG9vwSL1L6dAT8imaxV0+Tyq TQ9UODcil+YU39q/lKDt8FGjbml+Rmo5dQgj+HFGZCZU6MbZXd/zGWJXDJbpig== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683486; a=rsa-sha256; cv=none; b=UqG5n5evOu8dy+bYeUB/XgNsKuG3gOfiNPSJ9RjexoHsz/VthGezrCFZYLGCP0JNEuVId9 lFHbtV1pVeR1/QebxA7r+7mR9sKkvOWvxQBQBNmOhxoToARl7jIVbDzSWHkWe+ZqBAm8YB XeUySxWRaYAxUnWqgXI1xrcf/kRinRWxYOBYQ5pm+3A+dOh1/oZqJ65QTNWAlg+DukDqNf soX8Fb2hdRd+pw5VfQEKgtPRInkaYQ6l4tNiX/qv2WFIc5kctrTrrzHK+NqcCQK8NZjV97 kzV5py1C+bZFyV15+ZeRzY2qKiEjhidffLViU1tcc3Wab/clTifAxonhYfHttw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm5V2NWtz10K6; Fri, 19 Jan 2024 16:58:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGw6ID061089; Fri, 19 Jan 2024 16:58:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGw4xD061080; Fri, 19 Jan 2024 16:58:04 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:58:04 GMT Message-Id: <202401191658.40JGw4xD061080@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 4f30677080c3 - stable/14 - ispfw(4): Update and add firmware List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4f30677080c36bb36d5096cf275347baffd2a2f3 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=4f30677080c36bb36d5096cf275347baffd2a2f3 commit 4f30677080c36bb36d5096cf275347baffd2a2f3 Author: Joerg Pulz AuthorDate: 2023-10-27 14:02:07 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:56:17 +0000 ispfw(4): Update and add firmware Update 25xx firmware: version 8.8.207 Add 26xx firmware: version 8.8.231 Add 27xx firmware: version 9.12.0 Add 28xx firmware: version 9.12.1 Remove BUGS section from manpage as we now have firmware for all supported controllers. PR: 273263 MFC after: 1 month Pull Request: https://github.com/freebsd/freebsd-src/pull/877 Sponsored by: Technical University of Munich (cherry picked from commit b0c6b06836351b3908ba5b2a847c89c42d1a46c3) --- share/man/man4/ispfw.4 | 5 +- sys/dev/ispfw/asm_2500.h | 29843 +++++++++++++------------- sys/dev/ispfw/asm_2600.h | 22384 ++++++++++++++++++++ sys/dev/ispfw/asm_2700.h | 27431 ++++++++++++++++++++++++ sys/dev/ispfw/asm_2800.h | 38311 ++++++++++++++++++++++++++++++++++ sys/dev/ispfw/ispfw.c | 45 + sys/modules/ispfw/Makefile | 3 + sys/modules/ispfw/isp_2600/Makefile | 35 + sys/modules/ispfw/isp_2700/Makefile | 35 + sys/modules/ispfw/isp_2800/Makefile | 35 + 10 files changed, 102626 insertions(+), 15501 deletions(-) diff --git a/share/man/man4/ispfw.4 b/share/man/man4/ispfw.4 index 1dedf097acfa..b2f952ce4ba1 100644 --- a/share/man/man4/ispfw.4 +++ b/share/man/man4/ispfw.4 @@ -20,7 +20,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd April 25, 2023 +.Dd October 27, 2023 .Dt ISPFW 4 .Os .Sh NAME @@ -58,6 +58,3 @@ This driver was written by .An Matthew Jacob . Later improvement was done by .An Alexander Motin Aq Mt mav@FreeBSD.org . -.Sh BUGS -Only firmware for the 24xx and 25xx based cards is included in -.Nm . diff --git a/sys/dev/ispfw/asm_2500.h b/sys/dev/ispfw/asm_2500.h index 9ae4284e26ff..7623be0f15ea 100644 --- a/sys/dev/ispfw/asm_2500.h +++ b/sys/dev/ispfw/asm_2500.h @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-3-Clause * - * Copyright (C) 2005-2014 by Qlogic, Inc. + * Copyright (C) 2005-2019 by Qlogic, Inc. * All rights reserved. * * Redistribution and use in source and binary forms are permitted provided @@ -31,31 +31,31 @@ * * * ******************************************************************** */ /* - * Firmware Version 8.07.00 (2017) + * Firmware Version 8.08.207 (2019) */ #ifdef ISP_2500 static const uint32_t isp_2500_risc_code[] = { - 0x0501f06b, 0x00116000, 0x00100000, 0x0000d596, - 0x00000008, 0x00000007, 0x00000000, 0x001090d5, + 0x0501f06b, 0x00115000, 0x00100000, 0x0000c8ea, + 0x00000008, 0x00000008, 0x000000cf, 0x00109095, 0x00000004, 0x00000000, 0x20434f50, 0x59524947, - 0x48542032, 0x30313720, 0x514c4f47, 0x49432043, + 0x48542032, 0x30313920, 0x514c4f47, 0x49432043, 0x4f52504f, 0x52415449, 0x4f4e2020, 0x20495350, 0x32357878, 0x20466972, 0x6d776172, 0x65202020, - 0x56657273, 0x696f6e20, 0x2020382e, 0x30372e30, - 0x30202024, 0x00000000, 0x00000000, 0x00000000, + 0x56657273, 0x696f6e20, 0x2020382e, 0x30382e32, + 0x30372020, 0x24000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00100000, - 0x0000d596, 0xffffffff, 0x00116004, 0x00020000, - 0x00001765, 0xffffffff, 0x0011776e, 0x0000c000, - 0x00000a29, 0x00ffffff, 0x00118197, 0x00008000, - 0x000006c5, 0x00ffffff, 0x0011885c, 0x0000a000, - 0x000006b3, 0x00ffffff, 0x00118f0f, 0x0000400e, + 0x0000c8ea, 0xffffffff, 0x00115004, 0x00020000, + 0x00001386, 0xffffffff, 0x0011638f, 0x0000c000, + 0x000009be, 0x00ffffff, 0x00116d4d, 0x00008000, + 0x000005e1, 0x00ffffff, 0x0011732e, 0x0000a000, + 0x00000692, 0x00ffffff, 0x001179c0, 0x0000400e, 0x00000808, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000009, 0x0000000c, - 0x0000000f, 0x00000012, 0x00000015, 0x00000000, - 0x00000000, 0x0000000f, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000006, 0x00000009, + 0x0000000c, 0x0000000f, 0x00000012, 0x00000000, + 0x00000000, 0x0000000c, 0x00000000, 0x00000000, 0x00000000, 0x00100046, 0x00100045, 0x00000000, - 0x00100046, 0x00000000, 0x00000000, 0x00100046, + 0x00000000, 0x00000000, 0x00000000, 0x00100046, 0x00100045, 0x00100042, 0x00100046, 0x00100045, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100046, 0x00000000, 0x00000000, @@ -63,332 +63,301 @@ static const uint32_t isp_2500_risc_code[] = { 0x00100046, 0x00100046, 0x00000000, 0x00100046, 0x00000000, 0x00000000, 0x00000000, 0x4203f000, 0x00021fff, 0x40000000, 0x4203e000, 0x90000100, - 0x40000000, 0x42000800, 0x00021766, 0x6002f000, + 0x40000000, 0x42000800, 0x00021387, 0x6002f000, 0x608c00e0, 0x50000000, 0x8c000500, 0x05020003, 0x42000800, 0x00020000, 0x45780800, 0x80040800, 0x82040580, 0x00022000, 0x05fe07fc, 0x4178a000, - 0x4200a800, 0x0010d596, 0x42000800, 0x00115530, - 0x40540000, 0x8004b480, 0x0569fa95, 0x0501ffd5, + 0x4200a800, 0x0010c8ea, 0x42000800, 0x00114194, + 0x40540000, 0x8004b480, 0x0561fde9, 0x0501ff57, 0x600c6020, 0x50304800, 0x8c240500, 0x0500001c, - 0x59e00016, 0x8c000504, 0x05020019, 0x0569faec, + 0x59e00016, 0x8c000504, 0x05020019, 0x0561fe40, 0x604808fa, 0x50041000, 0x82081500, 0xfffffffc, 0x90081d43, 0x90081540, 0x84244d00, 0x440c0800, 0x44080800, 0x44246000, 0x64030000, 0x4203e000, 0x70000000, 0x4203e000, 0xb0300000, 0x603ff84e, 0x59e00016, 0x8c000504, 0x05020002, 0x05fe47fd, - 0x84244d40, 0x44246000, 0x0569fad5, 0x64030000, - 0x0501fdf9, 0x4803c856, 0x0509fc18, 0x6413c020, + 0x84244d40, 0x44246000, 0x0561fe29, 0x64030000, + 0x0501fd7e, 0x4803c856, 0x0509fb82, 0x6413c020, 0x4203e000, 0x6000000f, 0x640f70e8, 0x640f78e8, 0x640da8e8, 0x59e00023, 0x8c000500, 0x0502002b, 0x42002800, 0x00100022, 0x58140800, 0x4817c857, 0x4807c857, 0x800409c0, 0x0500000a, 0x58142002, - 0x4813c857, 0x58141003, 0x4c140000, 0x0501ff94, + 0x4813c857, 0x58141003, 0x4c140000, 0x0501ff16, 0x5c002800, 0x0502003d, 0x90142c04, 0x05fdf7f3, 0x42002800, 0x00100022, 0x5814a000, 0x4817c857, 0x4853c857, 0x8050a1c0, 0x05000014, 0x4c140000, 0x5814a801, 0x4857c857, 0x40500000, 0x80540480, 0x0500000b, 0x82540480, 0x0000400e, 0x05020005, - 0x9050a404, 0x0509ffb6, 0x05020028, 0x0501f004, - 0x5814b002, 0x485bc857, 0x0569fa39, 0x5c002800, - 0x90142c04, 0x05fdf7e9, 0x050dfe35, 0x42001000, + 0x9050a404, 0x0509ff20, 0x05020028, 0x0501f004, + 0x5814b002, 0x485bc857, 0x0561fd8d, 0x5c002800, + 0x90142c04, 0x05fdf7e9, 0x050dfd9e, 0x42001000, 0x7ff481fe, 0x59e00002, 0x8c00051e, 0x05020003, 0x42001000, 0x7ff480fe, 0x50081000, 0x480b5095, 0x42002800, 0x00100022, 0x58140801, 0x4817c857, 0x4807c857, 0x800409c0, 0x05000023, 0x58142002, 0x4813c857, 0x58141003, 0x4c140000, 0x82040480, - 0x0000400e, 0x05020004, 0x0509ffc0, 0x4803c856, - 0x0501f003, 0x0501ff5a, 0x05020004, 0x5c002800, + 0x0000400e, 0x05020004, 0x0509ff2a, 0x4803c856, + 0x0501f003, 0x0501fedc, 0x05020004, 0x5c002800, 0x90142c04, 0x05fdf7ed, 0x4803c856, 0x4a03c020, 0x00004010, 0x4a03c011, 0x40100011, 0x05006000, 0x4203e000, 0x40000000, 0x59e00017, 0x60000800, - 0x8c00050a, 0x050a0e18, 0x8d0c0530, 0x050a0e0b, - 0x050a0e0d, 0x6403c017, 0x4203e000, 0x30000001, + 0x8c00050a, 0x050a0d82, 0x8d0c0530, 0x050a0d75, + 0x050a0d77, 0x6403c017, 0x4203e000, 0x30000001, 0x0501f000, 0x4803c856, 0x59e00024, 0x8c000500, - 0x050a0f5e, 0x59e00024, 0x8c00050e, 0x05000003, - 0x4a020200, 0x00003800, 0x0501ffd5, 0x4a03c014, - 0x001c001c, 0x4817c857, 0x0505f803, 0x42002000, - 0x00115530, 0x0569fa01, 0x59a800a4, 0x800001c0, + 0x050a0ec8, 0x59e00024, 0x8c00050e, 0x05000003, + 0x4a020200, 0x00003800, 0x0501ff57, 0x4a03c014, + 0x001c001c, 0x4817c857, 0x0501ff85, 0x42002000, + 0x00114194, 0x0561fd55, 0x59a800a4, 0x800001c0, 0x0500000c, 0x59a800cf, 0x8c000500, 0x05000005, 0x59a8000a, 0x82000480, 0x0013ffff, 0x05001005, - 0x59a820a4, 0x80102000, 0x59a8280a, 0x0569f9f3, - 0x0569fc18, 0x0569fc40, 0x59a8280a, 0x60800812, + 0x59a820a4, 0x80102000, 0x59a8280a, 0x0561fd47, + 0x0561ff6c, 0x0561ff94, 0x59a8280a, 0x60800812, 0x60001802, 0x4807503d, 0x480f529f, 0x900d0420, - 0x800404a0, 0x4803543e, 0x60c01000, 0x0541fadf, - 0x82040c00, 0x00115530, 0x4807500b, 0x600400de, + 0x800404a0, 0x4803543e, 0x60c01000, 0x053dfb59, + 0x82040c00, 0x00114194, 0x4807500b, 0x600400de, 0x50000000, 0x8c000502, 0x05000004, 0x59a800cf, 0x84000540, 0x480350cf, 0x4a03c810, 0x00100000, - 0x4a03c811, 0x0010d596, 0x0501ff98, 0x6447c829, + 0x4a03c811, 0x0010c8ea, 0x0501ff1a, 0x6447c829, 0x59e40001, 0x82000540, 0x0003401f, 0x4803c801, 0x4a03c802, 0x00000933, 0x59e00003, 0x82000540, 0x00240000, 0x4803c003, 0x64ffc019, 0x60701000, - 0x0501fedf, 0x4202c000, 0x00115530, 0x42017800, - 0x00115530, 0x59aab00b, 0x59aaa00b, 0x59aaa80b, + 0x0501fe61, 0x4202c000, 0x00114194, 0x42017800, + 0x00114194, 0x59aab00b, 0x59aaa00b, 0x59aaa80b, 0x59aac83d, 0x4967509e, 0x59a8000b, 0x4803500c, - 0x0505f805, 0x0549fa56, 0x0505f80e, 0x0505f89b, - 0x0509ffde, 0x59a80087, 0x8c000508, 0x05000004, - 0x050dfef8, 0x0525f96e, 0x0511f828, 0x0505f9e7, - 0x0505fff5, 0x0541fae7, 0x0501fc5a, 0x0515f873, - 0x0531fd5c, 0x052dfec9, 0x053df876, 0x050df80f, - 0x0509fe32, 0x4203e000, 0xf0000001, 0x0569fc03, - 0x6403c018, 0x4203e000, 0xa0000001, 0x59a800cf, - 0x80000540, 0x05000004, 0x4203e000, 0x20000551, - 0x0501f003, 0x4203e000, 0x20000511, 0x4203e000, - 0x50010000, 0x05006000, 0x6403c020, 0x05027019, - 0x59e00020, 0x90000582, 0x05020016, 0x4a03c020, - 0x00004000, 0x4a03c011, 0x40000010, 0x05006000, - 0x4203e000, 0x40000000, 0x4df00000, 0x4203e000, - 0x50000000, 0x59e00017, 0x60000800, 0x8c00050a, - 0x0002089a, 0x8d0c0530, 0x050a0d78, 0x000209c1, - 0x5c03e000, 0x6403c017, 0x4203e000, 0x30000001, - 0x6002d800, 0x4203e000, 0xb0600000, 0x59a800da, - 0x4003f800, 0x0001f004, 0x4df00000, 0x4203e000, - 0x50000000, 0x416c0000, 0x90000c88, 0x05021c68, - 0x0c01f803, 0x5c03e000, 0x0001f006, 0x001001bc, - 0x001001cd, 0x001002f2, 0x001001bb, 0x00100431, - 0x001001bb, 0x001001bb, 0x001005c9, 0x0501fc5c, - 0x42000800, 0x0011176f, 0x5804001e, 0x8c000500, - 0x0500000c, 0x84000500, 0x4800081e, 0x6012d800, - 0x0501fe6b, 0x49f3c857, 0x5c000800, 0x5c000000, - 0x82000540, 0x00007e20, 0x4c000000, 0x4c040000, - 0x1c01f000, 0x41780000, 0x800001c0, 0x05020039, - 0x59c4000d, 0x8c00051e, 0x0502001f, 0x59a800aa, - 0x8c000500, 0x05000012, 0x60300830, 0x050dfc45, - 0x90040560, 0x60300830, 0x4c000000, 0x050dfc46, - 0x6041d04e, 0x053dfa12, 0x5c000000, 0x8400050a, - 0x60300830, 0x050dfc40, 0x6191d000, 0x053dfa0c, - 0x59c4000d, 0x8c00051e, 0x0502000b, 0x59c40005, - 0x8c000500, 0x05020008, 0x050dffce, 0x640b50b9, - 0x64075078, 0x6012d800, 0x42000000, 0x00111f4d, - 0x0569f05c, 0x0501fe37, 0x0531f92d, 0x0500000f, - 0x0531f93d, 0x05020032, 0x5994002e, 0x82000580, - 0x0010532a, 0x05020004, 0x5994002d, 0x800001c0, - 0x0502002b, 0x59c40006, 0x82000540, 0x000000c0, - 0x48038806, 0x0501f026, 0x0531f89a, 0x916c0581, - 0x050200c5, 0x59a80042, 0x90000589, 0x050200c2, - 0x497b5040, 0x42000800, 0xffffd815, 0x0511fd51, - 0x42024800, 0x00111fa3, 0x497a4805, 0x64078893, - 0x4a038805, 0x000000f0, 0x0531f919, 0x59c41006, - 0x05020006, 0x82081540, 0x000000f1, 0x82081500, - 0xbbffffff, 0x0501f003, 0x82081540, 0x440000f1, - 0x480b8806, 0x053df9da, 0x0009f9ad, 0x0501f8ab, - 0x050000a9, 0x42000000, 0x00111e28, 0x0569f826, - 0x60c01100, 0x497b50b7, 0x0501f036, 0x0525faf3, - 0x59c400a4, 0x9000050f, 0x90000487, 0x0502109e, - 0x053df9cb, 0x59c400a3, 0x82000500, 0xffefffff, - 0x480388a3, 0x59a800c2, 0x800001c0, 0x05020003, - 0x0529f84a, 0x0501f094, 0x59a80046, 0x84000546, - 0x48035046, 0x0531f8ec, 0x59c41006, 0x05020006, - 0x82081540, 0x44000001, 0x82081500, 0xffffff0f, + 0x0501ff87, 0x0545fa7a, 0x0501ff90, 0x0505f81d, + 0x0509ff48, 0x59a80087, 0x8c000508, 0x05000004, + 0x050dfe61, 0x0521fcd1, 0x050dff91, 0x0505f965, + 0x0505ff67, 0x053dfb61, 0x0501fbde, 0x0511fed9, + 0x0531f819, 0x052df994, 0x0539f8d8, 0x0509ff79, + 0x0509fd9c, 0x4203e000, 0xf0000001, 0x0561ff57, + 0x6403c018, 0x42000000, 0x20000511, 0x4203e000, + 0xa0000001, 0x59a808cf, 0x8c040500, 0x05000002, + 0xb0000540, 0x4003e000, 0x4203e000, 0x50010000, + 0x05006000, 0x6403c020, 0x05027019, 0x59e00020, + 0x90000582, 0x05020016, 0x4a03c020, 0x00004000, + 0x4a03c011, 0x40000010, 0x05006000, 0x4203e000, + 0x40000000, 0x4df00000, 0x4203e000, 0x50000000, + 0x59e00017, 0x60000800, 0x8c00050a, 0x00020894, + 0x8d0c0530, 0x050a0ce3, 0x000209b6, 0x5c03e000, + 0x6403c017, 0x4203e000, 0x30000001, 0x6002d800, + 0x4203e000, 0xb0600000, 0x59a800d6, 0x4003f800, + 0x0001f004, 0x4df00000, 0x4203e000, 0x50000000, + 0x416c0000, 0x90000c88, 0x05021bee, 0x0c01f803, + 0x5c03e000, 0x0001f006, 0x001001bb, 0x001001cc, + 0x001002ea, 0x001001ba, 0x001003b5, 0x001001ba, + 0x001001ba, 0x0010054d, 0x0501fbe2, 0x42000800, + 0x00110a6c, 0x5804001e, 0x8c000500, 0x0500000c, + 0x84000500, 0x4800081e, 0x6012d800, 0x0501fdee, + 0x49f3c857, 0x5c000800, 0x5c000000, 0x82000540, + 0x00007e20, 0x4c000000, 0x4c040000, 0x1c01f000, + 0x41780000, 0x800001c0, 0x05020039, 0x59c4000d, + 0x8c00051e, 0x0502001f, 0x59a800aa, 0x8c000500, + 0x05000012, 0x60300830, 0x050dfbaf, 0x90040560, + 0x60300830, 0x4c000000, 0x050dfbb0, 0x6041d04e, + 0x0539fa70, 0x5c000000, 0x8400050a, 0x60300830, + 0x050dfbaa, 0x6191d000, 0x0539fa6a, 0x59c4000d, + 0x8c00051e, 0x0502000b, 0x59c40005, 0x8c000500, + 0x05020008, 0x050dff38, 0x640b50b9, 0x64075078, + 0x6012d800, 0x42000000, 0x00110f39, 0x0561f3b1, + 0x0501fdba, 0x052dfbeb, 0x0500000f, 0x052dfbfb, + 0x05020032, 0x5994002e, 0x82000580, 0x00104e7c, + 0x05020004, 0x5994002d, 0x800001c0, 0x0502002b, + 0x59c40006, 0x82000540, 0x000000c0, 0x48038806, + 0x0501f026, 0x052dfb58, 0x916c0581, 0x050200be, + 0x59a80042, 0x90000589, 0x050200bb, 0x497b5040, + 0x42000800, 0xffffd815, 0x0511fcc2, 0x42024800, + 0x00110f8f, 0x497a4805, 0x64078893, 0x4a038805, + 0x000000f0, 0x052dfbd7, 0x59c41006, 0x05020006, + 0x82081540, 0x000000f1, 0x82081500, 0xbbffffff, 0x0501f003, 0x82081540, 0x440000f1, 0x480b8806, - 0x497b9005, 0x0501f885, 0x05000083, 0x60000000, - 0x052dfe73, 0x4a038802, 0x0000ffff, 0x4a0378e4, - 0x00003000, 0x42007000, 0x00111ae4, 0x58380401, - 0x8c000508, 0x05020003, 0x4a01a8e4, 0x0000c000, - 0x42000000, 0x00111e1f, 0x0565fff3, 0x59a81040, - 0x600c0800, 0x0009f996, 0x60401100, 0x59a81809, - 0x0521fe9a, 0x59a804d1, 0x82000500, 0xffffff40, - 0x480354d1, 0x59a8024c, 0x84000518, 0x4803524c, + 0x0539fa38, 0x0005feac, 0x0501f8a4, 0x050000a2, + 0x42000000, 0x00110e14, 0x0561fb7b, 0x60c01100, + 0x497b50b7, 0x0501f036, 0x0521fe46, 0x59c400a4, + 0x9000050f, 0x90000487, 0x05021097, 0x0539fa29, + 0x59c400a3, 0x82000500, 0xffefffff, 0x480388a3, + 0x59a800c2, 0x800001c0, 0x05020003, 0x0525fb9d, + 0x0501f08d, 0x59a80046, 0x84000546, 0x48035046, + 0x052dfbaa, 0x59c41006, 0x05020006, 0x82081540, + 0x44000001, 0x82081500, 0xffffff0f, 0x0501f003, + 0x82081540, 0x440000f1, 0x480b8806, 0x497b9005, + 0x0501f87e, 0x0500007c, 0x60000000, 0x052df930, + 0x4a038802, 0x0000ffff, 0x4a0378e4, 0x00003000, + 0x42007000, 0x00110ae1, 0x58380401, 0x8c000508, + 0x05020003, 0x4a01a8e4, 0x0000c000, 0x42000000, + 0x00110e0b, 0x0561fb48, 0x59a81040, 0x600c0800, + 0x0005fe95, 0x60401100, 0x59a81809, 0x0521fa08, 0x59c40001, 0x82000500, 0x00018000, 0x82000580, 0x00018000, 0x59c400a3, 0x05020004, 0x82000540, 0x00001000, 0x0501f003, 0x82000500, 0xffffefff, 0x480388a3, 0x59c80015, 0x84000548, 0x48039015, - 0x050dfb03, 0x59a81008, 0x84081500, 0x480b5008, - 0x850e1d0a, 0x0529ff44, 0x0531f8a5, 0x05000007, + 0x050dfa74, 0x59a81008, 0x84081500, 0x480b5008, + 0x850e1d0a, 0x0529fa94, 0x052dfb6a, 0x05000007, 0x8d0c0506, 0x05000005, 0x640750b7, 0x850e1d0e, - 0x0525fbbc, 0x0501f048, 0x052df84b, 0x05000005, + 0x0521ff16, 0x0501f048, 0x0529fb9b, 0x05000005, 0x59c41002, 0x8408150c, 0x480b8802, 0x0501f017, - 0x0531f897, 0x05020005, 0x59a80049, 0x80000540, - 0x05540e81, 0x0501f011, 0x0555fe7f, 0x59a8024c, + 0x052dfb5c, 0x05020005, 0x59a80049, 0x80000540, + 0x05500d31, 0x0501f011, 0x0551fd2f, 0x59a8024c, 0x8c000506, 0x0502000d, 0x59a80049, 0x80000540, 0x05020007, 0x59a81c4c, 0x820c0580, 0x0000ffff, 0x05000006, 0x8c0c0508, 0x05000004, 0x4a03544c, - 0x0000ffff, 0x0529f8fd, 0x497b504e, 0x497b504d, - 0x497b50b8, 0x0531f87e, 0x59a8124c, 0x05020009, - 0x050df8f5, 0x80001580, 0x59a80050, 0x82000500, + 0x0000ffff, 0x0525fc57, 0x497b504e, 0x497b504d, + 0x497b50b8, 0x052dfb43, 0x59a8124c, 0x05020009, + 0x050df866, 0x80001580, 0x59a80050, 0x82000500, 0xffff0000, 0x80040d40, 0x48075050, 0x0501f005, 0x59a80050, 0x82000500, 0xffff0000, 0x48035050, 0x599c0017, 0x8c00050a, 0x05000002, 0x84081544, - 0x480b524c, 0x0531f86a, 0x05000003, 0x050df8e2, - 0x48078880, 0x60141000, 0x0009fc8e, 0x497b504e, + 0x480b524c, 0x052dfb2f, 0x05000003, 0x050df853, + 0x48078880, 0x60141000, 0x0009f98a, 0x497b504e, 0x497b5047, 0x4a035048, 0x0000ffff, 0x4a01a8e4, - 0x000000c0, 0x600ad800, 0x0531f85d, 0x05000005, + 0x000000c0, 0x600ad800, 0x052dfb22, 0x05000005, 0x59a8024c, 0x9000050c, 0x90000584, 0x05000002, - 0x0511fa80, 0x1c01f000, 0x0521ff6f, 0x05020026, + 0x0511f9ef, 0x1c01f000, 0x0521fada, 0x05020026, 0x599c0019, 0x82000500, 0x0000e000, 0x82000580, 0x00004000, 0x05020020, 0x59c40001, 0x82000d00, 0x00018000, 0x82040580, 0x00010000, 0x05000004, 0x82040580, 0x00008000, 0x05020017, 0x59a800a9, 0x90000483, 0x05001003, 0x90000541, 0x0501f012, - 0x050dfea7, 0x64075078, 0x4a035079, 0xaabbccdd, + 0x050dfe18, 0x64075078, 0x4a035079, 0xaabbccdd, 0x6413506c, 0x6403506d, 0x6012d800, 0x59a800a9, 0x80000000, 0x480350a9, 0x59a800a8, 0x82000500, - 0xfffffff8, 0x90000544, 0x480350a8, 0x0501fd40, - 0x80000580, 0x1c01f000, 0x0525f944, 0x05000051, - 0x59a8024c, 0x90000523, 0x900005a3, 0x0502004d, - 0x0525f943, 0x0500004b, 0x4a038802, 0x0000ffbf, - 0x59a804d1, 0x8c00050c, 0x05020132, 0x8c000506, - 0x0502000b, 0x8c000508, 0x0502012e, 0x84000548, - 0x480354d1, 0x0525f93b, 0x05000004, 0x417a5800, - 0x0559fd2e, 0x0501f127, 0x0501f0ee, 0x8c00050a, - 0x05020038, 0x8400054a, 0x480354d1, 0x497b504e, - 0x497b504d, 0x497b5047, 0x4a035048, 0x0000ffff, - 0x59a8024c, 0x82000500, 0xffffff7c, 0x4803524c, - 0x42024800, 0x00111fa3, 0x59240200, 0x82000500, - 0xffffff1f, 0x48024a00, 0x59a802d1, 0x5924100b, - 0x82081500, 0x00001fff, 0x80080580, 0x05000012, - 0x4d3c0000, 0x4d300000, 0x4d400000, 0x60aa8000, - 0x417a6000, 0x600a7800, 0x41780800, 0x0511fca9, - 0x5c028000, 0x5c026000, 0x5c027800, 0x59a802d1, - 0x5924080b, 0x82040d00, 0xffffe000, 0x80040540, - 0x4802480b, 0x4d300000, 0x417a6000, 0x0511fc4a, - 0x5c026000, 0x4803c856, 0x5924000c, 0x800001c0, - 0x05020006, 0x0001f81f, 0x050000f2, 0x492e480c, - 0x5924000b, 0x48025802, 0x0511fa06, 0x0501f0ed, - 0x59a80048, 0x82000580, 0x0000ffff, 0x05000003, - 0x0511fa00, 0x0501f0e7, 0x0569f837, 0x05000017, - 0x0569f83a, 0x05000008, 0x052dffd1, 0x05000006, - 0x59a8024c, 0x8c000506, 0x0500004e, 0x0529ff7a, - 0x050200dc, 0x80000580, 0x0509ff99, 0x600ed800, - 0x4a035048, 0x0000ffff, 0x4a01a8e4, 0x00000080, - 0x4a038802, 0x0000ffff, 0x850e1d02, 0x0009fbe8, - 0x0501fcb6, 0x0501f0cf, 0x59a8024c, 0x8c00050a, - 0x05020003, 0x8c000506, 0x05000037, 0x8c000500, - 0x05000035, 0x4a038802, 0x0000ffbf, 0x8c000502, - 0x05000031, 0x0525f8ce, 0x05020004, 0x599c0018, - 0x8c000516, 0x05020029, 0x59a8004d, 0x82000580, - 0x0000ffff, 0x05000020, 0x0525f8c5, 0x05000006, - 0x59a804d1, 0x8c000500, 0x05000003, 0x0511fc86, - 0x0501f008, 0x41781800, 0x0569f814, 0x05000002, - 0x60401800, 0x59a8024c, 0x8c00050a, 0x05120ade, - 0x42024800, 0x00111fa3, 0x417a4000, 0x59240200, - 0x82000500, 0x000000e0, 0x82000580, 0x000000e0, - 0x050200a4, 0x050dff77, 0x59a8024c, 0x8c000504, - 0x050200a0, 0x600c1000, 0x417a5800, 0x050dff96, - 0x0501f09c, 0x59a8024c, 0x8c00051c, 0x05020003, - 0x8c000504, 0x05fc07f8, 0x59a8004e, 0x80000540, - 0x05020094, 0x59a8024c, 0x8c000508, 0x05020017, - 0x59a80047, 0x80000540, 0x0502008e, 0x59a8024c, - 0x8c00050e, 0x0500000c, 0x8c000502, 0x0502000a, - 0x052dff77, 0x05000087, 0x82000500, 0xffffff77, - 0x4803524c, 0x4a035048, 0x0000ffff, 0x0511f999, - 0x0501f080, 0x0565ffe1, 0x0500000c, 0x0511fd27, - 0x0502007c, 0x0501f009, 0x599c1819, 0x8c0c0510, - 0x05000004, 0x8c000502, 0x05020021, 0x0501f075, - 0x8c000516, 0x05000073, 0x0529ff0f, 0x05020071, - 0x0525f87b, 0x05020004, 0x599c0018, 0x8c000516, - 0x05020003, 0x052dfb36, 0x0502006a, 0x59a80006, - 0x8c00051c, 0x05020004, 0x599c0017, 0x8c00050a, - 0x0500000f, 0x59a8b0ac, 0x417a8800, 0x0001fb0f, - 0x05020004, 0x59340200, 0x8c00051a, 0x0502005d, - 0x81468800, 0x83440580, 0x000007f0, 0x05020002, - 0x60028810, 0x8058b040, 0x05fe07f5, 0x0565ffd5, - 0x05000004, 0x4a038802, 0x0000ffbf, 0x0501f003, - 0x4a038802, 0x0000ffff, 0x42001800, 0x001117ca, - 0x0501fd75, 0x42001800, 0x001117d7, 0x0501fd72, - 0x850e1d02, 0x4a01a8e4, 0x00000080, 0x600ed800, - 0x4a035048, 0x0000ffff, 0x0501fc28, 0x80000580, - 0x0509feff, 0x497b50a9, 0x6407507b, 0x0525f848, - 0x0502000b, 0x599c0018, 0x8c000516, 0x05000008, - 0x59a804d1, 0x8c00050e, 0x05020036, 0x8400054e, - 0x480354d1, 0x0521fdc3, 0x0501f016, 0x59a81a4c, + 0xfffffff8, 0x90000544, 0x480350a8, 0x0501fcca, + 0x80000580, 0x1c01f000, 0x59a80048, 0x82000580, + 0x0000ffff, 0x05000003, 0x0511f9c1, 0x0501f0c5, + 0x0561fbe5, 0x05000017, 0x0561fbe8, 0x05000008, + 0x052dfae8, 0x05000006, 0x59a8024c, 0x8c000506, + 0x05000045, 0x0529fb1c, 0x050200ba, 0x80000580, + 0x0509ff5d, 0x600ed800, 0x4a035048, 0x0000ffff, + 0x4a01a8e4, 0x00000080, 0x4a038802, 0x0000ffff, + 0x850e1d02, 0x0009f8e4, 0x0501fc92, 0x0501f0ad, + 0x59a8024c, 0x8c00050a, 0x05020003, 0x8c000506, + 0x0500002e, 0x8c000500, 0x0500002c, 0x4a038802, + 0x0000ffbf, 0x8c000502, 0x05000028, 0x599c0018, + 0x8c000516, 0x05020022, 0x59a8004d, 0x82000580, + 0x0000ffff, 0x05000019, 0x41781800, 0x0561fbcb, + 0x05000002, 0x60401800, 0x59a8024c, 0x8c00050a, + 0x05120aa8, 0x42024800, 0x00110f8f, 0x417a4000, + 0x59240200, 0x82000500, 0x000000e0, 0x82000580, + 0x000000e0, 0x0502008b, 0x050dff43, 0x59a8024c, + 0x8c000504, 0x05020087, 0x600c1000, 0x417a5800, + 0x050dff62, 0x0501f083, 0x59a8024c, 0x8c00051c, + 0x05020003, 0x8c000504, 0x05fc07f8, 0x59a8004e, + 0x80000540, 0x0502007b, 0x59a8024c, 0x8c000508, + 0x05020017, 0x59a80047, 0x80000540, 0x05020075, + 0x59a8024c, 0x8c00050e, 0x0500000c, 0x8c000502, + 0x0502000a, 0x052dfa97, 0x0500006e, 0x82000500, + 0xffffff77, 0x4803524c, 0x4a035048, 0x0000ffff, + 0x0511f963, 0x0501f067, 0x0561fb98, 0x0500000c, + 0x0511fbf0, 0x05020063, 0x0501f009, 0x599c1819, + 0x8c0c0510, 0x05000004, 0x8c000502, 0x0502001f, + 0x0501f05c, 0x8c000516, 0x0500005a, 0x0529faba, + 0x05020058, 0x599c0018, 0x8c000516, 0x05020003, + 0x0529fee3, 0x05020053, 0x59a80006, 0x8c00051c, + 0x05020004, 0x599c0017, 0x8c00050a, 0x0500000f, + 0x59a8b0ac, 0x417a8800, 0x0001fafc, 0x05020004, + 0x59340200, 0x8c00051a, 0x05020046, 0x81468800, + 0x83440580, 0x000007f0, 0x05020002, 0x60028810, + 0x8058b040, 0x05fe07f5, 0x0561fb8e, 0x05000004, + 0x4a038802, 0x0000ffbf, 0x0501f003, 0x4a038802, + 0x0000ffff, 0x42001800, 0x00110ac7, 0x0501fd5c, + 0x42001800, 0x00110ad4, 0x0501fd59, 0x850e1d02, + 0x4a01a8e4, 0x00000080, 0x600ed800, 0x4a035048, + 0x0000ffff, 0x0501fc0f, 0x80000580, 0x0509fece, + 0x497b50a9, 0x6407507b, 0x599c0018, 0x8c000516, + 0x05000003, 0x0521f99d, 0x0501f016, 0x59a81a4c, 0x59a82044, 0x82102580, 0x0000aaaa, 0x05000004, 0x8c0c0506, 0x05020002, 0x480f544c, 0x8c0c0508, 0x05000007, 0x599c1819, 0x8c0c0510, 0x05000004, 0x61f8180f, 0x60102000, 0x0501f003, 0x61fc19ff, - 0x60182000, 0x60003000, 0x417a4000, 0x0521fd4f, - 0x052dff1d, 0x0500000a, 0x59c40006, 0x052dff08, + 0x60182000, 0x60003000, 0x417a4000, 0x0521f928, + 0x052dfa46, 0x0500000a, 0x59c40006, 0x052dfa31, 0x05000004, 0x82000500, 0xffffff0f, 0x0501f003, - 0x82000500, 0xfbffffff, 0x48038806, 0x0525f81c, - 0x0500000a, 0x59a804d1, 0x8c000500, 0x05000007, - 0x59c40801, 0x82040d40, 0x00004000, 0x48078801, - 0x64c378e4, 0x0501f006, 0x59c40801, 0x82040d00, - 0xffffbfff, 0x48078801, 0x648378e4, 0x0009fbe8, + 0x82000500, 0xfbffffff, 0x48038806, 0x0009f8e4, 0x1c01f000, 0x4c040000, 0x4c080000, 0x4c100000, - 0x59a8006d, 0x90000c84, 0x050219e1, 0x0c01f805, + 0x59a8006d, 0x90000c84, 0x050219e2, 0x0c01f805, 0x5c002000, 0x5c001000, 0x5c000800, 0x1c01f000, - 0x00100440, 0x001004da, 0x001004ff, 0x001005ad, - 0x60380938, 0x050df9db, 0x90040550, 0x82000500, - 0xfffffff7, 0x60380938, 0x050df9db, 0x59c410a3, - 0x84081518, 0x480b88a3, 0x0521fdef, 0x05020021, + 0x001003c4, 0x0010045e, 0x00100483, 0x00100531, + 0x60380938, 0x050df9c0, 0x90040550, 0x82000500, + 0xfffffff7, 0x60380938, 0x050df9c0, 0x59c410a3, + 0x84081518, 0x480b88a3, 0x0521f9ce, 0x05020021, 0x599c0019, 0x82000500, 0x0000e000, 0x82000580, 0x00004000, 0x0502001b, 0x59a808a8, 0x90040d07, 0x90040580, 0x0502000b, 0x59a8006c, 0x90000582, - 0x05000011, 0x050df91e, 0x497b506b, 0x050dfd1d, + 0x05000011, 0x050df903, 0x497b506b, 0x050dfd02, 0x640f5079, 0x640b506c, 0x64075078, 0x0501f00a, 0x90040584, 0x05020008, 0x497b2804, 0x497b2805, - 0x050dfd23, 0x64075078, 0x4a035079, 0xaabbccdd, + 0x050dfd08, 0x64075078, 0x4a035079, 0xaabbccdd, 0x6413506c, 0x59a800a8, 0x80000000, 0x480350a8, - 0x60000001, 0x0509fe82, 0x0539ff89, 0x59c408a3, - 0x82040d00, 0xfffffff7, 0x480788a3, 0x052dfeb2, - 0x0500000d, 0x052dfebc, 0x0500000b, 0x052dfeb4, - 0x0502099f, 0x59c400a3, 0x84000532, 0x84000570, - 0x480388a3, 0x0531f9e3, 0x4a038808, 0x00000208, + 0x60000001, 0x0509fe68, 0x0539f862, 0x59c408a3, + 0x82040d00, 0xfffffff7, 0x480788a3, 0x052df9eb, + 0x0500000d, 0x052df9f5, 0x0500000b, 0x052df9ed, + 0x050209a0, 0x59c400a3, 0x84000532, 0x84000570, + 0x480388a3, 0x052dfd1c, 0x4a038808, 0x00000208, 0x0501f012, 0x59c400a3, 0x84000530, 0x82000500, - 0xbf7fffff, 0x480388a3, 0x61e00801, 0x0525feb7, + 0xbf7fffff, 0x480388a3, 0x61e00801, 0x0525fa85, 0x59c400a3, 0x82000540, 0x00018000, 0x8400051c, 0x480388a3, 0x82000500, 0xfffeffff, 0x480388a3, 0x4a038808, 0x00000200, 0x59c40006, 0x82000500, 0xfbffff0e, 0x48038806, 0x497b282d, 0x497b282e, - 0x61d00803, 0x42001000, 0x001005c7, 0x0539fdaa, - 0x59c40805, 0x64078805, 0x0509ff2f, 0x05020006, - 0x60040000, 0x050df90f, 0x60040000, 0x050df8dd, - 0x0501f01e, 0x0509ff2e, 0x05020006, 0x41780000, - 0x050df908, 0x41780000, 0x050df8d6, 0x0501f017, - 0x0509ff2d, 0x05020006, 0x60080000, 0x050df901, - 0x60080000, 0x050df8cf, 0x0501f010, 0x0509ff2c, - 0x05020006, 0x600c0000, 0x050df8fa, 0x600c0000, - 0x050df8c8, 0x0501f009, 0x0509ff2b, 0x0502095c, - 0x59a80078, 0x800001c0, 0x05000004, 0x0509ff2b, - 0x6407506d, 0x0501f018, 0x050df948, 0x6407506d, - 0x052dfe61, 0x05000008, 0x052dfe6b, 0x05000006, - 0x052dfe63, 0x0502094e, 0x64075045, 0x052dfdd1, + 0x61d00803, 0x42001000, 0x0010054b, 0x0535fe88, + 0x59c40805, 0x64078805, 0x0509ff14, 0x05020006, + 0x60040000, 0x050df8f4, 0x60040000, 0x050df8c2, + 0x0501f01e, 0x0509ff13, 0x05020006, 0x41780000, + 0x050df8ed, 0x41780000, 0x050df8bb, 0x0501f017, + 0x0509ff12, 0x05020006, 0x60080000, 0x050df8e6, + 0x60080000, 0x050df8b4, 0x0501f010, 0x0509ff11, + 0x05020006, 0x600c0000, 0x050df8df, 0x600c0000, + 0x050df8ad, 0x0501f009, 0x0509ff10, 0x0502095d, + 0x59a80078, 0x800001c0, 0x05000004, 0x0509ff10, + 0x6407506d, 0x0501f018, 0x050df92d, 0x6407506d, + 0x052df99a, 0x05000008, 0x052df9a4, 0x05000006, + 0x052df99c, 0x0502094f, 0x64075045, 0x052df90a, 0x0501f00d, 0x59c400a4, 0x9000050f, 0x90000588, 0x05000003, 0x4a038805, 0x04000000, 0x59c400a3, 0x82000540, 0x0001c000, 0x480388a3, 0x84000520, 0x480388a3, 0x1c01f000, 0x0501f8e9, 0x05020003, - 0x640f506d, 0x0501f021, 0x0509ff07, 0x0502000d, - 0x59a80078, 0x800001c0, 0x0500000a, 0x0509ff07, - 0x59a80077, 0x8c00051e, 0x05000018, 0x052dfe44, - 0x05020006, 0x64075045, 0x052dfdb2, 0x0501f003, - 0x050df8f2, 0x05020011, 0x050df889, 0x640b506d, + 0x640f506d, 0x0501f021, 0x0509feec, 0x0502000d, + 0x59a80078, 0x800001c0, 0x0500000a, 0x0509feec, + 0x59a80077, 0x8c00051e, 0x05000018, 0x052df97d, + 0x05020006, 0x64075045, 0x052df8eb, 0x0501f003, + 0x050df8d7, 0x05020011, 0x050df86e, 0x640b506d, 0x497b5078, 0x59c400a3, 0x84000520, 0x480388a3, - 0x052dfe37, 0x05000009, 0x0521fd43, 0x05000007, + 0x052df970, 0x05000009, 0x0521f922, 0x05000007, 0x497b282d, 0x497b282e, 0x60b40800, 0x42001000, - 0x001005c7, 0x0539fd48, 0x1c01f000, 0x0501f8c4, + 0x0010054b, 0x0535fe26, 0x1c01f000, 0x0501f8c4, 0x05020003, 0x640f506d, 0x0501f0a9, 0x4a038805, - 0x000000f0, 0x050df8d9, 0x050200a0, 0x050dfae4, - 0x05000017, 0x050dfac9, 0x05020015, 0x050dfad2, + 0x000000f0, 0x050df8be, 0x050200a0, 0x050dfac9, + 0x05000017, 0x050dfaae, 0x05020015, 0x050dfab7, 0x0502000a, 0x59a80079, 0x90000584, 0x05fc07f2, - 0x0509fecf, 0x0502000e, 0x59a80079, 0x82000580, + 0x0509feb4, 0x0502000e, 0x59a80079, 0x82000580, 0xaabbccdd, 0x05fc07ec, 0x59a80079, 0x90000580, - 0x05fc07e9, 0x0509feb4, 0x05020005, 0x59a80079, + 0x05fc07e9, 0x0509fe99, 0x05020005, 0x59a80079, 0x82000580, 0xaabbccdd, 0x05fc07e3, 0x59a800aa, 0x8c000500, 0x0502000b, 0x59a80887, 0x8c04050c, - 0x05020008, 0x60380938, 0x050df8f6, 0x90040548, - 0x82000500, 0xffffffef, 0x60380938, 0x050df8f6, - 0x050dfabf, 0x05000032, 0x0521ff94, 0x0500000c, + 0x05020008, 0x60380938, 0x050df8db, 0x90040548, + 0x82000500, 0xffffffef, 0x60380938, 0x050df8db, + 0x050dfaa4, 0x05000032, 0x0521fb62, 0x0500000c, 0x4a03c014, 0x00200020, 0x59c40001, 0x82000500, 0x00018000, 0x82000580, 0x00018000, 0x05020026, 0x4a03c013, 0x00200020, 0x0501f025, 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, 0x59c40001, 0x82000500, 0x00018000, 0x82000580, 0x00018000, 0x0502000c, 0x60880801, 0x61d81000, 0x60201800, - 0x0521ff7e, 0x050008ce, 0x60880801, 0x61b81000, - 0x60201800, 0x0521ff79, 0x050008c9, 0x0501f00b, - 0x60880801, 0x61d81000, 0x60201800, 0x0521ff81, - 0x050008c3, 0x60880801, 0x61b81000, 0x60201800, - 0x0521ff7c, 0x050008be, 0x4a03c014, 0x03800000, - 0x0501f003, 0x4a03c013, 0x00200000, 0x052dfdcc, + 0x0521fb4c, 0x050008cf, 0x60880801, 0x61b81000, + 0x60201800, 0x0521fb47, 0x050008ca, 0x0501f00b, + 0x60880801, 0x61d81000, 0x60201800, 0x0521fb4f, + 0x050008c4, 0x60880801, 0x61b81000, 0x60201800, + 0x0521fb4a, 0x050008bf, 0x4a03c014, 0x03800000, + 0x0501f003, 0x4a03c013, 0x00200000, 0x052df905, 0x0500003d, 0x59c400a4, 0x9000050f, 0x90000588, 0x05000021, 0x59c40005, 0x8c000534, 0x0502001e, - 0x5994002f, 0x800001c0, 0x05000007, 0x0501fadd, + 0x5994002f, 0x800001c0, 0x05000007, 0x0501fadb, 0x90000402, 0x5994082d, 0x80040480, 0x0502103c, 0x0501f004, 0x5994002d, 0x90000482, 0x05021038, - 0x052dfdbd, 0x05020036, 0x4a038805, 0x000000f0, - 0x052dfde7, 0x4a035044, 0x0000aaaa, 0x64035045, + 0x052df8f6, 0x05020036, 0x4a038805, 0x000000f0, + 0x052df920, 0x4a035044, 0x0000aaaa, 0x64035045, 0x59c408a3, 0x90040d48, 0x480788a3, 0x6006d800, 0x6403506d, 0x64078805, 0x497b282d, 0x497b282e, - 0x0501f019, 0x052dfdac, 0x05020007, 0x59a80044, + 0x0501f019, 0x052df8e5, 0x05020007, 0x59a80044, 0x82000580, 0x0000aaaa, 0x05020003, 0x4a035040, 0x00ffffff, 0x497b5044, 0x59c40006, 0x82000540, 0x04000001, 0x48038806, 0x8d0c0506, 0x05020004, @@ -396,3962 +365,3700 @@ static const uint32_t isp_2500_risc_code[] = { 0x6403506d, 0x64078805, 0x497b282d, 0x497b282e, 0x0501f00f, 0x59c40005, 0x82000500, 0x000000c0, 0x0500000b, 0x59c40006, 0x82000540, 0x000000f1, - 0x48038806, 0x05fdf7f2, 0x0509fe3f, 0x05020004, + 0x48038806, 0x05fdf7f2, 0x0509fe24, 0x05020004, 0x59a80078, 0x800001c0, 0x05fe0757, 0x497b8885, - 0x1c01f000, 0x4803c856, 0x0521fc8b, 0x05020005, - 0x050dfbf6, 0x42000000, 0x00111f4e, 0x0565fc99, - 0x60000001, 0x0509fd3a, 0x6403506d, 0x0509fe2e, + 0x1c01f000, 0x4803c856, 0x0521f86a, 0x05020005, + 0x050dfbdb, 0x42000000, 0x00110f3a, 0x0561f869, + 0x60000001, 0x0509fd20, 0x6403506d, 0x0509fe13, 0x05020009, 0x59a8006b, 0x800001c0, 0x05000004, 0x80000040, 0x4803506b, 0x05020003, 0x642b506b, - 0x64075078, 0x497b8885, 0x0501f226, 0x5994002d, + 0x64075078, 0x497b8885, 0x0501f224, 0x5994002d, 0x5994082e, 0x80040540, 0x1c01f000, 0x497b282e, 0x1c01f000, 0x4a038805, 0x000000f0, 0x1c01f000, - 0x64235096, 0x641f5097, 0x64035098, 0x4a035099, - 0x001090d5, 0x0531f8a4, 0x4a03544c, 0x0000ffff, - 0x4a035040, 0x00ffffff, 0x0555fb37, 0x4a035050, - 0x20200000, 0x4a035051, 0x88000200, 0x4a035052, - 0x00ff001f, 0x4a035053, 0x000007d0, 0x4a035054, - 0x80000a00, 0x4a035055, 0xa0000200, 0x4a035056, - 0x00ff0004, 0x4a035057, 0x00010000, 0x4a035058, - 0x80000000, 0x4a035059, 0x00000200, 0x4a03505a, - 0x00ff0000, 0x4a03505b, 0x00010000, 0x4a035062, - 0x514c4f47, 0x4a035063, 0x49432020, 0x1c01f000, - 0x4d340000, 0x4d440000, 0x417a8800, 0x4c5c0000, - 0x4178b800, 0x0001fb0f, 0x05020004, 0x0529fe76, - 0x05020002, 0x805cb800, 0x81468800, 0x83440580, - 0x000007f0, 0x05020002, 0x60028810, 0x59a800ad, - 0x81440580, 0x05fe07f4, 0x405c0800, 0x5c00b800, - 0x5c028800, 0x5c026800, 0x1c01f000, 0x4803c857, - 0x5c000000, 0x4c000000, 0x4803c857, 0x0501f808, - 0x485fc857, 0x4203e000, 0x50000000, 0x5c000000, - 0x4d780000, 0x6008b900, 0x0501f006, 0x485fc857, - 0x496fc857, 0x4203e000, 0x50000000, 0x6008b900, - 0x4c000000, 0x05006000, 0x4c040000, 0x59bc00ea, - 0x4803c857, 0x90000507, 0x90000581, 0x05020003, - 0x60000800, 0x0009f98d, 0x59b800ea, 0x4803c857, - 0x641370e8, 0x5c000800, 0x4807c025, 0x80040920, - 0x4807c026, 0x5c000000, 0x4803c023, 0x80000120, - 0x4803c024, 0x5c000000, 0x4803c857, 0x4803c021, - 0x80000120, 0x4803c022, 0x41f80000, 0x4803c029, - 0x80000120, 0x4803c02a, 0x41780800, 0x4807c027, - 0x59a800b4, 0x8c00050a, 0x05000004, 0x84040d4a, - 0x4807c857, 0x4807c027, 0x0565fd29, 0x0500004a, - 0x42000800, 0x00114029, 0x46000800, 0xfaceface, - 0x80040800, 0x4c080000, 0x4c0c0000, 0x600010f4, - 0x58080013, 0x44000800, 0x80040800, 0x58080022, - 0x44000800, 0x80040800, 0x58080023, 0x44000800, - 0x80040800, 0x58080024, 0x44000800, 0x80040800, - 0x58080025, 0x44000800, 0x80040800, 0x58080028, - 0x44000800, 0x80040800, 0x610010f4, 0x602c1800, - 0x50080000, 0x44000800, 0x80081000, 0x80040800, - 0x800c1840, 0x05fe07fb, 0x600c1800, 0x600010f6, - 0x480c1003, 0x58080005, 0x44000800, 0x80040800, - 0x800c1840, 0x05fe17fb, 0x600010f8, 0x58080002, - 0x44000800, 0x80040800, 0x58080003, 0x44000800, - 0x80040800, 0x58080020, 0x44000800, 0x80040800, - 0x58080021, 0x44000800, 0x80040800, 0x58080022, - 0x44000800, 0x80040800, 0x58080023, 0x44000800, - 0x80040800, 0x600010f6, 0x58080007, 0x44000800, - 0x80040800, 0x5808002b, 0x44000800, 0x80040800, - 0x5808007c, 0x44000800, 0x80040800, 0x5c001800, - 0x5c001000, 0x64030000, 0x485fc020, 0x905cb9c0, - 0x905cbd52, 0x485fc011, 0x4203e000, 0x40000000, - 0x6016d800, 0x59e00017, 0x60000800, 0x8c00050a, - 0x050a0889, 0x8d0c0530, 0x050a087c, 0x050a087e, - 0x6403c017, 0x4203e000, 0x30000001, 0x0501f94a, - 0x05fdf7ff, 0x600c0000, 0x0501f80c, 0x4a03c855, - 0x0001eb5a, 0x59e40001, 0x82000540, 0xff000700, - 0x4803c801, 0x42000000, 0x00111f76, 0x49780003, - 0x49780004, 0x1c01f000, 0x42000800, 0x00111f78, - 0x44000800, 0x59e40801, 0x82041500, 0x00f3c0ff, - 0x480bc801, 0x4a03c850, 0x001141d3, 0x800000d4, - 0x82002400, 0x001141d2, 0x4813c851, 0x4a03c853, - 0x00000400, 0x42000000, 0x001141d3, 0x82001400, - 0x00000c00, 0x45780000, 0x80000000, 0x80081d80, - 0x05fe07fd, 0x4807c801, 0x1c01f000, 0x42002000, - 0x00111f76, 0x59e41801, 0x58100c01, 0x82040500, - 0x00003800, 0x820c1d00, 0xffffc7ff, 0x800c1d40, - 0x480fc801, 0x1c01f000, 0x5c036000, 0x4db00000, - 0x49b3c857, 0x4803c857, 0x1c01f000, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x8d0c052a, 0x0500002f, - 0x401c0000, 0x80040d40, 0x4004b800, 0x400cc000, - 0x4018c800, 0x0501f8d3, 0x41784000, 0x42002800, - 0x00111f76, 0x58142017, 0x5814000d, 0x80100400, - 0x445c0000, 0x80102000, 0x80000000, 0x82104d00, - 0x000000ff, 0x050008a9, 0x0500001c, 0x4c000000, - 0x0501f890, 0x5c000000, 0x44080000, 0x80102000, - 0x80000000, 0x82104d00, 0x000000ff, 0x0500089f, - 0x05000012, 0x44600000, 0x80102000, 0x80000000, - 0x82104d00, 0x000000ff, 0x05000898, 0x0500000b, - 0x44640000, 0x80102000, 0x80000000, 0x82104d00, - 0x000000ff, 0x05000891, 0x05000004, 0x48102817, - 0x802041c0, 0x05060d4a, 0x5c00c800, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x42001000, 0x04000000, 0x41ccc800, - 0x42002800, 0x00111f76, 0x59a800d5, 0x82000d00, - 0x000003ff, 0x4c000000, 0x58140212, 0x0501f85d, - 0x5c000000, 0x4004b800, 0x4008c000, 0x905cbc06, - 0x8c000516, 0x05000002, 0x905cbc02, 0x0501f016, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x42002800, - 0x00111f76, 0x42001000, 0x03000000, 0x4000c800, - 0x821c0500, 0x00003c00, 0x80000114, 0x821c0d00, - 0x000003ff, 0x4c000000, 0x58140412, 0x0501f845, - 0x5c000000, 0x4004b800, 0x4008c000, 0x805cbc00, - 0x805cb840, 0x825c0480, 0x00000240, 0x05fe1edc, - 0x0501f878, 0x405c0000, 0x905cbc02, 0x80600d40, - 0x42002800, 0x00111f76, 0x41784000, 0x58142017, - 0x825c0480, 0x00000101, 0x05021028, 0x5814000d, - 0x80100400, 0x44040000, 0x80102000, 0x80000000, - 0x805cb840, 0x82104d00, 0x000000ff, 0x05000847, - 0x0500001a, 0x4c000000, 0x0501f82e, 0x5c000000, - 0x44080000, 0x80102000, 0x80000000, 0x805cb840, - 0x82104d00, 0x000000ff, 0x0500083c, 0x0500000f, - 0x50641800, 0x440c0000, 0x80000000, 0x80102000, - 0x8064c800, 0x805cb840, 0x05fe07f6, 0x82104d00, - 0x000000ff, 0x05000831, 0x05000004, 0x48102817, - 0x802041c0, 0x05060cea, 0x5c00c800, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x82100500, 0x000000ff, - 0x805c0400, 0x82000480, 0x00000200, 0x05fc17d4, - 0x6108b800, 0x82600d40, 0x00008040, 0x05fdf7d0, - 0x800001c0, 0x05000006, 0x80041c80, 0x05001004, - 0x05000003, 0x40000800, 0x8408155c, 0x1c01f000, - 0x59a800bf, 0x800018c4, 0x800010ca, 0x800000cc, - 0x800c0400, 0x80081400, 0x59940024, 0x61a01807, - 0x800c1c80, 0x05021002, 0x61a01807, 0x5994002f, - 0x800c0400, 0x82001c80, 0x000007d0, 0x05001002, - 0x6140000f, 0x4c080000, 0x0501f8b6, 0x5c001000, - 0x80081400, 0x1c01f000, 0x4813c857, 0x5c036000, - 0x4db00000, 0x49b3c857, 0x40001800, 0x58140000, - 0x8c000502, 0x05000009, 0x58140821, 0x80040800, - 0x48042821, 0x4807c857, 0x8400054a, 0x48002800, - 0x80000580, 0x0501f00e, 0x82102500, 0x000003ff, - 0x80204000, 0x58140014, 0x80000000, 0x90000503, - 0x48002814, 0x05000003, 0x400c0000, 0x0501f002, - 0x5814000d, 0x80000540, 0x4803c857, 0x1c01f000, - 0x42002800, 0x00111f76, 0x58140000, 0x8c00050a, - 0x0500002f, 0x8c000502, 0x0502002d, 0x4c5c0000, - 0x5814b821, 0x49782821, 0x8400050a, 0x48002800, - 0x58142017, 0x4813c857, 0x5814000d, 0x80100400, - 0x41784000, 0x42000800, 0x0b000001, 0x44040000, + 0x64235096, 0x64235097, 0x4a035098, 0x000000cf, + 0x4a035099, 0x00109095, 0x052dfbdc, 0x4a03544c, + 0x0000ffff, 0x4a035040, 0x00ffffff, 0x0551fa5a, + 0x4a035050, 0x20200000, 0x4a035051, 0x88000200, + 0x4a035052, 0x00ff001f, 0x4a035053, 0x000007d0, + 0x4a035054, 0x80000a00, 0x4a035055, 0xa0000200, + 0x4a035056, 0x00ff0004, 0x4a035057, 0x00010000, + 0x4a035058, 0x80000000, 0x4a035059, 0x00000200, + 0x4a03505a, 0x00ff0000, 0x4a03505b, 0x00010000, + 0x4a035062, 0x514c4f47, 0x4a035063, 0x49432020, + 0x1c01f000, 0x4d340000, 0x4d440000, 0x417a8800, + 0x4c5c0000, 0x4178b800, 0x0001fafc, 0x05020004, + 0x0529fa39, 0x05020002, 0x805cb800, 0x81468800, + 0x83440580, 0x000007f0, 0x05020002, 0x60028810, + 0x59a800ad, 0x81440580, 0x05fe07f4, 0x405c0800, + 0x5c00b800, 0x5c028800, 0x5c026800, 0x1c01f000, + 0x4803c857, 0x5c000000, 0x4c000000, 0x4803c857, + 0x0501f808, 0x485fc857, 0x4203e000, 0x50000000, + 0x5c000000, 0x4d780000, 0x6008b900, 0x0501f006, + 0x485fc857, 0x496fc857, 0x4203e000, 0x50000000, + 0x6008b900, 0x4c000000, 0x05006000, 0x4c040000, + 0x59bc00ea, 0x4803c857, 0x90000507, 0x90000581, + 0x05020003, 0x60000800, 0x0005fe8c, 0x59b800ea, + 0x4803c857, 0x641370e8, 0x5c000800, 0x4807c025, + 0x80040920, 0x4807c026, 0x5c000000, 0x4803c023, + 0x80000120, 0x4803c024, 0x5c000000, 0x4803c857, + 0x4803c021, 0x80000120, 0x4803c022, 0x41f80000, + 0x4803c029, 0x80000120, 0x4803c02a, 0x41780800, + 0x4807c027, 0x59a800b4, 0x8c00050a, 0x05000004, + 0x84040d4a, 0x4807c857, 0x4807c027, 0x0561f8f8, + 0x0500004a, 0x42000800, 0x00112e0e, 0x46000800, + 0xfaceface, 0x80040800, 0x4c080000, 0x4c0c0000, + 0x600010f4, 0x58080013, 0x44000800, 0x80040800, + 0x58080022, 0x44000800, 0x80040800, 0x58080023, + 0x44000800, 0x80040800, 0x58080024, 0x44000800, + 0x80040800, 0x58080025, 0x44000800, 0x80040800, + 0x58080028, 0x44000800, 0x80040800, 0x610010f4, + 0x602c1800, 0x50080000, 0x44000800, 0x80081000, + 0x80040800, 0x800c1840, 0x05fe07fb, 0x600c1800, + 0x600010f6, 0x480c1003, 0x58080005, 0x44000800, + 0x80040800, 0x800c1840, 0x05fe17fb, 0x600010f8, + 0x58080002, 0x44000800, 0x80040800, 0x58080003, + 0x44000800, 0x80040800, 0x58080020, 0x44000800, + 0x80040800, 0x58080021, 0x44000800, 0x80040800, + 0x58080022, 0x44000800, 0x80040800, 0x58080023, + 0x44000800, 0x80040800, 0x600010f6, 0x58080007, + 0x44000800, 0x80040800, 0x5808002b, 0x44000800, + 0x80040800, 0x5808007c, 0x44000800, 0x80040800, + 0x5c001800, 0x5c001000, 0x64030000, 0x485fc020, + 0x905cb9c0, 0x905cbd52, 0x485fc011, 0x4203e000, + 0x40000000, 0x6016d800, 0x59e00017, 0x60000800, + 0x8c00050a, 0x050a086e, 0x8d0c0530, 0x050a0861, + 0x050a0863, 0x6403c017, 0x4203e000, 0x30000001, + 0x0501f947, 0x05fdf7ff, 0x600c0000, 0x0501f80c, + 0x4a03c855, 0x0001eb5a, 0x59e40001, 0x82000540, + 0xff000700, 0x4803c801, 0x42000000, 0x00110f62, + 0x49780003, 0x49780004, 0x1c01f000, 0x42000800, + 0x00110f64, 0x44000800, 0x59e40801, 0x82041500, + 0x00f3c0ff, 0x480bc801, 0x4a03c850, 0x00112e37, + 0x800000d4, 0x82002400, 0x00112e36, 0x4813c851, + 0x4a03c853, 0x00000400, 0x42000000, 0x00112e37, + 0x82001400, 0x00000c00, 0x45780000, 0x80000000, + 0x80081d80, 0x05fe07fd, 0x4807c801, 0x1c01f000, + 0x42002000, 0x00110f62, 0x59e41801, 0x58100c01, + 0x82040500, 0x00003800, 0x820c1d00, 0xffffc7ff, + 0x800c1d40, 0x480fc801, 0x1c01f000, 0x5c036000, + 0x4db00000, 0x49b3c857, 0x4803c857, 0x1c01f000, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x8d0c052a, + 0x0500002f, 0x401c0000, 0x80040d40, 0x4004b800, + 0x400cc000, 0x4018c800, 0x0501f8d0, 0x41784000, + 0x42002800, 0x00110f62, 0x58142017, 0x5814000d, + 0x80100400, 0x445c0000, 0x80102000, 0x80000000, + 0x82104d00, 0x000000ff, 0x050008a6, 0x0500001c, + 0x4c000000, 0x0501f88d, 0x5c000000, 0x44080000, + 0x80102000, 0x80000000, 0x82104d00, 0x000000ff, + 0x0500089c, 0x05000012, 0x44600000, 0x80102000, + 0x80000000, 0x82104d00, 0x000000ff, 0x05000895, + 0x0500000b, 0x44640000, 0x80102000, 0x80000000, + 0x82104d00, 0x000000ff, 0x0500088e, 0x05000004, + 0x48102817, 0x802041c0, 0x05060d2f, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x42001000, 0x04000000, + 0x41ccc800, 0x42002800, 0x00110f62, 0x59a800d1, + 0x82000d00, 0x000003ff, 0x4c000000, 0x58140212, + 0x0501f85a, 0x5c000000, 0x4004b800, 0x4008c000, + 0x905cbc06, 0x0501f016, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x42002800, 0x00110f62, 0x42001000, + 0x03000000, 0x4000c800, 0x821c0500, 0x00003c00, + 0x80000114, 0x821c0d00, 0x000003ff, 0x4c000000, + 0x58140412, 0x0501f845, 0x5c000000, 0x4004b800, + 0x4008c000, 0x805cbc00, 0x805cb840, 0x825c0480, + 0x00000240, 0x05fe1edf, 0x0501f878, 0x405c0000, + 0x905cbc02, 0x80600d40, 0x42002800, 0x00110f62, + 0x41784000, 0x58142017, 0x825c0480, 0x00000101, + 0x05021028, 0x5814000d, 0x80100400, 0x44040000, + 0x80102000, 0x80000000, 0x805cb840, 0x82104d00, + 0x000000ff, 0x05000847, 0x0500001a, 0x4c000000, + 0x0501f82e, 0x5c000000, 0x44080000, 0x80102000, + 0x80000000, 0x805cb840, 0x82104d00, 0x000000ff, + 0x0500083c, 0x0500000f, 0x50641800, 0x440c0000, + 0x80000000, 0x80102000, 0x8064c800, 0x805cb840, + 0x05fe07f6, 0x82104d00, 0x000000ff, 0x05000831, + 0x05000004, 0x48102817, 0x802041c0, 0x05060cd2, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x82100500, 0x000000ff, 0x805c0400, 0x82000480, + 0x00000200, 0x05fc17d4, 0x6108b800, 0x82600d40, + 0x00008040, 0x05fdf7d0, 0x800001c0, 0x05000006, + 0x80041c80, 0x05001004, 0x05000003, 0x40000800, + 0x8408155c, 0x1c01f000, 0x59a800bf, 0x800018c4, + 0x800010ca, 0x800000cc, 0x800c0400, 0x80081400, + 0x59940024, 0x61a01807, 0x800c1c80, 0x05021002, + 0x61a01807, 0x5994002f, 0x800c0400, 0x82001c80, + 0x000007d0, 0x05001002, 0x6140000f, 0x4c080000, + 0x0501f8b6, 0x5c001000, 0x80081400, 0x1c01f000, + 0x4813c857, 0x5c036000, 0x4db00000, 0x49b3c857, + 0x40001800, 0x58140000, 0x8c000502, 0x05000009, + 0x58140821, 0x80040800, 0x48042821, 0x4807c857, + 0x8400054a, 0x48002800, 0x80000580, 0x0501f00e, + 0x82102500, 0x000003ff, 0x80204000, 0x58140014, + 0x80000000, 0x90000503, 0x48002814, 0x05000003, + 0x400c0000, 0x0501f002, 0x5814000d, 0x80000540, + 0x4803c857, 0x1c01f000, 0x42002800, 0x00110f62, + 0x58140000, 0x8c00050a, 0x0500002f, 0x8c000502, + 0x0502002d, 0x4c5c0000, 0x5814b821, 0x49782821, + 0x8400050a, 0x48002800, 0x58142017, 0x4813c857, + 0x5814000d, 0x80100400, 0x41784000, 0x42000800, + 0x0b000001, 0x44040000, 0x80000000, 0x80102000, + 0x82104d00, 0x000000ff, 0x05fc0fca, 0x05fc0e4d, + 0x4c000000, 0x05fdffb1, 0x5c000000, 0x44080000, 0x80000000, 0x80102000, 0x82104d00, 0x000000ff, - 0x05fc0fca, 0x05fc0e4a, 0x4c000000, 0x05fdffb1, - 0x5c000000, 0x44080000, 0x80000000, 0x80102000, - 0x82104d00, 0x000000ff, 0x05fc0fc0, 0x05fc0e40, - 0x445c0000, 0x80000000, 0x80102000, 0x82104d00, - 0x000000ff, 0x05fc0fb9, 0x05fc0e39, 0x48102817, - 0x802041c0, 0x05060c72, 0x405c2000, 0x600c1800, - 0x60a01100, 0x0521f911, 0x5c00b800, 0x1c01f000, - 0x1c01f000, 0x59a800ba, 0x8c000530, 0x05fe07fe, - 0x4c080000, 0x60101000, 0x0501f849, 0x5c001000, - 0x4201d000, 0x00028b0a, 0x0539fbfd, 0x4c080000, - 0x60201000, 0x0501f842, 0x5c001000, 0x4201d000, - 0x00028b0a, 0x0539fbf6, 0x4c080000, 0x60401000, - 0x0501f83b, 0x5c001000, 0x4201d000, 0x00028b0a, - 0x0539fbef, 0x05fdf7e8, 0x8c00050c, 0x59a808ba, - 0x05020003, 0x84040d30, 0x0501f005, 0x84040d70, - 0x480750ba, 0x60001000, 0x0501f02d, 0x480750ba, - 0x916c0507, 0x0c01f001, 0x00100836, 0x00100828, - 0x00100828, 0x00100816, 0x0010082f, 0x00100828, - 0x00100828, 0x0010082f, 0x59c40801, 0x82040d00, - 0x00018000, 0x82040580, 0x00018000, 0x0500000a, - 0x82040580, 0x00010000, 0x05000004, 0x42001000, - 0x42004000, 0x0501f006, 0x42001000, 0x22002000, - 0x0501f003, 0x42001000, 0x12001000, 0x0501f015, - 0x59a800ba, 0x8c000534, 0x05020004, 0x42001000, - 0x74057005, 0x0501f80f, 0x1c01f000, 0x59a800ba, - 0x8c000534, 0x05020004, 0x42001000, 0x74057005, - 0x0501f008, 0x1c01f000, 0x1c01f000, 0x9008151c, - 0x82081540, 0x001c0000, 0x480bc013, 0x1c01f000, - 0x59a800ba, 0x8c000530, 0x05000002, 0x84081570, - 0x480b50ba, 0x8c000530, 0x05020005, 0x82081500, - 0x00007000, 0x80081114, 0x05fdfff1, 0x1c01f000, - 0x40001800, 0x800c18c2, 0x800c0400, 0x800c18c6, - 0x800c0400, 0x800c18c2, 0x800c0400, 0x800c190e, - 0x800c0400, 0x80000112, 0x1c01f000, 0x41780000, - 0x50041800, 0x800c0400, 0x80040800, 0x80102040, - 0x05fe07fc, 0x80080500, 0x80000540, 0x1c01f000, - 0x6002f000, 0x41780000, 0x41780800, 0x41781000, - 0x41781800, 0x41782000, 0x41782800, 0x41783000, - 0x41783800, 0x41784000, 0x41784800, 0x41785000, - 0x41785800, 0x41786000, 0x41786800, 0x41787000, - 0x41787800, 0x41788000, 0x41788800, 0x41789000, - 0x41789800, 0x4178a000, 0x4178a800, 0x4178b000, - 0x4178b800, 0x4178c000, 0x4178c800, 0x4178d000, - 0x4178d800, 0x4178e000, 0x4178e800, 0x4178f000, - 0x4178f800, 0x41790000, 0x41790800, 0x41791000, - 0x41791800, 0x41792000, 0x41792800, 0x41793000, - 0x41793800, 0x41794000, 0x41794800, 0x41795000, - 0x41795800, 0x41796000, 0x41796800, 0x41797000, - 0x41797800, 0x41798000, 0x41798800, 0x41799000, - 0x41799800, 0x4179a000, 0x6001a960, 0x60c9b17e, - 0x4179b800, 0x4179c800, 0x4179c000, 0x4179d000, - 0x4179d800, 0x4179e000, 0x4179e800, 0x4179f000, - 0x4179f800, 0x42020000, 0x001117c6, 0x417a0800, - 0x417a1000, 0x417a1800, 0x417a2000, 0x600228c2, - 0x417a3000, 0x417a3800, 0x417a4000, 0x417a4800, - 0x417a5000, 0x417a5800, 0x417a6000, 0x417a6800, - 0x417a7000, 0x417a7800, 0x417a8000, 0x417a8800, - 0x417a9000, 0x417a9800, 0x417ae800, 0x417af800, - 0x600300f8, 0x42031000, 0x00111e19, 0x607f1960, - 0x60df2160, 0x42032800, 0x00111d7d, 0x42033000, - 0x0002176f, 0x42034000, 0x0011176f, 0x42033800, - 0x0011178e, 0x42034800, 0x00111ae7, 0x42035000, *** 118812 LINES SKIPPED *** From nobody Fri Jan 19 16:59:37 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGm7G5zyCz56vYx; Fri, 19 Jan 2024 16:59:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGm7G5hXtz4HgB; Fri, 19 Jan 2024 16:59:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683578; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=59es8Vfh95BXxcxn+NHLkRpzgjAqo+upTN4Nec1Kkn0=; b=FUSYg4J75KB6Hr6eFpvJWbq9ChM/704l52QyiqwIGPgzlwqyzUlaKiCTC2j94BJHgKX+pR d2pN0vR4R8oOiKDiytwnNWIHGswbLlXiBGPeIWXfTEKucoW4fGWrFkuxP91qfWysd9D9CX N73C5VvXbmcE1IZp/l/XPK8evLls7cDLTt0lR5uFtUb9Q5RNYWUDMNrPWkbHyzdrW6m5pm I8R8CLUqnYTw3gPBSv/FeHBoOQZg/b4orQdZb2RhdEfSvZEliGxG4MOCdZmehfEKSucqYs 94FZv+RP50KIXLDuM8h9PqCrud+n3gIRZM6iNjEK3zD3ihcg14j+3NETOJPqkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705683578; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=59es8Vfh95BXxcxn+NHLkRpzgjAqo+upTN4Nec1Kkn0=; b=nBOq+za7FMHQLov3XSdApQwE5XS2pxwzNIHUr3qwotSvsMzJBFwfiFCiDdBdRyQGL+ouwo zjnhsXbnjHqK3DnA1RkD7wHHXYgMChfZm8Jco1PPACfO9c9WFXKKszoablAlMAzQGPt+sZ 8Siz2WF4xgWEn4WCb5lyZcNI4/KqunsB4GOsLN/BqPiFUWvgpJkihOxjL4S1ErhSvV3iHZ LVnor+ljomBRHpgNFsdWsWcCPzUh/ypDfmLkbQNy5/827OEXBuLOVqI+n8Kub6p/YoxHcw qzMDJOcblx68p5vWg3pH6DkaEbijnnewWWC3glQamdTWKabaF5KI6io02ADA1w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705683578; a=rsa-sha256; cv=none; b=OZY/QLqcNcgtQSciSw8XLJCf1UW5jEynuliGDTn0N1GLJ7PmlM4lM3aKzCq+dMQIPzJGMT AtP5R18/PgBjJ/eVZ3OBIpi2eZhPVEW58zEkynehryN055QZzJdgVeTdi1NCXsYIomK90r zqpSrnbH7gTY/n2SjzBeeq8kyyCi5OahkWvUjO/qja+3OwSGJfnC5getI+3ovYgmowpjYA m0zqk5jNBBrtuPmAnEd648Wi6N/7YfOkleJiuWlqtTJg0yFiFqLfFkIej9CYDZuDxXzH8s wFINBoiDjLEAEPGvhgDZ6LcBbaXhdm0wj29s3tuF8c9I1R3gasGs6JYEOc3MMg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGm7G4lcsz10B2; Fri, 19 Jan 2024 16:59:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JGxcTq061431; Fri, 19 Jan 2024 16:59:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JGxbBn061421; Fri, 19 Jan 2024 16:59:37 GMT (envelope-from git) Date: Fri, 19 Jan 2024 16:59:37 GMT Message-Id: <202401191659.40JGxbBn061421@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 44fac9c0be90 - stable/13 - ispfw(4): Update and add firmware List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 44fac9c0be906266068677bb4abfd6eb6e519021 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=44fac9c0be906266068677bb4abfd6eb6e519021 commit 44fac9c0be906266068677bb4abfd6eb6e519021 Author: Joerg Pulz AuthorDate: 2023-10-27 14:02:07 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 16:59:23 +0000 ispfw(4): Update and add firmware Update 25xx firmware: version 8.8.207 Add 26xx firmware: version 8.8.231 Add 27xx firmware: version 9.12.0 Add 28xx firmware: version 9.12.1 Remove BUGS section from manpage as we now have firmware for all supported controllers. PR: 273263 MFC after: 1 month Pull Request: https://github.com/freebsd/freebsd-src/pull/877 Sponsored by: Technical University of Munich (cherry picked from commit b0c6b06836351b3908ba5b2a847c89c42d1a46c3) --- share/man/man4/ispfw.4 | 2 +- sys/dev/ispfw/asm_2500.h | 29843 +++++++++++++------------- sys/dev/ispfw/asm_2600.h | 22384 ++++++++++++++++++++ sys/dev/ispfw/asm_2700.h | 27431 ++++++++++++++++++++++++ sys/dev/ispfw/asm_2800.h | 38311 ++++++++++++++++++++++++++++++++++ sys/dev/ispfw/ispfw.c | 45 + sys/modules/ispfw/Makefile | 3 + sys/modules/ispfw/isp_2600/Makefile | 35 + sys/modules/ispfw/isp_2700/Makefile | 35 + sys/modules/ispfw/isp_2800/Makefile | 35 + 10 files changed, 102626 insertions(+), 15498 deletions(-) diff --git a/share/man/man4/ispfw.4 b/share/man/man4/ispfw.4 index 2493b89ba430..b2f952ce4ba1 100644 --- a/share/man/man4/ispfw.4 +++ b/share/man/man4/ispfw.4 @@ -20,7 +20,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd November 19, 2020 +.Dd October 27, 2023 .Dt ISPFW 4 .Os .Sh NAME diff --git a/sys/dev/ispfw/asm_2500.h b/sys/dev/ispfw/asm_2500.h index 9ae4284e26ff..7623be0f15ea 100644 --- a/sys/dev/ispfw/asm_2500.h +++ b/sys/dev/ispfw/asm_2500.h @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-3-Clause * - * Copyright (C) 2005-2014 by Qlogic, Inc. + * Copyright (C) 2005-2019 by Qlogic, Inc. * All rights reserved. * * Redistribution and use in source and binary forms are permitted provided @@ -31,31 +31,31 @@ * * * ******************************************************************** */ /* - * Firmware Version 8.07.00 (2017) + * Firmware Version 8.08.207 (2019) */ #ifdef ISP_2500 static const uint32_t isp_2500_risc_code[] = { - 0x0501f06b, 0x00116000, 0x00100000, 0x0000d596, - 0x00000008, 0x00000007, 0x00000000, 0x001090d5, + 0x0501f06b, 0x00115000, 0x00100000, 0x0000c8ea, + 0x00000008, 0x00000008, 0x000000cf, 0x00109095, 0x00000004, 0x00000000, 0x20434f50, 0x59524947, - 0x48542032, 0x30313720, 0x514c4f47, 0x49432043, + 0x48542032, 0x30313920, 0x514c4f47, 0x49432043, 0x4f52504f, 0x52415449, 0x4f4e2020, 0x20495350, 0x32357878, 0x20466972, 0x6d776172, 0x65202020, - 0x56657273, 0x696f6e20, 0x2020382e, 0x30372e30, - 0x30202024, 0x00000000, 0x00000000, 0x00000000, + 0x56657273, 0x696f6e20, 0x2020382e, 0x30382e32, + 0x30372020, 0x24000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00100000, - 0x0000d596, 0xffffffff, 0x00116004, 0x00020000, - 0x00001765, 0xffffffff, 0x0011776e, 0x0000c000, - 0x00000a29, 0x00ffffff, 0x00118197, 0x00008000, - 0x000006c5, 0x00ffffff, 0x0011885c, 0x0000a000, - 0x000006b3, 0x00ffffff, 0x00118f0f, 0x0000400e, + 0x0000c8ea, 0xffffffff, 0x00115004, 0x00020000, + 0x00001386, 0xffffffff, 0x0011638f, 0x0000c000, + 0x000009be, 0x00ffffff, 0x00116d4d, 0x00008000, + 0x000005e1, 0x00ffffff, 0x0011732e, 0x0000a000, + 0x00000692, 0x00ffffff, 0x001179c0, 0x0000400e, 0x00000808, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000009, 0x0000000c, - 0x0000000f, 0x00000012, 0x00000015, 0x00000000, - 0x00000000, 0x0000000f, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000006, 0x00000009, + 0x0000000c, 0x0000000f, 0x00000012, 0x00000000, + 0x00000000, 0x0000000c, 0x00000000, 0x00000000, 0x00000000, 0x00100046, 0x00100045, 0x00000000, - 0x00100046, 0x00000000, 0x00000000, 0x00100046, + 0x00000000, 0x00000000, 0x00000000, 0x00100046, 0x00100045, 0x00100042, 0x00100046, 0x00100045, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100046, 0x00000000, 0x00000000, @@ -63,332 +63,301 @@ static const uint32_t isp_2500_risc_code[] = { 0x00100046, 0x00100046, 0x00000000, 0x00100046, 0x00000000, 0x00000000, 0x00000000, 0x4203f000, 0x00021fff, 0x40000000, 0x4203e000, 0x90000100, - 0x40000000, 0x42000800, 0x00021766, 0x6002f000, + 0x40000000, 0x42000800, 0x00021387, 0x6002f000, 0x608c00e0, 0x50000000, 0x8c000500, 0x05020003, 0x42000800, 0x00020000, 0x45780800, 0x80040800, 0x82040580, 0x00022000, 0x05fe07fc, 0x4178a000, - 0x4200a800, 0x0010d596, 0x42000800, 0x00115530, - 0x40540000, 0x8004b480, 0x0569fa95, 0x0501ffd5, + 0x4200a800, 0x0010c8ea, 0x42000800, 0x00114194, + 0x40540000, 0x8004b480, 0x0561fde9, 0x0501ff57, 0x600c6020, 0x50304800, 0x8c240500, 0x0500001c, - 0x59e00016, 0x8c000504, 0x05020019, 0x0569faec, + 0x59e00016, 0x8c000504, 0x05020019, 0x0561fe40, 0x604808fa, 0x50041000, 0x82081500, 0xfffffffc, 0x90081d43, 0x90081540, 0x84244d00, 0x440c0800, 0x44080800, 0x44246000, 0x64030000, 0x4203e000, 0x70000000, 0x4203e000, 0xb0300000, 0x603ff84e, 0x59e00016, 0x8c000504, 0x05020002, 0x05fe47fd, - 0x84244d40, 0x44246000, 0x0569fad5, 0x64030000, - 0x0501fdf9, 0x4803c856, 0x0509fc18, 0x6413c020, + 0x84244d40, 0x44246000, 0x0561fe29, 0x64030000, + 0x0501fd7e, 0x4803c856, 0x0509fb82, 0x6413c020, 0x4203e000, 0x6000000f, 0x640f70e8, 0x640f78e8, 0x640da8e8, 0x59e00023, 0x8c000500, 0x0502002b, 0x42002800, 0x00100022, 0x58140800, 0x4817c857, 0x4807c857, 0x800409c0, 0x0500000a, 0x58142002, - 0x4813c857, 0x58141003, 0x4c140000, 0x0501ff94, + 0x4813c857, 0x58141003, 0x4c140000, 0x0501ff16, 0x5c002800, 0x0502003d, 0x90142c04, 0x05fdf7f3, 0x42002800, 0x00100022, 0x5814a000, 0x4817c857, 0x4853c857, 0x8050a1c0, 0x05000014, 0x4c140000, 0x5814a801, 0x4857c857, 0x40500000, 0x80540480, 0x0500000b, 0x82540480, 0x0000400e, 0x05020005, - 0x9050a404, 0x0509ffb6, 0x05020028, 0x0501f004, - 0x5814b002, 0x485bc857, 0x0569fa39, 0x5c002800, - 0x90142c04, 0x05fdf7e9, 0x050dfe35, 0x42001000, + 0x9050a404, 0x0509ff20, 0x05020028, 0x0501f004, + 0x5814b002, 0x485bc857, 0x0561fd8d, 0x5c002800, + 0x90142c04, 0x05fdf7e9, 0x050dfd9e, 0x42001000, 0x7ff481fe, 0x59e00002, 0x8c00051e, 0x05020003, 0x42001000, 0x7ff480fe, 0x50081000, 0x480b5095, 0x42002800, 0x00100022, 0x58140801, 0x4817c857, 0x4807c857, 0x800409c0, 0x05000023, 0x58142002, 0x4813c857, 0x58141003, 0x4c140000, 0x82040480, - 0x0000400e, 0x05020004, 0x0509ffc0, 0x4803c856, - 0x0501f003, 0x0501ff5a, 0x05020004, 0x5c002800, + 0x0000400e, 0x05020004, 0x0509ff2a, 0x4803c856, + 0x0501f003, 0x0501fedc, 0x05020004, 0x5c002800, 0x90142c04, 0x05fdf7ed, 0x4803c856, 0x4a03c020, 0x00004010, 0x4a03c011, 0x40100011, 0x05006000, 0x4203e000, 0x40000000, 0x59e00017, 0x60000800, - 0x8c00050a, 0x050a0e18, 0x8d0c0530, 0x050a0e0b, - 0x050a0e0d, 0x6403c017, 0x4203e000, 0x30000001, + 0x8c00050a, 0x050a0d82, 0x8d0c0530, 0x050a0d75, + 0x050a0d77, 0x6403c017, 0x4203e000, 0x30000001, 0x0501f000, 0x4803c856, 0x59e00024, 0x8c000500, - 0x050a0f5e, 0x59e00024, 0x8c00050e, 0x05000003, - 0x4a020200, 0x00003800, 0x0501ffd5, 0x4a03c014, - 0x001c001c, 0x4817c857, 0x0505f803, 0x42002000, - 0x00115530, 0x0569fa01, 0x59a800a4, 0x800001c0, + 0x050a0ec8, 0x59e00024, 0x8c00050e, 0x05000003, + 0x4a020200, 0x00003800, 0x0501ff57, 0x4a03c014, + 0x001c001c, 0x4817c857, 0x0501ff85, 0x42002000, + 0x00114194, 0x0561fd55, 0x59a800a4, 0x800001c0, 0x0500000c, 0x59a800cf, 0x8c000500, 0x05000005, 0x59a8000a, 0x82000480, 0x0013ffff, 0x05001005, - 0x59a820a4, 0x80102000, 0x59a8280a, 0x0569f9f3, - 0x0569fc18, 0x0569fc40, 0x59a8280a, 0x60800812, + 0x59a820a4, 0x80102000, 0x59a8280a, 0x0561fd47, + 0x0561ff6c, 0x0561ff94, 0x59a8280a, 0x60800812, 0x60001802, 0x4807503d, 0x480f529f, 0x900d0420, - 0x800404a0, 0x4803543e, 0x60c01000, 0x0541fadf, - 0x82040c00, 0x00115530, 0x4807500b, 0x600400de, + 0x800404a0, 0x4803543e, 0x60c01000, 0x053dfb59, + 0x82040c00, 0x00114194, 0x4807500b, 0x600400de, 0x50000000, 0x8c000502, 0x05000004, 0x59a800cf, 0x84000540, 0x480350cf, 0x4a03c810, 0x00100000, - 0x4a03c811, 0x0010d596, 0x0501ff98, 0x6447c829, + 0x4a03c811, 0x0010c8ea, 0x0501ff1a, 0x6447c829, 0x59e40001, 0x82000540, 0x0003401f, 0x4803c801, 0x4a03c802, 0x00000933, 0x59e00003, 0x82000540, 0x00240000, 0x4803c003, 0x64ffc019, 0x60701000, - 0x0501fedf, 0x4202c000, 0x00115530, 0x42017800, - 0x00115530, 0x59aab00b, 0x59aaa00b, 0x59aaa80b, + 0x0501fe61, 0x4202c000, 0x00114194, 0x42017800, + 0x00114194, 0x59aab00b, 0x59aaa00b, 0x59aaa80b, 0x59aac83d, 0x4967509e, 0x59a8000b, 0x4803500c, - 0x0505f805, 0x0549fa56, 0x0505f80e, 0x0505f89b, - 0x0509ffde, 0x59a80087, 0x8c000508, 0x05000004, - 0x050dfef8, 0x0525f96e, 0x0511f828, 0x0505f9e7, - 0x0505fff5, 0x0541fae7, 0x0501fc5a, 0x0515f873, - 0x0531fd5c, 0x052dfec9, 0x053df876, 0x050df80f, - 0x0509fe32, 0x4203e000, 0xf0000001, 0x0569fc03, - 0x6403c018, 0x4203e000, 0xa0000001, 0x59a800cf, - 0x80000540, 0x05000004, 0x4203e000, 0x20000551, - 0x0501f003, 0x4203e000, 0x20000511, 0x4203e000, - 0x50010000, 0x05006000, 0x6403c020, 0x05027019, - 0x59e00020, 0x90000582, 0x05020016, 0x4a03c020, - 0x00004000, 0x4a03c011, 0x40000010, 0x05006000, - 0x4203e000, 0x40000000, 0x4df00000, 0x4203e000, - 0x50000000, 0x59e00017, 0x60000800, 0x8c00050a, - 0x0002089a, 0x8d0c0530, 0x050a0d78, 0x000209c1, - 0x5c03e000, 0x6403c017, 0x4203e000, 0x30000001, - 0x6002d800, 0x4203e000, 0xb0600000, 0x59a800da, - 0x4003f800, 0x0001f004, 0x4df00000, 0x4203e000, - 0x50000000, 0x416c0000, 0x90000c88, 0x05021c68, - 0x0c01f803, 0x5c03e000, 0x0001f006, 0x001001bc, - 0x001001cd, 0x001002f2, 0x001001bb, 0x00100431, - 0x001001bb, 0x001001bb, 0x001005c9, 0x0501fc5c, - 0x42000800, 0x0011176f, 0x5804001e, 0x8c000500, - 0x0500000c, 0x84000500, 0x4800081e, 0x6012d800, - 0x0501fe6b, 0x49f3c857, 0x5c000800, 0x5c000000, - 0x82000540, 0x00007e20, 0x4c000000, 0x4c040000, - 0x1c01f000, 0x41780000, 0x800001c0, 0x05020039, - 0x59c4000d, 0x8c00051e, 0x0502001f, 0x59a800aa, - 0x8c000500, 0x05000012, 0x60300830, 0x050dfc45, - 0x90040560, 0x60300830, 0x4c000000, 0x050dfc46, - 0x6041d04e, 0x053dfa12, 0x5c000000, 0x8400050a, - 0x60300830, 0x050dfc40, 0x6191d000, 0x053dfa0c, - 0x59c4000d, 0x8c00051e, 0x0502000b, 0x59c40005, - 0x8c000500, 0x05020008, 0x050dffce, 0x640b50b9, - 0x64075078, 0x6012d800, 0x42000000, 0x00111f4d, - 0x0569f05c, 0x0501fe37, 0x0531f92d, 0x0500000f, - 0x0531f93d, 0x05020032, 0x5994002e, 0x82000580, - 0x0010532a, 0x05020004, 0x5994002d, 0x800001c0, - 0x0502002b, 0x59c40006, 0x82000540, 0x000000c0, - 0x48038806, 0x0501f026, 0x0531f89a, 0x916c0581, - 0x050200c5, 0x59a80042, 0x90000589, 0x050200c2, - 0x497b5040, 0x42000800, 0xffffd815, 0x0511fd51, - 0x42024800, 0x00111fa3, 0x497a4805, 0x64078893, - 0x4a038805, 0x000000f0, 0x0531f919, 0x59c41006, - 0x05020006, 0x82081540, 0x000000f1, 0x82081500, - 0xbbffffff, 0x0501f003, 0x82081540, 0x440000f1, - 0x480b8806, 0x053df9da, 0x0009f9ad, 0x0501f8ab, - 0x050000a9, 0x42000000, 0x00111e28, 0x0569f826, - 0x60c01100, 0x497b50b7, 0x0501f036, 0x0525faf3, - 0x59c400a4, 0x9000050f, 0x90000487, 0x0502109e, - 0x053df9cb, 0x59c400a3, 0x82000500, 0xffefffff, - 0x480388a3, 0x59a800c2, 0x800001c0, 0x05020003, - 0x0529f84a, 0x0501f094, 0x59a80046, 0x84000546, - 0x48035046, 0x0531f8ec, 0x59c41006, 0x05020006, - 0x82081540, 0x44000001, 0x82081500, 0xffffff0f, + 0x0501ff87, 0x0545fa7a, 0x0501ff90, 0x0505f81d, + 0x0509ff48, 0x59a80087, 0x8c000508, 0x05000004, + 0x050dfe61, 0x0521fcd1, 0x050dff91, 0x0505f965, + 0x0505ff67, 0x053dfb61, 0x0501fbde, 0x0511fed9, + 0x0531f819, 0x052df994, 0x0539f8d8, 0x0509ff79, + 0x0509fd9c, 0x4203e000, 0xf0000001, 0x0561ff57, + 0x6403c018, 0x42000000, 0x20000511, 0x4203e000, + 0xa0000001, 0x59a808cf, 0x8c040500, 0x05000002, + 0xb0000540, 0x4003e000, 0x4203e000, 0x50010000, + 0x05006000, 0x6403c020, 0x05027019, 0x59e00020, + 0x90000582, 0x05020016, 0x4a03c020, 0x00004000, + 0x4a03c011, 0x40000010, 0x05006000, 0x4203e000, + 0x40000000, 0x4df00000, 0x4203e000, 0x50000000, + 0x59e00017, 0x60000800, 0x8c00050a, 0x00020894, + 0x8d0c0530, 0x050a0ce3, 0x000209b6, 0x5c03e000, + 0x6403c017, 0x4203e000, 0x30000001, 0x6002d800, + 0x4203e000, 0xb0600000, 0x59a800d6, 0x4003f800, + 0x0001f004, 0x4df00000, 0x4203e000, 0x50000000, + 0x416c0000, 0x90000c88, 0x05021bee, 0x0c01f803, + 0x5c03e000, 0x0001f006, 0x001001bb, 0x001001cc, + 0x001002ea, 0x001001ba, 0x001003b5, 0x001001ba, + 0x001001ba, 0x0010054d, 0x0501fbe2, 0x42000800, + 0x00110a6c, 0x5804001e, 0x8c000500, 0x0500000c, + 0x84000500, 0x4800081e, 0x6012d800, 0x0501fdee, + 0x49f3c857, 0x5c000800, 0x5c000000, 0x82000540, + 0x00007e20, 0x4c000000, 0x4c040000, 0x1c01f000, + 0x41780000, 0x800001c0, 0x05020039, 0x59c4000d, + 0x8c00051e, 0x0502001f, 0x59a800aa, 0x8c000500, + 0x05000012, 0x60300830, 0x050dfbaf, 0x90040560, + 0x60300830, 0x4c000000, 0x050dfbb0, 0x6041d04e, + 0x0539fa70, 0x5c000000, 0x8400050a, 0x60300830, + 0x050dfbaa, 0x6191d000, 0x0539fa6a, 0x59c4000d, + 0x8c00051e, 0x0502000b, 0x59c40005, 0x8c000500, + 0x05020008, 0x050dff38, 0x640b50b9, 0x64075078, + 0x6012d800, 0x42000000, 0x00110f39, 0x0561f3b1, + 0x0501fdba, 0x052dfbeb, 0x0500000f, 0x052dfbfb, + 0x05020032, 0x5994002e, 0x82000580, 0x00104e7c, + 0x05020004, 0x5994002d, 0x800001c0, 0x0502002b, + 0x59c40006, 0x82000540, 0x000000c0, 0x48038806, + 0x0501f026, 0x052dfb58, 0x916c0581, 0x050200be, + 0x59a80042, 0x90000589, 0x050200bb, 0x497b5040, + 0x42000800, 0xffffd815, 0x0511fcc2, 0x42024800, + 0x00110f8f, 0x497a4805, 0x64078893, 0x4a038805, + 0x000000f0, 0x052dfbd7, 0x59c41006, 0x05020006, + 0x82081540, 0x000000f1, 0x82081500, 0xbbffffff, 0x0501f003, 0x82081540, 0x440000f1, 0x480b8806, - 0x497b9005, 0x0501f885, 0x05000083, 0x60000000, - 0x052dfe73, 0x4a038802, 0x0000ffff, 0x4a0378e4, - 0x00003000, 0x42007000, 0x00111ae4, 0x58380401, - 0x8c000508, 0x05020003, 0x4a01a8e4, 0x0000c000, - 0x42000000, 0x00111e1f, 0x0565fff3, 0x59a81040, - 0x600c0800, 0x0009f996, 0x60401100, 0x59a81809, - 0x0521fe9a, 0x59a804d1, 0x82000500, 0xffffff40, - 0x480354d1, 0x59a8024c, 0x84000518, 0x4803524c, + 0x0539fa38, 0x0005feac, 0x0501f8a4, 0x050000a2, + 0x42000000, 0x00110e14, 0x0561fb7b, 0x60c01100, + 0x497b50b7, 0x0501f036, 0x0521fe46, 0x59c400a4, + 0x9000050f, 0x90000487, 0x05021097, 0x0539fa29, + 0x59c400a3, 0x82000500, 0xffefffff, 0x480388a3, + 0x59a800c2, 0x800001c0, 0x05020003, 0x0525fb9d, + 0x0501f08d, 0x59a80046, 0x84000546, 0x48035046, + 0x052dfbaa, 0x59c41006, 0x05020006, 0x82081540, + 0x44000001, 0x82081500, 0xffffff0f, 0x0501f003, + 0x82081540, 0x440000f1, 0x480b8806, 0x497b9005, + 0x0501f87e, 0x0500007c, 0x60000000, 0x052df930, + 0x4a038802, 0x0000ffff, 0x4a0378e4, 0x00003000, + 0x42007000, 0x00110ae1, 0x58380401, 0x8c000508, + 0x05020003, 0x4a01a8e4, 0x0000c000, 0x42000000, + 0x00110e0b, 0x0561fb48, 0x59a81040, 0x600c0800, + 0x0005fe95, 0x60401100, 0x59a81809, 0x0521fa08, 0x59c40001, 0x82000500, 0x00018000, 0x82000580, 0x00018000, 0x59c400a3, 0x05020004, 0x82000540, 0x00001000, 0x0501f003, 0x82000500, 0xffffefff, 0x480388a3, 0x59c80015, 0x84000548, 0x48039015, - 0x050dfb03, 0x59a81008, 0x84081500, 0x480b5008, - 0x850e1d0a, 0x0529ff44, 0x0531f8a5, 0x05000007, + 0x050dfa74, 0x59a81008, 0x84081500, 0x480b5008, + 0x850e1d0a, 0x0529fa94, 0x052dfb6a, 0x05000007, 0x8d0c0506, 0x05000005, 0x640750b7, 0x850e1d0e, - 0x0525fbbc, 0x0501f048, 0x052df84b, 0x05000005, + 0x0521ff16, 0x0501f048, 0x0529fb9b, 0x05000005, 0x59c41002, 0x8408150c, 0x480b8802, 0x0501f017, - 0x0531f897, 0x05020005, 0x59a80049, 0x80000540, - 0x05540e81, 0x0501f011, 0x0555fe7f, 0x59a8024c, + 0x052dfb5c, 0x05020005, 0x59a80049, 0x80000540, + 0x05500d31, 0x0501f011, 0x0551fd2f, 0x59a8024c, 0x8c000506, 0x0502000d, 0x59a80049, 0x80000540, 0x05020007, 0x59a81c4c, 0x820c0580, 0x0000ffff, 0x05000006, 0x8c0c0508, 0x05000004, 0x4a03544c, - 0x0000ffff, 0x0529f8fd, 0x497b504e, 0x497b504d, - 0x497b50b8, 0x0531f87e, 0x59a8124c, 0x05020009, - 0x050df8f5, 0x80001580, 0x59a80050, 0x82000500, + 0x0000ffff, 0x0525fc57, 0x497b504e, 0x497b504d, + 0x497b50b8, 0x052dfb43, 0x59a8124c, 0x05020009, + 0x050df866, 0x80001580, 0x59a80050, 0x82000500, 0xffff0000, 0x80040d40, 0x48075050, 0x0501f005, 0x59a80050, 0x82000500, 0xffff0000, 0x48035050, 0x599c0017, 0x8c00050a, 0x05000002, 0x84081544, - 0x480b524c, 0x0531f86a, 0x05000003, 0x050df8e2, - 0x48078880, 0x60141000, 0x0009fc8e, 0x497b504e, + 0x480b524c, 0x052dfb2f, 0x05000003, 0x050df853, + 0x48078880, 0x60141000, 0x0009f98a, 0x497b504e, 0x497b5047, 0x4a035048, 0x0000ffff, 0x4a01a8e4, - 0x000000c0, 0x600ad800, 0x0531f85d, 0x05000005, + 0x000000c0, 0x600ad800, 0x052dfb22, 0x05000005, 0x59a8024c, 0x9000050c, 0x90000584, 0x05000002, - 0x0511fa80, 0x1c01f000, 0x0521ff6f, 0x05020026, + 0x0511f9ef, 0x1c01f000, 0x0521fada, 0x05020026, 0x599c0019, 0x82000500, 0x0000e000, 0x82000580, 0x00004000, 0x05020020, 0x59c40001, 0x82000d00, 0x00018000, 0x82040580, 0x00010000, 0x05000004, 0x82040580, 0x00008000, 0x05020017, 0x59a800a9, 0x90000483, 0x05001003, 0x90000541, 0x0501f012, - 0x050dfea7, 0x64075078, 0x4a035079, 0xaabbccdd, + 0x050dfe18, 0x64075078, 0x4a035079, 0xaabbccdd, 0x6413506c, 0x6403506d, 0x6012d800, 0x59a800a9, 0x80000000, 0x480350a9, 0x59a800a8, 0x82000500, - 0xfffffff8, 0x90000544, 0x480350a8, 0x0501fd40, - 0x80000580, 0x1c01f000, 0x0525f944, 0x05000051, - 0x59a8024c, 0x90000523, 0x900005a3, 0x0502004d, - 0x0525f943, 0x0500004b, 0x4a038802, 0x0000ffbf, - 0x59a804d1, 0x8c00050c, 0x05020132, 0x8c000506, - 0x0502000b, 0x8c000508, 0x0502012e, 0x84000548, - 0x480354d1, 0x0525f93b, 0x05000004, 0x417a5800, - 0x0559fd2e, 0x0501f127, 0x0501f0ee, 0x8c00050a, - 0x05020038, 0x8400054a, 0x480354d1, 0x497b504e, - 0x497b504d, 0x497b5047, 0x4a035048, 0x0000ffff, - 0x59a8024c, 0x82000500, 0xffffff7c, 0x4803524c, - 0x42024800, 0x00111fa3, 0x59240200, 0x82000500, - 0xffffff1f, 0x48024a00, 0x59a802d1, 0x5924100b, - 0x82081500, 0x00001fff, 0x80080580, 0x05000012, - 0x4d3c0000, 0x4d300000, 0x4d400000, 0x60aa8000, - 0x417a6000, 0x600a7800, 0x41780800, 0x0511fca9, - 0x5c028000, 0x5c026000, 0x5c027800, 0x59a802d1, - 0x5924080b, 0x82040d00, 0xffffe000, 0x80040540, - 0x4802480b, 0x4d300000, 0x417a6000, 0x0511fc4a, - 0x5c026000, 0x4803c856, 0x5924000c, 0x800001c0, - 0x05020006, 0x0001f81f, 0x050000f2, 0x492e480c, - 0x5924000b, 0x48025802, 0x0511fa06, 0x0501f0ed, - 0x59a80048, 0x82000580, 0x0000ffff, 0x05000003, - 0x0511fa00, 0x0501f0e7, 0x0569f837, 0x05000017, - 0x0569f83a, 0x05000008, 0x052dffd1, 0x05000006, - 0x59a8024c, 0x8c000506, 0x0500004e, 0x0529ff7a, - 0x050200dc, 0x80000580, 0x0509ff99, 0x600ed800, - 0x4a035048, 0x0000ffff, 0x4a01a8e4, 0x00000080, - 0x4a038802, 0x0000ffff, 0x850e1d02, 0x0009fbe8, - 0x0501fcb6, 0x0501f0cf, 0x59a8024c, 0x8c00050a, - 0x05020003, 0x8c000506, 0x05000037, 0x8c000500, - 0x05000035, 0x4a038802, 0x0000ffbf, 0x8c000502, - 0x05000031, 0x0525f8ce, 0x05020004, 0x599c0018, - 0x8c000516, 0x05020029, 0x59a8004d, 0x82000580, - 0x0000ffff, 0x05000020, 0x0525f8c5, 0x05000006, - 0x59a804d1, 0x8c000500, 0x05000003, 0x0511fc86, - 0x0501f008, 0x41781800, 0x0569f814, 0x05000002, - 0x60401800, 0x59a8024c, 0x8c00050a, 0x05120ade, - 0x42024800, 0x00111fa3, 0x417a4000, 0x59240200, - 0x82000500, 0x000000e0, 0x82000580, 0x000000e0, - 0x050200a4, 0x050dff77, 0x59a8024c, 0x8c000504, - 0x050200a0, 0x600c1000, 0x417a5800, 0x050dff96, - 0x0501f09c, 0x59a8024c, 0x8c00051c, 0x05020003, - 0x8c000504, 0x05fc07f8, 0x59a8004e, 0x80000540, - 0x05020094, 0x59a8024c, 0x8c000508, 0x05020017, - 0x59a80047, 0x80000540, 0x0502008e, 0x59a8024c, - 0x8c00050e, 0x0500000c, 0x8c000502, 0x0502000a, - 0x052dff77, 0x05000087, 0x82000500, 0xffffff77, - 0x4803524c, 0x4a035048, 0x0000ffff, 0x0511f999, - 0x0501f080, 0x0565ffe1, 0x0500000c, 0x0511fd27, - 0x0502007c, 0x0501f009, 0x599c1819, 0x8c0c0510, - 0x05000004, 0x8c000502, 0x05020021, 0x0501f075, - 0x8c000516, 0x05000073, 0x0529ff0f, 0x05020071, - 0x0525f87b, 0x05020004, 0x599c0018, 0x8c000516, - 0x05020003, 0x052dfb36, 0x0502006a, 0x59a80006, - 0x8c00051c, 0x05020004, 0x599c0017, 0x8c00050a, - 0x0500000f, 0x59a8b0ac, 0x417a8800, 0x0001fb0f, - 0x05020004, 0x59340200, 0x8c00051a, 0x0502005d, - 0x81468800, 0x83440580, 0x000007f0, 0x05020002, - 0x60028810, 0x8058b040, 0x05fe07f5, 0x0565ffd5, - 0x05000004, 0x4a038802, 0x0000ffbf, 0x0501f003, - 0x4a038802, 0x0000ffff, 0x42001800, 0x001117ca, - 0x0501fd75, 0x42001800, 0x001117d7, 0x0501fd72, - 0x850e1d02, 0x4a01a8e4, 0x00000080, 0x600ed800, - 0x4a035048, 0x0000ffff, 0x0501fc28, 0x80000580, - 0x0509feff, 0x497b50a9, 0x6407507b, 0x0525f848, - 0x0502000b, 0x599c0018, 0x8c000516, 0x05000008, - 0x59a804d1, 0x8c00050e, 0x05020036, 0x8400054e, - 0x480354d1, 0x0521fdc3, 0x0501f016, 0x59a81a4c, + 0xfffffff8, 0x90000544, 0x480350a8, 0x0501fcca, + 0x80000580, 0x1c01f000, 0x59a80048, 0x82000580, + 0x0000ffff, 0x05000003, 0x0511f9c1, 0x0501f0c5, + 0x0561fbe5, 0x05000017, 0x0561fbe8, 0x05000008, + 0x052dfae8, 0x05000006, 0x59a8024c, 0x8c000506, + 0x05000045, 0x0529fb1c, 0x050200ba, 0x80000580, + 0x0509ff5d, 0x600ed800, 0x4a035048, 0x0000ffff, + 0x4a01a8e4, 0x00000080, 0x4a038802, 0x0000ffff, + 0x850e1d02, 0x0009f8e4, 0x0501fc92, 0x0501f0ad, + 0x59a8024c, 0x8c00050a, 0x05020003, 0x8c000506, + 0x0500002e, 0x8c000500, 0x0500002c, 0x4a038802, + 0x0000ffbf, 0x8c000502, 0x05000028, 0x599c0018, + 0x8c000516, 0x05020022, 0x59a8004d, 0x82000580, + 0x0000ffff, 0x05000019, 0x41781800, 0x0561fbcb, + 0x05000002, 0x60401800, 0x59a8024c, 0x8c00050a, + 0x05120aa8, 0x42024800, 0x00110f8f, 0x417a4000, + 0x59240200, 0x82000500, 0x000000e0, 0x82000580, + 0x000000e0, 0x0502008b, 0x050dff43, 0x59a8024c, + 0x8c000504, 0x05020087, 0x600c1000, 0x417a5800, + 0x050dff62, 0x0501f083, 0x59a8024c, 0x8c00051c, + 0x05020003, 0x8c000504, 0x05fc07f8, 0x59a8004e, + 0x80000540, 0x0502007b, 0x59a8024c, 0x8c000508, + 0x05020017, 0x59a80047, 0x80000540, 0x05020075, + 0x59a8024c, 0x8c00050e, 0x0500000c, 0x8c000502, + 0x0502000a, 0x052dfa97, 0x0500006e, 0x82000500, + 0xffffff77, 0x4803524c, 0x4a035048, 0x0000ffff, + 0x0511f963, 0x0501f067, 0x0561fb98, 0x0500000c, + 0x0511fbf0, 0x05020063, 0x0501f009, 0x599c1819, + 0x8c0c0510, 0x05000004, 0x8c000502, 0x0502001f, + 0x0501f05c, 0x8c000516, 0x0500005a, 0x0529faba, + 0x05020058, 0x599c0018, 0x8c000516, 0x05020003, + 0x0529fee3, 0x05020053, 0x59a80006, 0x8c00051c, + 0x05020004, 0x599c0017, 0x8c00050a, 0x0500000f, + 0x59a8b0ac, 0x417a8800, 0x0001fafc, 0x05020004, + 0x59340200, 0x8c00051a, 0x05020046, 0x81468800, + 0x83440580, 0x000007f0, 0x05020002, 0x60028810, + 0x8058b040, 0x05fe07f5, 0x0561fb8e, 0x05000004, + 0x4a038802, 0x0000ffbf, 0x0501f003, 0x4a038802, + 0x0000ffff, 0x42001800, 0x00110ac7, 0x0501fd5c, + 0x42001800, 0x00110ad4, 0x0501fd59, 0x850e1d02, + 0x4a01a8e4, 0x00000080, 0x600ed800, 0x4a035048, + 0x0000ffff, 0x0501fc0f, 0x80000580, 0x0509fece, + 0x497b50a9, 0x6407507b, 0x599c0018, 0x8c000516, + 0x05000003, 0x0521f99d, 0x0501f016, 0x59a81a4c, 0x59a82044, 0x82102580, 0x0000aaaa, 0x05000004, 0x8c0c0506, 0x05020002, 0x480f544c, 0x8c0c0508, 0x05000007, 0x599c1819, 0x8c0c0510, 0x05000004, 0x61f8180f, 0x60102000, 0x0501f003, 0x61fc19ff, - 0x60182000, 0x60003000, 0x417a4000, 0x0521fd4f, - 0x052dff1d, 0x0500000a, 0x59c40006, 0x052dff08, + 0x60182000, 0x60003000, 0x417a4000, 0x0521f928, + 0x052dfa46, 0x0500000a, 0x59c40006, 0x052dfa31, 0x05000004, 0x82000500, 0xffffff0f, 0x0501f003, - 0x82000500, 0xfbffffff, 0x48038806, 0x0525f81c, - 0x0500000a, 0x59a804d1, 0x8c000500, 0x05000007, - 0x59c40801, 0x82040d40, 0x00004000, 0x48078801, - 0x64c378e4, 0x0501f006, 0x59c40801, 0x82040d00, - 0xffffbfff, 0x48078801, 0x648378e4, 0x0009fbe8, + 0x82000500, 0xfbffffff, 0x48038806, 0x0009f8e4, 0x1c01f000, 0x4c040000, 0x4c080000, 0x4c100000, - 0x59a8006d, 0x90000c84, 0x050219e1, 0x0c01f805, + 0x59a8006d, 0x90000c84, 0x050219e2, 0x0c01f805, 0x5c002000, 0x5c001000, 0x5c000800, 0x1c01f000, - 0x00100440, 0x001004da, 0x001004ff, 0x001005ad, - 0x60380938, 0x050df9db, 0x90040550, 0x82000500, - 0xfffffff7, 0x60380938, 0x050df9db, 0x59c410a3, - 0x84081518, 0x480b88a3, 0x0521fdef, 0x05020021, + 0x001003c4, 0x0010045e, 0x00100483, 0x00100531, + 0x60380938, 0x050df9c0, 0x90040550, 0x82000500, + 0xfffffff7, 0x60380938, 0x050df9c0, 0x59c410a3, + 0x84081518, 0x480b88a3, 0x0521f9ce, 0x05020021, 0x599c0019, 0x82000500, 0x0000e000, 0x82000580, 0x00004000, 0x0502001b, 0x59a808a8, 0x90040d07, 0x90040580, 0x0502000b, 0x59a8006c, 0x90000582, - 0x05000011, 0x050df91e, 0x497b506b, 0x050dfd1d, + 0x05000011, 0x050df903, 0x497b506b, 0x050dfd02, 0x640f5079, 0x640b506c, 0x64075078, 0x0501f00a, 0x90040584, 0x05020008, 0x497b2804, 0x497b2805, - 0x050dfd23, 0x64075078, 0x4a035079, 0xaabbccdd, + 0x050dfd08, 0x64075078, 0x4a035079, 0xaabbccdd, 0x6413506c, 0x59a800a8, 0x80000000, 0x480350a8, - 0x60000001, 0x0509fe82, 0x0539ff89, 0x59c408a3, - 0x82040d00, 0xfffffff7, 0x480788a3, 0x052dfeb2, - 0x0500000d, 0x052dfebc, 0x0500000b, 0x052dfeb4, - 0x0502099f, 0x59c400a3, 0x84000532, 0x84000570, - 0x480388a3, 0x0531f9e3, 0x4a038808, 0x00000208, + 0x60000001, 0x0509fe68, 0x0539f862, 0x59c408a3, + 0x82040d00, 0xfffffff7, 0x480788a3, 0x052df9eb, + 0x0500000d, 0x052df9f5, 0x0500000b, 0x052df9ed, + 0x050209a0, 0x59c400a3, 0x84000532, 0x84000570, + 0x480388a3, 0x052dfd1c, 0x4a038808, 0x00000208, 0x0501f012, 0x59c400a3, 0x84000530, 0x82000500, - 0xbf7fffff, 0x480388a3, 0x61e00801, 0x0525feb7, + 0xbf7fffff, 0x480388a3, 0x61e00801, 0x0525fa85, 0x59c400a3, 0x82000540, 0x00018000, 0x8400051c, 0x480388a3, 0x82000500, 0xfffeffff, 0x480388a3, 0x4a038808, 0x00000200, 0x59c40006, 0x82000500, 0xfbffff0e, 0x48038806, 0x497b282d, 0x497b282e, - 0x61d00803, 0x42001000, 0x001005c7, 0x0539fdaa, - 0x59c40805, 0x64078805, 0x0509ff2f, 0x05020006, - 0x60040000, 0x050df90f, 0x60040000, 0x050df8dd, - 0x0501f01e, 0x0509ff2e, 0x05020006, 0x41780000, - 0x050df908, 0x41780000, 0x050df8d6, 0x0501f017, - 0x0509ff2d, 0x05020006, 0x60080000, 0x050df901, - 0x60080000, 0x050df8cf, 0x0501f010, 0x0509ff2c, - 0x05020006, 0x600c0000, 0x050df8fa, 0x600c0000, - 0x050df8c8, 0x0501f009, 0x0509ff2b, 0x0502095c, - 0x59a80078, 0x800001c0, 0x05000004, 0x0509ff2b, - 0x6407506d, 0x0501f018, 0x050df948, 0x6407506d, - 0x052dfe61, 0x05000008, 0x052dfe6b, 0x05000006, - 0x052dfe63, 0x0502094e, 0x64075045, 0x052dfdd1, + 0x61d00803, 0x42001000, 0x0010054b, 0x0535fe88, + 0x59c40805, 0x64078805, 0x0509ff14, 0x05020006, + 0x60040000, 0x050df8f4, 0x60040000, 0x050df8c2, + 0x0501f01e, 0x0509ff13, 0x05020006, 0x41780000, + 0x050df8ed, 0x41780000, 0x050df8bb, 0x0501f017, + 0x0509ff12, 0x05020006, 0x60080000, 0x050df8e6, + 0x60080000, 0x050df8b4, 0x0501f010, 0x0509ff11, + 0x05020006, 0x600c0000, 0x050df8df, 0x600c0000, + 0x050df8ad, 0x0501f009, 0x0509ff10, 0x0502095d, + 0x59a80078, 0x800001c0, 0x05000004, 0x0509ff10, + 0x6407506d, 0x0501f018, 0x050df92d, 0x6407506d, + 0x052df99a, 0x05000008, 0x052df9a4, 0x05000006, + 0x052df99c, 0x0502094f, 0x64075045, 0x052df90a, 0x0501f00d, 0x59c400a4, 0x9000050f, 0x90000588, 0x05000003, 0x4a038805, 0x04000000, 0x59c400a3, 0x82000540, 0x0001c000, 0x480388a3, 0x84000520, 0x480388a3, 0x1c01f000, 0x0501f8e9, 0x05020003, - 0x640f506d, 0x0501f021, 0x0509ff07, 0x0502000d, - 0x59a80078, 0x800001c0, 0x0500000a, 0x0509ff07, - 0x59a80077, 0x8c00051e, 0x05000018, 0x052dfe44, - 0x05020006, 0x64075045, 0x052dfdb2, 0x0501f003, - 0x050df8f2, 0x05020011, 0x050df889, 0x640b506d, + 0x640f506d, 0x0501f021, 0x0509feec, 0x0502000d, + 0x59a80078, 0x800001c0, 0x0500000a, 0x0509feec, + 0x59a80077, 0x8c00051e, 0x05000018, 0x052df97d, + 0x05020006, 0x64075045, 0x052df8eb, 0x0501f003, + 0x050df8d7, 0x05020011, 0x050df86e, 0x640b506d, 0x497b5078, 0x59c400a3, 0x84000520, 0x480388a3, - 0x052dfe37, 0x05000009, 0x0521fd43, 0x05000007, + 0x052df970, 0x05000009, 0x0521f922, 0x05000007, 0x497b282d, 0x497b282e, 0x60b40800, 0x42001000, - 0x001005c7, 0x0539fd48, 0x1c01f000, 0x0501f8c4, + 0x0010054b, 0x0535fe26, 0x1c01f000, 0x0501f8c4, 0x05020003, 0x640f506d, 0x0501f0a9, 0x4a038805, - 0x000000f0, 0x050df8d9, 0x050200a0, 0x050dfae4, - 0x05000017, 0x050dfac9, 0x05020015, 0x050dfad2, + 0x000000f0, 0x050df8be, 0x050200a0, 0x050dfac9, + 0x05000017, 0x050dfaae, 0x05020015, 0x050dfab7, 0x0502000a, 0x59a80079, 0x90000584, 0x05fc07f2, - 0x0509fecf, 0x0502000e, 0x59a80079, 0x82000580, + 0x0509feb4, 0x0502000e, 0x59a80079, 0x82000580, 0xaabbccdd, 0x05fc07ec, 0x59a80079, 0x90000580, - 0x05fc07e9, 0x0509feb4, 0x05020005, 0x59a80079, + 0x05fc07e9, 0x0509fe99, 0x05020005, 0x59a80079, 0x82000580, 0xaabbccdd, 0x05fc07e3, 0x59a800aa, 0x8c000500, 0x0502000b, 0x59a80887, 0x8c04050c, - 0x05020008, 0x60380938, 0x050df8f6, 0x90040548, - 0x82000500, 0xffffffef, 0x60380938, 0x050df8f6, - 0x050dfabf, 0x05000032, 0x0521ff94, 0x0500000c, + 0x05020008, 0x60380938, 0x050df8db, 0x90040548, + 0x82000500, 0xffffffef, 0x60380938, 0x050df8db, + 0x050dfaa4, 0x05000032, 0x0521fb62, 0x0500000c, 0x4a03c014, 0x00200020, 0x59c40001, 0x82000500, 0x00018000, 0x82000580, 0x00018000, 0x05020026, 0x4a03c013, 0x00200020, 0x0501f025, 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, 0x59c40001, 0x82000500, 0x00018000, 0x82000580, 0x00018000, 0x0502000c, 0x60880801, 0x61d81000, 0x60201800, - 0x0521ff7e, 0x050008ce, 0x60880801, 0x61b81000, - 0x60201800, 0x0521ff79, 0x050008c9, 0x0501f00b, - 0x60880801, 0x61d81000, 0x60201800, 0x0521ff81, - 0x050008c3, 0x60880801, 0x61b81000, 0x60201800, - 0x0521ff7c, 0x050008be, 0x4a03c014, 0x03800000, - 0x0501f003, 0x4a03c013, 0x00200000, 0x052dfdcc, + 0x0521fb4c, 0x050008cf, 0x60880801, 0x61b81000, + 0x60201800, 0x0521fb47, 0x050008ca, 0x0501f00b, + 0x60880801, 0x61d81000, 0x60201800, 0x0521fb4f, + 0x050008c4, 0x60880801, 0x61b81000, 0x60201800, + 0x0521fb4a, 0x050008bf, 0x4a03c014, 0x03800000, + 0x0501f003, 0x4a03c013, 0x00200000, 0x052df905, 0x0500003d, 0x59c400a4, 0x9000050f, 0x90000588, 0x05000021, 0x59c40005, 0x8c000534, 0x0502001e, - 0x5994002f, 0x800001c0, 0x05000007, 0x0501fadd, + 0x5994002f, 0x800001c0, 0x05000007, 0x0501fadb, 0x90000402, 0x5994082d, 0x80040480, 0x0502103c, 0x0501f004, 0x5994002d, 0x90000482, 0x05021038, - 0x052dfdbd, 0x05020036, 0x4a038805, 0x000000f0, - 0x052dfde7, 0x4a035044, 0x0000aaaa, 0x64035045, + 0x052df8f6, 0x05020036, 0x4a038805, 0x000000f0, + 0x052df920, 0x4a035044, 0x0000aaaa, 0x64035045, 0x59c408a3, 0x90040d48, 0x480788a3, 0x6006d800, 0x6403506d, 0x64078805, 0x497b282d, 0x497b282e, - 0x0501f019, 0x052dfdac, 0x05020007, 0x59a80044, + 0x0501f019, 0x052df8e5, 0x05020007, 0x59a80044, 0x82000580, 0x0000aaaa, 0x05020003, 0x4a035040, 0x00ffffff, 0x497b5044, 0x59c40006, 0x82000540, 0x04000001, 0x48038806, 0x8d0c0506, 0x05020004, @@ -396,3962 +365,3700 @@ static const uint32_t isp_2500_risc_code[] = { 0x6403506d, 0x64078805, 0x497b282d, 0x497b282e, 0x0501f00f, 0x59c40005, 0x82000500, 0x000000c0, 0x0500000b, 0x59c40006, 0x82000540, 0x000000f1, - 0x48038806, 0x05fdf7f2, 0x0509fe3f, 0x05020004, + 0x48038806, 0x05fdf7f2, 0x0509fe24, 0x05020004, 0x59a80078, 0x800001c0, 0x05fe0757, 0x497b8885, - 0x1c01f000, 0x4803c856, 0x0521fc8b, 0x05020005, - 0x050dfbf6, 0x42000000, 0x00111f4e, 0x0565fc99, - 0x60000001, 0x0509fd3a, 0x6403506d, 0x0509fe2e, + 0x1c01f000, 0x4803c856, 0x0521f86a, 0x05020005, + 0x050dfbdb, 0x42000000, 0x00110f3a, 0x0561f869, + 0x60000001, 0x0509fd20, 0x6403506d, 0x0509fe13, 0x05020009, 0x59a8006b, 0x800001c0, 0x05000004, 0x80000040, 0x4803506b, 0x05020003, 0x642b506b, - 0x64075078, 0x497b8885, 0x0501f226, 0x5994002d, + 0x64075078, 0x497b8885, 0x0501f224, 0x5994002d, 0x5994082e, 0x80040540, 0x1c01f000, 0x497b282e, 0x1c01f000, 0x4a038805, 0x000000f0, 0x1c01f000, - 0x64235096, 0x641f5097, 0x64035098, 0x4a035099, - 0x001090d5, 0x0531f8a4, 0x4a03544c, 0x0000ffff, - 0x4a035040, 0x00ffffff, 0x0555fb37, 0x4a035050, - 0x20200000, 0x4a035051, 0x88000200, 0x4a035052, - 0x00ff001f, 0x4a035053, 0x000007d0, 0x4a035054, - 0x80000a00, 0x4a035055, 0xa0000200, 0x4a035056, - 0x00ff0004, 0x4a035057, 0x00010000, 0x4a035058, - 0x80000000, 0x4a035059, 0x00000200, 0x4a03505a, - 0x00ff0000, 0x4a03505b, 0x00010000, 0x4a035062, - 0x514c4f47, 0x4a035063, 0x49432020, 0x1c01f000, - 0x4d340000, 0x4d440000, 0x417a8800, 0x4c5c0000, - 0x4178b800, 0x0001fb0f, 0x05020004, 0x0529fe76, - 0x05020002, 0x805cb800, 0x81468800, 0x83440580, - 0x000007f0, 0x05020002, 0x60028810, 0x59a800ad, - 0x81440580, 0x05fe07f4, 0x405c0800, 0x5c00b800, - 0x5c028800, 0x5c026800, 0x1c01f000, 0x4803c857, - 0x5c000000, 0x4c000000, 0x4803c857, 0x0501f808, - 0x485fc857, 0x4203e000, 0x50000000, 0x5c000000, - 0x4d780000, 0x6008b900, 0x0501f006, 0x485fc857, - 0x496fc857, 0x4203e000, 0x50000000, 0x6008b900, - 0x4c000000, 0x05006000, 0x4c040000, 0x59bc00ea, - 0x4803c857, 0x90000507, 0x90000581, 0x05020003, - 0x60000800, 0x0009f98d, 0x59b800ea, 0x4803c857, - 0x641370e8, 0x5c000800, 0x4807c025, 0x80040920, - 0x4807c026, 0x5c000000, 0x4803c023, 0x80000120, - 0x4803c024, 0x5c000000, 0x4803c857, 0x4803c021, - 0x80000120, 0x4803c022, 0x41f80000, 0x4803c029, - 0x80000120, 0x4803c02a, 0x41780800, 0x4807c027, - 0x59a800b4, 0x8c00050a, 0x05000004, 0x84040d4a, - 0x4807c857, 0x4807c027, 0x0565fd29, 0x0500004a, - 0x42000800, 0x00114029, 0x46000800, 0xfaceface, - 0x80040800, 0x4c080000, 0x4c0c0000, 0x600010f4, - 0x58080013, 0x44000800, 0x80040800, 0x58080022, - 0x44000800, 0x80040800, 0x58080023, 0x44000800, - 0x80040800, 0x58080024, 0x44000800, 0x80040800, - 0x58080025, 0x44000800, 0x80040800, 0x58080028, - 0x44000800, 0x80040800, 0x610010f4, 0x602c1800, - 0x50080000, 0x44000800, 0x80081000, 0x80040800, - 0x800c1840, 0x05fe07fb, 0x600c1800, 0x600010f6, - 0x480c1003, 0x58080005, 0x44000800, 0x80040800, - 0x800c1840, 0x05fe17fb, 0x600010f8, 0x58080002, - 0x44000800, 0x80040800, 0x58080003, 0x44000800, - 0x80040800, 0x58080020, 0x44000800, 0x80040800, - 0x58080021, 0x44000800, 0x80040800, 0x58080022, - 0x44000800, 0x80040800, 0x58080023, 0x44000800, - 0x80040800, 0x600010f6, 0x58080007, 0x44000800, - 0x80040800, 0x5808002b, 0x44000800, 0x80040800, - 0x5808007c, 0x44000800, 0x80040800, 0x5c001800, - 0x5c001000, 0x64030000, 0x485fc020, 0x905cb9c0, - 0x905cbd52, 0x485fc011, 0x4203e000, 0x40000000, - 0x6016d800, 0x59e00017, 0x60000800, 0x8c00050a, - 0x050a0889, 0x8d0c0530, 0x050a087c, 0x050a087e, - 0x6403c017, 0x4203e000, 0x30000001, 0x0501f94a, - 0x05fdf7ff, 0x600c0000, 0x0501f80c, 0x4a03c855, - 0x0001eb5a, 0x59e40001, 0x82000540, 0xff000700, - 0x4803c801, 0x42000000, 0x00111f76, 0x49780003, - 0x49780004, 0x1c01f000, 0x42000800, 0x00111f78, - 0x44000800, 0x59e40801, 0x82041500, 0x00f3c0ff, - 0x480bc801, 0x4a03c850, 0x001141d3, 0x800000d4, - 0x82002400, 0x001141d2, 0x4813c851, 0x4a03c853, - 0x00000400, 0x42000000, 0x001141d3, 0x82001400, - 0x00000c00, 0x45780000, 0x80000000, 0x80081d80, - 0x05fe07fd, 0x4807c801, 0x1c01f000, 0x42002000, - 0x00111f76, 0x59e41801, 0x58100c01, 0x82040500, - 0x00003800, 0x820c1d00, 0xffffc7ff, 0x800c1d40, - 0x480fc801, 0x1c01f000, 0x5c036000, 0x4db00000, - 0x49b3c857, 0x4803c857, 0x1c01f000, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x8d0c052a, 0x0500002f, - 0x401c0000, 0x80040d40, 0x4004b800, 0x400cc000, - 0x4018c800, 0x0501f8d3, 0x41784000, 0x42002800, - 0x00111f76, 0x58142017, 0x5814000d, 0x80100400, - 0x445c0000, 0x80102000, 0x80000000, 0x82104d00, - 0x000000ff, 0x050008a9, 0x0500001c, 0x4c000000, - 0x0501f890, 0x5c000000, 0x44080000, 0x80102000, - 0x80000000, 0x82104d00, 0x000000ff, 0x0500089f, - 0x05000012, 0x44600000, 0x80102000, 0x80000000, - 0x82104d00, 0x000000ff, 0x05000898, 0x0500000b, - 0x44640000, 0x80102000, 0x80000000, 0x82104d00, - 0x000000ff, 0x05000891, 0x05000004, 0x48102817, - 0x802041c0, 0x05060d4a, 0x5c00c800, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x42001000, 0x04000000, 0x41ccc800, - 0x42002800, 0x00111f76, 0x59a800d5, 0x82000d00, - 0x000003ff, 0x4c000000, 0x58140212, 0x0501f85d, - 0x5c000000, 0x4004b800, 0x4008c000, 0x905cbc06, - 0x8c000516, 0x05000002, 0x905cbc02, 0x0501f016, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x42002800, - 0x00111f76, 0x42001000, 0x03000000, 0x4000c800, - 0x821c0500, 0x00003c00, 0x80000114, 0x821c0d00, - 0x000003ff, 0x4c000000, 0x58140412, 0x0501f845, - 0x5c000000, 0x4004b800, 0x4008c000, 0x805cbc00, - 0x805cb840, 0x825c0480, 0x00000240, 0x05fe1edc, - 0x0501f878, 0x405c0000, 0x905cbc02, 0x80600d40, - 0x42002800, 0x00111f76, 0x41784000, 0x58142017, - 0x825c0480, 0x00000101, 0x05021028, 0x5814000d, - 0x80100400, 0x44040000, 0x80102000, 0x80000000, - 0x805cb840, 0x82104d00, 0x000000ff, 0x05000847, - 0x0500001a, 0x4c000000, 0x0501f82e, 0x5c000000, - 0x44080000, 0x80102000, 0x80000000, 0x805cb840, - 0x82104d00, 0x000000ff, 0x0500083c, 0x0500000f, - 0x50641800, 0x440c0000, 0x80000000, 0x80102000, - 0x8064c800, 0x805cb840, 0x05fe07f6, 0x82104d00, - 0x000000ff, 0x05000831, 0x05000004, 0x48102817, - 0x802041c0, 0x05060cea, 0x5c00c800, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x82100500, 0x000000ff, - 0x805c0400, 0x82000480, 0x00000200, 0x05fc17d4, - 0x6108b800, 0x82600d40, 0x00008040, 0x05fdf7d0, - 0x800001c0, 0x05000006, 0x80041c80, 0x05001004, - 0x05000003, 0x40000800, 0x8408155c, 0x1c01f000, - 0x59a800bf, 0x800018c4, 0x800010ca, 0x800000cc, - 0x800c0400, 0x80081400, 0x59940024, 0x61a01807, - 0x800c1c80, 0x05021002, 0x61a01807, 0x5994002f, - 0x800c0400, 0x82001c80, 0x000007d0, 0x05001002, - 0x6140000f, 0x4c080000, 0x0501f8b6, 0x5c001000, - 0x80081400, 0x1c01f000, 0x4813c857, 0x5c036000, - 0x4db00000, 0x49b3c857, 0x40001800, 0x58140000, - 0x8c000502, 0x05000009, 0x58140821, 0x80040800, - 0x48042821, 0x4807c857, 0x8400054a, 0x48002800, - 0x80000580, 0x0501f00e, 0x82102500, 0x000003ff, - 0x80204000, 0x58140014, 0x80000000, 0x90000503, - 0x48002814, 0x05000003, 0x400c0000, 0x0501f002, - 0x5814000d, 0x80000540, 0x4803c857, 0x1c01f000, - 0x42002800, 0x00111f76, 0x58140000, 0x8c00050a, - 0x0500002f, 0x8c000502, 0x0502002d, 0x4c5c0000, - 0x5814b821, 0x49782821, 0x8400050a, 0x48002800, - 0x58142017, 0x4813c857, 0x5814000d, 0x80100400, - 0x41784000, 0x42000800, 0x0b000001, 0x44040000, + 0x64235096, 0x64235097, 0x4a035098, 0x000000cf, + 0x4a035099, 0x00109095, 0x052dfbdc, 0x4a03544c, + 0x0000ffff, 0x4a035040, 0x00ffffff, 0x0551fa5a, + 0x4a035050, 0x20200000, 0x4a035051, 0x88000200, + 0x4a035052, 0x00ff001f, 0x4a035053, 0x000007d0, + 0x4a035054, 0x80000a00, 0x4a035055, 0xa0000200, + 0x4a035056, 0x00ff0004, 0x4a035057, 0x00010000, + 0x4a035058, 0x80000000, 0x4a035059, 0x00000200, + 0x4a03505a, 0x00ff0000, 0x4a03505b, 0x00010000, + 0x4a035062, 0x514c4f47, 0x4a035063, 0x49432020, + 0x1c01f000, 0x4d340000, 0x4d440000, 0x417a8800, + 0x4c5c0000, 0x4178b800, 0x0001fafc, 0x05020004, + 0x0529fa39, 0x05020002, 0x805cb800, 0x81468800, + 0x83440580, 0x000007f0, 0x05020002, 0x60028810, + 0x59a800ad, 0x81440580, 0x05fe07f4, 0x405c0800, + 0x5c00b800, 0x5c028800, 0x5c026800, 0x1c01f000, + 0x4803c857, 0x5c000000, 0x4c000000, 0x4803c857, + 0x0501f808, 0x485fc857, 0x4203e000, 0x50000000, + 0x5c000000, 0x4d780000, 0x6008b900, 0x0501f006, + 0x485fc857, 0x496fc857, 0x4203e000, 0x50000000, + 0x6008b900, 0x4c000000, 0x05006000, 0x4c040000, + 0x59bc00ea, 0x4803c857, 0x90000507, 0x90000581, + 0x05020003, 0x60000800, 0x0005fe8c, 0x59b800ea, + 0x4803c857, 0x641370e8, 0x5c000800, 0x4807c025, + 0x80040920, 0x4807c026, 0x5c000000, 0x4803c023, + 0x80000120, 0x4803c024, 0x5c000000, 0x4803c857, + 0x4803c021, 0x80000120, 0x4803c022, 0x41f80000, + 0x4803c029, 0x80000120, 0x4803c02a, 0x41780800, + 0x4807c027, 0x59a800b4, 0x8c00050a, 0x05000004, + 0x84040d4a, 0x4807c857, 0x4807c027, 0x0561f8f8, + 0x0500004a, 0x42000800, 0x00112e0e, 0x46000800, + 0xfaceface, 0x80040800, 0x4c080000, 0x4c0c0000, + 0x600010f4, 0x58080013, 0x44000800, 0x80040800, + 0x58080022, 0x44000800, 0x80040800, 0x58080023, + 0x44000800, 0x80040800, 0x58080024, 0x44000800, + 0x80040800, 0x58080025, 0x44000800, 0x80040800, + 0x58080028, 0x44000800, 0x80040800, 0x610010f4, + 0x602c1800, 0x50080000, 0x44000800, 0x80081000, + 0x80040800, 0x800c1840, 0x05fe07fb, 0x600c1800, + 0x600010f6, 0x480c1003, 0x58080005, 0x44000800, + 0x80040800, 0x800c1840, 0x05fe17fb, 0x600010f8, + 0x58080002, 0x44000800, 0x80040800, 0x58080003, + 0x44000800, 0x80040800, 0x58080020, 0x44000800, + 0x80040800, 0x58080021, 0x44000800, 0x80040800, + 0x58080022, 0x44000800, 0x80040800, 0x58080023, + 0x44000800, 0x80040800, 0x600010f6, 0x58080007, + 0x44000800, 0x80040800, 0x5808002b, 0x44000800, + 0x80040800, 0x5808007c, 0x44000800, 0x80040800, + 0x5c001800, 0x5c001000, 0x64030000, 0x485fc020, + 0x905cb9c0, 0x905cbd52, 0x485fc011, 0x4203e000, + 0x40000000, 0x6016d800, 0x59e00017, 0x60000800, + 0x8c00050a, 0x050a086e, 0x8d0c0530, 0x050a0861, + 0x050a0863, 0x6403c017, 0x4203e000, 0x30000001, + 0x0501f947, 0x05fdf7ff, 0x600c0000, 0x0501f80c, + 0x4a03c855, 0x0001eb5a, 0x59e40001, 0x82000540, + 0xff000700, 0x4803c801, 0x42000000, 0x00110f62, + 0x49780003, 0x49780004, 0x1c01f000, 0x42000800, + 0x00110f64, 0x44000800, 0x59e40801, 0x82041500, + 0x00f3c0ff, 0x480bc801, 0x4a03c850, 0x00112e37, + 0x800000d4, 0x82002400, 0x00112e36, 0x4813c851, + 0x4a03c853, 0x00000400, 0x42000000, 0x00112e37, + 0x82001400, 0x00000c00, 0x45780000, 0x80000000, + 0x80081d80, 0x05fe07fd, 0x4807c801, 0x1c01f000, + 0x42002000, 0x00110f62, 0x59e41801, 0x58100c01, + 0x82040500, 0x00003800, 0x820c1d00, 0xffffc7ff, + 0x800c1d40, 0x480fc801, 0x1c01f000, 0x5c036000, + 0x4db00000, 0x49b3c857, 0x4803c857, 0x1c01f000, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x8d0c052a, + 0x0500002f, 0x401c0000, 0x80040d40, 0x4004b800, + 0x400cc000, 0x4018c800, 0x0501f8d0, 0x41784000, + 0x42002800, 0x00110f62, 0x58142017, 0x5814000d, + 0x80100400, 0x445c0000, 0x80102000, 0x80000000, + 0x82104d00, 0x000000ff, 0x050008a6, 0x0500001c, + 0x4c000000, 0x0501f88d, 0x5c000000, 0x44080000, + 0x80102000, 0x80000000, 0x82104d00, 0x000000ff, + 0x0500089c, 0x05000012, 0x44600000, 0x80102000, + 0x80000000, 0x82104d00, 0x000000ff, 0x05000895, + 0x0500000b, 0x44640000, 0x80102000, 0x80000000, + 0x82104d00, 0x000000ff, 0x0500088e, 0x05000004, + 0x48102817, 0x802041c0, 0x05060d2f, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x42001000, 0x04000000, + 0x41ccc800, 0x42002800, 0x00110f62, 0x59a800d1, + 0x82000d00, 0x000003ff, 0x4c000000, 0x58140212, + 0x0501f85a, 0x5c000000, 0x4004b800, 0x4008c000, + 0x905cbc06, 0x0501f016, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x42002800, 0x00110f62, 0x42001000, + 0x03000000, 0x4000c800, 0x821c0500, 0x00003c00, + 0x80000114, 0x821c0d00, 0x000003ff, 0x4c000000, + 0x58140412, 0x0501f845, 0x5c000000, 0x4004b800, + 0x4008c000, 0x805cbc00, 0x805cb840, 0x825c0480, + 0x00000240, 0x05fe1edf, 0x0501f878, 0x405c0000, + 0x905cbc02, 0x80600d40, 0x42002800, 0x00110f62, + 0x41784000, 0x58142017, 0x825c0480, 0x00000101, + 0x05021028, 0x5814000d, 0x80100400, 0x44040000, + 0x80102000, 0x80000000, 0x805cb840, 0x82104d00, + 0x000000ff, 0x05000847, 0x0500001a, 0x4c000000, + 0x0501f82e, 0x5c000000, 0x44080000, 0x80102000, + 0x80000000, 0x805cb840, 0x82104d00, 0x000000ff, + 0x0500083c, 0x0500000f, 0x50641800, 0x440c0000, + 0x80000000, 0x80102000, 0x8064c800, 0x805cb840, + 0x05fe07f6, 0x82104d00, 0x000000ff, 0x05000831, + 0x05000004, 0x48102817, 0x802041c0, 0x05060cd2, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x82100500, 0x000000ff, 0x805c0400, 0x82000480, + 0x00000200, 0x05fc17d4, 0x6108b800, 0x82600d40, + 0x00008040, 0x05fdf7d0, 0x800001c0, 0x05000006, + 0x80041c80, 0x05001004, 0x05000003, 0x40000800, + 0x8408155c, 0x1c01f000, 0x59a800bf, 0x800018c4, + 0x800010ca, 0x800000cc, 0x800c0400, 0x80081400, + 0x59940024, 0x61a01807, 0x800c1c80, 0x05021002, + 0x61a01807, 0x5994002f, 0x800c0400, 0x82001c80, + 0x000007d0, 0x05001002, 0x6140000f, 0x4c080000, + 0x0501f8b6, 0x5c001000, 0x80081400, 0x1c01f000, + 0x4813c857, 0x5c036000, 0x4db00000, 0x49b3c857, + 0x40001800, 0x58140000, 0x8c000502, 0x05000009, + 0x58140821, 0x80040800, 0x48042821, 0x4807c857, + 0x8400054a, 0x48002800, 0x80000580, 0x0501f00e, + 0x82102500, 0x000003ff, 0x80204000, 0x58140014, + 0x80000000, 0x90000503, 0x48002814, 0x05000003, + 0x400c0000, 0x0501f002, 0x5814000d, 0x80000540, + 0x4803c857, 0x1c01f000, 0x42002800, 0x00110f62, + 0x58140000, 0x8c00050a, 0x0500002f, 0x8c000502, + 0x0502002d, 0x4c5c0000, 0x5814b821, 0x49782821, + 0x8400050a, 0x48002800, 0x58142017, 0x4813c857, + 0x5814000d, 0x80100400, 0x41784000, 0x42000800, + 0x0b000001, 0x44040000, 0x80000000, 0x80102000, + 0x82104d00, 0x000000ff, 0x05fc0fca, 0x05fc0e4d, + 0x4c000000, 0x05fdffb1, 0x5c000000, 0x44080000, 0x80000000, 0x80102000, 0x82104d00, 0x000000ff, - 0x05fc0fca, 0x05fc0e4a, 0x4c000000, 0x05fdffb1, - 0x5c000000, 0x44080000, 0x80000000, 0x80102000, - 0x82104d00, 0x000000ff, 0x05fc0fc0, 0x05fc0e40, - 0x445c0000, 0x80000000, 0x80102000, 0x82104d00, - 0x000000ff, 0x05fc0fb9, 0x05fc0e39, 0x48102817, - 0x802041c0, 0x05060c72, 0x405c2000, 0x600c1800, - 0x60a01100, 0x0521f911, 0x5c00b800, 0x1c01f000, - 0x1c01f000, 0x59a800ba, 0x8c000530, 0x05fe07fe, - 0x4c080000, 0x60101000, 0x0501f849, 0x5c001000, - 0x4201d000, 0x00028b0a, 0x0539fbfd, 0x4c080000, - 0x60201000, 0x0501f842, 0x5c001000, 0x4201d000, - 0x00028b0a, 0x0539fbf6, 0x4c080000, 0x60401000, - 0x0501f83b, 0x5c001000, 0x4201d000, 0x00028b0a, - 0x0539fbef, 0x05fdf7e8, 0x8c00050c, 0x59a808ba, - 0x05020003, 0x84040d30, 0x0501f005, 0x84040d70, - 0x480750ba, 0x60001000, 0x0501f02d, 0x480750ba, - 0x916c0507, 0x0c01f001, 0x00100836, 0x00100828, - 0x00100828, 0x00100816, 0x0010082f, 0x00100828, - 0x00100828, 0x0010082f, 0x59c40801, 0x82040d00, - 0x00018000, 0x82040580, 0x00018000, 0x0500000a, - 0x82040580, 0x00010000, 0x05000004, 0x42001000, - 0x42004000, 0x0501f006, 0x42001000, 0x22002000, - 0x0501f003, 0x42001000, 0x12001000, 0x0501f015, - 0x59a800ba, 0x8c000534, 0x05020004, 0x42001000, - 0x74057005, 0x0501f80f, 0x1c01f000, 0x59a800ba, - 0x8c000534, 0x05020004, 0x42001000, 0x74057005, - 0x0501f008, 0x1c01f000, 0x1c01f000, 0x9008151c, - 0x82081540, 0x001c0000, 0x480bc013, 0x1c01f000, - 0x59a800ba, 0x8c000530, 0x05000002, 0x84081570, - 0x480b50ba, 0x8c000530, 0x05020005, 0x82081500, - 0x00007000, 0x80081114, 0x05fdfff1, 0x1c01f000, - 0x40001800, 0x800c18c2, 0x800c0400, 0x800c18c6, - 0x800c0400, 0x800c18c2, 0x800c0400, 0x800c190e, - 0x800c0400, 0x80000112, 0x1c01f000, 0x41780000, - 0x50041800, 0x800c0400, 0x80040800, 0x80102040, - 0x05fe07fc, 0x80080500, 0x80000540, 0x1c01f000, - 0x6002f000, 0x41780000, 0x41780800, 0x41781000, - 0x41781800, 0x41782000, 0x41782800, 0x41783000, - 0x41783800, 0x41784000, 0x41784800, 0x41785000, - 0x41785800, 0x41786000, 0x41786800, 0x41787000, - 0x41787800, 0x41788000, 0x41788800, 0x41789000, - 0x41789800, 0x4178a000, 0x4178a800, 0x4178b000, - 0x4178b800, 0x4178c000, 0x4178c800, 0x4178d000, - 0x4178d800, 0x4178e000, 0x4178e800, 0x4178f000, - 0x4178f800, 0x41790000, 0x41790800, 0x41791000, - 0x41791800, 0x41792000, 0x41792800, 0x41793000, - 0x41793800, 0x41794000, 0x41794800, 0x41795000, - 0x41795800, 0x41796000, 0x41796800, 0x41797000, - 0x41797800, 0x41798000, 0x41798800, 0x41799000, - 0x41799800, 0x4179a000, 0x6001a960, 0x60c9b17e, - 0x4179b800, 0x4179c800, 0x4179c000, 0x4179d000, - 0x4179d800, 0x4179e000, 0x4179e800, 0x4179f000, - 0x4179f800, 0x42020000, 0x001117c6, 0x417a0800, - 0x417a1000, 0x417a1800, 0x417a2000, 0x600228c2, - 0x417a3000, 0x417a3800, 0x417a4000, 0x417a4800, - 0x417a5000, 0x417a5800, 0x417a6000, 0x417a6800, - 0x417a7000, 0x417a7800, 0x417a8000, 0x417a8800, - 0x417a9000, 0x417a9800, 0x417ae800, 0x417af800, - 0x600300f8, 0x42031000, 0x00111e19, 0x607f1960, - 0x60df2160, 0x42032800, 0x00111d7d, 0x42033000, - 0x0002176f, 0x42034000, 0x0011176f, 0x42033800, - 0x0011178e, 0x42034800, 0x00111ae7, 0x42035000, - 0x00111680, 0x4a0350ac, 0x000007f0, 0x4a0350ad, - 0x00000800, 0x4a03500d, 0x0010de80, 0x42035800, - 0x0010d680, 0x41790000, 0x417b6000, 0x600368de, - 0x6003c860, 0x600371fe, 0x6003797e, 0x600380ee, - 0x60038880, 0x600390c0, 0x42039800, 0x00113d5f, - 0x6003a0ec, 0x6003a8e8, 0x6003b0e4, 0x6003b8e2, - 0x6003c0e0, 0x6003d000, 0x4203e800, 0x000201ea, *** 118805 LINES SKIPPED *** From nobody Fri Jan 19 17:09:48 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmM0672rz56wYq; Fri, 19 Jan 2024 17:09:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmM05CzBz4K0p; Fri, 19 Jan 2024 17:09:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uXGzE7M4SKqqQMW1e/AUg6laWPchnzuaVdY13Vl2R+c=; b=d6QRrapxsPvFslVeOq3aMh1O01jQHVPflfynC5SGMyFiyxOdEyWNMu3ntx34xxE+AO7zlc CcYL+V6WgwISv1/MObHM9IGqY2s/NFx/oALelTWSTJVb7CcmoNsCsMz5DWrn/Q+KMN7PUa /jAVpx9w7ffUOYtIhQ+PtFmAJILuK4UXO9656iVzz3prlv2vwGuYjeaxkZdAn+T0GcVMp3 jugxoPRhFGLPXz+XmPLGZf+sYVwSEyXdF1ePsm0WQqEpJvb26eRnm70sdcQcuchS9zftxd r5Ay0SRYF5cQa0VkMlPAraCnxnlTL3ZpNL2XdWVNBHSCabGLQVTfLpO3f6kM/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uXGzE7M4SKqqQMW1e/AUg6laWPchnzuaVdY13Vl2R+c=; b=M6prVcWE9TcQQbzd6PkTv/QAXrHKLnN120g7N3Qr/fFVjHa3XRj61KY2gf3kMxGX8Kglia x2q25dv+S3cf3kHgTIcRn1sjL63b14v5AXBbJFCdQIk+LrVbXU6h6p/07yumpKDdTwmzYc wDxuhaB0EKFr220mJZUUL9C+FEHAXA7qh1Ikj92mJcxeRgl/y1cmqSTGy7DgE3euWsb42Z 7hppJIwRyT/DxytOpuk4fBL2IXwbBu7TK+npL4PBmSaIGLExYGtKrJuc5xo7gDdJIr+BOg DL6U7eCtEFTmsqg0q/3G7u7fCI9ueZENmo6B5bE9suqzKVBHMQHMUZLxoev6BA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684188; a=rsa-sha256; cv=none; b=KDikI89zSaGv7vdlxsWVyYi+brQForT5QCphsqz+VeALY6jzH27nckm7q0ZPgteWqC5EHR nK5T+nvD2b7lxK0+kQ0LhT45trekmTKii1QJzqHbMcyxfOUxV5FuKsOZM+jm0VRhH5RyI8 UtAPR8HBQ2fbwZmHc3IcxRSUOPEAQkpTX+jcjQxJjmQ0HOb9OuqGm88lCeNIYV0Mfh1YUU araLI5IZ87AKnWc3W6n2e/vJAilbyTprcUFl6oIUSFJCN2EIEnjCMwLx75Z+JXdBtK66HP z2l4IGe6kOGZuWbj7ATpxeo+dsq0HlFLL1Wk9t+fxaNe/eeherFxCY4OT/G/wQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmM04HgBz10LJ; Fri, 19 Jan 2024 17:09:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JH9m7j079495; Fri, 19 Jan 2024 17:09:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JH9msp079492; Fri, 19 Jan 2024 17:09:48 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:09:48 GMT Message-Id: <202401191709.40JH9msp079492@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 396e8e987adf - stable/13 - ig4: Fix FIFO depths detection List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 396e8e987adfca485b8b16fd7eee4e368ec1a288 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=396e8e987adfca485b8b16fd7eee4e368ec1a288 commit 396e8e987adfca485b8b16fd7eee4e368ec1a288 Author: Alexander Motin AuthorDate: 2023-12-24 00:02:49 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:04:38 +0000 ig4: Fix FIFO depths detection At least on my Tiger Lake-LP queue depth detection failed before the ig4iic_set_config() call, resulting in no FIFO use. Moving it after solves the problem, getting proper 64 bytes size. On my Dell XPS 13 9310 with iichid(4) touchscreen and touchpad this by few times reduces context switch rate in the driver, and probably also improves the I2C bus utilization. MFC after: 1 month (cherry picked from commit 9c9d7fdd9f0041783955c5f540ac55a900877c0c) --- sys/dev/ichiic/ig4_iic.c | 50 ++++++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/sys/dev/ichiic/ig4_iic.c b/sys/dev/ichiic/ig4_iic.c index 92028b58c7d4..96909dd2d3f3 100644 --- a/sys/dev/ichiic/ig4_iic.c +++ b/sys/dev/ichiic/ig4_iic.c @@ -847,23 +847,6 @@ ig4iic_get_config(ig4iic_softc_t *sc) sc->cfg.txfifo_depth = IG4_PARAM1_TXFIFO_DEPTH(v); if (IG4_PARAM1_RXFIFO_DEPTH(v) != 0) sc->cfg.rxfifo_depth = IG4_PARAM1_RXFIFO_DEPTH(v); - } else { - /* - * Hardware does not allow FIFO Threshold Levels value to be - * set larger than the depth of the buffer. If an attempt is - * made to do that, the actual value set will be the maximum - * depth of the buffer. - */ - v = reg_read(sc, IG4_REG_TX_TL); - reg_write(sc, IG4_REG_TX_TL, v | IG4_FIFO_MASK); - sc->cfg.txfifo_depth = - (reg_read(sc, IG4_REG_TX_TL) & IG4_FIFO_MASK) + 1; - reg_write(sc, IG4_REG_TX_TL, v); - v = reg_read(sc, IG4_REG_RX_TL); - reg_write(sc, IG4_REG_RX_TL, v | IG4_FIFO_MASK); - sc->cfg.rxfifo_depth = - (reg_read(sc, IG4_REG_RX_TL) & IG4_FIFO_MASK) + 1; - reg_write(sc, IG4_REG_RX_TL, v); } /* Override hardware config with IC_clock-based counter values */ @@ -915,8 +898,6 @@ ig4iic_get_config(ig4iic_softc_t *sc) printf(" Fast: 0x%04hx:0x%04hx:0x%04hx\n", sc->cfg.fs_scl_hcnt, sc->cfg.fs_scl_lcnt, sc->cfg.fs_sda_hold); - printf(" FIFO: RX:0x%04x: TX:0x%04x\n", - sc->cfg.rxfifo_depth, sc->cfg.txfifo_depth); } } @@ -1012,6 +993,36 @@ ig4iic_set_config(ig4iic_softc_t *sc, bool reset) return (0); } +static void +ig4iic_get_fifo(ig4iic_softc_t *sc) +{ + uint32_t v; + + /* + * Hardware does not allow FIFO Threshold Levels value to be set larger + * than the depth of the buffer. If an attempt is made to do that, the + * actual value set will be the maximum depth of the buffer. + */ + if (sc->cfg.txfifo_depth == 0) { + v = reg_read(sc, IG4_REG_TX_TL); + reg_write(sc, IG4_REG_TX_TL, v | IG4_FIFO_MASK); + sc->cfg.txfifo_depth = + (reg_read(sc, IG4_REG_TX_TL) & IG4_FIFO_MASK) + 1; + reg_write(sc, IG4_REG_TX_TL, v); + } + if (sc->cfg.rxfifo_depth == 0) { + v = reg_read(sc, IG4_REG_RX_TL); + reg_write(sc, IG4_REG_RX_TL, v | IG4_FIFO_MASK); + sc->cfg.rxfifo_depth = + (reg_read(sc, IG4_REG_RX_TL) & IG4_FIFO_MASK) + 1; + reg_write(sc, IG4_REG_RX_TL, v); + } + if (bootverbose) { + printf(" FIFO: RX:0x%04x: TX:0x%04x\n", + sc->cfg.rxfifo_depth, sc->cfg.txfifo_depth); + } +} + /* * Called from ig4iic_pci_attach/detach() */ @@ -1028,6 +1039,7 @@ ig4iic_attach(ig4iic_softc_t *sc) error = ig4iic_set_config(sc, IG4_HAS_ADDREGS(sc->version)); if (error) goto done; + ig4iic_get_fifo(sc); sc->iicbus = device_add_child(sc->dev, "iicbus", -1); if (sc->iicbus == NULL) { From nobody Fri Jan 19 17:09:49 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmM16dgMz56wc1; Fri, 19 Jan 2024 17:09:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmM15qB0z4Jkc; Fri, 19 Jan 2024 17:09:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684189; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0NkZzRrk8oPRCm+GhFQQ11NizFXwv9hm2oyKTQxt7vk=; b=Gcfrch94QSmgf0QZO0XDgZinpekoDGKZFXQ4zAm4bGyrRpDyootmdIQ61Ko5HONCWfoGjB pUJoftySqjR6KKvZnH/sfl1JcnwgZdeWFN9HVFDGJBZedRVnbodMsb7Jj9kDNINSZPPbTM rZS8I9uTDLtcP29il0ZWZX5Rc9XNwBCEsT2GSNyx0tx/+8mNp6jqhZTAnSqeiGMUDEZIRI bWORYOSNQSIUx+XWFaXgP0ZpAJT4J4bblbfPossQcimMbkxWXxVWlfOOlN2GeqINdb6/me 9oafru9CiMYbxg+/eSnqMreJn1x4Zba6iVD2kGc0jWLd7sp52uc0yvBZG2fEDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684189; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0NkZzRrk8oPRCm+GhFQQ11NizFXwv9hm2oyKTQxt7vk=; b=fRKZpOK1e2igsMj8AHAZoJ1DtRs9+uJlEwEG3eyuuTWKt3NdjQRUrnR7//mEqo+bKh+K+R 1pZ6ngLSZjHRuPyKAiyOzWBtQrX1z1xc8MxhWxk7F+VwMT/1E7W34dkr33RFay6dlWxyKw WS9S1avirjfEZl9ygflDHbkrRo6m1S4Kda82Wd1tA8F9e9KZKlcoYphpkimUXmdYJLnLk1 uxk3ZRhEaG+ouurMX9/cPzAm24pI6GntK6IFuQyphtMS7WpRK1epd33n93h7sIwiXTicbT /banZMPc1rm9A/5mu3R7mPyluphg2gIlw/ZrEehuVRUpFRYMWLKmC2Bq6BaqAQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684189; a=rsa-sha256; cv=none; b=UdY3540hLnP4UW41732re19lLCnZA+N1ETX5Iae/CX/JVswgtBjm2vfH985dpBWpteBXYo fYV2mCbMvw2OzAXk2+lk41bPNVGfKMNAYjW4jnOBVeez+gK8nl8GmYj6S5sGPAqSHuEuCL 5Sh5sVlkTKnIBgKjD0YVG2f9A8PcwWB6bdyXg6utrLJmoWOVR/LGBfLw3AIZ4uTj8KjUsp G8pfShvOyUL4Xu6Sn8naXqQvHcXOd4p6JlRPHE7n7/wHHoB7e2JyKhVAHKueTDyBWYz0VP gziQLf8aBosoR1HufAf9M44LAgEZ8TGv/zL+lykxSh/P8xMlIxVQ6syrQZQP0A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmM14td9z10QC; Fri, 19 Jan 2024 17:09:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JH9nR3079540; Fri, 19 Jan 2024 17:09:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JH9nF3079537; Fri, 19 Jan 2024 17:09:49 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:09:49 GMT Message-Id: <202401191709.40JH9nF3079537@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 8d8f348c8fe7 - stable/13 - ig4: Actively use FIFO thresholds List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8d8f348c8fe782c7de4b326e6bc80d36ba7bfba7 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=8d8f348c8fe782c7de4b326e6bc80d36ba7bfba7 commit 8d8f348c8fe782c7de4b326e6bc80d36ba7bfba7 Author: Alexander Motin AuthorDate: 2023-12-24 23:18:11 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:04:38 +0000 ig4: Actively use FIFO thresholds Before every wait for FIFO interrupt set how much data/space do we want to see there. Previous code was not using it for receive, as result aggregating interrupts only within processing latency. The new code needs only one interrupt per transfer per FIFO length. On my Dell XPS 13 9310 with iichid(4) touchscreen and touchpad this reduces the interrupt rate per device down to 2 per sample or 16-20 per second when idle and 120-160 per second when actively touched. MFC after: 1 month (cherry picked from commit 13037eaabede7fb7fbc25f4e84b549c73f9acb3c) --- sys/dev/ichiic/ig4_iic.c | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/sys/dev/ichiic/ig4_iic.c b/sys/dev/ichiic/ig4_iic.c index 96909dd2d3f3..83238274d33f 100644 --- a/sys/dev/ichiic/ig4_iic.c +++ b/sys/dev/ichiic/ig4_iic.c @@ -347,6 +347,7 @@ set_slave_addr(ig4iic_softc_t *sc, uint8_t slave) /* * Wait for TXFIFO to drain before disabling the controller. */ + reg_write(sc, IG4_REG_TX_TL, 0); wait_intr(sc, IG4_INTR_TX_EMPTY); set_controller(sc, 0); @@ -434,16 +435,20 @@ ig4iic_read(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, return (0); while (received < len) { + /* Ensure we have some free space in TXFIFO */ burst = sc->cfg.txfifo_depth - (reg_read(sc, IG4_REG_TXFLR) & IG4_FIFOLVL_MASK); if (burst <= 0) { + reg_write(sc, IG4_REG_TX_TL, IG4_FIFO_LOWAT); error = wait_intr(sc, IG4_INTR_TX_EMPTY); if (error) break; - burst = sc->cfg.txfifo_depth; + burst = sc->cfg.txfifo_depth - + (reg_read(sc, IG4_REG_TXFLR) & IG4_FIFOLVL_MASK); } /* Ensure we have enough free space in RXFIFO */ - burst = MIN(burst, sc->cfg.rxfifo_depth - lowat); + burst = MIN(burst, sc->cfg.rxfifo_depth - + (requested - received)); target = MIN(requested + burst, (int)len); while (requested < target) { cmd = IG4_DATA_COMMAND_RD; @@ -460,13 +465,15 @@ ig4iic_read(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, lowat = IG4_FIFO_LOWAT; /* After TXFLR fills up, clear it by reading available data */ while (received < requested - lowat) { - burst = MIN((int)len - received, + burst = MIN(requested - received, reg_read(sc, IG4_REG_RXFLR) & IG4_FIFOLVL_MASK); if (burst > 0) { while (burst--) buf[received++] = 0xFF & reg_read(sc, IG4_REG_DATA_CMD); } else { + reg_write(sc, IG4_REG_RX_TL, + requested - received - lowat - 1); error = wait_intr(sc, IG4_INTR_RX_FULL); if (error) goto out; @@ -484,8 +491,7 @@ ig4iic_write(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, uint32_t cmd; int sent = 0; int burst, target; - int error; - bool lowat_set = false; + int error, lowat; if (len == 0) return (0); @@ -494,12 +500,7 @@ ig4iic_write(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, burst = sc->cfg.txfifo_depth - (reg_read(sc, IG4_REG_TXFLR) & IG4_FIFOLVL_MASK); target = MIN(sent + burst, (int)len); - /* Leave some data queued to maintain the hardware pipeline */ - if (!lowat_set && target != len) { - lowat_set = true; - reg_write(sc, IG4_REG_TX_TL, IG4_FIFO_LOWAT); - } - while(sent < target) { + while (sent < target) { cmd = buf[sent]; if (repeated_start && sent == 0) cmd |= IG4_DATA_RESTART; @@ -509,13 +510,16 @@ ig4iic_write(ig4iic_softc_t *sc, uint8_t *buf, uint16_t len, sent++; } if (sent < len) { + if (len - sent <= sc->cfg.txfifo_depth) + lowat = sc->cfg.txfifo_depth - (len - sent); + else + lowat = IG4_FIFO_LOWAT; + reg_write(sc, IG4_REG_TX_TL, lowat); error = wait_intr(sc, IG4_INTR_TX_EMPTY); if (error) break; } } - if (lowat_set) - reg_write(sc, IG4_REG_TX_TL, 0); return (error); } @@ -971,13 +975,6 @@ ig4iic_set_config(ig4iic_softc_t *sc, bool reset) (sc->cfg.bus_speed & IG4_CTL_SPEED_MASK) == IG4_CTL_SPEED_STD ? sc->cfg.ss_sda_hold : sc->cfg.fs_sda_hold); - /* - * Use a threshold of 1 so we get interrupted on each character, - * allowing us to use mtx_sleep() in our poll code. Not perfect - * but this is better than using DELAY() for receiving data. - * - * See ig4_var.h for details on interrupt handler synchronization. - */ reg_write(sc, IG4_REG_RX_TL, 0); reg_write(sc, IG4_REG_TX_TL, 0); From nobody Fri Jan 19 17:09:50 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmM32Dd2z56wlM; Fri, 19 Jan 2024 17:09:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmM26xz4z4JvW; Fri, 19 Jan 2024 17:09:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684191; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xBXCrM7EwonIPUeNOjiJkr7mS5HyZUErK5Y0o+JeiuQ=; b=c3r8t1Hs0wDz4IglYehT5P1l9N8bzmMbWV50TuYBkOxtIvFHkHphin78nMobKlc9gLTk8h Fv0vtkJ3vLfOZp74e/B3DF4jdR/tt5SdLdBcAWEecwx117k2lraA/ixucjTI16qscnG12D edKmQ9kap4nKXPDTJE0i+yG2AUTppKumt+LW9GbQvzYMdyg6LgK3mjzXtwx3Aw+X60fx31 mMupJWttsji/fjjzhWY5tGAQrw6oRebJbCpMybc0gTBHF957R14yTHYmEIBHSnNcEa38HG huh673wHJ7+NMrXWMYbic1u/Teaz8zJ8SQX9xTm7Sr5Ex2RJBHi8dvHyyvZfvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684191; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xBXCrM7EwonIPUeNOjiJkr7mS5HyZUErK5Y0o+JeiuQ=; b=wz+J/5msgWNOm/jfS8xniNnXXZVT+sQSHBpdETSAFiJrDgh41NQwAp4A/tXCdqYYpMqLoE odJAAU++0JUlocYlgbIT4DxKtHTEEE+xRTY2mXFiSvKezIGMP8KWLCYxYF8NGS5VVdxBDl 8ImfK6Ri5TEXAWLORiO/u0OCZFMeBR9cnyt7TRqdUZwOY+K++BLLkDsqOk+K1HcYWGJHHu 3RfabQAaRDlOL0HSWXDdoM9/MlMVLD6i5jzUM75UO7MkpXw0XUDprtPE6tbKtnxrxJgPHC H7/LZSfgnI8kVzFsKUGK8u+rcYzV1tcwrms7Ae12rjNXeFHSyVroK1L3Ucr0SA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684191; a=rsa-sha256; cv=none; b=pbx4/Xm//wHbppAGa9zidDLDTq3/OeFdGYZSvSvaeysUKVnJZ0/h0XNnpqzfucVvui+83l 2XRxtaxUwiDzP+Wu+/uY9DOtQpUSfcHU7MhKX379jPsrAUW/9kDnSa5CDUSn9xNjbMQTuX uvLdvD8n6AmM//ak/XYLv6Zey9eLZ917OWfoJ1Z0EHoDXEDLbKRWz0gyzIZ0fHpe6gDl6h eUwXqbAm59qOTDxlkqMcsJEtgSld1HganHY6kLP3acNb490/smtbV/9VMTUIlc0DO4I1Dd CbWrT/pRYbwTyfJZUd3AbE2YXyeXaq/lifxv1qmYOr2IP67nr1iUqiensWOgBg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmM25tpGz10QD; Fri, 19 Jan 2024 17:09:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JH9oak079582; Fri, 19 Jan 2024 17:09:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JH9oMH079579; Fri, 19 Jan 2024 17:09:50 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:09:50 GMT Message-Id: <202401191709.40JH9oMH079579@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 9f558e9f7dee - stable/13 - iichid(4): Improve idle sampling hysteresis List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 9f558e9f7deed5b4fd804bd111e20eca337e18dd Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=9f558e9f7deed5b4fd804bd111e20eca337e18dd commit 9f558e9f7deed5b4fd804bd111e20eca337e18dd Author: Alexander Motin AuthorDate: 2023-12-23 03:50:52 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:08:13 +0000 iichid(4): Improve idle sampling hysteresis In sampling mode some devices return same data indefinitely even if there is nothing to report. Previous idle hysteresis implementation activated only when device returned no data, so some devices ended up polled at fast rate all the time. This new implementation compares each new report with the previous, and, if they are identical, after reaching threshold also drop sampling rate to slow. On my Dell XPS 13 9310 with iichid(4) touchscreen and touchpad this reduces idle power consumption by ~0.5W by reducing number of context switches in the driver from ~4000 to ~700 per second when not touched. MFC after: 1 month (cherry picked from commit 8c86b981240324c1daaa387d4d3f8e3e53db3d2e) --- sys/dev/iicbus/iichid.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c index 0c0e3ec84a60..d2359fdf5b20 100644 --- a/sys/dev/iicbus/iichid.c +++ b/sys/dev/iicbus/iichid.c @@ -108,7 +108,7 @@ enum { */ #define IICHID_SAMPLING_RATE_FAST 60 #define IICHID_SAMPLING_RATE_SLOW 10 -#define IICHID_SAMPLING_HYSTERESIS 1 +#define IICHID_SAMPLING_HYSTERESIS 12 /* ~ 2x fast / slow */ /* 5.1.1 - HID Descriptor Format */ struct i2c_hid_desc { @@ -177,9 +177,12 @@ struct iichid_softc { int sampling_rate_fast; int sampling_hysteresis; int missing_samples; /* iicbus lock */ - struct timeout_task periodic_task; /* iicbus lock */ + int dup_samples; /* iicbus lock */ + iichid_size_t dup_size; /* iicbus lock */ bool callout_setup; /* iicbus lock */ + uint8_t *dup_buf; struct taskqueue *taskqueue; + struct timeout_task periodic_task; /* iicbus lock */ struct task event_task; #endif @@ -523,7 +526,7 @@ iichid_event_task(void *context, int pending) device_t parent; iichid_size_t actual; bool bus_requested; - int error; + int error, rate; sc = context; parent = device_get_parent(sc->dev); @@ -541,18 +544,30 @@ iichid_event_task(void *context, int pending) if (actual > 0) { sc->intr_handler(sc->intr_ctx, sc->intr_buf, actual); sc->missing_samples = 0; - } else - ++sc->missing_samples; + if (sc->dup_size != actual || + memcmp(sc->dup_buf, sc->intr_buf, actual) != 0) { + sc->dup_size = actual; + memcpy(sc->dup_buf, sc->intr_buf, actual); + sc->dup_samples = 0; + } else + ++sc->dup_samples; + } else { + if (++sc->missing_samples == 1) + sc->intr_handler(sc->intr_ctx, sc->intr_buf, 0); + sc->dup_samples = 0; + } } else DPRINTF(sc, "read error occurred: %d\n", error); rearm: if (sc->callout_setup && sc->sampling_rate_slow > 0) { - if (sc->missing_samples == sc->sampling_hysteresis) - sc->intr_handler(sc->intr_ctx, sc->intr_buf, 0); - taskqueue_enqueue_timeout(sc->taskqueue, &sc->periodic_task, - hz / MAX(sc->missing_samples >= sc->sampling_hysteresis ? - sc->sampling_rate_slow : sc->sampling_rate_fast, 1)); + if (sc->missing_samples >= sc->sampling_hysteresis || + sc->dup_samples >= sc->sampling_hysteresis) + rate = sc->sampling_rate_slow; + else + rate = sc->sampling_rate_fast; + taskqueue_enqueue_timeout_sbt(sc->taskqueue, &sc->periodic_task, + SBT_1S / MAX(rate, 1), 0, C_PREL(1)); } out: if (bus_requested) @@ -725,6 +740,8 @@ iichid_reset_callout(struct iichid_softc *sc) /* Start with slow sampling. */ sc->missing_samples = sc->sampling_hysteresis; + sc->dup_samples = 0; + sc->dup_size = 0; taskqueue_enqueue(sc->taskqueue, &sc->event_task); return (0); @@ -812,6 +829,7 @@ iichid_intr_setup(device_t dev, hid_intr_t intr, void *context, sc->intr_buf = malloc(rdesc->rdsize, M_DEVBUF, M_WAITOK | M_ZERO); sc->intr_bufsize = rdesc->rdsize; #ifdef IICHID_SAMPLING + sc->dup_buf = malloc(rdesc->rdsize, M_DEVBUF, M_WAITOK | M_ZERO); taskqueue_start_threads(&sc->taskqueue, 1, PI_TTY, "%s taskq", device_get_nameunit(sc->dev)); #endif @@ -825,6 +843,7 @@ iichid_intr_unsetup(device_t dev) sc = device_get_softc(dev); #ifdef IICHID_SAMPLING taskqueue_drain_all(sc->taskqueue); + free(sc->dup_buf, M_DEVBUF); #endif free(sc->intr_buf, M_DEVBUF); } From nobody Fri Jan 19 17:09:51 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmM42Gq3z56wj2; Fri, 19 Jan 2024 17:09:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmM40LGYz4K5b; Fri, 19 Jan 2024 17:09:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684192; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xf0y8h2xUhP+fWDdJFgAtev6Ix/SS89C78331bYWxRI=; b=Em3TbxHIBLIxS+pvt8Oz/0K7NvSdNmDpv5a9eWqWR/GjJyszB+iXVW+D9OxLjGCeeBgbY+ fHEQ3HRQFAV0fqWL1S1TQkci2Ijb1myLG2SzyyraoL8N3UjtPVk2dOBftS/6SmOuhZAZgC RuQej1n1mfN3doWbm8tuR4SQLyj98zNVMNcg5nMVWA3n4LmQTxNA+4ul3vvzKIAwUnLBLw jWJ7PcImzSgjzqZQBBNB+LOZxuQ6BQkZqlU5y39aVG1WJxMSZb7sXhT1RFvb0wNFCmaJzA 0qDpOzlTBOTcxLnbiTpClV7XKHEN/y/2mpfXn2ffRwqqILZON/or/hJscAJE7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684192; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xf0y8h2xUhP+fWDdJFgAtev6Ix/SS89C78331bYWxRI=; b=MJ/nQl3FcGsXbijKB+qvCPLagOkuYKz+I8Owqfj5k6UQOtumkTD7m/np8uqZURA41hhbmW jV33V4siYE/3qZVDdqRkmF2QNupyyaEn7GvzO8dFCoA9HyutcmabLnVyU4s7K9zJ7gViJS J9TMYv62LDYYc3GWNaKEncnk9q9tVc3dIS2pQvj/iNSwP0IowJpvaq+XVquoe5vxGwEqoJ k92shMPFtzuRH6hCKK8hijeE3CPcdzY7tc0Nl3vA1q9ioBuEdXm6UzxQbhnxeN/9sxocZX 6NixzF5EWx/REN/wnwc05X+pgVDuEw9mWihYKOB1wd2c77UMmNpz1OGJmQIOuQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684192; a=rsa-sha256; cv=none; b=I1g1WCaEhQ/2UviLpR6HKsCX5FRYObgjgxOHS5RSWvLS1CU4NQm87fV+axRwyvqjSmKsfZ W7pePJl4ENyNfUhNxvCa/LewjijRrzB1QbvNTEotZ7focctFdPoHyeqTUQwntwafsc8Hpc J2UMTPy3/OitTMFUHBOaF53+zMJ0HskkGQY3SLh/Ykmp+3mn214G836dhGoVNWJcGUd4bq VqvpBB3aqCg7EGnmGqmQwp7m+mvvFsaYx5oh483n4xQiABGYFLa3OAqOrsyH7tPubYj52E rbepI1Om6Nx+39KB+mpJo8z/i+o+S2I83jyvnSHhQ1E8Rm3zlBSxwje2l77naQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmM36ZF1z10bL; Fri, 19 Jan 2024 17:09:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JH9p32079624; Fri, 19 Jan 2024 17:09:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JH9pPF079621; Fri, 19 Jan 2024 17:09:51 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:09:51 GMT Message-Id: <202401191709.40JH9pPF079621@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 4061a0e5b273 - stable/13 - iicbb: Fix pause_sbt() arguments order List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 4061a0e5b2734c2c466bb7a7917645b913499e49 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=4061a0e5b2734c2c466bb7a7917645b913499e49 commit 4061a0e5b2734c2c466bb7a7917645b913499e49 Author: Alexander Motin AuthorDate: 2023-12-23 23:52:17 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:08:13 +0000 iicbb: Fix pause_sbt() arguments order It should make pause interval less strict. While there, add cpu_spinwait() into a tight spin wait loop to burn less power and let other SMT thread work more. MFC after: 1 month (cherry picked from commit a74df3f96e3ea4cc632088be870d9b0b0198859c) --- sys/dev/iicbus/iicbb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/dev/iicbus/iicbb.c b/sys/dev/iicbus/iicbb.c index 043da64f1d04..608c38688acd 100644 --- a/sys/dev/iicbus/iicbb.c +++ b/sys/dev/iicbus/iicbb.c @@ -52,6 +52,7 @@ #include #include #include +#include #ifdef FDT #include @@ -256,11 +257,12 @@ iicbb_waitforscl(device_t dev) do { if (I2C_GETSCL(dev)) return (0); + cpu_spinwait(); now = sbinuptime(); } while (now < fast_timeout); do { I2C_DEBUG(printf(".")); - pause_sbt("iicbb-scl-low", SBT_1MS, C_PREL(8), 0); + pause_sbt("iicbb-scl-low", SBT_1MS, 0, C_PREL(2)); if (I2C_GETSCL(dev)) return (0); now = sbinuptime(); From nobody Fri Jan 19 17:09:52 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmM52gWLz56wYt; Fri, 19 Jan 2024 17:09:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmM515t4z4K5h; Fri, 19 Jan 2024 17:09:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684193; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/BAmOOs1JQmMjyCYWzKM37S7uB9xoy0H0JmyL2khE4g=; b=npDX25higpd/f1Zp8/iZ5OnpRoQ4QewrheKYSGwZf6Bd5r8wio9DXY6ROCEO7j0crhM3QX JHrONq7h1eDE4cnbpo7dTexj8K91KRM2teSEvrjOeiyn9IRELDeESQa70NmW1PN1uFkS/B h1iHC0U1f/oEEI1zt56fHGAytNfcOvaggefo0cOiD04PPYV5Bj7eh9QtMbVggS6pV1e2v+ oKmNqxAH/BcEi327EKqpL4CjVVUdzRy9QD2+Bgr0Sn6RjgStsnXKLxiD0e20dBKX65PxDt d06XCQZyomPcFHnvKmyjdHrCJWRHoOgIsAyC/zLyz0EU7Xr1eBMwSXDnPhtb+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684193; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/BAmOOs1JQmMjyCYWzKM37S7uB9xoy0H0JmyL2khE4g=; b=qG6aFDAZ08izcbbXNYU5Sc86DfsvLSn0a+aQpXBp+qnyTv7Om4oVqBZXrnN0DAPZqYGVaV 2kRysUgFTac6NzyuMKx79jeIIP0TmD77JKi9VkZIWqnDfGpiIoK8J7L3lf3Iq0oPdDFLtf cmdo8zJ4tkv5RWuKG64IdmIqpzGIZxUwqltz/uqXCxSaqJAUog1hy/hFDEDkkp5NbrY+xz OO0XCA1G1z9HQMe6BqbIfHRLpZ9V+x0veVgjJBI4bodzgbIC/0XO3lph7l2JYtAMrXnlL4 2re+z75brKGTKE7CeWR6lOiTGaAbJFTmkXn6KdLAnxZuA5U/AlZtN4tIQag3Dg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684193; a=rsa-sha256; cv=none; b=K4XI9UwjgYrMAy8etV3tdDZv/+okHWRdmTPG/LN95Vw4gdFWDc2+DGTiiXGuxplCgCuekC JZRqVFnJZIy+s+cLhmmB4nXHOdj8BFEXpTck2rxKM92DTEMwwUagvQVMSZo12IQX84Zva/ bXPg5cJERaylasMkxzOfwXAfvDQz664vsJzl6Z2aeVqOOj6dI0y8cW1oYJ2AsDASo86ath 86ICSQs8XG0FVbIW95BI690pfZX5xfrFsOu6PkvFvxWaaPl0UD/WrLUCH6PVxeYF4PBZEq PDGzq0E6/3ovLnOBGNEFtj/dw5Ftm9DfHYGnBMCBhlGiBM0e8ewBL7TsR3CVaA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmM50BmMz10NQ; Fri, 19 Jan 2024 17:09:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JH9qGx079669; Fri, 19 Jan 2024 17:09:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JH9qZB079666; Fri, 19 Jan 2024 17:09:52 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:09:52 GMT Message-Id: <202401191709.40JH9qZB079666@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: d6e6c02c29b1 - stable/13 - iichid(4): Restore/increase sampling rate List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d6e6c02c29b1e29d9671938ac327453ed1ff2bf0 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=d6e6c02c29b1e29d9671938ac327453ed1ff2bf0 commit d6e6c02c29b1e29d9671938ac327453ed1ff2bf0 Author: Alexander Motin AuthorDate: 2023-12-24 00:10:49 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:08:13 +0000 iichid(4): Restore/increase sampling rate My previous commit by reducing precision reduced the sampling rate from 60Hz to 40Hz on idle system. Return it back to 60-80Hz range, that should be good for mouse smoothness on 60Hz displays. MFC after: 1 months (cherry picked from commit 68e457df0268113646264883515412af4c8808cb) --- sys/dev/iicbus/iichid.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c index d2359fdf5b20..99ec402c3590 100644 --- a/sys/dev/iicbus/iichid.c +++ b/sys/dev/iicbus/iichid.c @@ -106,9 +106,9 @@ enum { * sampling_rate_fast value too high as it may result in periodical lags of * cursor motion. */ -#define IICHID_SAMPLING_RATE_FAST 60 +#define IICHID_SAMPLING_RATE_FAST 80 #define IICHID_SAMPLING_RATE_SLOW 10 -#define IICHID_SAMPLING_HYSTERESIS 12 /* ~ 2x fast / slow */ +#define IICHID_SAMPLING_HYSTERESIS 16 /* ~ 2x fast / slow */ /* 5.1.1 - HID Descriptor Format */ struct i2c_hid_desc { @@ -567,7 +567,7 @@ rearm: else rate = sc->sampling_rate_fast; taskqueue_enqueue_timeout_sbt(sc->taskqueue, &sc->periodic_task, - SBT_1S / MAX(rate, 1), 0, C_PREL(1)); + SBT_1S / MAX(rate, 1), 0, C_PREL(2)); } out: if (bus_requested) From nobody Fri Jan 19 17:09:54 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmM650h0z56wlW; Fri, 19 Jan 2024 17:09:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmM62gyMz4K8C; Fri, 19 Jan 2024 17:09:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684194; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8SX9M2HjjAxoeOzKf+8xas7mfcBOM8wduGX5nbKnC78=; b=I+OhN30E31q/sKZ9nCCgZiuSMi+YkLvxcyHpVs1v8PJ5ZN3D3WKuPJ1OL3rS0+465FUoy0 q3YK5fmmJUXDmRX68BNbj93rdhfioPNGPjPL8PtN8cQiPuCNCYz38lt/QdWoLrEBPCDuBi osuI3QqSZ6gLpcj2idx1WWFOvWdrkOGvY1DEvXvutu0iRJw8eYQ+dbKeFJ68mLzCWkHx/B GsW3xgZ7jioT2orY2rKeAVEE+mhtXQPAlwyAPZ3vkqgwvRNK6aasoDR0D9Ka0Drx949nnV 1TOfnLf9xSvl8W29OpU7v8WI7GjMXIRSHwJQtmlsXsMUR6dI2qUgF/2HrXnIYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684194; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8SX9M2HjjAxoeOzKf+8xas7mfcBOM8wduGX5nbKnC78=; b=bEqVXazEN8ZtuOHAGjDjeNRMGPAYJYUn5NZ9nND09ZJ5nFofwHY5jRf0GHBid00gFNJDNu SBIhUxFGXGxMYx+rFoUDFHf8/jIcq7mZkAWEsskJzl+xXKibsnp6TzT8bsdylUph9f9OVR CnLxk52+0pG0J/2dQm/mjhY/7N/wwGiY5cyXoDPiN+IOlEs+Sra/92bTcmsBTkLiereAg4 4VCUBc7s3EspHhOXqF4JfOQ7gwGCd8w9pwdqyTxdclcN5F+3JA+WxNtiGOqT6PdTb6IkYH eWMSMYIMI9LcOEb/Xq7n6qx8sPrx90BN8THzhdSzUCjG3k807ajdsCvDDH68vg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684194; a=rsa-sha256; cv=none; b=d/QCKVGPVkYwvK1OwOpVLRuVfFe8AlVzf6OTE1Z2MpRzkVwsybJLnDDx9W7y2cmQPcxu93 x0QhwVpM19ZNYT4t0BjwEIbss7nI03v/CqeEyL4FBeAvBtm40+E78uzdqzpVqNZuKxty3L OLwdQeWd9VtVo1wTliaLvHMmxRy8nxhOQarPWs/UuXN0YzDNDZBoVzpNcoFE1C8y7vYkew m/v06Hx7Vi4nVngw5UakyESnNxOtrUe1vynWCNjvI854QSOAL5Z5gF9DKKGdmStcL3sZfx dvq/a7wzFPkVku9ZcQyyn/XTC4dnkIVCt8kIAmaGbBIua0q3bJ5skFCnbsR5BQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmM61FFBz10C2; Fri, 19 Jan 2024 17:09:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JH9s5B079712; Fri, 19 Jan 2024 17:09:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JH9sCL079709; Fri, 19 Jan 2024 17:09:54 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:09:54 GMT Message-Id: <202401191709.40JH9sCL079709@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 870bcb954ee3 - stable/13 - iichid(4): Unify two taskqueue tasks List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 870bcb954ee3db3c6670949638883a4b6b7d362c Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=870bcb954ee3db3c6670949638883a4b6b7d362c commit 870bcb954ee3db3c6670949638883a4b6b7d362c Author: Alexander Motin AuthorDate: 2023-12-27 00:28:56 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:08:14 +0000 iichid(4): Unify two taskqueue tasks taskqueue_enqueue_timeout(0) is equivalent to taskqueue_enqueue(), so no need to create a separate periodic_task and event_task to run exactly the same handler. MFC after: 1 month (cherry picked from commit a8f80c0c16c7fb38c46ddccd7e1b06dc46c407b1) --- sys/dev/iicbus/iichid.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c index 99ec402c3590..a0e11b8500b6 100644 --- a/sys/dev/iicbus/iichid.c +++ b/sys/dev/iicbus/iichid.c @@ -182,8 +182,7 @@ struct iichid_softc { bool callout_setup; /* iicbus lock */ uint8_t *dup_buf; struct taskqueue *taskqueue; - struct timeout_task periodic_task; /* iicbus lock */ - struct task event_task; + struct timeout_task sampling_task; /* iicbus lock */ #endif struct task suspend_task; @@ -520,7 +519,7 @@ iichid_cmd_set_report(struct iichid_softc* sc, const void *buf, #ifdef IICHID_SAMPLING static void -iichid_event_task(void *context, int pending) +iichid_sampling_task(void *context, int pending) { struct iichid_softc *sc; device_t parent; @@ -566,7 +565,7 @@ rearm: rate = sc->sampling_rate_slow; else rate = sc->sampling_rate_fast; - taskqueue_enqueue_timeout_sbt(sc->taskqueue, &sc->periodic_task, + taskqueue_enqueue_timeout_sbt(sc->taskqueue, &sc->sampling_task, SBT_1S / MAX(rate, 1), 0, C_PREL(2)); } out: @@ -742,7 +741,7 @@ iichid_reset_callout(struct iichid_softc *sc) sc->missing_samples = sc->sampling_hysteresis; sc->dup_samples = 0; sc->dup_size = 0; - taskqueue_enqueue(sc->taskqueue, &sc->event_task); + taskqueue_enqueue_timeout(sc->taskqueue, &sc->sampling_task, 0); return (0); } @@ -752,7 +751,7 @@ iichid_teardown_callout(struct iichid_softc *sc) { sc->callout_setup = false; - taskqueue_cancel_timeout(sc->taskqueue, &sc->periodic_task, NULL); + taskqueue_cancel_timeout(sc->taskqueue, &sc->sampling_task, NULL); DPRINTF(sc, "tore callout down\n"); } @@ -1130,12 +1129,10 @@ iichid_attach(device_t dev) TASK_INIT(&sc->suspend_task, 0, iichid_suspend_task, sc); #ifdef IICHID_SAMPLING - TASK_INIT(&sc->event_task, 0, iichid_event_task, sc); - /* taskqueue_create can't fail with M_WAITOK mflag passed. */ sc->taskqueue = taskqueue_create("iichid_tq", M_WAITOK | M_ZERO, taskqueue_thread_enqueue, &sc->taskqueue); - TIMEOUT_TASK_INIT(sc->taskqueue, &sc->periodic_task, 0, - iichid_event_task, sc); + TIMEOUT_TASK_INIT(sc->taskqueue, &sc->sampling_task, 0, + iichid_sampling_task, sc); sc->sampling_rate_slow = -1; sc->sampling_rate_fast = IICHID_SAMPLING_RATE_FAST; From nobody Fri Jan 19 17:09:55 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmM76SXxz56wj7; Fri, 19 Jan 2024 17:09:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmM73FsYz4K8R; Fri, 19 Jan 2024 17:09:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684195; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HpdV95tCSzuI21EXjLMzFIgiehIlX1TX8j9ivr3aQng=; b=YbxbjRZSbrCFv30k+UHbjo52nKnt3y1YRIGznu0DjfGVXeevHybKJJw5w+XIXCuwmMsPcu RI0czLHZTAblRIKfYepNOeFa6VWuRfJIsVgYGKNq9TPgAo9saM5yY1S05IoGsY9qKQ8/tN NscG0nE4Lj8wTCGzULy6CRJNB6kjkjAumCOuqOQ+lPpCBFw5m+xnNli8L1lMVr8TdDKYE1 bbDkOE6gfHsaQ3X+yIe3Mju6rZU2X6dNt7ZRraaWlXp8a7bLftU2wFAGa/B3laKagiHf2V CJ/flMeZJdqUrQX21NfVxo6NjYkaunVp78XOUHz5y2zO9GwvWrGtQO23Tf3+fA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684195; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HpdV95tCSzuI21EXjLMzFIgiehIlX1TX8j9ivr3aQng=; b=Jhj61IUH9EM0eSUMKF/F7Zc/2POevaT0wuOj9PRhaKnclUv4/e+Fyxl34054Lgi9/KCk5r WmCOlDZdtn7ONsQtK7BqM1SYB0h587jhs1hWyEgj8kGtFrGc844esxdiiMHuSvpwg/vK0W 6Q2lGP1E8iutyflF0D1Wqh9RjlHdFCfyGSuKKupkfYvx72O9Y+a5hlVUK1oTK2ItArg7Mk fseX1XCHXWWxy1F/l2+m1YlY3FnWnhspf5ifTRW3XRm4o5bcssChON6vaZijtucu84Xe/y fkC04jBA0PmM2TofMGMKLpEDCxFgRzqTjz22iZ5u06D2Iy0bWGRzCcoaaaAA4g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684195; a=rsa-sha256; cv=none; b=mQCB9Sbt7n6VCKlqFw6dWnTAO9YLyjGSQ97emkytmKUtp9nEKxdBhdXTHmjvPUun4xg6FA y7OjuyHgqF9Pj9KoydaXPDeLRlR7meiM6ThNOxpTirlr4cEy5mE6wUJiXR73vjSyEZFEah 2GqRAyLdPNHp4Hm/DfpJDP6qcALzt6+7RZB3WpyvLXtVYGv9grel1wRxDaRt3empsH5cgu vz+ZY1rofdWSog6CKc/7zGp4/Ck8iBWXl863iGPSvxMcd3XhtQ3AXJJy7ZGIMxZxZ3xwzX PZ/SinCCwnrfVu5cyJLuMJ+EoxHHqp5dLo7MTGRhR9Lg21sE0ZYgkYHpPDyYog== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmM72N5fz10QF; Fri, 19 Jan 2024 17:09:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JH9tDY079754; Fri, 19 Jan 2024 17:09:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JH9tAe079751; Fri, 19 Jan 2024 17:09:55 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:09:55 GMT Message-Id: <202401191709.40JH9tAe079751@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 0e58c237cb32 - stable/13 - iichid(4): Switch taskqueue to "fast" List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0e58c237cb321cf20bae5422c9012b15a1cac740 Auto-Submitted: auto-generated The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=0e58c237cb321cf20bae5422c9012b15a1cac740 commit 0e58c237cb321cf20bae5422c9012b15a1cac740 Author: Alexander Motin AuthorDate: 2023-12-27 00:36:34 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:08:14 +0000 iichid(4): Switch taskqueue to "fast" While "fast" taskqueue may be more expensive due to spinlock use, when used mainly for timeout tasks it allows to avoid extra context switches to and from callout thread, that is even more expensive. MFC after: 1 month (cherry picked from commit 358453ce9bdd99eb69641b02f2d7e29cedecbe27) --- sys/dev/iicbus/iichid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c index a0e11b8500b6..da14918f0b52 100644 --- a/sys/dev/iicbus/iichid.c +++ b/sys/dev/iicbus/iichid.c @@ -1129,7 +1129,7 @@ iichid_attach(device_t dev) TASK_INIT(&sc->suspend_task, 0, iichid_suspend_task, sc); #ifdef IICHID_SAMPLING - sc->taskqueue = taskqueue_create("iichid_tq", M_WAITOK | M_ZERO, + sc->taskqueue = taskqueue_create_fast("iichid_tq", M_WAITOK | M_ZERO, taskqueue_thread_enqueue, &sc->taskqueue); TIMEOUT_TASK_INIT(sc->taskqueue, &sc->sampling_task, 0, iichid_sampling_task, sc); From nobody Fri Jan 19 17:17:28 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmWs1nhSz56xYq; Fri, 19 Jan 2024 17:17:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmWs1Gxmz4Mg9; Fri, 19 Jan 2024 17:17:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684649; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BKTPVEVklAflXfhzuh6BgvMFv0BehqIqZpTdTV2mXUk=; b=Igqy/fRPH7qiFMG9PgbnyYLcIocBNcYjwpQM9gvP3QKjQlCTnUITzaeeAErAd0J7mwmytr 5pAwjAma6f8G+haAqn8l2Idsgt/o/EAM0cUvZIdHj2kzKHjLLVUDcC1Ax0CicxjIJM54f7 h1/GO2bcU2uYdtGjk8jDoD+ATAUeQ8U2Z45oROZJBsPlVyqYcnlqDiT3cO919ASIts1s6X yxrwMDyus+tdp6ocIz/xNcpwPUioCHfq/TSg/00EvSRcAoo3LyXk0EzHIde6LH4st7wpH7 qkHKxy0KPWT2zqEKZLXe3Ypk9sioS9KK6DFC/tFDe+HWhRGynxPrngF6zI805g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684649; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BKTPVEVklAflXfhzuh6BgvMFv0BehqIqZpTdTV2mXUk=; b=dVUhJhl0/G3T9zsEwakF897SWhzFYVotZw5jw6fX5M013rBrUCVtIbb+eKY+2wDMrCnp0T DbTvjXiTbh800I3HqRwp/z9ZbGafsx4OrYyJr+u3jgmVUX0OMjJIkJrMnDRdp2dkagTyD2 ImX1AyzY7D8dnkL/hlNPiEL/YvP5IxIrZ/8cTqv5Nece3L0+Op5D+HZ01F/5BSp5ivkOz9 YZsQBhd27DyzgV+kQKjGyU4uMgTxrMIe4hW0SIaYPeB0UDrq0Qu25V3RLUAURYvjJLwxoA A3NdSb//LLvfUF7jnX51aF/IpPwbaCdj9A4IEfKDPFQkTd/NRrvodswib0exKg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684649; a=rsa-sha256; cv=none; b=ODS+lmhU9u6I3mpmEpRyHhc4RChrIapDsYVWw/qUTnM99jV394t+9uA0das3pOU7wtzBVW pya6Wfhw9oEhYMkBJeynjPLCtutA+49tq5qE/tXz3F0gVdEglEqHtt3nYtJwiaMZaornEm NYq8tlMC+hfo2omoUI1rEcGn7ZPoAVUQ2krwdPq8NwYxN3aJRM8owh/4nivCaqcormEVDw RF7TVKBx6MOgNCLNo7YO9Ot/yB167HmfWdAbZpQRA79mOLhsVsqVquAfpJVlC7FSYD1YF0 49dTezCqk9qze32TnqJZmlVOtajEvht/18afBluixUTOQWHt311JjcT9Mm1lzg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmWs0DZkz10P0; Fri, 19 Jan 2024 17:17:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHSWx096753; Fri, 19 Jan 2024 17:17:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHSxV096750; Fri, 19 Jan 2024 17:17:28 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:28 GMT Message-Id: <202401191717.40JHHSxV096750@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 0d2cce768cbc - stable/14 - mpi3mr: Don't hold fwevt_lock over call to taskqueue_drain List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 0d2cce768cbcdd97efd027661c53611c122492ce Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=0d2cce768cbcdd97efd027661c53611c122492ce commit 0d2cce768cbcdd97efd027661c53611c122492ce Author: Warner Losh AuthorDate: 2023-11-29 01:48:48 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:49 +0000 mpi3mr: Don't hold fwevt_lock over call to taskqueue_drain Holding fwevt_lock when we call taskqueue_drain can lead to deadlock because it's draining a queue needs fwevt_lock to do work, so that other thread will try to take out the lock and block, making the thread never finish and taskqueue_drain never complete. There's a witness warning/error for this which was exposed when the lock was converted to a MTX_DEF lock from a MTX_SPIN prior to committing to the FreeBSD tree. The lock appears to be to protect against additional items being added to the event list while we're doing a reset. Since the taskqueue is blocked, items can get added to the list, but won't be processed during the reset, but there is still a (likely small) race between the taskqueue_drain and the taskqueue_block calls where an interrupt could fire on another CPU, resulting in a task being enqueued and started before the block can take effect. The only way to fix that race is to turn off interrupt processing during a reset. So we replace a deadlock with a smaller race. Sponsored by: Netflix Reviewed by: sumit.saxena_broadcom.com, mav, jhb Differential Revision: https://reviews.freebsd.org/D42537 (cherry picked from commit b411372b7d17ae7e5d6c944732d41b979bde2ac4) --- sys/dev/mpi3mr/mpi3mr.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index 86535383b8f0..592b0f02cdd7 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -2785,7 +2785,6 @@ int mpi3mr_initialize_ioc(struct mpi3mr_softc *sc, U8 init_type) mtx_init(&sc->sense_buf_q_lock, "Sense buffer Queue lock", NULL, MTX_SPIN); mtx_init(&sc->chain_buf_lock, "Chain buffer lock", NULL, MTX_SPIN); mtx_init(&sc->cmd_pool_lock, "Command pool lock", NULL, MTX_DEF); -// mtx_init(&sc->fwevt_lock, "Firmware Event lock", NULL, MTX_SPIN); mtx_init(&sc->fwevt_lock, "Firmware Event lock", NULL, MTX_DEF); mtx_init(&sc->target_lock, "Target lock", NULL, MTX_SPIN); mtx_init(&sc->reset_mutex, "Reset lock", NULL, MTX_DEF); @@ -5826,11 +5825,14 @@ static int mpi3mr_issue_reset(struct mpi3mr_softc *sc, U16 reset_type, inline void mpi3mr_cleanup_event_taskq(struct mpi3mr_softc *sc) { - mtx_lock(&sc->fwevt_lock); - taskqueue_drain(sc->cam_sc->ev_tq, &sc->cam_sc->ev_task); + /* + * Block the taskqueue before draining. This means any new tasks won't + * be queued to a worker thread. But it doesn't stop the current workers + * that are running. taskqueue_drain waits for those correctly in the + * case of thread backed taskqueues. + */ taskqueue_block(sc->cam_sc->ev_tq); - mtx_unlock(&sc->fwevt_lock); - return; + taskqueue_drain(sc->cam_sc->ev_tq, &sc->cam_sc->ev_task); } /** From nobody Fri Jan 19 17:17:30 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmWt3Cbdz56xG4; Fri, 19 Jan 2024 17:17:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmWt1yFLz4MhZ; Fri, 19 Jan 2024 17:17:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684650; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gWv+ETUgaM0uO9670yi43/52MTphKD6lIBB+g+q60TY=; b=Z5VkmCLm4mmvoImB96Fc7DfyREU46ABavTq7otg0v+rXdaDRiM3gR1+gURHTAa3A/3BLKL wi29zV3Cm3B0gt5ceE8rL8WvT8gkprkXm1zRp+1B/0DTu7dv0eAAqpj5eqs7/14oj5gjIS YhGnc9Z5K17WG5xGWBEs1MQYMj04r9CDCIXWXWlxsE0aFj7NQzIkRFjvY6HtI/qlbtKYym nrqzqy+C3kVL+i8WE4Vw+5XXH+LZpFK1l0zkF5bm3QG07idcG11vN55Zcbp8Y9ei6ihbZa D5pGPuyHXKyO59HksViOID1zM8bnrLOsXErG81IH4+Nd1NHqSDtpj4NoPGLPYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684650; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gWv+ETUgaM0uO9670yi43/52MTphKD6lIBB+g+q60TY=; b=fxbL/dulJzqGFsvcLrOnH3LWSjMmhyGttDkVdltZDyx84koVQV4xsPL1RTrrbaWUgT/bgW eyMEYAJtVFWv5D5fZzx8ReOsi8kg97QDw7p8yz+i8aST7AV2yCcKsMyV0Vo5IRa9F8uCWf XTBPCQc/4M+2zpNOFLr7HmD3s5UFHRbjXzGEBiQmjpbn8dRu0/PdLrs7QX1+AkUey2oMJM ApsPNulVdMhckkgm4g0FC9jj048yV2rJ3JZuCFSPD6fp1B/Jke11A1Y762qYEKxg4vs2Qe 2lHtl78JJl9PymomTtUtK4UD/E2zADP4uchBXYkmNafXLTVxiHHYdcMXiipOhg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684650; a=rsa-sha256; cv=none; b=W97z9B8Ud4DiRiVxjwIWT9wP54khMF7K8fTtRbmlPpkzH1ctF7ObX7ICaZYH6kcj9q22EE GWBlAMclOJoA+1GOLu/ps7Meh8dZnextZ61/I0ofeosBRcIpuAqZD0EYKrc5yBXwxGMVGe 73Syv/7RO7XGsXsghysiKFaJVORExqqyF76Sd4juCQft4OcbWs/wL07FzWG2do4BPtGw8o hwoDv+pWdRfg6bLryWC4jCqsKiLQ3xeuPxRlEs6jwEscD4T+j25WcJwjOQnnjms0GWSP6f N0PRgqcodCIwJ/3tISx57ojuWPYNShkEE++LJJPSGS3sDIIqmCB3wSgyEa+x/w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmWt11sTz10P1; Fri, 19 Jan 2024 17:17:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHUKq096805; Fri, 19 Jan 2024 17:17:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHUIw096802; Fri, 19 Jan 2024 17:17:30 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:30 GMT Message-Id: <202401191717.40JHHUIw096802@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: e82c6e941e6a - stable/14 - mpi3mr: Remove unused fields in struct mpi3mr_cmd List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e82c6e941e6a9ca34ad493018bcd43257bb08061 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=e82c6e941e6a9ca34ad493018bcd43257bb08061 commit e82c6e941e6a9ca34ad493018bcd43257bb08061 Author: Warner Losh AuthorDate: 2023-11-29 01:49:01 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:49 +0000 mpi3mr: Remove unused fields in struct mpi3mr_cmd All of these fields are either unused, or just initialized. Remove them. This saves about 1MB of memory for the cards that I have which can do 8k transactions at once. Sponsored by: Netflix Reviewed by: mav, jhb Differential Revision: https://reviews.freebsd.org/D42538 (cherry picked from commit a2b046620c54db977196128b3c53da2704b9fd20) --- sys/dev/mpi3mr/mpi3mr.c | 3 --- sys/dev/mpi3mr/mpi3mr.h | 6 ------ 2 files changed, 9 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index 592b0f02cdd7..7bb834430dbc 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -4986,12 +4986,9 @@ mpi3mr_get_command(struct mpi3mr_softc *sc) cmd->data_dir = 0; cmd->ccb = NULL; cmd->targ = NULL; - cmd->max_segs = 0; - cmd->lun = 0; cmd->state = MPI3MR_CMD_STATE_BUSY; cmd->data = NULL; cmd->length = 0; - cmd->out_len = 0; out: mtx_unlock(&sc->cmd_pool_lock); return cmd; diff --git a/sys/dev/mpi3mr/mpi3mr.h b/sys/dev/mpi3mr/mpi3mr.h index 1dc680beb47e..2226c747d3cf 100644 --- a/sys/dev/mpi3mr/mpi3mr.h +++ b/sys/dev/mpi3mr/mpi3mr.h @@ -457,19 +457,13 @@ struct mpi3mr_cmd { union ccb *ccb; void *data; u_int length; - u_int out_len; - struct uio uio; - struct iovec iovec[MPI3MR_IOVEC_COUNT]; - u_int max_segs; struct mpi3mr_target *targ; - u_int lun; u_int data_dir; u_int state; bus_dmamap_t dmamap; struct scsi_sense_data *sense; struct callout callout; bool callout_owner; - mpi3mr_cmd_callback_t *timeout_handler; U16 hosttag; U8 req_qidx; Mpi3SCSIIORequest_t io_request; From nobody Fri Jan 19 17:17:31 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmWv56gTz56xSr; Fri, 19 Jan 2024 17:17:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmWv3BKVz4MXR; Fri, 19 Jan 2024 17:17:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684651; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kp4tTnwNbIg8oIkGwgoprTBee1WoAxTzEz4PETC+umQ=; b=yTMbc7+T7Nl4MLuNne2v7Ry8a0iBPTe8cSWcd/Cdcf0O9yABQcVG5fQIjxUuRbkfvhNxxV dX5XtY7xfKNmGN+PXKnsSwq6acKIX9+MaO2ftXAdsyf+KRG4LhF8NZ7YJSQaLi6vbAea0E xC1NxWN/V3MaT4iHHZLw3lyljxmQyf7YmUmdHRIPob0eYQ/fzzOAmKJ44+FpME7twwuGv7 O/y0yqUmu78GwdRAJdbSLu3OE2w331VVnw5ZSAD4e6ETrACZtXVHo3mh/Kz9mPmWnBfVqm pGVs190zd2n6krxTTsoTKBP0VbSXInMlEGmbFEy3DQxjbtH3T/SlJsQ2aQaCpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684651; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kp4tTnwNbIg8oIkGwgoprTBee1WoAxTzEz4PETC+umQ=; b=RzPSWnF50hBXRQiCtcJI894hJtGrKctHgjeqRFI/vZLZ6GqGqP8CLkqMvv+iHsOzTTitz3 Dw4AGwbHBKByk2tN+By1VYHJjwzDVf7JIFszIiwrlMvKh1yCm28hhO1H3AETqYHCKOJ0tD PNDo+quXLfI0QKnAJhbQZVGs7keHgfq9MtpPpBv2uDNWY0mC9ocMyCPwOCn7mKAU67alhf JnfLuPTcQ1jUrPmrOpr8bgdw3+XKfhBwfPfMYIpeDdIXpOMb5V494fMHBEFvoLkqiQjSMY IjPn4NSCjChTNqQ5ConlvsOuFfZJCruFSkhhdDeS4i4KRc3QTuyyRUIzHIKWpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684651; a=rsa-sha256; cv=none; b=HI6jvF8CFmCLG6T512F0zTVFcV2Ohiyx0Qrr1s8kc5UDgwgvCxMSq3fILiTidIAi3vTbZz EFsEu8Ij8ZwSioDNzqmIz4+ETJpgrIJilDlTRH91Nczw9UeXO1PJz6M7aDov1ub0W/BAuT SCg0mT8PLNJmv2RdnJP3+VUuCdmtwcWqNGR0GvoT+CqYZiDHo0DIPEyHNKU/L5sQlgbh2q DZMMzCvW1in/+dgkFPAmHZpgQGzYlnSUiErMjV2S77XtC7ApOCRIZcLB2yLZLYRrGmHErj JOg31M+PtFlYCPLYrXDNA4ObHQLRfmxlsgWsRH6XhRF0A6Z6cCjQ+Ub/tqK7Eg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmWv23Sgz10tx; Fri, 19 Jan 2024 17:17:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHVPp096859; Fri, 19 Jan 2024 17:17:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHVx5096856; Fri, 19 Jan 2024 17:17:31 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:31 GMT Message-Id: <202401191717.40JHHVx5096856@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 54fa0d10f68c - stable/14 - mpi3mr: Reduce the scope of the reset_mutext List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 54fa0d10f68c81722c341ae4277d0c5634babd48 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=54fa0d10f68c81722c341ae4277d0c5634babd48 commit 54fa0d10f68c81722c341ae4277d0c5634babd48 Author: Warner Losh AuthorDate: 2023-11-29 01:49:08 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:49 +0000 mpi3mr: Reduce the scope of the reset_mutext Reduce the scope of reset_mutext to protect the msleep in the watch dog thread as well as the MPI3MR_FLAGS_SHUTDOWN bit. Use it to protect the wakeup in mpi3mr_detach so this thread can exit sooner when we're trying to do an orderly shutdown. Optimize the flow to check the sleep and other conditions before going to sleep. It's an open question if this should protect sc->unrecoverable, and if we should wakeup the watchdog thread when we set it. We might also want to move too booleans for the three flags that we have now in mpi3mr_flags. There are a number of U8s that should really be bools and we might want to also group them together to pack softc better. Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D42539 (cherry picked from commit 7c4913093a759adf2e4c7d65535aee04aadee4df) --- sys/dev/mpi3mr/mpi3mr.c | 26 +++++++++++++++++--------- sys/dev/mpi3mr/mpi3mr_pci.c | 4 +++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index 7bb834430dbc..f6c4bb4496e6 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -3038,9 +3038,6 @@ mpi3mr_watchdog_thread(void *arg) sc->watchdog_thread_active = 1; mtx_lock(&sc->reset_mutex); for (;;) { - /* Sleep for 1 second and check the queue status */ - msleep(&sc->watchdog_chan, &sc->reset_mutex, PRIBIO, - "mpi3mr_watchdog", 1 * hz); if (sc->mpi3mr_flags & MPI3MR_FLAGS_SHUTDOWN || (sc->unrecoverable == 1)) { mpi3mr_dprint(sc, MPI3MR_INFO, @@ -3049,20 +3046,21 @@ mpi3mr_watchdog_thread(void *arg) "Hardware critical error", __func__); break; } + mtx_unlock(&sc->reset_mutex); if ((sc->prepare_for_reset) && ((sc->prepare_for_reset_timeout_counter++) >= MPI3MR_PREPARE_FOR_RESET_TIMEOUT)) { mpi3mr_soft_reset_handler(sc, MPI3MR_RESET_FROM_CIACTVRST_TIMER, 1); - continue; + goto sleep; } ioc_status = mpi3mr_regread(sc, MPI3_SYSIF_IOC_STATUS_OFFSET); if (ioc_status & MPI3_SYSIF_IOC_STATUS_RESET_HISTORY) { mpi3mr_soft_reset_handler(sc, MPI3MR_RESET_FROM_FIRMWARE, 0); - continue; + goto sleep; } ioc_state = mpi3mr_get_iocstate(sc); @@ -3078,7 +3076,7 @@ mpi3mr_watchdog_thread(void *arg) "diag save in progress\n"); } if ((sc->diagsave_timeout++) <= MPI3_SYSIF_DIAG_SAVE_TIMEOUT) - continue; + goto sleep; } mpi3mr_print_fault_info(sc); sc->diagsave_timeout = 0; @@ -3089,12 +3087,12 @@ mpi3mr_watchdog_thread(void *arg) "Controller requires system power cycle or complete reset is needed," "fault code: 0x%x. marking controller as unrecoverable\n", fault); sc->unrecoverable = 1; - goto out; + break; } if ((fault == MPI3_SYSIF_FAULT_CODE_DIAG_FAULT_RESET) || (fault == MPI3_SYSIF_FAULT_CODE_SOFT_RESET_IN_PROGRESS) || (sc->reset_in_progress)) - goto out; + break; if (fault == MPI3_SYSIF_FAULT_CODE_CI_ACTIVATION_RESET) mpi3mr_soft_reset_handler(sc, MPI3MR_RESET_FROM_CIACTIV_FAULT, 0); @@ -3108,8 +3106,18 @@ mpi3mr_watchdog_thread(void *arg) mpi3mr_print_fault_info(sc); mpi3mr_soft_reset_handler(sc, sc->reset.reason, 1); } +sleep: + mtx_lock(&sc->reset_mutex); + /* + * Sleep for 1 second if we're not exiting, then loop to top + * to poll exit status and hardware health. + */ + if ((sc->mpi3mr_flags & MPI3MR_FLAGS_SHUTDOWN) == 0 && + !sc->unrecoverable) { + msleep(&sc->watchdog_chan, &sc->reset_mutex, PRIBIO, + "mpi3mr_watchdog", 1 * hz); + } } -out: mtx_unlock(&sc->reset_mutex); sc->watchdog_thread_active = 0; mpi3mr_kproc_exit(0); diff --git a/sys/dev/mpi3mr/mpi3mr_pci.c b/sys/dev/mpi3mr/mpi3mr_pci.c index 4935ac0d519c..eaf73022291d 100644 --- a/sys/dev/mpi3mr/mpi3mr_pci.c +++ b/sys/dev/mpi3mr/mpi3mr_pci.c @@ -635,13 +635,15 @@ mpi3mr_pci_detach(device_t dev) if (!sc->secure_ctrl) return 0; - sc->mpi3mr_flags |= MPI3MR_FLAGS_SHUTDOWN; if (sc->sysctl_tree != NULL) sysctl_ctx_free(&sc->sysctl_ctx); + mtx_lock(&sc->reset_mutex); + sc->mpi3mr_flags |= MPI3MR_FLAGS_SHUTDOWN; if (sc->watchdog_thread_active) wakeup(&sc->watchdog_chan); + mtx_unlock(&sc->reset_mutex); while (sc->reset_in_progress && (i < PEND_IOCTLS_COMP_WAIT_TIME)) { i++; From nobody Fri Jan 19 17:17:32 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmWw5Ck7z56xNl; Fri, 19 Jan 2024 17:17:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmWw3Z4gz4MdK; Fri, 19 Jan 2024 17:17:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684652; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jvqVXNQYOL6OX+5Ezzd3+gr9PKLX9MpzZz4zOrLddj8=; b=sKzQm/UnQz0o6AKdpakTf6a0jFI/HolD8Br2i5EgwQd6g+b7aInHMtvZzpkXRht+lQ8wYm 74yU7dMx7f+IxB64l/zRuhrcTsIYPMtIYOZeLx6QvXsnrk3k9EwFNhyez0WxjJahzxWCvr WMg3iCgiNdOdq8S20J0jhF2/fzuw5lR8ealylrA6QVa6OU7Esgjdq9gMzZfr5FYdlKzACs WjamScZ4PdmCAIcpd0rTdF1a/FBriLNIJweuttjY1Ft4bLlsSBrjC/0SyAx6aye0zfajr8 A88yvf5vvBYQSXFNLGLuECRyi3rMsuwuCczoomIwveJNbX3p7fnBpFyWmDo0ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684652; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jvqVXNQYOL6OX+5Ezzd3+gr9PKLX9MpzZz4zOrLddj8=; b=RKe8AfAkgR69gWoMyeD0YxqvKgkGIRjmNls21MaS+nStMBNrAfWD+UY4sFRhNGXmvgzmJE HnL/wP2Ss9nvxRTpWJVP1ntx6F1pukbton+B0/Hn+GZHgteHm8PtA4Fln9tsvBudEqfi9j GaeojtZxkI0x0vFUPCwrfSOJEhE0QOMbSY/JvalfbNLz+PrSjBa8zZqPE6tNdR64u+j5cn mmpQovR+sR1wdRNgNtdmhtsDxxLFBX8RYTodKOfApnZDdeVtunS1nPBVOA/q3RAZ5ZaERL 65S9CtOw64m9dU5iiZaubTOhwkCAVEVf3lybX34+8lgCcX7puOTypnwQdvt7QQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684652; a=rsa-sha256; cv=none; b=XSkxBwZJVivoGSalvUinw5R09M8AMVKszUGyzKjgsct+cRvpZY5zpvkhX0aUaV/dMYjgqY zvJR8ZXYf7NgsTng+0iStFRFC447oW8MvtjTj9cFwLAiGV78ELD9jWKCCoVJ3SgZdkywJK 7zJq6RRtRdxHjcmmOglSfmQT8tq+M7f2+vjzCeUADraHC4VjAIN99NhgtzsWyQm7+1VL8Z yEfsmHTVkGc7vRla360NE4MmsGAAce0IVt0tZ1n7rF37E52F4UzSdLawza6JjxM8VcUEvt Hp9zKM9JRS94BxAO3sHdbag73nsoYq1fRSN5n1l2TAw2RZ+6wy8gw6g0QtUELQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmWw2dhMz10P2; Fri, 19 Jan 2024 17:17:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHW9d096905; Fri, 19 Jan 2024 17:17:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHWaf096902; Fri, 19 Jan 2024 17:17:32 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:32 GMT Message-Id: <202401191717.40JHHWaf096902@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 3c12997a1c76 - stable/14 - mpi3mr: Minor style fix List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3c12997a1c76b1771669a93965aba2c6029037e1 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=3c12997a1c76b1771669a93965aba2c6029037e1 commit 3c12997a1c76b1771669a93965aba2c6029037e1 Author: Warner Losh AuthorDate: 2023-11-29 01:49:16 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:49 +0000 mpi3mr: Minor style fix Fold two lines to make this more readable. Sponsored by: Netflix Reviewed by: mav, jhb Differential Revision: https://reviews.freebsd.org/D42540 (cherry picked from commit e2b27df9eb324fa6e72e29d3185dcd6b390efa9d) --- sys/dev/mpi3mr/mpi3mr_cam.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr_cam.c b/sys/dev/mpi3mr/mpi3mr_cam.c index 7464b897384f..9b85ee8301dd 100644 --- a/sys/dev/mpi3mr/mpi3mr_cam.c +++ b/sys/dev/mpi3mr/mpi3mr_cam.c @@ -1213,8 +1213,7 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) } req->Flags = htole32(mpi_control); - if (mpi3mr_submit_io(sc, opreqq, - (U8 *)&cm->io_request)) { + if (mpi3mr_submit_io(sc, opreqq, (U8 *)&cm->io_request)) { mpi3mr_release_command(cm); if (tracked_io_sz) { mpi3mr_atomic_sub(&sc->pend_large_data_sz, tracked_io_sz); From nobody Fri Jan 19 17:17:33 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmWy0VMLz56xbq; Fri, 19 Jan 2024 17:17:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmWx5250z4MVK; Fri, 19 Jan 2024 17:17:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684653; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jAQLWN8b9maP0ti1l+KJGLGQae6rrnLuVP06DoSVLPU=; b=CvAO1FMqykjNX4Po/RX45vrqIYRTZT4vSvW3IrjRxDTdgOmu97aKb+vIpOYaV0EckCuQiE YvnygthD3eduQz98f2lAy3+vDrzO+k1fVmcHu0Nfz1d0181Ui2iQAW6h44pXlxNK1uwiCi /Ql+7Niw3DXghJsZyrVZT5MXjicMkTuj48JsHkh29hTQIvBLtJIYOmhH71pVLkATp22cH1 F711bEH7QYZLMeuqiy4chjealPXd9cR7fxgojRMiE+xkvvDXwQegBx7XBtEPHFl57h00eh c6X3UrPBBiHmtz7lF1jG16/neLX4tgH2sdymyZCDy9gHD0O7gCxaVdtq289F6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684653; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jAQLWN8b9maP0ti1l+KJGLGQae6rrnLuVP06DoSVLPU=; b=JmFX6ITS2MKjJN5Qm8wsJ2qZd7SW16IojpFtXvuxtjPNlB6I1kNhvL5hY2af1RPLhX35QS VkSpvda3ZXWDqbXJ+nVDOzmi6vse11xVGM9YwoWce29K12gznynB+8InJdzjTHYbUH+nms kbp9zE3kKW2cf5DXLEabsMKyVxcqgoTejI6C5hNotpHjeNbuxJ8A0FyHMYUQqBux7OWqKI 9m2aHvlkLSobZ0NynC5pA+8ez8Wq6hnZOtVhiFsfnuqAWeZf/4oA3k/U/HelOb38Q7Xtrz tJ03sle6h1GOLA4+NhTfwgftHshrd3JNgpIcf61//1Eoflp5bVRHexawBH1ojQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684653; a=rsa-sha256; cv=none; b=m5jjEmUW5ejEGciq+I8Szd6iiUalpRBFYYxAKOh1vqSNiM2WHOZUyeJzZJWnjTSrEKEf7h kNaHhkWEunUXpZgiy3+/N2l8Hk5VedhP+0/cN0VUSnaZKeJy12gBVgMBj8hbOL2BVX+jpF cZ70MEy26ylVtAcIzIgp0pi9lFcCBjWim21NkKvLt03NplIHCQBg36TpQi7kWNAzIZa7sL XFjbAd605wjJgNQ4LAa5Vz0/oQAZm1d98is0svJnr/8B1N4ByzNrduIWHMXqbNtqyeY3c+ 4FXs82bqM0d9y5dU3gF9SR5I2VXdeug2cDSeQLtfsvwAmt1vhxUvqXgsbiPZLQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmWx3wdnz103x; Fri, 19 Jan 2024 17:17:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHXWa096959; Fri, 19 Jan 2024 17:17:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHXOr096956; Fri, 19 Jan 2024 17:17:33 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:33 GMT Message-Id: <202401191717.40JHHXOr096956@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: c351a6ec918e - stable/14 - mpi3mr: Only set callout_owned when we create a timeout List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c351a6ec918ea33e2abdc012deeb7b77d3a90e5f Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=c351a6ec918ea33e2abdc012deeb7b77d3a90e5f commit c351a6ec918ea33e2abdc012deeb7b77d3a90e5f Author: Warner Losh AuthorDate: 2023-11-29 01:49:24 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:49 +0000 mpi3mr: Only set callout_owned when we create a timeout Since we assume there's a timeout to cancel when this is true, only set it true when we set the timeout. Otherwise we may try to cancel a timeout when there's been an error in submission. Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D42541 (cherry picked from commit 1cfd01111eb6a28ca5043e928aa8e9099064177a) --- sys/dev/mpi3mr/mpi3mr_cam.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr_cam.c b/sys/dev/mpi3mr/mpi3mr_cam.c index 9b85ee8301dd..44b613ad7915 100644 --- a/sys/dev/mpi3mr/mpi3mr_cam.c +++ b/sys/dev/mpi3mr/mpi3mr_cam.c @@ -1223,15 +1223,15 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) mpi3mr_set_ccbstatus(ccb, CAM_RESRC_UNAVAIL); xpt_done(ccb); } else { - callout_reset_sbt(&cm->callout, SBT_1S * 90 , 0, - mpi3mr_scsiio_timeout, cm, 0); + callout_reset_sbt(&cm->callout, mstosbt(ccb->ccb_h.timeout), 0, + mpi3mr_scsiio_timeout, cm, 0); + cm->callout_owner = true; mpi3mr_atomic_inc(&sc->fw_outstanding); mpi3mr_atomic_inc(&targ->outstanding); if (mpi3mr_atomic_read(&sc->fw_outstanding) > sc->io_cmds_highwater) sc->io_cmds_highwater++; } - cm->callout_owner = true; return; } From nobody Fri Jan 19 17:17:34 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmWz1X3sz56xQc; Fri, 19 Jan 2024 17:17:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmWy6BnRz4MlP; Fri, 19 Jan 2024 17:17:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684654; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Z24vVrwNDJjHiFWKdtYz4dwfgFS15JZ3RJh3g4CTsfo=; b=OI+NSFbbLuBj14/7dz98vNypsCDrqhVDuZYiC02N9peN2u/mctHZHnbTtmVpqVO4L95TdB ghdOJDhvTZbD1DTsOhCNQ7/DCxHolZESeWs1FTo44DQ2OkG9kUbzyQfewad7VZW6jDTSGY idchDqDrJC9iQ+I20ZoGOR9XbzrwT8+JMCoS/yT6sXBbhwfYxCQpG4Zt6t2lvtcrYPIWUk vauQ3EYiXmCZLpgJiT4c+WCMZCmcr7g84G59AnPra/V+3qAMzk8CHnXm49TM3UELh46GJP zD4WZeqKaCiIFda+FJHC6mcNgdndDUNWVYWuEueJUcj1jbKc05NrIGZ04Q60HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684654; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Z24vVrwNDJjHiFWKdtYz4dwfgFS15JZ3RJh3g4CTsfo=; b=sRrQFh4/oUWhsL1LChzkfuQwrWa1upoD+qFrtWr/gtl8foW+4viPuI0hm30/ACr8YXBpMj 8/Mi1JRqzESJJwq/XjvyWiKqP3zlDcoCElHn0/5d9J0TPxEW4yMjWevEgVZQW7DrYanU8t ewylOAFVdD7Ot8zuqrA35rmkHC1742PVUQWekVIN7gfaApUAHgpNifiu0OBVOLCN0gFuVO 1QPUXxPA/gjpIk1OaKtQCPMCMf67e72oPZSPiE0NP1pgxedCgqpMOj+UWj31/5t/E9wK4A +dI4K1UuSK9MVqJnSI1Z7fG+CjsXxNcfDEmxb3YS3OtT118qcHjy4UQK0eBK1A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684654; a=rsa-sha256; cv=none; b=v5X/zSwYbxqOK+bHVOtMpL4keyUVY1UOUfq6gwFpcorynBejfbsXgaAO+iyTc9QtaMiIJ5 15wLt012VSUaBwIzdPi8y9Bz7y4BWxHow4y+DbNDI+SDOgiMqzWkr9Q8asjBuJRTKZmGOC iDbX0DnImvo/SFAnJhcvoZTkO9zrXhCyBz7mnqW9CEnwwdobWAmRyRnW/uPAhEg4xczVsp 9mAYcnpnphF5MdqJSTtmtzhN47MSH+iyaKx6M7DOFYjGKnvGe0Po5FcX16BGrzhdECu4j9 PGpXIYzvaGvC744CxAdqqJrCGeFWRzrlAdH0kdfPDrJMlum7bE/TVdsOBX3oUg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmWy4yhZz10tG; Fri, 19 Jan 2024 17:17:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHYmr097013; Fri, 19 Jan 2024 17:17:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHYHP097010; Fri, 19 Jan 2024 17:17:34 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:34 GMT Message-Id: <202401191717.40JHHYHP097010@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: ac4f33d2cd37 - stable/14 - mpi3mr: Cleaup setting of status in processing scsiio requests List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ac4f33d2cd37027b7adac2b0cb4b54e1458aa4b7 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=ac4f33d2cd37027b7adac2b0cb4b54e1458aa4b7 commit ac4f33d2cd37027b7adac2b0cb4b54e1458aa4b7 Author: Warner Losh AuthorDate: 2023-11-29 01:49:30 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:49 +0000 mpi3mr: Cleaup setting of status in processing scsiio requests More uniformly use mpi3mr_set_ccbstatus in mpi3mr_action_scsiio. The routine mostly used it, but also has setting of status by hand. In those cases where we want to error out the request, use this routine. As part of this, move setting CAM_SIM_QUEUED later in the function to when we're sure it's been queued. Remove the places we clear it before this. Sponsored by: Netflix Reviewed by: mav, jhb Differential Revision: https://reviews.freebsd.org/D42542 (cherry picked from commit cf8c23230aabd30aa9251975dbe705da559a2d02) --- sys/dev/mpi3mr/mpi3mr_cam.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr_cam.c b/sys/dev/mpi3mr/mpi3mr_cam.c index 44b613ad7915..b6e47eac058a 100644 --- a/sys/dev/mpi3mr/mpi3mr_cam.c +++ b/sys/dev/mpi3mr/mpi3mr_cam.c @@ -1025,7 +1025,7 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) cam_sc->flags |= MPI3MRSAS_QUEUE_FROZEN; } ccb->ccb_h.status &= ~CAM_SIM_QUEUED; - ccb->ccb_h.status |= CAM_REQUEUE_REQ; + mpi3mr_set_ccbstatus(ccb, CAM_REQUEUE_REQ); xpt_done(ccb); return; } @@ -1099,39 +1099,38 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) mpi3mr_dprint(sc, MPI3MR_TRACE, "[QID:%d]: func: %s line:%d CDB: 0x%x targetid: %x SMID: 0x%x\n", (queue_idx + 1), __func__, __LINE__, scsi_opcode, csio->ccb_h.target_id, cm->hosttag); - ccb->ccb_h.status |= CAM_SIM_QUEUED; - switch ((ccb->ccb_h.flags & CAM_DATA_MASK)) { case CAM_DATA_PADDR: case CAM_DATA_SG_PADDR: device_printf(sc->mpi3mr_dev, "%s: physical addresses not supported\n", __func__); mpi3mr_release_command(cm); - ccb->ccb_h.status = CAM_REQ_INVALID; - ccb->ccb_h.status &= ~CAM_SIM_QUEUED; + mpi3mr_set_ccbstatus(ccb, CAM_REQ_INVALID); xpt_done(ccb); return; case CAM_DATA_SG: device_printf(sc->mpi3mr_dev, "%s: scatter gather is not supported\n", __func__); mpi3mr_release_command(cm); - ccb->ccb_h.status = CAM_REQ_INVALID; + mpi3mr_set_ccbstatus(ccb, CAM_REQ_INVALID); xpt_done(ccb); return; case CAM_DATA_VADDR: case CAM_DATA_BIO: if (csio->dxfer_len > (MPI3MR_SG_DEPTH * MPI3MR_4K_PGSZ)) { + mpi3mr_set_ccbstatus(ccb, CAM_REQ_TOO_BIG); mpi3mr_release_command(cm); - ccb->ccb_h.status = CAM_REQ_TOO_BIG; xpt_done(ccb); return; } + ccb->ccb_h.status |= CAM_SIM_QUEUED; cm->length = csio->dxfer_len; if (cm->length) cm->data = csio->data_ptr; break; default: - ccb->ccb_h.status = CAM_REQ_INVALID; + mpi3mr_release_command(cm); + mpi3mr_set_ccbstatus(ccb, CAM_REQ_INVALID); xpt_done(ccb); return; } From nobody Fri Jan 19 17:17:35 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX01sTJz56xNs; Fri, 19 Jan 2024 17:17:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmWz6l3Pz4Mdx; Fri, 19 Jan 2024 17:17:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684655; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CKE+R+cV6eojTGcKImVX8G9KxkEFAVsQt5tpIBMqaTY=; b=M0i7q+IYaXARRT4zvOBcH1c+Bl8Z2C1awUEDkGbCma1fbzeKNUg5N3SmlihDNAdgm17zZo Eix1T0Lfdvj6zDcQEypzrk6Ken17L6nvy71f9lObedT85yT6rJAX8ZRRWREKIrp6fmHVZM y6y/t6MabLka2Ut9ghE6MtA3Rtd9Uk9ziWN2iIm8bKJvk+nAceDN5AYClVRBTAMsFoxjS3 aTMhNyNvAR7nsKBEqyS0IjYVbYzs28fFEJNY2LcI7tQzfueVJnCg+mUhIgNVhZ+3xIleMA PikAZ1hjBWRUHvv29dcXKuBmmMx3tri1z9Rg0CCc/ewq+2gIYMNo7Zj/Gnwvhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684655; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CKE+R+cV6eojTGcKImVX8G9KxkEFAVsQt5tpIBMqaTY=; b=Z/gJY9XKv/SX08Kme2JLRa4fwce7OPf3kfRv4DcuYkSMmRxJDaOUweDWo5zp1fYHQgynr/ CNXyQsQOysNqzOTDqGFhNywmEa5siQGy4kV7PXCD3GqAyHPUo8gZdsfKdlc7mhbUMx5KZC khzETkomWL3+duA3ckgWd9ogwcyXl2CZYDSlHe24VC3cRUTJeG2qobqVlezrwawuA6P9FM 15Ernzy+nAiXNdULCI7BfJTFndkxxB9SGErfvmd9sRwrVGY99UZ4aeuDJMJw0RCxFr3TOR GyzOA08TXkjgr+PrgoDP3OpwjHhvlsujKbd2c0lpOiguyTzYg6vFy3iDsfjsrA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684655; a=rsa-sha256; cv=none; b=MG8EfLfA826z0qEuKkMHV9gGYv3Ei/2vqlfsT62n9RbH2deIl5YAucaAWSHeJlOH1uRtjM +RkA0XD3xVH+8TkLOTXtw8Nr/P7gYtbTTtNUJUS17aMVXi416e58aQ1fAmO17i52JbDNR9 +6oY0qpVKvX0DUZX6IOXXXsfxreIJBEwAWl8R3LVa/prpk500MwptRzVh80ji9vryuRGt4 SL+q6L6xyhRILJqzJhDHY11ZbI9cEWdpdGYipch3uRWDmPT3VjbAOscRsfqbFrOds8QYk2 ZjcKKoIB9/gNZGEmOum9NLfwcDbpIcgGHO+xXo4EEW2SZO4PJIxKmNME9XxYNQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmWz5r9xz10P3; Fri, 19 Jan 2024 17:17:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHZv1097065; Fri, 19 Jan 2024 17:17:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHZPH097062; Fri, 19 Jan 2024 17:17:35 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:35 GMT Message-Id: <202401191717.40JHHZPH097062@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: fda7cc79aaf6 - stable/14 - mpi3mr: Fix EINPROGRESS errors hanging the card List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: fda7cc79aaf65a5a5d62627602d6456c70309ce1 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=fda7cc79aaf65a5a5d62627602d6456c70309ce1 commit fda7cc79aaf65a5a5d62627602d6456c70309ce1 Author: Warner Losh AuthorDate: 2023-11-29 01:49:39 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Fix EINPROGRESS errors hanging the card Move enqueueing of commands to bus_dmamap_load_ccb callback Fix fundamental difference between FreeBSD and Linux. On Linux, your dma load callback always happends before it returns, so drivers are written to load the map, then submit to hardware. On FreeBSD, the callback may be deferred and return EINPROGRESS. This means the callback is responsible for queueing the request to the hardware is done after the SGL list is created. Make a number of interrelated cahnages: At the end of mpi3mr_prepare_sgls, add a call to mpi3mr_enqueue_request. Split the hardware submission out from the end of mpi3mr_action_scsiio and move it into a new routine mpi3mr_enqueue_request. Move all error completion from the end of mpi3mr_action_scsiio to where the error is detected. We cannot pass errors back from the mpi3mr_enqueue_request to do this on a 'failed' mpi3mr in a centralized place (since it has to be fire and forget). Add comments about zero length SGLs never making it into mpi3mr_prepare_sgls. Keep the code there for the moment, but we only set cm->data to non-NULL when scsiio_req->DataLength is not zero. So the datalength can't be zero and we can't send the zero SGLs. Add commentts about other "impossible" tests in mpi3mr_prepare_sgls that really should be simple asserts of some flavor. Eliminate cm->error_code, since we can't pass data back from the mpi3mr_prepare_sgl callback anymore. In mpi3mr_map_request, call mpi3mr_enqueue_request for the no data case. This seems to work even though we've not done the special zero length handling that was in mpi3mr_prepare_sgls, giving further evidence to it not actually being needed. This is needed for SCSI CDBs that have no data to pass to the drive like TEST UNIT READY. With this change, and the prior ones, we're now able to run with mpi3mr on 128GB systems and very heavy disk load (so many buffers land > 4GB: the driver instructs busdma to never use memory abouve 4GB, which may be too conservative, but an issue for another time). Sponsored by: Netflix Reviewed by: sumit.saxena_broadcom.com, mav, jhb Differential Revision: https://reviews.freebsd.org/D42543 (cherry picked from commit 3208a189c1e2c4ef35daa432fe45629a043d7047) --- sys/dev/mpi3mr/mpi3mr.h | 1 - sys/dev/mpi3mr/mpi3mr_cam.c | 130 +++++++++++++++++++++++++------------------- 2 files changed, 73 insertions(+), 58 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.h b/sys/dev/mpi3mr/mpi3mr.h index 2226c747d3cf..f1a2cbc0fd4c 100644 --- a/sys/dev/mpi3mr/mpi3mr.h +++ b/sys/dev/mpi3mr/mpi3mr.h @@ -467,7 +467,6 @@ struct mpi3mr_cmd { U16 hosttag; U8 req_qidx; Mpi3SCSIIORequest_t io_request; - int error_code; }; struct mpi3mr_chain { diff --git a/sys/dev/mpi3mr/mpi3mr_cam.c b/sys/dev/mpi3mr/mpi3mr_cam.c index b6e47eac058a..15ef2732ec56 100644 --- a/sys/dev/mpi3mr/mpi3mr_cam.c +++ b/sys/dev/mpi3mr/mpi3mr_cam.c @@ -86,7 +86,9 @@ #define smp_processor_id() PCPU_GET(cpuid) -static int +static void +mpi3mr_enqueue_request(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cm); +static void mpi3mr_map_request(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cm); void mpi3mr_release_simq_reinit(struct mpi3mr_cam_softc *cam_sc); @@ -118,18 +120,23 @@ static void mpi3mr_prepare_sgls(void *arg, U8 last_chain_sgl_flags; struct mpi3mr_chain *chain_req; Mpi3SCSIIORequest_t *scsiio_req; + union ccb *ccb; cm = (struct mpi3mr_cmd *)arg; sc = cm->sc; scsiio_req = (Mpi3SCSIIORequest_t *) &cm->io_request; + ccb = cm->ccb; if (error) { - cm->error_code = error; device_printf(sc->mpi3mr_dev, "%s: error=%d\n",__func__, error); if (error == EFBIG) { - cm->ccb->ccb_h.status = CAM_REQ_TOO_BIG; - return; + mpi3mr_set_ccbstatus(ccb, CAM_REQ_TOO_BIG); + } else { + mpi3mr_set_ccbstatus(ccb, CAM_REQ_CMP_ERR); } + mpi3mr_release_command(cm); + xpt_done(ccb); + return; } if (cm->data_dir == MPI3MR_READ) @@ -138,10 +145,9 @@ static void mpi3mr_prepare_sgls(void *arg, if (cm->data_dir == MPI3MR_WRITE) bus_dmamap_sync(sc->buffer_dmat, cm->dmamap, BUS_DMASYNC_PREWRITE); - if (nsegs > MPI3MR_SG_DEPTH) { - device_printf(sc->mpi3mr_dev, "SGE count is too large or 0.\n"); - return; - } + + KASSERT(nsegs <= MPI3MR_SG_DEPTH && nsegs > 0, + ("%s: bad SGE count: %d\n", device_get_nameunit(sc->mpi3mr_dev), nsegs)); simple_sgl_flags = MPI3_SGE_FLAGS_ELEMENT_TYPE_SIMPLE | MPI3_SGE_FLAGS_DLAS_SYSTEM; @@ -152,24 +158,15 @@ static void mpi3mr_prepare_sgls(void *arg, sg_local = (U8 *)&scsiio_req->SGL; - if (!scsiio_req->DataLength) { + if (scsiio_req->DataLength == 0) { + /* XXX we don't ever get here when DataLength == 0, right? cm->data is NULL */ + /* This whole if can likely be removed -- we handle it in mpi3mr_request_map */ mpi3mr_build_zero_len_sge(sg_local); - return; + goto enqueue; } sges_left = nsegs; - if (sges_left < 0) { - printf("scsi_dma_map failed: request for %d bytes!\n", - scsiio_req->DataLength); - return; - } - if (sges_left > MPI3MR_SG_DEPTH) { - printf("scsi_dma_map returned unsupported sge count %d!\n", - sges_left); - return; - } - sges_in_segment = (sc->facts.op_req_sz - offsetof(Mpi3SCSIIORequest_t, SGL))/sizeof(Mpi3SGESimple_t); @@ -218,33 +215,51 @@ fill_in_last_segment: i++; } +enqueue: + /* + * Now that we've created the sgls, we send the request to the device. + * Unlike in Linux, dmaload isn't guaranteed to load every time, but + * this function is always called when the resources are available, so + * we can send the request to hardware here always. mpi3mr_map_request + * knows about this quirk and will only take evasive action when an + * error other than EINPROGRESS is returned from dmaload. + */ + mpi3mr_enqueue_request(sc, cm); + return; } -int +static void mpi3mr_map_request(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cm) { u_int32_t retcode = 0; + union ccb *ccb; + ccb = cm->ccb; if (cm->data != NULL) { mtx_lock(&sc->io_lock); /* Map data buffer into bus space */ retcode = bus_dmamap_load_ccb(sc->buffer_dmat, cm->dmamap, - cm->ccb, mpi3mr_prepare_sgls, cm, 0); + ccb, mpi3mr_prepare_sgls, cm, 0); mtx_unlock(&sc->io_lock); - if (retcode) - device_printf(sc->mpi3mr_dev, "bus_dmamap_load(): retcode = %d\n", retcode); - if (retcode == EINPROGRESS) { - device_printf(sc->mpi3mr_dev, "request load in progress\n"); - xpt_freeze_simq(sc->cam_sc->sim, 1); + if (retcode != 0 && retcode != EINPROGRESS) { + device_printf(sc->mpi3mr_dev, + "bus_dmamap_load(): retcode = %d\n", retcode); + /* + * Any other error means prepare_sgls wasn't called, and + * will never be called, so we have to mop up. This error + * should never happen, though. + */ + mpi3mr_set_ccbstatus(ccb, CAM_REQ_CMP_ERR); + mpi3mr_release_command(cm); + xpt_done(ccb); } + } else { + /* + * No data, we enqueue it directly here. + */ + mpi3mr_enqueue_request(sc, cm); } - if (cm->error_code) - return cm->error_code; - if (retcode) - mpi3mr_set_ccbstatus(cm->ccb, CAM_REQ_INVALID); - - return (retcode); } void @@ -912,12 +927,6 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) struct mpi3mr_cmd *cm; uint8_t scsi_opcode, queue_idx; uint32_t mpi_control; - struct mpi3mr_op_req_queue *opreqq = NULL; - U32 data_len_blks = 0; - U32 tracked_io_sz = 0; - U32 ioc_pend_data_len = 0, tg_pend_data_len = 0; - struct mpi3mr_throttle_group_info *tg = NULL; - static int ratelimit; sc = cam_sc->sc; mtx_assert(&sc->mpi3mr_mtx, MA_OWNED); @@ -1104,15 +1113,15 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) case CAM_DATA_SG_PADDR: device_printf(sc->mpi3mr_dev, "%s: physical addresses not supported\n", __func__); - mpi3mr_release_command(cm); mpi3mr_set_ccbstatus(ccb, CAM_REQ_INVALID); + mpi3mr_release_command(cm); xpt_done(ccb); return; case CAM_DATA_SG: device_printf(sc->mpi3mr_dev, "%s: scatter gather is not supported\n", __func__); - mpi3mr_release_command(cm); mpi3mr_set_ccbstatus(ccb, CAM_REQ_INVALID); + mpi3mr_release_command(cm); xpt_done(ccb); return; case CAM_DATA_VADDR: @@ -1129,27 +1138,35 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) cm->data = csio->data_ptr; break; default: - mpi3mr_release_command(cm); mpi3mr_set_ccbstatus(ccb, CAM_REQ_INVALID); - xpt_done(ccb); - return; - } - - /* Prepare SGEs */ - if (mpi3mr_map_request(sc, cm)) { mpi3mr_release_command(cm); xpt_done(ccb); - printf("func: %s line: %d Build SGLs failed\n", __func__, __LINE__); return; } - - opreqq = &sc->op_req_q[queue_idx]; + + /* Prepare SGEs and queue to hardware */ + mpi3mr_map_request(sc, cm); +} + +static void +mpi3mr_enqueue_request(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cm) +{ + static int ratelimit; + struct mpi3mr_op_req_queue *opreqq = &sc->op_req_q[cm->req_qidx]; + struct mpi3mr_throttle_group_info *tg = NULL; + uint32_t data_len_blks = 0; + uint32_t tracked_io_sz = 0; + uint32_t ioc_pend_data_len = 0, tg_pend_data_len = 0; + struct mpi3mr_target *targ = cm->targ; + union ccb *ccb = cm->ccb; + Mpi3SCSIIORequest_t *req = (Mpi3SCSIIORequest_t *)&cm->io_request; if (sc->iot_enable) { - data_len_blks = csio->dxfer_len >> 9; - + data_len_blks = ccb->csio.dxfer_len >> 9; + if ((data_len_blks >= sc->io_throttle_data_length) && targ->io_throttle_enabled) { + tracked_io_sz = data_len_blks; tg = targ->throttle_group; if (tg) { @@ -1207,19 +1224,18 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) if (targ->io_divert) { req->MsgFlags |= MPI3_SCSIIO_MSGFLAGS_DIVERT_TO_FIRMWARE; - mpi_control |= MPI3_SCSIIO_FLAGS_DIVERT_REASON_IO_THROTTLING; + req->Flags = htole32(le32toh(req->Flags) | MPI3_SCSIIO_FLAGS_DIVERT_REASON_IO_THROTTLING); } } - req->Flags = htole32(mpi_control); if (mpi3mr_submit_io(sc, opreqq, (U8 *)&cm->io_request)) { - mpi3mr_release_command(cm); if (tracked_io_sz) { mpi3mr_atomic_sub(&sc->pend_large_data_sz, tracked_io_sz); if (tg) mpi3mr_atomic_sub(&tg->pend_large_data_sz, tracked_io_sz); } mpi3mr_set_ccbstatus(ccb, CAM_RESRC_UNAVAIL); + mpi3mr_release_command(cm); xpt_done(ccb); } else { callout_reset_sbt(&cm->callout, mstosbt(ccb->ccb_h.timeout), 0, From nobody Fri Jan 19 17:17:36 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX13ZRKz56xNw; Fri, 19 Jan 2024 17:17:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmX10dsdz4MrZ; Fri, 19 Jan 2024 17:17:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684657; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0pXzJm3MvmA3wiw9t4P7EeJpJuoj6JuTsbgFTreE2Kw=; b=i3S1R51jSsOUbpRIiyu7gNz4MmJpwAxD4pYde1Lypixl4pILP0BCkmbnvYm2v2F2gPZ1pH tJ/P85IrvAnGSP9w4ItHeGwNLUqSRqZdi2rif7AqpcwSLptI18w5vg5xR9Lo4MJuy2FeE+ 8AM9/c/x1LZdAsxCJrjeRifrs4Esdjphbdtn+Ne6MEixx4XVj4l3gpSEwRMmUQvY/e9FgS tjCm2wZLyLmpNw8YMMairgDqA+i49SInC3XJ7+ImpdQm9LwA4Zx1XMvQG5JJVZoldS3B0j qjiOOl+HyH+k5h951UtSfpRL4PpMOGUxMA1CsdVY3YRFIQKDWcVNVQmQkNAEaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684657; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0pXzJm3MvmA3wiw9t4P7EeJpJuoj6JuTsbgFTreE2Kw=; b=uyHHeTZ38mAGMxDTTUQvhzAPzvxJ7zhszH8c1c9XPJqY42w3D8z4UQPGzZEOmDzWQZ09d5 4Y0aKZDEb49NRgheY0x5SyAxJLbYIKXgkAuAYv3Mk55UNeHKP92++GBwXaR1yYeny5zlIG OokQw/jzGfgjcVaH5p3F2TWKSLFgwUHe/x35I975nfPbIdzONyieqkea8oevOT3gEB3Zy6 CDabCzaxvDykEo79SzCyi0wbqbvSeAu+3LleYExPf/5nNnYEr8yRZ0eaYicNLCcqEemohi r3q3dcSG8WeoLpaJWJymtie/yTLWa5Iwd/pw0xzMpHnJ7XEDRCmNEEKo5+Ut7w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684657; a=rsa-sha256; cv=none; b=rDtlIOWX8m0dXw/Jjhbwf2SvxGrFmi5xyI1gltJOjepJRJ5y/lNbWzdV2g7LE4d1o+BgsO KjB6DJVCzP1YNpF6bfyVajAs7qfmmeBfwZlGViDZy1VeGcQswv8XMTShHTeGr81As/48Ac ewlH9mfr3gX8s6zk+PEAs/C4IgCc2Z94gBKUtn2b6C8xSvzvqvZjyZ2PKjdy6fdmIbAdng fEuk88ckGy7RKIa+1HgEPVU1vqe6UBv8wo2EhGCiPtVRc1/f/OrNUonDIXiHfGwUJdXt73 mjIPE+eW0cPCKvvJVFx3gvP1lM3YMCsVkvHRPgjf7/aXeglNA3CDfCWllj9AlA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmX06srNz10cK; Fri, 19 Jan 2024 17:17:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHaMA097113; Fri, 19 Jan 2024 17:17:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHaHP097110; Fri, 19 Jan 2024 17:17:36 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:36 GMT Message-Id: <202401191717.40JHHaHP097110@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: c3b67deaf514 - stable/14 - mpi3mr: Honor the dma mask from IOCFacts List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c3b67deaf51464ca4bdd1676ef279a67596715ee Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=c3b67deaf51464ca4bdd1676ef279a67596715ee commit c3b67deaf51464ca4bdd1676ef279a67596715ee Author: Warner Losh AuthorDate: 2023-11-29 01:49:49 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Honor the dma mask from IOCFacts The number of signficant bits that are decoded are returned in the flags field of the IOCFacts structure from the device. Rather than assume the worst with a pessimal 32-bit maximum, look at this value and pass it along to all the dma map creation requests. A lof of those creations are repetitive and could just inherit from the base tag if we moved to the templated interface. This is called out as desireable future work not done at this time. In addition, due to a chicken and an egg problem, we have to allocate some of the maps with a 32-bit loaddr. These are the ones we need to read iocfacts. And they are fine to be so restricted: they are little used after startup, and when they are used, bouncing is fine. Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D42559 (cherry picked from commit 91d961356d03465635c4784fab48acdd1304e1e0) --- sys/dev/mpi3mr/mpi3mr.c | 27 +++++++++++++++++++++++++++ sys/dev/mpi3mr/mpi3mr_pci.c | 10 ++++++++++ 2 files changed, 37 insertions(+) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index f6c4bb4496e6..580f42ea0179 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -981,6 +981,11 @@ static int mpi3mr_setup_admin_qpair(struct mpi3mr_softc *sc) sc->admin_reply_ephase = 1; if (!sc->admin_req) { + /* + * We need to create the tag for the admin queue to get the + * iofacts to see how many bits the controller decodes. Solve + * this chicken and egg problem by only doing lower 4GB DMA. + */ if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ @@ -1435,6 +1440,12 @@ static int mpi3mr_issue_iocfacts(struct mpi3mr_softc *sc, MPI3_SGE_FLAGS_END_OF_LIST); + /* + * We can't use sc->dma_loaddr / hiaddr here. We set those only after + * we get the iocfacts. So allocate in the lower 4GB. The amount of + * data is tiny and we don't do this that often, so any bouncing we + * might have to do isn't a cause for concern. + */ if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ @@ -1669,6 +1680,22 @@ static int mpi3mr_process_factsdata(struct mpi3mr_softc *sc, sc->max_host_ios = sc->facts.max_reqs - (MPI3MR_INTERNALCMDS_RESVD + 1); + /* + * Set the DMA mask for the card. dma_mask is the number of bits that + * can have bits set in them. Translate this into bus_dma loaddr/hiaddr + * args. Add sanity for more bits than address space or other overflow + * situations. + */ + if (sc->facts.dma_mask == 0 || + (sc->facts.dma_mask >= sizeof(bus_addr_t) * 8)) + sc->dma_loaddr = BUS_SPACE_MAXADDR; + else + sc->dma_loaddr = ~((1ull << sc->facts.dma_mask) - 1); + sc->dma_hiaddr = BUS_SPACE_MAXADDR; + mpi3mr_dprint(sc, MPI3MR_INFO, + "dma_mask bits: %d loaddr 0x%jx hiaddr 0x%jx\n", + sc->facts.dma_mask, sc->dma_loaddr, sc->dma_hiaddr); + return retval; } diff --git a/sys/dev/mpi3mr/mpi3mr_pci.c b/sys/dev/mpi3mr/mpi3mr_pci.c index eaf73022291d..11ec98882949 100644 --- a/sys/dev/mpi3mr/mpi3mr_pci.c +++ b/sys/dev/mpi3mr/mpi3mr_pci.c @@ -273,6 +273,16 @@ static int mpi3mr_setup_resources(struct mpi3mr_softc *sc) sc->mpi3mr_btag = rman_get_bustag(sc->mpi3mr_regs_resource); sc->mpi3mr_bhandle = rman_get_bushandle(sc->mpi3mr_regs_resource); + /* + * XXX Perhaps we should move this to after we read iocfacts and use + * that to create the proper parent tag. However, to get the iocfacts + * we need to have a dmatag for both the admin queue and the iocfacts + * DMA transfer. So for now, we just create a 'no restriction' tag and + * use sc->dma_loaddr for all the other tag_create calls to get the + * right value. It would be nice if one could retroactively adjust a + * created tag. The Linux driver effectively does this by setting the + * dma_mask on the device. + */ /* Allocate the parent DMA tag */ if (bus_dma_tag_create(bus_get_dma_tag(dev), /* parent */ 1, 0, /* algnmnt, boundary */ From nobody Fri Jan 19 17:17:38 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX23Sr9z56xNy; Fri, 19 Jan 2024 17:17:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmX21trgz4MxZ; Fri, 19 Jan 2024 17:17:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684658; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=D4JMa8g5LXw24pbLoqOXAN3Clhpa10iiURX3qsTUL/A=; b=c14lWejU8+gpHaYoqLb/6xEpahuGMUQcA0GAAJI+aOv6PU2JIIgaqcl1lYUFPHfQTGFJ2z t6XFNNFkYcCNwfcaT/AKdFqS/7TI/irfwixzeEFQUaLQp44YN4VItL9wmVwl54nBf7j4lu wnM3IjcCMc2MSnspfYfXsqRulxz4hqoPsGE2zKKkVaPmyfmsckDwMxVkqS3+EBY0me/CkJ KgRlOIAKsYEUu83Kuc95xYbjZijkFomNI/ydxZ1NP8gekR0/B2if1D4w0KfTDSxrnotLtm VWEso7D30Cbq9f0H64B6NW9zG1SjGC7HZDLFVbcTCV0biI0BQgJ+7HXswigR2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684658; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=D4JMa8g5LXw24pbLoqOXAN3Clhpa10iiURX3qsTUL/A=; b=c5FrU6DZVsPIXb5X0lQENj6mDsd75eQTHBAAFtBLzeiww4VAFOf5vjBUmyZ78q4X9HUTmP Okq10Nkpnl3HQVHvDFvo8e50lZRFWDqMgMYGvomg+R/HmUYsoqo5Q2H2iFKTTWVJsfxdga X8Wptq/GbCN1hFXr0fijgNAbHNCHND7ydyl6lWLDAfzO8bvEfLs5QGFHUODaUK9T3RJUa0 MZ42Jb1mD+7PxcSj+U2OLoDzikV0kNC473EtH4QdV4oa2sX0zf7FqQlX7eSlBSKxus4uF3 w03UzAn/n0TJCWKYJ6GVkq80MIr7372YTWLQbJa8tZNCKWMIAi8bJlwhZFjlyA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684658; a=rsa-sha256; cv=none; b=cvDrEJLD+OaQuGhdFgeeZ9XnL+pJ8sglzNAokqmWO2Qs47eDsWQpJspF8LaYCYzGijrAw/ pD0nuZWVkUGmxK2afIOfoBathaRceH6tqQr9dAcD/Na7w4Nh/BCohdsqkiyA1IsC5d2hcY vL2hGGdpzPk/5KVIbPvj7TCmsPP3ybxJZfbUMX1Zt4H4nVWY7sIyl84hhtSMr6HV8PY8LV MJ71zen8oBgpmnK1h/qdmAj3Kqp8CQ09cGb62wYKlj2iwk50yIDfvxZ5g11rqrJKMMj80B ErRcQO3U4/T8Yfn2e+rVI5skq7WEnz9RVqx3VEpt9JTb7JppF8O1p0QfFlLjPw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmX20mf7z10cL; Fri, 19 Jan 2024 17:17:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHc58097164; Fri, 19 Jan 2024 17:17:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHc1b097161; Fri, 19 Jan 2024 17:17:38 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:38 GMT Message-Id: <202401191717.40JHHc1b097161@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 3b4d16889be5 - stable/14 - mpi3mr: Trivial trailing white space reduction List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3b4d16889be57f26d29e80a19c3ea81841cb5c68 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=3b4d16889be57f26d29e80a19c3ea81841cb5c68 commit 3b4d16889be57f26d29e80a19c3ea81841cb5c68 Author: Warner Losh AuthorDate: 2023-11-29 01:49:56 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Trivial trailing white space reduction Sponsored by: Netflix (cherry picked from commit ee7c431c4991febefcd15f16caa0e2b17c73b7b6) --- sys/dev/mpi3mr/mpi3mr.c | 68 ++++++++++++++++++++++----------------------- sys/dev/mpi3mr/mpi3mr.h | 3 +- sys/dev/mpi3mr/mpi3mr_app.c | 4 +-- sys/dev/mpi3mr/mpi3mr_cam.c | 50 ++++++++++++++++----------------- sys/dev/mpi3mr/mpi3mr_pci.c | 2 +- 5 files changed, 64 insertions(+), 63 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index 580f42ea0179..9bd6417d5345 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -604,8 +604,8 @@ static int mpi3mr_create_op_reply_queue(struct mpi3mr_softc *sc, U16 qid) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ op_reply_q->qsz, /* maxsize */ 1, /* nsegments */ @@ -619,7 +619,7 @@ static int mpi3mr_create_op_reply_queue(struct mpi3mr_softc *sc, U16 qid) if (bus_dmamem_alloc(op_reply_q->q_base_tag, (void **)&op_reply_q->q_base, BUS_DMA_NOWAIT, &op_reply_q->q_base_dmamap)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, "Cannot allocate replies memory\n"); + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s: Cannot allocate replies memory\n", __func__); return (ENOMEM); } bzero(op_reply_q->q_base, op_reply_q->qsz); @@ -750,8 +750,8 @@ static int mpi3mr_create_op_req_queue(struct mpi3mr_softc *sc, U16 req_qid, U8 r if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ op_req_q->qsz, /* maxsize */ 1, /* nsegments */ @@ -765,7 +765,7 @@ static int mpi3mr_create_op_req_queue(struct mpi3mr_softc *sc, U16 req_qid, U8 r if (bus_dmamem_alloc(op_req_q->q_base_tag, (void **)&op_req_q->q_base, BUS_DMA_NOWAIT, &op_req_q->q_base_dmamap)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, "Cannot allocate replies memory\n"); + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s: Cannot allocate replies memory\n", __func__); return (ENOMEM); } @@ -1003,7 +1003,7 @@ static int mpi3mr_setup_admin_qpair(struct mpi3mr_softc *sc) if (bus_dmamem_alloc(sc->admin_req_tag, (void **)&sc->admin_req, BUS_DMA_NOWAIT, &sc->admin_req_dmamap)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, "Cannot allocate replies memory\n"); + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s: Cannot allocate replies memory\n", __func__); return (ENOMEM); } bzero(sc->admin_req, sc->admin_req_q_sz); @@ -1041,7 +1041,7 @@ static int mpi3mr_setup_admin_qpair(struct mpi3mr_softc *sc) if (bus_dmamem_alloc(sc->admin_reply_tag, (void **)&sc->admin_reply, BUS_DMA_NOWAIT, &sc->admin_reply_dmamap)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, "Cannot allocate replies memory\n"); + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s: Cannot allocate replies memory\n", __func__); return (ENOMEM); } bzero(sc->admin_reply, sc->admin_reply_q_sz); @@ -1731,8 +1731,8 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 16, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -1767,8 +1767,8 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 8, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -1801,8 +1801,8 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -1835,8 +1835,8 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 8, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -1972,8 +1972,8 @@ mpi3mr_print_fw_pkg_ver(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ fw_pkg_ver_len, /* maxsize */ 1, /* nsegments */ @@ -2093,8 +2093,8 @@ static int mpi3mr_issue_iocinit(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ drvr_info_len, /* maxsize */ 1, /* nsegments */ @@ -2509,8 +2509,8 @@ static int mpi3mr_alloc_chain_bufs(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4096, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -2585,8 +2585,8 @@ static int mpi3mr_pel_alloc(struct mpi3mr_softc *sc) sc->pel_seq_number_sz = sizeof(Mpi3PELSeq_t); if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* alignment, boundary */ - BUS_SPACE_MAXADDR_32BIT, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ sc->pel_seq_number_sz, /* maxsize */ 1, /* nsegments */ @@ -4941,8 +4941,8 @@ mpi3mr_alloc_requests(struct mpi3mr_softc *sc) nsegs = MPI3MR_SG_DEPTH; ret = bus_dma_tag_create( sc->mpi3mr_parent_dmat, /* parent */ 1, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ MAXPHYS,/* maxsize */ nsegs, /* nsegments */ @@ -5115,8 +5115,8 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ mem_desc->size, /* maxsize */ 1, /* nsegments */ @@ -5130,7 +5130,7 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) if (bus_dmamem_alloc(mem_desc->tag, (void **)&mem_desc->addr, BUS_DMA_NOWAIT, &mem_desc->dmamap)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, "Cannot allocate replies memory\n"); + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s: Cannot allocate replies memory\n", __func__); goto out_failed; } bzero(mem_desc->addr, mem_desc->size); @@ -5145,8 +5145,8 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) mem_desc->size = MPI3MR_4K_PGSZ; if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ mem_desc->size, /* maxsize */ 1, /* nsegments */ @@ -5160,7 +5160,7 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) if (bus_dmamem_alloc(mem_desc->tag, (void **)&mem_desc->addr, BUS_DMA_NOWAIT, &mem_desc->dmamap)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, "Cannot allocate replies memory\n"); + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s: Cannot allocate replies memory\n", __func__); goto out_failed; } bzero(mem_desc->addr, mem_desc->size); @@ -5174,8 +5174,8 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) mem_desc->size = MPI3MR_4K_PGSZ; if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ mem_desc->size, /* maxsize */ 1, /* nsegments */ diff --git a/sys/dev/mpi3mr/mpi3mr.h b/sys/dev/mpi3mr/mpi3mr.h index f1a2cbc0fd4c..8d92f8f80e57 100644 --- a/sys/dev/mpi3mr/mpi3mr.h +++ b/sys/dev/mpi3mr/mpi3mr.h @@ -544,7 +544,8 @@ struct mpi3mr_softc { char name[MPI3MR_NAME_LENGTH]; char driver_name[MPI3MR_NAME_LENGTH]; int bars; - int dma_mask; + bus_addr_t dma_loaddr; + bus_addr_t dma_hiaddr; u_int mpi3mr_debug; struct mpi3mr_reset reset; int max_msix_vectors; diff --git a/sys/dev/mpi3mr/mpi3mr_app.c b/sys/dev/mpi3mr/mpi3mr_app.c index cf3afc7bba95..5bd0ea4ed174 100644 --- a/sys/dev/mpi3mr/mpi3mr_app.c +++ b/sys/dev/mpi3mr/mpi3mr_app.c @@ -336,8 +336,8 @@ mpi3mr_app_build_nvme_prp(struct mpi3mr_softc *sc, sc->nvme_encap_prp_sz = 0; if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ dev_pgsz, /* maxsize */ 1, /* nsegments */ diff --git a/sys/dev/mpi3mr/mpi3mr_cam.c b/sys/dev/mpi3mr/mpi3mr_cam.c index 15ef2732ec56..ebbc67af78ba 100644 --- a/sys/dev/mpi3mr/mpi3mr_cam.c +++ b/sys/dev/mpi3mr/mpi3mr_cam.c @@ -389,7 +389,7 @@ static bool mpi3mr_allow_unmap_to_fw(struct mpi3mr_softc *sc, mpi3mr_dprint(sc, MPI3MR_INFO, "%s: Truncating param_list_len from (%d) to (%d)\n", __func__, param_list_len, trunc_param_len); - scsiio_cdb_ptr(csio)[7] = (param_list_len >> 8) | 0xff; + scsiio_cdb_ptr(csio)[7] = (param_list_len >> 8) | 0xff; scsiio_cdb_ptr(csio)[8] = param_list_len | 0xff; mpi3mr_print_cdb(ccb); } @@ -507,12 +507,12 @@ mpi3mr_issue_tm(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cmd, if (sc->unrecoverable) { - mpi3mr_dprint(sc, MPI3MR_INFO, + mpi3mr_dprint(sc, MPI3MR_INFO, "Controller is in unrecoverable state!! TM not required\n"); return retval; } if (sc->reset_in_progress) { - mpi3mr_dprint(sc, MPI3MR_INFO, + mpi3mr_dprint(sc, MPI3MR_INFO, "controller reset in progress!! TM not required\n"); return retval; } @@ -554,7 +554,7 @@ mpi3mr_issue_tm(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cmd, tm_req.TaskHostTag = htole16(cmd->hosttag); tm_req.TaskRequestQueueID = htole16(op_req_q->qid); } - } + } if (tgtdev) mpi3mr_atomic_inc(&tgtdev->block_io); @@ -570,14 +570,14 @@ mpi3mr_issue_tm(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cmd, sc->tm_chan = (void *)&drv_cmd; - mpi3mr_dprint(sc, MPI3MR_DEBUG_TM, + mpi3mr_dprint(sc, MPI3MR_DEBUG_TM, "posting task management request: type(%d), handle(0x%04x)\n", tm_type, tgtdev->dev_handle); init_completion(&drv_cmd->completion); retval = mpi3mr_submit_admin_cmd(sc, &tm_req, sizeof(tm_req)); if (retval) { - mpi3mr_dprint(sc, MPI3MR_ERROR, + mpi3mr_dprint(sc, MPI3MR_ERROR, "posting task management request is failed\n"); retval = -1; goto out_unlock; @@ -588,20 +588,20 @@ mpi3mr_issue_tm(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cmd, drv_cmd->is_waiting = 0; retval = -1; if (!(drv_cmd->state & MPI3MR_CMD_RESET)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, + mpi3mr_dprint(sc, MPI3MR_ERROR, "task management request timed out after %ld seconds\n", timeout); if (sc->mpi3mr_debug & MPI3MR_DEBUG_TM) { mpi3mr_dprint(sc, MPI3MR_INFO, "tm_request dump\n"); mpi3mr_hexdump(&tm_req, sizeof(tm_req), 8); } - trigger_reset_from_watchdog(sc, MPI3MR_TRIGGER_SOFT_RESET, MPI3MR_RESET_FROM_TM_TIMEOUT); + trigger_reset_from_watchdog(sc, MPI3MR_TRIGGER_SOFT_RESET, MPI3MR_RESET_FROM_TM_TIMEOUT); retval = ETIMEDOUT; } goto out_unlock; } if (!(drv_cmd->state & MPI3MR_CMD_REPLYVALID)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, + mpi3mr_dprint(sc, MPI3MR_ERROR, "invalid task management reply message\n"); retval = -1; goto out_unlock; @@ -616,7 +616,7 @@ mpi3mr_issue_tm(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cmd, resp_code = MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE; break; default: - mpi3mr_dprint(sc, MPI3MR_ERROR, + mpi3mr_dprint(sc, MPI3MR_ERROR, "task management request to handle(0x%04x) is failed with ioc_status(0x%04x) log_info(0x%08x)\n", tgtdev->dev_handle, drv_cmd->ioc_status, drv_cmd->ioc_loginfo); retval = -1; @@ -636,7 +636,7 @@ mpi3mr_issue_tm(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cmd, break; } - mpi3mr_dprint(sc, MPI3MR_DEBUG_TM, + mpi3mr_dprint(sc, MPI3MR_DEBUG_TM, "task management request type(%d) completed for handle(0x%04x) with ioc_status(0x%04x), log_info(0x%08x)" "termination_count(%u), response:%s(0x%x)\n", tm_type, tgtdev->dev_handle, drv_cmd->ioc_status, drv_cmd->ioc_loginfo, tm_reply->TerminationCount, mpi3mr_tm_response_name(resp_code), resp_code); @@ -652,7 +652,7 @@ mpi3mr_issue_tm(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cmd, switch (tm_type) { case MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK: if (cmd->state == MPI3MR_CMD_STATE_IN_TM) { - mpi3mr_dprint(sc, MPI3MR_ERROR, + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s: task abort returned success from firmware but corresponding CCB (%p) was not terminated" "marking task abort failed!\n", sc->name, cmd->ccb); retval = -1; @@ -660,7 +660,7 @@ mpi3mr_issue_tm(struct mpi3mr_softc *sc, struct mpi3mr_cmd *cmd, break; case MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET: if (mpi3mr_atomic_read(&tgtdev->outstanding)) { - mpi3mr_dprint(sc, MPI3MR_ERROR, + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s: target reset returned success from firmware but IOs are still pending on the target (%p)" "marking target reset failed!\n", sc->name, tgtdev); @@ -704,13 +704,13 @@ static int mpi3mr_task_abort(struct mpi3mr_cmd *cmd) } ccb = cmd->ccb; - mpi3mr_dprint(sc, MPI3MR_INFO, + mpi3mr_dprint(sc, MPI3MR_INFO, "attempting abort task for ccb(%p)\n", ccb); mpi3mr_print_cdb(ccb); if (cmd->state != MPI3MR_CMD_STATE_BUSY) { - mpi3mr_dprint(sc, MPI3MR_INFO, + mpi3mr_dprint(sc, MPI3MR_INFO, "%s: ccb is not in driver scope, abort task is not required\n", sc->name); return retval; @@ -719,7 +719,7 @@ static int mpi3mr_task_abort(struct mpi3mr_cmd *cmd) retval = mpi3mr_issue_tm(sc, cmd, MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK, MPI3MR_ABORTTM_TIMEOUT); - mpi3mr_dprint(sc, MPI3MR_INFO, + mpi3mr_dprint(sc, MPI3MR_INFO, "abort task is %s for ccb(%p)\n", ((retval == 0) ? "SUCCESS" : "FAILED"), ccb); return retval; @@ -750,12 +750,12 @@ static int mpi3mr_target_reset(struct mpi3mr_cmd *cmd) return retval; } - mpi3mr_dprint(sc, MPI3MR_INFO, + mpi3mr_dprint(sc, MPI3MR_INFO, "attempting target reset on target(%d)\n", target->per_id); if (mpi3mr_atomic_read(&target->outstanding)) { - mpi3mr_dprint(sc, MPI3MR_INFO, + mpi3mr_dprint(sc, MPI3MR_INFO, "no outstanding IOs on the target(%d)," " target reset not required.\n", target->per_id); return retval; @@ -763,7 +763,7 @@ static int mpi3mr_target_reset(struct mpi3mr_cmd *cmd) retval = mpi3mr_issue_tm(sc, cmd, MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET, MPI3MR_RESETTM_TIMEOUT); - mpi3mr_dprint(sc, MPI3MR_INFO, + mpi3mr_dprint(sc, MPI3MR_INFO, "target reset is %s for target(%d)\n", ((retval == 0) ? "SUCCESS" : "FAILED"), target->per_id); @@ -791,7 +791,7 @@ static inline int mpi3mr_get_fw_pending_ios(struct mpi3mr_softc *sc) * mpi3mr_wait_for_host_io - block for I/Os to complete * @sc: Adapter instance reference * @timeout: time out in seconds - * + * * Waits for pending I/Os for the given adapter to complete or * to hit the timeout. * @@ -860,7 +860,7 @@ mpi3mr_scsiio_timeout(void *data) * with max timeout for outstanding IOs to complete is 180sec. */ targ_dev = cmd->targ; - if (targ_dev && (targ_dev->dev_type == MPI3_DEVICE_DEVFORM_VD)) { + if (targ_dev && (targ_dev->dev_type == MPI3_DEVICE_DEVFORM_VD)) { if (mpi3mr_wait_for_host_io(sc, MPI3MR_RAID_ERRREC_RESET_TIMEOUT)) trigger_reset_from_watchdog(sc, MPI3MR_TRIGGER_SOFT_RESET, MPI3MR_RESET_FROM_SCSIIO_TIMEOUT); return; @@ -871,7 +871,7 @@ mpi3mr_scsiio_timeout(void *data) if (!retval || (retval == ETIMEDOUT)) return; - /* + /* * task abort has failed to recover the timed out IO, * try with the target reset */ @@ -879,7 +879,7 @@ mpi3mr_scsiio_timeout(void *data) if (!retval || (retval == ETIMEDOUT)) return; - /* + /* * task abort and target reset has failed. So issue Controller reset(soft reset) * through OCR thread context */ @@ -2107,7 +2107,7 @@ mpi3mr_cam_attach(struct mpi3mr_softc *sc) TASK_INIT(&cam_sc->ev_task, 0, mpi3mr_firmware_event_work, sc); cam_sc->ev_tq = taskqueue_create("mpi3mr_taskq", M_NOWAIT | M_ZERO, taskqueue_thread_enqueue, &cam_sc->ev_tq); - taskqueue_start_threads(&cam_sc->ev_tq, 1, PRIBIO, "%s taskq", + taskqueue_start_threads(&cam_sc->ev_tq, 1, PRIBIO, "%s taskq", device_get_nameunit(sc->mpi3mr_dev)); mtx_lock(&sc->mpi3mr_mtx); @@ -2219,7 +2219,7 @@ get_target: goto out_tgt_free; } mtx_unlock_spin(&sc->target_lock); -out_tgt_free: +out_tgt_free: if (target) { free(target, M_MPI3MR); target = NULL; diff --git a/sys/dev/mpi3mr/mpi3mr_pci.c b/sys/dev/mpi3mr/mpi3mr_pci.c index 11ec98882949..8a2c101e06c2 100644 --- a/sys/dev/mpi3mr/mpi3mr_pci.c +++ b/sys/dev/mpi3mr/mpi3mr_pci.c @@ -286,7 +286,7 @@ static int mpi3mr_setup_resources(struct mpi3mr_softc *sc) /* Allocate the parent DMA tag */ if (bus_dma_tag_create(bus_get_dma_tag(dev), /* parent */ 1, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ + BUS_SPACE_MAXADDR, /* lowaddr */ BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ BUS_SPACE_MAXSIZE_32BIT,/* maxsize */ From nobody Fri Jan 19 17:17:39 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX34q1Rz56xfQ; Fri, 19 Jan 2024 17:17:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmX32Vfmz4Mxt; Fri, 19 Jan 2024 17:17:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684659; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=I0XZEAFTUAJk5WvsINbHpoNuu2gA1QzKcQFsQN1uvQU=; b=xbGyjZeFBvqhPfUg5R7FqsTFYKkMCrTIaKWPwhRS296H+PrWAawJggaWF0/JnA1OfbxFW2 AFtvUg0xDKCqCCFWkCLt6sgB3P5WAgrdBgEAk3CAGlFieLRn67Yaqum42xLgqZCEk41oQW Zf0HPZYHY6iuBHTO1Pbh5judHfHMO6XkMXHxjazfAAhfmc9332mFyAUvHJiVt4co/W9GrQ kP4Boc0OTyJZEG4nR0Q4HUM/7+Oi6MLuwR4mq9Y4vCChHLtEkvT9M5u+L6uz9xz8czZaxd /WTGB4nv68ljhQG7xgE+eTXC/aRizzqtZ5w6PsFSaGp/gc1AC95AScWvu59qeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684659; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=I0XZEAFTUAJk5WvsINbHpoNuu2gA1QzKcQFsQN1uvQU=; b=DSH5QLvDhnN7oXC3mg8Wp7B3kxkelpGSN+6fsiRu263IROx1UNfWGgytwaL3Ism2dyuXEO CPkGVbxQLaqckIjhGhTp9+Gdw9jO2+/H3074e7DEAUev0PcgfVtXJn8Qo1lLlp0gbUYn6s iWIsEj6htM68L4XWlfHA1OXsAzBr44sG9nfFBucE4Jmgj2b5f8Jzo2VUDcnuE8/TSNGrwO 9V9XKrtY3egQvQyzD6k1WrE6fRl948ax0DCy97wOeR3Zr+k2PGOfhKkwyKnrFf5dZLEVxt 91/RkoJv4bdToMvceI7lf3tI5u6oN6Up/LKV5MnoRp/tAOUzU4v7OaR3hhIztQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684659; a=rsa-sha256; cv=none; b=Df5V7AOaLJ5Btm/F7ulHrcd34lBtL9fwseoPVgWXy+wG4nESfL/ttHovgNZhNtrCxvGGPT phetIafNdmIt2DZseR6hde8V5TWSwh5C2Kw3HmpOZ9j840dgWz7yU5nn0jDTNsZM2N7xU4 KBilQ+BU+1Ji+oz5gcTIQAB9eDG0qkphOmavSvho9MpPa+YgiXZwp0o+pexvNrIpEIUSWV giTNz7XW2CQ6WsttiMUt/SeucanG20Ijg7Ln7Cs8PWsWnl2kGV9UFTEk/KWXvFf9W7DFCH BNuSpR2NFAkTlpJoUOJzfc2tvYaNEssipeW/9vj30S+1E0DC2YMUGL3/Z8LbLQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmX31bjHz10cM; Fri, 19 Jan 2024 17:17:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHdW1097204; Fri, 19 Jan 2024 17:17:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHde3097201; Fri, 19 Jan 2024 17:17:39 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:39 GMT Message-Id: <202401191717.40JHHde3097201@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 835db4182391 - stable/14 - mpi3mr: Add firmware version List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 835db41823919e9b025e6867f52cc97b07c67fea Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=835db41823919e9b025e6867f52cc97b07c67fea commit 835db41823919e9b025e6867f52cc97b07c67fea Author: Warner Losh AuthorDate: 2023-11-29 01:50:10 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Add firmware version Publish the firmware version on the card like we do for mps/mpr. Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D42588 (cherry picked from commit 28a274342ea0b0666b56704477d2d1c17564942e) --- sys/dev/mpi3mr/mpi3mr.c | 15 +++++++++------ sys/dev/mpi3mr/mpi3mr.h | 3 +-- sys/dev/mpi3mr/mpi3mr_pci.c | 4 ++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index 9bd6417d5345..b54a1844b173 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -1565,6 +1565,7 @@ static int mpi3mr_process_factsdata(struct mpi3mr_softc *sc, { int retval = 0; U32 ioc_config, req_sz, facts_flags; + struct mpi3mr_compimg_ver *fwver; if (le16toh(facts_data->IOCFactsDataLength) != (sizeof(*facts_data) / 4)) { @@ -1661,6 +1662,12 @@ static int mpi3mr_process_factsdata(struct mpi3mr_softc *sc, sc->io_throttle_high = (sc->facts.io_throttle_high * 2 * 1024); sc->io_throttle_low = (sc->facts.io_throttle_low * 2 * 1024); + fwver = &sc->facts.fw_ver; + snprintf(sc->fw_version, sizeof(sc->fw_version), + "%d.%d.%d.%d.%05d-%05d", + fwver->gen_major, fwver->gen_minor, fwver->ph_major, + fwver->ph_minor, fwver->cust_id, fwver->build_num); + mpi3mr_dprint(sc, MPI3MR_INFO, "ioc_num(%d), maxopQ(%d), maxopRepQ(%d), maxdh(%d)," "maxreqs(%d), mindh(%d) maxPDs(%d) maxvectors(%d) maxperids(%d)\n", sc->facts.ioc_num, sc->facts.max_op_req_q, @@ -1676,7 +1683,7 @@ static int mpi3mr_process_factsdata(struct mpi3mr_softc *sc, sc->facts.max_dev_per_tg, sc->facts.max_io_throttle_group, sc->facts.io_throttle_data_length * 4, sc->facts.io_throttle_high, sc->facts.io_throttle_low); - + sc->max_host_ios = sc->facts.max_reqs - (MPI3MR_INTERNALCMDS_RESVD + 1); @@ -2220,7 +2227,6 @@ mpi3mr_display_ioc_info(struct mpi3mr_softc *sc) { int i = 0; char personality[16]; - struct mpi3mr_compimg_ver *fwver = &sc->facts.fw_ver; switch (sc->facts.personality) { case MPI3_IOCFACTS_FLAGS_PERSONALITY_EHBA: @@ -2236,9 +2242,7 @@ mpi3mr_display_ioc_info(struct mpi3mr_softc *sc) mpi3mr_dprint(sc, MPI3MR_INFO, "Current Personality: %s\n", personality); - mpi3mr_dprint(sc, MPI3MR_INFO, "FW Version: %d.%d.%d.%d.%05d-%05d\n", - fwver->gen_major, fwver->gen_minor, fwver->ph_major, - fwver->ph_minor, fwver->cust_id, fwver->build_num); + mpi3mr_dprint(sc, MPI3MR_INFO, "%s\n", sc->fw_version); mpi3mr_dprint(sc, MPI3MR_INFO, "Protocol=("); @@ -2881,7 +2885,6 @@ int mpi3mr_initialize_ioc(struct mpi3mr_softc *sc, U8 init_type) sc->reply_sz = sc->facts.reply_sz; } - mpi3mr_display_ioc_info(sc); retval = mpi3mr_reply_alloc(sc); diff --git a/sys/dev/mpi3mr/mpi3mr.h b/sys/dev/mpi3mr/mpi3mr.h index 8d92f8f80e57..3a9612449c63 100644 --- a/sys/dev/mpi3mr/mpi3mr.h +++ b/sys/dev/mpi3mr/mpi3mr.h @@ -556,8 +556,7 @@ struct mpi3mr_softc { uint32_t chain_frame_size; struct sysctl_ctx_list sysctl_ctx; struct sysctl_oid *sysctl_tree; - char fw_version[16]; - char msg_version[8]; + char fw_version[32]; struct mpi3mr_chain *chains; struct callout periodic; struct callout device_check_callout; diff --git a/sys/dev/mpi3mr/mpi3mr_pci.c b/sys/dev/mpi3mr/mpi3mr_pci.c index 8a2c101e06c2..d07463366943 100644 --- a/sys/dev/mpi3mr/mpi3mr_pci.c +++ b/sys/dev/mpi3mr/mpi3mr_pci.c @@ -145,6 +145,10 @@ mpi3mr_setup_sysctl(struct mpi3mr_softc *sc) OID_AUTO, "io_cmds_highwater", CTLFLAG_RD, &sc->io_cmds_highwater, 0, "Max FW outstanding commands"); + SYSCTL_ADD_STRING(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), + OID_AUTO, "firmware_version", CTLFLAG_RD, sc->fw_version, + strlen(sc->fw_version), "firmware version"); + SYSCTL_ADD_UINT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO, "mpi3mr_debug", CTLFLAG_RW, &sc->mpi3mr_debug, 0, "Driver debug level"); From nobody Fri Jan 19 17:17:40 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX46JQqz56xP1; Fri, 19 Jan 2024 17:17:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmX43qStz4My8; Fri, 19 Jan 2024 17:17:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684660; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6dajAqtSutdSpZqORy2E4utW+7zoDyKfJ2R8NQ3oWLQ=; b=uAGyV8lxgKn44Rig5c+jHfbDI88G4G9xT7YXehCz3G/jRnsyxWCORbRY1MC+VEKl5sbMwr tvN8Qt2MqRZmhwbiZuqkqRPcSXwiqPRRz9XL7JFgKuRPPaWkuo2NGfygGHfjKQ8sm904Dh saJM9GogKtPTg9WQb50Kr+k8qbwisyPaNa6thkADDT3kxxx3KNhOQp692saGKiOC4+1IGE Vg7g4ZNUW/htXMFVveVVulQljzj5wqPcaZ+jmIgGlKdPHEuMQye0+GDcbCuFTmZ6l3rf3B 5zCvhL7fa6dVzNdp1zgCE1LWXpoj0f2kfzcMuLT0c/989MEZuNvkiMD9Snt+TA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684660; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6dajAqtSutdSpZqORy2E4utW+7zoDyKfJ2R8NQ3oWLQ=; b=ldKIsz0flmJlO3+UhLHCLv5xb7ZdcrGuPJwVtifsU4988rAREq1g81m2XcR+dBAxd2dXqK zTSsfyvKRBckCrVVvMgbxePNuYO0eUWQ4wzRIJwVADxj3IR+EPzN0Yxn+4jBPKojewc3vt sxz5BoXBVxx9ahrEANuhP5CpdmoP0iWthRGdaVNB7xB5R6CVotjSDSHBZmFP3IZ5FfO5GH /cbG/afgRHAXxKx4U3ML/NB6AaDZKiLyK1gAdlb6/mUa7sk31SQMwdd/wITNF8kL4f81st xyFBHcg3nRuoRjf+2pWGTFKbYCimbFpzkD79k1MaQDhM4FfNFMX4SNABu5QKcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684660; a=rsa-sha256; cv=none; b=WgnYtm04U9RuE4xBIJtugGHdcrladJJUNy2IJk4pvCo8m3pgeQDk6I1g/o1sFojSosF67L kvuLe2t6ec9STmaqLqcjGqfBl16AmFryYTR4cbRbmCfNrlfUJ2GaqWelE2wQ4Bkyu3Tj6V 23ZcE2Ql4xDNvftPVrkqmllnhbCddhvtolWm8phxmUwqTZF6dceo4J8wVLrJE3XHvHXSe6 6pnLrkAPyb7iaRCvqUgbGOuqzwVJfZk2kBnmOJ1jvvlGWkZcIrqJPDyosiiRbc0Y7KOBfo JJLLxuouZyppHxJ37ihocv/D5QipXr2kVqMKu7KS3q7CkRjrvBBSedaNvG/nwQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmX42xYHz10cN; Fri, 19 Jan 2024 17:17:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHeeN097243; Fri, 19 Jan 2024 17:17:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHe0f097240; Fri, 19 Jan 2024 17:17:40 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:40 GMT Message-Id: <202401191717.40JHHe0f097240@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: c8afd30bdb6b - stable/14 - mpi3mr: Fix MAXPHYS usage List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c8afd30bdb6b56186790f901f6d6a68d1848fd29 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=c8afd30bdb6b56186790f901f6d6a68d1848fd29 commit c8afd30bdb6b56186790f901f6d6a68d1848fd29 Author: Alexander Motin AuthorDate: 2023-11-29 01:50:24 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Fix MAXPHYS usage This usage is obsolete. Replace with maximum bus space size. maxphys will sort itself out at higher levels. Reviewed by: mav, jhb, imp Differential Revision: https://reviews.freebsd.org/D42605 (cherry picked from commit 4e6d128bd823e5b5d0b058f918c7036978a0e8bf) --- sys/dev/mpi3mr/mpi3mr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index b54a1844b173..32cba394c7b4 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -4947,9 +4947,9 @@ mpi3mr_alloc_requests(struct mpi3mr_softc *sc) sc->dma_loaddr, /* lowaddr */ sc->dma_hiaddr, /* highaddr */ NULL, NULL, /* filter, filterarg */ - MAXPHYS,/* maxsize */ + BUS_SPACE_MAXSIZE, /* maxsize */ nsegs, /* nsegments */ - MAXPHYS,/* maxsegsize */ + BUS_SPACE_MAXSIZE_32BIT,/* maxsegsize */ BUS_DMA_ALLOCNOW, /* flags */ busdma_lock_mutex, /* lockfunc */ &sc->io_lock, /* lockarg */ From nobody Fri Jan 19 17:17:41 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX56mQ6z56xLV; Fri, 19 Jan 2024 17:17:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmX554P9z4Mpv; Fri, 19 Jan 2024 17:17:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684661; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BKyYwyfqHPCZrL1MN1j5v6J+3oq/7RHN8+bN1I6DeMI=; b=PH6kOL1TmjaiUQKDNn49/n8DYay6NFHEt6j7Ewy7kvfgT79Fhtb75FMGUZXQOBDCMTIti8 9Ei/4Vz/fS0+hgPBanduo6WpBRzWsNj64v+dFBN5K3LkAEg4XqSQrC2tI5chHt62dqg2Y1 wtDHnUGGoYqzmyTAZlyhBBn7pEnK0FQha4PE0rpWYjlauf6QDYLd3N+uOmjRIxr/+O/l88 tLzCjB34tBYteCEJyLeyze6V5Wdjwl8Y26o749UI557HIo7d8lQcO+J3SnLA+BFtXm2szO TCMAB6DD6ReylsjmyB36cEyvlBc3NYAWbUoAvxO9G422cV5VQUyDQrUBI1tG9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684661; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BKyYwyfqHPCZrL1MN1j5v6J+3oq/7RHN8+bN1I6DeMI=; b=LbGD5L5VRSX961lDf598KVKnetHAa/+dLgbfcb323GrRaTQGMA4hmtLhuSH2pR1IBUH4Kw ZKQ0gFBcPI7b930heeQ/pvNL7goE42uU4rcYy/v02QwlfeOHXwEqnBDEQ2F1sFQPIDD35H qm1omiXHSQPLQqUJ0yTMUfkojfG/HW1H+zDoUeuCss01Ee41SX/AYWP4lXPdCcF38nmj1d A1h+HCUisswgwE5tcIPZ9q6dJVbYgXykvQd2JyPLVtiAZ1UQxzNEix2s8L742ZmwW21JU+ MxDrcQeNrUaQLa3uUFvuTg/0ETG8HTMXkYFlL2OkM1GBwIEAc/om9niAMuEB+Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684661; a=rsa-sha256; cv=none; b=Snu54Rx/QlPQxgL01v9FbH5w0pghwvQCcAI0U5FqybNDhPFAcIxpgr7DeRd/VPjW25ZBqb xMowh4YYNnK0KeHVUnZKtJPdesmlFHKrtWvZIs01dAVZ9JdVUMjwk3bsZ6LdxZn0qnstvA bR0B73fhDeFYAX7PnQy8XOUedNRv7UNBu9is7Ewge3KZm16MI/aYaIjozL8CQb4uF3/fzC Lp0888io2n9wD+DtaUR4A0yJaaunrZyX97jBtgV3Mi6hspTyvPTbpCT3km9tNjvQqRxz3h Pxzg9CROkExxQ3QwFTGnvQpBmCbI8FMQjqSeX9crwybFHFEUW81pGEWy2alVUA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmX549R4z10ty; Fri, 19 Jan 2024 17:17:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHf46097288; Fri, 19 Jan 2024 17:17:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHfJm097285; Fri, 19 Jan 2024 17:17:41 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:41 GMT Message-Id: <202401191717.40JHHfJm097285@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 2d84c6e89435 - stable/14 - mpi3mr: Make these bus_dmamap_load calls synchronous List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2d84c6e894355f56e823937f098a03fe942f90a4 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=2d84c6e894355f56e823937f098a03fe942f90a4 commit 2d84c6e894355f56e823937f098a03fe942f90a4 Author: Alexander Motin AuthorDate: 2023-11-29 01:50:30 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Make these bus_dmamap_load calls synchronous These calls "should" all be synchrounous. There's no bouncing that's needed for them (at least in the typical case that we have a sane card that has more bits of dma addresses decoded than we have memory), so there's no errors possible. Ensure these calls are really synchronous with BUS_DMA_NOWAIT flags (which should never fail now that the bus_dmamem_alloc() has succeeded). Reviewed by: mav, jhb, imp Differential Revision: https://reviews.freebsd.org/D42606 (cherry picked from commit 39a3e6a812ad9c089bd2c4935193f1b3c4c5c35a) --- sys/dev/mpi3mr/mpi3mr.c | 33 +++++++++++++++++---------------- sys/dev/mpi3mr/mpi3mr_app.c | 2 +- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index 32cba394c7b4..c1f35dbca94c 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -624,7 +624,7 @@ static int mpi3mr_create_op_reply_queue(struct mpi3mr_softc *sc, U16 qid) } bzero(op_reply_q->q_base, op_reply_q->qsz); bus_dmamap_load(op_reply_q->q_base_tag, op_reply_q->q_base_dmamap, op_reply_q->q_base, op_reply_q->qsz, - mpi3mr_memaddr_cb, &op_reply_q->q_base_phys, 0); + mpi3mr_memaddr_cb, &op_reply_q->q_base_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "Operational Reply queue ID: %d phys addr= %#016jx virt_addr: %pa size= %d\n", qid, (uintmax_t)op_reply_q->q_base_phys, op_reply_q->q_base, op_reply_q->qsz); @@ -772,7 +772,7 @@ static int mpi3mr_create_op_req_queue(struct mpi3mr_softc *sc, U16 req_qid, U8 r bzero(op_req_q->q_base, op_req_q->qsz); bus_dmamap_load(op_req_q->q_base_tag, op_req_q->q_base_dmamap, op_req_q->q_base, op_req_q->qsz, - mpi3mr_memaddr_cb, &op_req_q->q_base_phys, 0); + mpi3mr_memaddr_cb, &op_req_q->q_base_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "Operational Request QID: %d phys addr= %#016jx virt addr= %pa size= %d associated Reply QID: %d\n", req_qid, (uintmax_t)op_req_q->q_base_phys, op_req_q->q_base, op_req_q->qsz, reply_qid); @@ -1008,7 +1008,7 @@ static int mpi3mr_setup_admin_qpair(struct mpi3mr_softc *sc) } bzero(sc->admin_req, sc->admin_req_q_sz); bus_dmamap_load(sc->admin_req_tag, sc->admin_req_dmamap, sc->admin_req, sc->admin_req_q_sz, - mpi3mr_memaddr_cb, &sc->admin_req_phys, 0); + mpi3mr_memaddr_cb, &sc->admin_req_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "Admin Req queue phys addr= %#016jx size= %d\n", (uintmax_t)sc->admin_req_phys, sc->admin_req_q_sz); @@ -1046,7 +1046,7 @@ static int mpi3mr_setup_admin_qpair(struct mpi3mr_softc *sc) } bzero(sc->admin_reply, sc->admin_reply_q_sz); bus_dmamap_load(sc->admin_reply_tag, sc->admin_reply_dmamap, sc->admin_reply, sc->admin_reply_q_sz, - mpi3mr_memaddr_cb, &sc->admin_reply_phys, 0); + mpi3mr_memaddr_cb, &sc->admin_reply_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "Admin Reply queue phys addr= %#016jx size= %d\n", (uintmax_t)sc->admin_reply_phys, sc->admin_req_q_sz); @@ -1470,7 +1470,7 @@ static int mpi3mr_issue_iocfacts(struct mpi3mr_softc *sc, bzero(data, data_len); bus_dmamap_load(data_tag, data_map, data, data_len, - mpi3mr_memaddr_cb, &data_phys, 0); + mpi3mr_memaddr_cb, &data_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "Func: %s line: %d IOCfacts data phys addr= %#016jx size= %d\n", __func__, __LINE__, (uintmax_t)data_phys, data_len); @@ -1760,7 +1760,7 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) bzero(sc->reply_buf, sz); bus_dmamap_load(sc->reply_buf_tag, sc->reply_buf_dmamap, sc->reply_buf, sz, - mpi3mr_memaddr_cb, &sc->reply_buf_phys, 0); + mpi3mr_memaddr_cb, &sc->reply_buf_phys, BUS_DMA_NOWAIT); sc->reply_buf_dma_min_address = sc->reply_buf_phys; sc->reply_buf_dma_max_address = sc->reply_buf_phys + sz; @@ -1796,7 +1796,7 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) bzero(sc->reply_free_q, sz); bus_dmamap_load(sc->reply_free_q_tag, sc->reply_free_q_dmamap, sc->reply_free_q, sz, - mpi3mr_memaddr_cb, &sc->reply_free_q_phys, 0); + mpi3mr_memaddr_cb, &sc->reply_free_q_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "reply_free_q (0x%p): depth(%d), frame_size(%d), " "pool_size(%d kB), reply_free_q_dma(0x%llx)\n", @@ -1830,7 +1830,7 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) bzero(sc->sense_buf, sz); bus_dmamap_load(sc->sense_buf_tag, sc->sense_buf_dmamap, sc->sense_buf, sz, - mpi3mr_memaddr_cb, &sc->sense_buf_phys, 0); + mpi3mr_memaddr_cb, &sc->sense_buf_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "sense_buf (0x%p): depth(%d), frame_size(%d), " "pool_size(%d kB), sense_dma(0x%llx)\n", @@ -1864,7 +1864,7 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) bzero(sc->sense_buf_q, sz); bus_dmamap_load(sc->sense_buf_q_tag, sc->sense_buf_q_dmamap, sc->sense_buf_q, sz, - mpi3mr_memaddr_cb, &sc->sense_buf_q_phys, 0); + mpi3mr_memaddr_cb, &sc->sense_buf_q_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "sense_buf_q (0x%p): depth(%d), frame_size(%d), " "pool_size(%d kB), sense_dma(0x%llx)\n", @@ -2000,7 +2000,8 @@ mpi3mr_print_fw_pkg_ver(struct mpi3mr_softc *sc) bzero(fw_pkg_ver, fw_pkg_ver_len); - bus_dmamap_load(fw_pkg_ver_tag, fw_pkg_ver_map, fw_pkg_ver, fw_pkg_ver_len, mpi3mr_memaddr_cb, &fw_pkg_ver_dma, 0); + bus_dmamap_load(fw_pkg_ver_tag, fw_pkg_ver_map, fw_pkg_ver, fw_pkg_ver_len, + mpi3mr_memaddr_cb, &fw_pkg_ver_dma, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "Func: %s line: %d fw package version phys addr= %#016jx size= %d\n", __func__, __LINE__, (uintmax_t)fw_pkg_ver_dma, fw_pkg_ver_len); @@ -2122,7 +2123,7 @@ static int mpi3mr_issue_iocinit(struct mpi3mr_softc *sc) bzero(drvr_info, drvr_info_len); bus_dmamap_load(drvr_info_tag, drvr_info_map, drvr_info, drvr_info_len, - mpi3mr_memaddr_cb, &drvr_info_phys, 0); + mpi3mr_memaddr_cb, &drvr_info_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "Func: %s line: %d IOCfacts drvr_info phys addr= %#016jx size= %d\n", __func__, __LINE__, (uintmax_t)drvr_info_phys, drvr_info_len); @@ -2536,7 +2537,7 @@ static int mpi3mr_alloc_chain_bufs(struct mpi3mr_softc *sc) bzero(sc->chain_sgl_list[i].buf, sz); bus_dmamap_load(sc->chain_sgl_list_tag, sc->chain_sgl_list[i].buf_dmamap, sc->chain_sgl_list[i].buf, sz, - mpi3mr_memaddr_cb, &sc->chain_sgl_list[i].buf_phys, 0); + mpi3mr_memaddr_cb, &sc->chain_sgl_list[i].buf_phys, BUS_DMA_NOWAIT); mpi3mr_dprint(sc, MPI3MR_XINFO, "Func: %s line: %d phys addr= %#016jx size= %d\n", __func__, __LINE__, (uintmax_t)sc->chain_sgl_list[i].buf_phys, sz); } @@ -2613,7 +2614,7 @@ static int mpi3mr_pel_alloc(struct mpi3mr_softc *sc) bzero(sc->pel_seq_number, sc->pel_seq_number_sz); bus_dmamap_load(sc->pel_seq_num_dmatag, sc->pel_seq_num_dmamap, sc->pel_seq_number, - sc->pel_seq_number_sz, mpi3mr_memaddr_cb, &sc->pel_seq_number_dma, 0); + sc->pel_seq_number_sz, mpi3mr_memaddr_cb, &sc->pel_seq_number_dma, BUS_DMA_NOWAIT); if (!sc->pel_seq_number) { printf(IOCNAME "%s:%d Cannot load PEL seq number dma memory for size: %d\n", sc->name, @@ -5138,7 +5139,7 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) } bzero(mem_desc->addr, mem_desc->size); bus_dmamap_load(mem_desc->tag, mem_desc->dmamap, mem_desc->addr, mem_desc->size, - mpi3mr_memaddr_cb, &mem_desc->dma_addr, 0); + mpi3mr_memaddr_cb, &mem_desc->dma_addr, BUS_DMA_NOWAIT); if (!mem_desc->addr) goto out_failed; @@ -5168,7 +5169,7 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) } bzero(mem_desc->addr, mem_desc->size); bus_dmamap_load(mem_desc->tag, mem_desc->dmamap, mem_desc->addr, mem_desc->size, - mpi3mr_memaddr_cb, &mem_desc->dma_addr, 0); + mpi3mr_memaddr_cb, &mem_desc->dma_addr, BUS_DMA_NOWAIT); if (!mem_desc->addr) goto out_failed; @@ -5197,7 +5198,7 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) } bzero(mem_desc->addr, mem_desc->size); bus_dmamap_load(mem_desc->tag, mem_desc->dmamap, mem_desc->addr, mem_desc->size, - mpi3mr_memaddr_cb, &mem_desc->dma_addr, 0); + mpi3mr_memaddr_cb, &mem_desc->dma_addr, BUS_DMA_NOWAIT); if (!mem_desc->addr) goto out_failed; diff --git a/sys/dev/mpi3mr/mpi3mr_app.c b/sys/dev/mpi3mr/mpi3mr_app.c index 5bd0ea4ed174..dd3e4ac2ca08 100644 --- a/sys/dev/mpi3mr/mpi3mr_app.c +++ b/sys/dev/mpi3mr/mpi3mr_app.c @@ -358,7 +358,7 @@ mpi3mr_app_build_nvme_prp(struct mpi3mr_softc *sc, bzero(sc->nvme_encap_prp_list, dev_pgsz); bus_dmamap_load(sc->nvme_encap_prp_list_dmatag, sc->nvme_encap_prp_list_dma_dmamap, sc->nvme_encap_prp_list, dev_pgsz, mpi3mr_memaddr_cb, &sc->nvme_encap_prp_list_dma, - 0); + BUS_DMA_NOWAIT); if (!sc->nvme_encap_prp_list) { printf(IOCNAME "%s:%d Cannot load ioctl NVME dma memory for size: %d\n", sc->name, From nobody Fri Jan 19 17:17:42 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX70h3Gz56xP2; Fri, 19 Jan 2024 17:17:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmX65trcz4MnJ; Fri, 19 Jan 2024 17:17:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684662; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bWnB6M7NJmSLG/81HXw2tgu39Se2Eh9tnrguP5DVeqU=; b=WQOYskRF3h0ydx4ueqkQ7W1ZMGcQeiGKUYlOnKQYjebw0P7N8EWbN4r4nBSIe497k7L0Zv uKh/ZywXE9HNcPwsXmGinW4VB6RVkO1SGF7/yFlzkg+ir2RgBRpt8ZBoh4lxq+jWciqdiL 3PuItETIHNiQrM+4niJufhXxyp9in5k5sk9fsu1haaftjLG8C1zP2oLUsFBTblVfObTk2K pa4bvCXLxVLcw4Sj4OQUX3kefJfG4tvnWM/TFRMQ7nrDblvLyhY/Wpf7ZOTvK98R45EFNQ 8IPeoxPiXNgu1SdMeaMH6eiYcpqbh9U54yBMblHDhJA6L2tUb6FsAXN62C/MMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684662; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bWnB6M7NJmSLG/81HXw2tgu39Se2Eh9tnrguP5DVeqU=; b=MW3i1MUH0thZc2jlhtvjEYBDVCCEAGz1pxFSYXzJ+ENdkVWOjHlfqjpQsDv0C2dNM0bq39 TMrLJqaT81ICHyEr+HdS0me6h63f3UyAnLq0K9mdt4URztgSGj0bT7zY+6SgHfLwpOjVsu zYutdURGmq06BU6LvjPehR2lZXO38nVzTzDzmkWEmaumCvvGsx+c6VNjzejKYCUOOKlYxM Jk+UP0ZrIQa74b2guB9VNpmYWseU4ylGZ+Imxm3QQq7LcmXbIJgT3x2uS15YG+s7kvrsgI EKCmR145ZuavBPSArCCxa6cLM42kp1Tg64osgxopXu2VooOexwmLDYzaTNUkpQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684662; a=rsa-sha256; cv=none; b=sgQJzl44ry1Dkqx/+QmtSS9se2DimwBy9nImHLy4Wc6BIYwQBardDESnnwiT8mz6ej5Nwv e25OQN+7uv3v522DhskZ8/jt6+Wzupe1V+wBoM5setj/R6Q+IEAzGB5tXOmFKSMiu6Is1h MawFtaq6XuJKYJhFZuph1A+jBqcZ/Noy2Tr0c3J+MLN1olJLOBdOlokkECXNtrRvcpI6H+ Fj1Uv4cy3XfOQHRPJt/bPJXY7uKjpRzFaSDs7X8R4UDQaY2jXnSA49xlSSXKPauEuR7DSP XuVg4upzIsU+fb6/1aepIjQL+DZEeIZQRhi9nfHmCFFW+Woj+jN1xrHJWVcxsw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmX64zqJz10v0; Fri, 19 Jan 2024 17:17:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHg1r097340; Fri, 19 Jan 2024 17:17:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHgXK097337; Fri, 19 Jan 2024 17:17:42 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:42 GMT Message-Id: <202401191717.40JHHgXK097337@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 23a5782dc0c0 - stable/14 - mpi3mr: Use template for main busdma tag. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 23a5782dc0c0064c2e5693193caeb0dbf67cd718 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=23a5782dc0c0064c2e5693193caeb0dbf67cd718 commit 23a5782dc0c0064c2e5693193caeb0dbf67cd718 Author: Alexander Motin AuthorDate: 2023-11-29 01:50:39 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Use template for main busdma tag. Use the simpler template code for the parent busdma tag for all I/O to this card. Reviewed by: mav, jhb, imp Differential Revision: https://reviews.freebsd.org/D42607 (cherry picked from commit 489eee0d41dce317678adb0dae8d509a5f1d6d93) --- sys/dev/mpi3mr/mpi3mr_pci.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr_pci.c b/sys/dev/mpi3mr/mpi3mr_pci.c index d07463366943..c1c0211aab4e 100644 --- a/sys/dev/mpi3mr/mpi3mr_pci.c +++ b/sys/dev/mpi3mr/mpi3mr_pci.c @@ -256,6 +256,7 @@ mpi3mr_release_resources(struct mpi3mr_softc *sc) static int mpi3mr_setup_resources(struct mpi3mr_softc *sc) { + bus_dma_template_t t; int i; device_t dev = sc->mpi3mr_dev; @@ -288,20 +289,11 @@ static int mpi3mr_setup_resources(struct mpi3mr_softc *sc) * dma_mask on the device. */ /* Allocate the parent DMA tag */ - if (bus_dma_tag_create(bus_get_dma_tag(dev), /* parent */ - 1, 0, /* algnmnt, boundary */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - BUS_SPACE_MAXSIZE_32BIT,/* maxsize */ - BUS_SPACE_UNRESTRICTED, /* nsegments */ - BUS_SPACE_MAXSIZE_32BIT,/* maxsegsize */ - 0, /* flags */ - NULL, NULL, /* lockfunc, lockarg */ - &sc->mpi3mr_parent_dmat)) { + bus_dma_template_init(&t, bus_get_dma_tag(dev)); + if (bus_dma_template_tag(&t, &sc->mpi3mr_parent_dmat)) { mpi3mr_dprint(sc, MPI3MR_ERROR, "Cannot allocate parent DMA tag\n"); return (ENOMEM); - } + } sc->max_msix_vectors = pci_msix_count(dev); From nobody Fri Jan 19 17:17:43 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX81Gmzz56xTB; Fri, 19 Jan 2024 17:17:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmX76pQVz4N5n; Fri, 19 Jan 2024 17:17:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684664; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=34XDjztCNxgU7LWCJhOJdKpD8Sig86ORoqkXcFVIeW4=; b=bstWyVTz1Ys0WPDwKTCdmovp5XRgh4JQBPCq9iQqGZ1PQq7nvSQrwqfCv2tvy/ywblRWYU 6F7T43GygvfuMA+9qcQgrVIFCLTf1RZjqtaPdBmb31evPsWz0trsgPoWKeyiB8NWzpNKGw MgQASX5rlx8SsAlH86+4WsbA+W+puTuUQyAJLoM0lHyBYNB5nEKwrxYqB4hQDG8c5c8Lj2 vHTmGnzp95zgtnCoMnKlpn44mkIPm6zIP1AHQeUybG9TFC1rl6lrSIVAbRwD5Iel2GcdCH f9z4MXR7MrrVbjtO0AydDGuCna2YZDFCP29dbYdVI6vJAvZd0c4GA6gv4bqOyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684664; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=34XDjztCNxgU7LWCJhOJdKpD8Sig86ORoqkXcFVIeW4=; b=s8ICritXn4SG66si2ky+JQE4fVt0pdj0BVnYzuoVfbfKBcaHGGlWkBe6U/ACaRzmnqOcNE PTf8AAmaf53o6NSraw5GcSx+4XfsYmh7g748XJMwe7n8sg6xi3L2iJYPA4NO++PMSVQDmb RRdX0yGZ/RbvEBoUcmmU5zt5+CEA5WID4/hGT6V5nQmrJBO0jAE60w6BywDtjU9gRq3ma9 3RWkYP5opm2XW4sOgXepmE5PUgXZ4FgqR7UcLewIilVHJpVNtJEd8QpY0V5UPAI+OxFaXv irlY9aN4C3CxRdDxHFYouDuQ4Nk9kdKzHsqO2vAbJ85LMUhJ3lU+5iE6GmGM7w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684664; a=rsa-sha256; cv=none; b=SoqGe4VujuYcLJlvuXzriyv49fP7+QpKEdOZh39EfPAYEPW+FUknIfrJE0v1952eTun7Pp oipLafCwiyESfdDdA3XixhSzMGla7uNRamAdKyWrHLndR7YXi0cF2O7nZVmhRI89B/fXiq F0coYFsULA0WrnOxtdXlGK4EG6j5nUr1Pe89qasN0NyjkYn5Q2bJMy7FegnIsMYYPZ6c2k IzS6fHRoHB8XVvkgmpI4E3G5NY0pcH0ly4URSFkw5Cte/ecDif3jRp0UCIo5JVZD0nygIx cm44tu+Z9VjOmRqlA7UT8mp9oq3yWmlI7mQZvR6ppwsFkGJhCXa04GRXVGOpDw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmX75vvcz10v1; Fri, 19 Jan 2024 17:17:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHhYx097403; Fri, 19 Jan 2024 17:17:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHhUd097400; Fri, 19 Jan 2024 17:17:43 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:43 GMT Message-Id: <202401191717.40JHHhUd097400@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: ac7d9eaf066b - stable/14 - mpi3mr: Replace can't happen DataLength == 0 with an assert List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ac7d9eaf066bc844a91d33cbaf16ed70bc39d06d Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=ac7d9eaf066bc844a91d33cbaf16ed70bc39d06d commit ac7d9eaf066bc844a91d33cbaf16ed70bc39d06d Author: Warner Losh AuthorDate: 2023-11-29 01:50:47 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Replace can't happen DataLength == 0 with an assert Replace the test for DataLength == 0 with an assert. It can't happen, but an assert doesn't hurt. Emacs removed some trailing white space too. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42807 (cherry picked from commit 2361a0056fc16b5e11df2aa948aaa633ac01d685) --- sys/dev/mpi3mr/mpi3mr_cam.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr_cam.c b/sys/dev/mpi3mr/mpi3mr_cam.c index ebbc67af78ba..4d17bb2338e5 100644 --- a/sys/dev/mpi3mr/mpi3mr_cam.c +++ b/sys/dev/mpi3mr/mpi3mr_cam.c @@ -99,7 +99,6 @@ extern int mpi3mr_register_events(struct mpi3mr_softc *sc); extern void mpi3mr_add_sg_single(void *paddr, U8 flags, U32 length, bus_addr_t dma_addr); -extern void mpi3mr_build_zero_len_sge(void *paddr); static U32 event_count; @@ -148,6 +147,9 @@ static void mpi3mr_prepare_sgls(void *arg, KASSERT(nsegs <= MPI3MR_SG_DEPTH && nsegs > 0, ("%s: bad SGE count: %d\n", device_get_nameunit(sc->mpi3mr_dev), nsegs)); + KASSERT(scsiio_req->DataLength != 0, + ("%s: Data segments (%d), but DataLength == 0\n", + device_get_nameunit(sc->mpi3mr_dev), nsegs)); simple_sgl_flags = MPI3_SGE_FLAGS_ELEMENT_TYPE_SIMPLE | MPI3_SGE_FLAGS_DLAS_SYSTEM; @@ -158,13 +160,6 @@ static void mpi3mr_prepare_sgls(void *arg, sg_local = (U8 *)&scsiio_req->SGL; - if (scsiio_req->DataLength == 0) { - /* XXX we don't ever get here when DataLength == 0, right? cm->data is NULL */ - /* This whole if can likely be removed -- we handle it in mpi3mr_request_map */ - mpi3mr_build_zero_len_sge(sg_local); - goto enqueue; - } - sges_left = nsegs; sges_in_segment = (sc->facts.op_req_sz - @@ -215,7 +210,6 @@ fill_in_last_segment: i++; } -enqueue: /* * Now that we've created the sgls, we send the request to the device. * Unlike in Linux, dmaload isn't guaranteed to load every time, but @@ -880,10 +874,10 @@ mpi3mr_scsiio_timeout(void *data) return; /* - * task abort and target reset has failed. So issue Controller reset(soft reset) + * task abort and target reset has failed. So issue Controller reset(soft reset) * through OCR thread context */ - trigger_reset_from_watchdog(sc, MPI3MR_TRIGGER_SOFT_RESET, MPI3MR_RESET_FROM_SCSIIO_TIMEOUT); + trigger_reset_from_watchdog(sc, MPI3MR_TRIGGER_SOFT_RESET, MPI3MR_RESET_FROM_SCSIIO_TIMEOUT); return; } @@ -977,7 +971,7 @@ mpi3mr_action_scsiio(struct mpi3mr_cam_softc *cam_sc, union ccb *ccb) } if (targ->dev_handle == 0x0) { - mpi3mr_dprint(sc, MPI3MR_ERROR, "%s NULL handle for target 0x%x\n", + mpi3mr_dprint(sc, MPI3MR_ERROR, "%s NULL handle for target 0x%x\n", __func__, csio->ccb_h.target_id); mpi3mr_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); xpt_done(ccb); From nobody Fri Jan 19 17:17:44 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmX9312dz56xLf; Fri, 19 Jan 2024 17:17:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmX90l0Zz4Mwy; Fri, 19 Jan 2024 17:17:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684665; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=m81vHoCE/YKQ0GzSDQ+zWx4D34cnzvgm2i3FJppHsKs=; b=J+KPN6ZWCeSgqK7Cagiyjs6Yvt1lO0fC0S+/kHXyiM3mOML9Lnkxq2Tx7ViVoXIhoamapw rZ92cHR7IrTtk8ZOQS+weHFsAAch6dwRqt3RA+10XVnyh2acJr7oHgsfStFmRCW/KFqBPT HvDjjff10yZphcyOy12LRhydg6WY7O8UP7x7eD2b3pfZI6l56txdaqW8w2ZPbquj2A7La8 azRSBUC/idS7Ag7xQC6RIIgRX4ruLj+s4W5tIv47mRdpgBj4p62K/f08IuJHTf0AHv/xES ehet7vY44q8piTJzLTf4bIaJaj/y5JrLtBdbJp3t4pQ5kGLfi8uLOiicPTuT4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684665; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=m81vHoCE/YKQ0GzSDQ+zWx4D34cnzvgm2i3FJppHsKs=; b=eiDWs9ixXqmQ0wZqYuZr5WSGTaPlc9XcS9pw3y3MPKNc3vt3NaMobP9KPMRt0wjcU8IUGn iX7tpav22rWVzUEJzuhHq08j54zTdWhqrS67O37s8HfIUm0wodnhqQw9qK5gyaN8YaNADV OZUAi5t4aT9mow/rhVBkK1a+4xc0RHPkPFcSReW/Ki9+OQ2LV8dIpne6sXT6fo9IKVdk+/ diair87gwD2hueP6Ahq2TK1bys3sBK3V+Ho2ABjCieh74CRImji6a8BTSIbLV12pNWZRTY MxWNmyFmn/+nO+9oDVI5oRn6ErIRlE0cezjDR5492MwyAx4rKFGRRIUE7UJXmw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684665; a=rsa-sha256; cv=none; b=f4CvX0bOoaVDpE+DxbrbnrjO18Gz4WCHTLBbA7hw8xqQ3MQtqEdUamsrcYBeUFhr3IWzb/ p6zMGoRyn3KW7usLfTOs6Irglyy8hIv9RwHwBEagBAyOTvS/z6yWtLZJmEmsQXa3Z1GVzh xnO/tl7TB17O5UfD0gv1looX7w1XSj68q4DFSs1TE1oJARx0F+/2gTgU1wrS0hB4axrGjn +XdhZRJFvo/0FuYpS7K2NsDaKtExQRIF1x5FVijqF2ifELYANUT3gtGQYCv5xCjq/9LtMa bmd5pojA5dMI+pp0XzpSU3mqDsl0iKNAitbJ8VMMPrlduyhLUIft+sTTOLhZKg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmX86wsVz10v2; Fri, 19 Jan 2024 17:17:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHiRd097452; Fri, 19 Jan 2024 17:17:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHib5097449; Fri, 19 Jan 2024 17:17:44 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:44 GMT Message-Id: <202401191717.40JHHib5097449@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 344cdef0ccd7 - stable/14 - mpi3mr: Assume dma_hiaddr is BUS_SPACE_MAXADDR List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 344cdef0ccd7ee3fb2ba67591298959f803bd292 Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=344cdef0ccd7ee3fb2ba67591298959f803bd292 commit 344cdef0ccd7ee3fb2ba67591298959f803bd292 Author: Warner Losh AuthorDate: 2023-11-29 01:50:52 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Assume dma_hiaddr is BUS_SPACE_MAXADDR No sense having a variable for this. So use BUS_SPACE_MAXADDR and remove dma_hiaddr from softc. Suggested by: jhb Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42808 (cherry picked from commit 1ec7c672bc2854a1efb1d50f189d4881163c16c6) --- sys/dev/mpi3mr/mpi3mr.c | 47 ++++++++++++++++++++++----------------------- sys/dev/mpi3mr/mpi3mr.h | 1 - sys/dev/mpi3mr/mpi3mr_app.c | 2 +- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index c1f35dbca94c..73a40b374c1a 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -605,7 +605,7 @@ static int mpi3mr_create_op_reply_queue(struct mpi3mr_softc *sc, U16 qid) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ op_reply_q->qsz, /* maxsize */ 1, /* nsegments */ @@ -751,7 +751,7 @@ static int mpi3mr_create_op_req_queue(struct mpi3mr_softc *sc, U16 req_qid, U8 r if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ op_req_q->qsz, /* maxsize */ 1, /* nsegments */ @@ -1441,10 +1441,10 @@ static int mpi3mr_issue_iocfacts(struct mpi3mr_softc *sc, /* - * We can't use sc->dma_loaddr / hiaddr here. We set those only after - * we get the iocfacts. So allocate in the lower 4GB. The amount of - * data is tiny and we don't do this that often, so any bouncing we - * might have to do isn't a cause for concern. + * We can't use sc->dma_loaddr here. We set those only after we get the + * iocfacts. So allocate in the lower 4GB. The amount of data is tiny + * and we don't do this that often, so any bouncing we might have to do + * isn't a cause for concern. */ if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ @@ -1689,8 +1689,8 @@ static int mpi3mr_process_factsdata(struct mpi3mr_softc *sc, /* * Set the DMA mask for the card. dma_mask is the number of bits that - * can have bits set in them. Translate this into bus_dma loaddr/hiaddr - * args. Add sanity for more bits than address space or other overflow + * can have bits set in them. Translate this into bus_dma loaddr args. + * Add sanity for more bits than address space or other overflow * situations. */ if (sc->facts.dma_mask == 0 || @@ -1698,10 +1698,9 @@ static int mpi3mr_process_factsdata(struct mpi3mr_softc *sc, sc->dma_loaddr = BUS_SPACE_MAXADDR; else sc->dma_loaddr = ~((1ull << sc->facts.dma_mask) - 1); - sc->dma_hiaddr = BUS_SPACE_MAXADDR; mpi3mr_dprint(sc, MPI3MR_INFO, - "dma_mask bits: %d loaddr 0x%jx hiaddr 0x%jx\n", - sc->facts.dma_mask, sc->dma_loaddr, sc->dma_hiaddr); + "dma_mask bits: %d loaddr 0x%jx\n", + sc->facts.dma_mask, sc->dma_loaddr); return retval; } @@ -1739,7 +1738,7 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 16, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -1775,7 +1774,7 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 8, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -1809,7 +1808,7 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -1843,7 +1842,7 @@ static int mpi3mr_reply_dma_alloc(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 8, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -1980,7 +1979,7 @@ mpi3mr_print_fw_pkg_ver(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ fw_pkg_ver_len, /* maxsize */ 1, /* nsegments */ @@ -2102,7 +2101,7 @@ static int mpi3mr_issue_iocinit(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ drvr_info_len, /* maxsize */ 1, /* nsegments */ @@ -2515,7 +2514,7 @@ static int mpi3mr_alloc_chain_bufs(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4096, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ sz, /* maxsize */ 1, /* nsegments */ @@ -2590,8 +2589,8 @@ static int mpi3mr_pel_alloc(struct mpi3mr_softc *sc) sc->pel_seq_number_sz = sizeof(Mpi3PELSeq_t); if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* alignment, boundary */ - sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + sc->dma_loaddr, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ sc->pel_seq_number_sz, /* maxsize */ 1, /* nsegments */ @@ -4946,7 +4945,7 @@ mpi3mr_alloc_requests(struct mpi3mr_softc *sc) ret = bus_dma_tag_create( sc->mpi3mr_parent_dmat, /* parent */ 1, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ BUS_SPACE_MAXSIZE, /* maxsize */ nsegs, /* nsegments */ @@ -5120,7 +5119,7 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ mem_desc->size, /* maxsize */ 1, /* nsegments */ @@ -5150,7 +5149,7 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ mem_desc->size, /* maxsize */ 1, /* nsegments */ @@ -5179,7 +5178,7 @@ void mpi3mr_alloc_ioctl_dma_memory(struct mpi3mr_softc *sc) if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ mem_desc->size, /* maxsize */ 1, /* nsegments */ diff --git a/sys/dev/mpi3mr/mpi3mr.h b/sys/dev/mpi3mr/mpi3mr.h index 3a9612449c63..ca1f42a4a7e5 100644 --- a/sys/dev/mpi3mr/mpi3mr.h +++ b/sys/dev/mpi3mr/mpi3mr.h @@ -545,7 +545,6 @@ struct mpi3mr_softc { char driver_name[MPI3MR_NAME_LENGTH]; int bars; bus_addr_t dma_loaddr; - bus_addr_t dma_hiaddr; u_int mpi3mr_debug; struct mpi3mr_reset reset; int max_msix_vectors; diff --git a/sys/dev/mpi3mr/mpi3mr_app.c b/sys/dev/mpi3mr/mpi3mr_app.c index dd3e4ac2ca08..384d0d6fe178 100644 --- a/sys/dev/mpi3mr/mpi3mr_app.c +++ b/sys/dev/mpi3mr/mpi3mr_app.c @@ -337,7 +337,7 @@ mpi3mr_app_build_nvme_prp(struct mpi3mr_softc *sc, if (bus_dma_tag_create(sc->mpi3mr_parent_dmat, /* parent */ 4, 0, /* algnmnt, boundary */ sc->dma_loaddr, /* lowaddr */ - sc->dma_hiaddr, /* highaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ dev_pgsz, /* maxsize */ 1, /* nsegments */ From nobody Fri Jan 19 17:17:46 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGmXB3pPTz56xTL; Fri, 19 Jan 2024 17:17:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGmXB1jZnz4NBl; Fri, 19 Jan 2024 17:17:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684666; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tNG9avuCgBpDKv5o//W5KpCloVbNkxn0wRgc+QH7NxI=; b=DdCYtq198FBR4DIl4mLl9CxdOba0l/Cnie9NuSFl3vEogB/OxvoU8lrKGvX6JZPqoTrt2O 8sCllH0V+YizyKUJ456D0jUbZ2YL/Lwj3hnNbUrS43cRedPfBevOMeCF/cBmllX5mXdOo3 EitwBJtLaGk6VvLno9O3kCXo9eLip02pOuCFyxsGiZAdsZCs2AnDKXKPdxrmuriRKSgvzp q7Cj/iklka6AB15uSryeY9QvgTh5Zktr+hDCPyUPB5ySE6Fz5F4NWVM95o88/VqWdtZg6R QRygFE4RE2L/VcQAIE1brGM4FrzWZoJ2BVr8tenl0y/QUvSuWdoqCas1h7VK2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705684666; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tNG9avuCgBpDKv5o//W5KpCloVbNkxn0wRgc+QH7NxI=; b=BZK9xZLEv5InzEbcMgGPUNPLesLLDvsWF00+AukN1d95dHwPMpIBFFPXM98mHkmHoNmjsV UD+vX+hP8TGuPyulB8Y6QCetRK/BSTDqkmCZGdhfGRHo25QKiNQFXy0/mrtSwg1ZGels68 nUvKvWy4ti4I2xbkplVCXWZs0Qb21SVHNmzZ3Ws0YGXM/ZpXZslze32Lkh7Z5uw+7w1DT0 xo40lO5EMYWpDf8sWynIFSFsaXzNF4GkxpuHqLARv/fQnEqYdAjqICVeWjVmelYTnUoSvc 6dgXfOe2xV74tuc246i4Am7bkq8+5eHpPTrjHs+R8zk6q5N4/X8g71zgHwBF4Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705684666; a=rsa-sha256; cv=none; b=ysKZOtyhYvsN+DkYR3OBqvGVzjRvziOFMEMHztabh4C17CQ5zdvQ6rVHEKtoarOYCHn/qX MLXHKmnd8m6dNAaX3SrpDgNddlu4A10/lrD2DC/x+8nHmhJOfQnLdepDw65WpSC9tmPvHI Nhcxz4E8cboQQlzUOZ7dvJYfgC/WCA420utxDNGGdwz00HYvCSX7cNIxmMiA/A56VWCaMP IP1ja8FD1rl/EEEmrAFhiNaPreVfks0F+caWDVfcCmNhUI4KGFxXrEttS/dBQdh08+gk8y 1ZIO90tjP9gzOwl9qKw+uKsZEO3U0bkQxbru5WWW0op095xeaZMUoOzpnDZrYw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGmXB0q3lz10jL; Fri, 19 Jan 2024 17:17:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JHHk4m097509; Fri, 19 Jan 2024 17:17:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JHHkGo097506; Fri, 19 Jan 2024 17:17:46 GMT (envelope-from git) Date: Fri, 19 Jan 2024 17:17:46 GMT Message-Id: <202401191717.40JHHkGo097506@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: e2b71e1490a3 - stable/14 - mpi3mr: Minor tweak to task queue pausing List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e2b71e1490a37d8e42a6e1dc408cd83296360e1f Auto-Submitted: auto-generated The branch stable/14 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=e2b71e1490a37d8e42a6e1dc408cd83296360e1f commit e2b71e1490a37d8e42a6e1dc408cd83296360e1f Author: Warner Losh AuthorDate: 2023-11-29 01:50:57 +0000 Commit: Alexander Motin CommitDate: 2024-01-19 17:16:50 +0000 mpi3mr: Minor tweak to task queue pausing Use a while loop with cancel / drain to make sure that all tasks have completed before proceeding to reset. Suggested by: jhb Sponsored by: Netflix (cherry picked from commit 272a406042608da9bc3e67e41c6b7fc31d4166b8) --- sys/dev/mpi3mr/mpi3mr.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/sys/dev/mpi3mr/mpi3mr.c b/sys/dev/mpi3mr/mpi3mr.c index 73a40b374c1a..01ecceb430d6 100644 --- a/sys/dev/mpi3mr/mpi3mr.c +++ b/sys/dev/mpi3mr/mpi3mr.c @@ -5861,13 +5861,16 @@ static int mpi3mr_issue_reset(struct mpi3mr_softc *sc, U16 reset_type, inline void mpi3mr_cleanup_event_taskq(struct mpi3mr_softc *sc) { /* - * Block the taskqueue before draining. This means any new tasks won't - * be queued to a worker thread. But it doesn't stop the current workers - * that are running. taskqueue_drain waits for those correctly in the - * case of thread backed taskqueues. + * Block the taskqueue before draining. This means any new tasks won't + * be queued to the taskqueue worker thread. But it doesn't stop the + * current workers that are running. taskqueue_drain waits for those + * correctly in the case of thread backed taskqueues. The while loop + * ensures that all taskqueue threads have finished their current tasks. */ taskqueue_block(sc->cam_sc->ev_tq); - taskqueue_drain(sc->cam_sc->ev_tq, &sc->cam_sc->ev_task); + while (taskqueue_cancel(sc->cam_sc->ev_tq, &sc->cam_sc->ev_task, NULL) != 0) { + taskqueue_drain(sc->cam_sc->ev_tq, &sc->cam_sc->ev_task); + } } /** From nobody Fri Jan 19 20:17:03 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGrW34jVwz57KDr; Fri, 19 Jan 2024 20:17:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGrW32TsNz3wkl; Fri, 19 Jan 2024 20:17:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695423; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p2GJ0ZitXeioPGtP8JgpO00WCICFwbQZacxfQ85Yrm4=; b=MZg0Tp5QWmygeUDOCRWRNnXOsdvonrmndUTsLXnjQR4qR/wTIRKkym6tvz6xQt2+c4+J2Y 6lYplzXE1WZQB9wbirTEOrBn11v6M+kFeBJN+uaqO16bbbtXkDDk2UWTwG5g2O64KB2Ngh N/Au1YjVVCEZrWmI9C6nS4ZDOZk2759i7eTAr2AS/nXEPlMiQR3diwFD77qf2UcYKHsIff ayQYDYQEdOm2sk5T6wL2bzEeG8hqgQqDAV0R5tM9KX6b9lrU+GelZkYZYZKdRuT2RK+GvX 18UJ9NlbCgSwjEijH3agT7Tp1PTrwjNvrJah4ilUlxaRs7WC6br/sL1v1mdv7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695423; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p2GJ0ZitXeioPGtP8JgpO00WCICFwbQZacxfQ85Yrm4=; b=MhnPOW8cE9kxgpwwCebrRUp1xMO5fyuNAPTSlzfiym+xEyxiW8DdRMOChYvs3poWPHRmcp MUs3xXX9iKQXzI/1J521b37r7ou6AdcN0jymR9UnWwcjxodr1S9eUUDbx7UDIbV+smJn3s cgZBi7YT1YjKIeGxBnfoehWsy6GDbKg04Lh7N3O8XteUw9i8UA951F/HlDvsXSSC9VE06Q EgZPugtOuneTPzLUuSPC35wHbd6KGzYFnc0JTd5zvAkS/Re42ADQVqDKg5eZzQfxGV82Sh /dN+YemVAkeoOfOBQkB2O+mpwTWi3QXB+maObrLovmWmXrUa7nG+Be5bW8A/sw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705695423; a=rsa-sha256; cv=none; b=fFwoKm5vBD+Rsa/8tQc49VNqWd5App9cK3lrcO9KsJLtvJXeQr38loFJZxrlzAY5wlNO5i ShEAqZjtPjSoyaLaXNDlnLObAlqUZFNFc4EW/ot1b4da3cSiFI6GQRGdqexNL1V3wMTbxz cyeHA2vxYU3Vj/YxvGyrssbqzqHdayh9GOQUv/QWbItwuhOrJwgo+lnBPx1MLN7PiaYney m3rPylvxWY/EQUE7KDwO0Z5eBiA/4tQDLs1mjKMExErG6IZWxWvwKVnmXShuEAg5cS6RHa HO1aqiozHNSSUziXwGaob7+aw/ttNXaKWCQD85LvdUvDr88scZYX6rKrirV7rw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGrW31Ylwz156F; Fri, 19 Jan 2024 20:17:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JKH37m000094; Fri, 19 Jan 2024 20:17:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JKH32F000090; Fri, 19 Jan 2024 20:17:03 GMT (envelope-from git) Date: Fri, 19 Jan 2024 20:17:03 GMT Message-Id: <202401192017.40JKH32F000090@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: e2ce586899ff - stable/13 - zfsd: fault disks that generate too many I/O delay events List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e2ce586899ff94d8e3baf10de614dfe61d06a5e0 Auto-Submitted: auto-generated The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=e2ce586899ff94d8e3baf10de614dfe61d06a5e0 commit e2ce586899ff94d8e3baf10de614dfe61d06a5e0 Author: Alan Somers AuthorDate: 2023-07-12 20:46:27 +0000 Commit: Alan Somers CommitDate: 2024-01-19 20:16:48 +0000 zfsd: fault disks that generate too many I/O delay events If ZFS reports that a disk had at least 8 I/O operations over 60s that were each delayed by at least 30s (implying a queue depth > 4 or I/O aggregation, obviously), fault that disk. Disks that respond this slowly can degrade the entire system's performance. Sponsored by: Axcient Reviewed by: delphij Differential Revision: https://reviews.freebsd.org/D42825 (cherry picked from commit d565784a7ebaa59e26febdcfd4a60329786ea5f5) --- cddl/usr.sbin/zfsd/case_file.cc | 20 ++++- cddl/usr.sbin/zfsd/case_file.h | 6 +- cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc | 66 +++++++++++++++ tests/sys/cddl/zfs/tests/zfsd/Makefile | 1 + .../sys/cddl/zfs/tests/zfsd/zfsd_fault_002_pos.ksh | 99 ++++++++++++++++++++++ tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh | 32 +++++++ 6 files changed, 220 insertions(+), 4 deletions(-) diff --git a/cddl/usr.sbin/zfsd/case_file.cc b/cddl/usr.sbin/zfsd/case_file.cc index ad3bb0ffc538..f6b6a0228a50 100644 --- a/cddl/usr.sbin/zfsd/case_file.cc +++ b/cddl/usr.sbin/zfsd/case_file.cc @@ -442,7 +442,8 @@ CaseFile::ReEvaluate(const ZfsEvent &event) consumed = true; } else if (event.Value("class") == "ereport.fs.zfs.io" || - event.Value("class") == "ereport.fs.zfs.checksum") { + event.Value("class") == "ereport.fs.zfs.checksum" || + event.Value("class") == "ereport.fs.zfs.delay") { m_tentativeEvents.push_front(event.DeepCopy()); RegisterCallout(event); @@ -1143,6 +1144,13 @@ IsIOEvent(const Event* const event) return ("ereport.fs.zfs.io" == event->Value("type")); } +/* Does the argument event refer to an IO delay? */ +static bool +IsDelayEvent(const Event* const event) +{ + return ("ereport.fs.zfs.delay" == event->Value("type")); +} + bool CaseFile::ShouldDegrade() const { @@ -1153,8 +1161,14 @@ CaseFile::ShouldDegrade() const bool CaseFile::ShouldFault() const { - return (std::count_if(m_events.begin(), m_events.end(), - IsIOEvent) > ZFS_DEGRADE_IO_COUNT); + bool should_fault_for_io, should_fault_for_delay; + + should_fault_for_io = std::count_if(m_events.begin(), m_events.end(), + IsIOEvent) > ZFS_DEGRADE_IO_COUNT; + should_fault_for_delay = std::count_if(m_events.begin(), m_events.end(), + IsDelayEvent) > ZFS_FAULT_DELAY_COUNT; + + return (should_fault_for_io || should_fault_for_delay); } nvlist_t * diff --git a/cddl/usr.sbin/zfsd/case_file.h b/cddl/usr.sbin/zfsd/case_file.h index 48eb33350a71..00d66ed76a67 100644 --- a/cddl/usr.sbin/zfsd/case_file.h +++ b/cddl/usr.sbin/zfsd/case_file.h @@ -224,7 +224,11 @@ protected: * to transition a vdev from healthy to degraded * status. */ - ZFS_DEGRADE_IO_COUNT = 50 + ZFS_DEGRADE_IO_COUNT = 50, + /** + * The number of delay errors on a vdev required to fault it + */ + ZFS_FAULT_DELAY_COUNT = 8, }; static CalloutFunc_t OnGracePeriodEnded; diff --git a/cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc b/cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc index caeb077a3de8..d76abb54c9ed 100644 --- a/cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc +++ b/cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc @@ -519,6 +519,72 @@ TEST_F(CaseFileTest, PoolDestroy) EXPECT_TRUE(m_caseFile->ReEvaluate(*zfs_event)); } +/* + * A Vdev with a very large number of Delay errors should fault + * For performance reasons, RefreshVdevState should be called at most once + */ +TEST_F(CaseFileTest, VeryManyDelayErrors) +{ + EXPECT_CALL(*m_caseFile, RefreshVdevState()) + .Times(::testing::AtMost(1)) + .WillRepeatedly(::testing::Return(true)); + + for(int i=0; i<100; i++) { + stringstream evStringStream; + evStringStream << + "!system=ZFS " + "class=ereport.fs.zfs.delay " + "ena=12091638756982918145 " + "parent_guid=13237004955564865395 " + "parent_type=raidz " + "pool=testpool.4415 " + "pool_context=0 " + "pool_failmode=wait " + "pool_guid=456 " + "pool_state= 0" + "subsystem=ZFS " + "time="; + evStringStream << i << "0000000000000000 "; + evStringStream << "timestamp=" << i << " "; + evStringStream << + "type=ereport.fs.zfs.delay " + "vdev_ashift=12 " + "vdev_cksum_errors=0 " + "vdev_complete_ts=948336226469 " + "vdev_delays=77 " + "vdev_delta_ts=123998485899 " + "vdev_guid=123 " + "vdev_path=/dev/da400 " + "vdev_read_errors=0 " + "vdev_spare_guids= " + "vdev_type=disk " + "vdev_write_errors=0 " + "zio_blkid=622 " + "zio_delay=31000041101 " + "zio_delta=123998485899 " + "zio_err=0 " + "zio_flags=1572992 " + "zio_level=-2 " + "zio_object=0 " + "zio_objset=37 " + "zio_offset=25598976 " + "zio_pipeline=48234496 " + "zio_priority=3 " + "zio_size=1024" + "zio_stage=33554432 " + "zio_timestamp=824337740570 "; + Event *event(Event::CreateEvent(*m_eventFactory, + evStringStream.str())); + ZfsEvent *zfs_event = static_cast(event); + EXPECT_TRUE(m_caseFile->ReEvaluate(*zfs_event)); + delete event; + } + + m_caseFile->SpliceEvents(); + EXPECT_FALSE(m_caseFile->ShouldDegrade()); + EXPECT_TRUE(m_caseFile->ShouldFault()); +} + /* * A Vdev with a very large number of IO errors should fault * For performance reasons, RefreshVdevState should be called at most once diff --git a/tests/sys/cddl/zfs/tests/zfsd/Makefile b/tests/sys/cddl/zfs/tests/zfsd/Makefile index c328cafecb6c..e2b709dc25c0 100644 --- a/tests/sys/cddl/zfs/tests/zfsd/Makefile +++ b/tests/sys/cddl/zfs/tests/zfsd/Makefile @@ -21,6 +21,7 @@ ${PACKAGE}FILES+= zfsd_autoreplace_003_pos.ksh ${PACKAGE}FILES+= zfsd_degrade_001_pos.ksh ${PACKAGE}FILES+= zfsd_degrade_002_pos.ksh ${PACKAGE}FILES+= zfsd_fault_001_pos.ksh +${PACKAGE}FILES+= zfsd_fault_002_pos.ksh ${PACKAGE}FILES+= zfsd_hotspare_001_pos.ksh ${PACKAGE}FILES+= zfsd_hotspare_002_pos.ksh ${PACKAGE}FILES+= zfsd_hotspare_003_pos.ksh diff --git a/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_002_pos.ksh b/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_002_pos.ksh new file mode 100644 index 000000000000..d8de1ceaff4b --- /dev/null +++ b/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_002_pos.ksh @@ -0,0 +1,99 @@ +#!/usr/local/bin/ksh93 -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright (c) 2023 Axcient. All rights reserved. +# Use is subject to license terms. +# +# $FreeBSD$ + +. $STF_SUITE/include/libtest.kshlib +. $STF_SUITE/include/libgnop.kshlib + +################################################################################ +# +# __stc_assertion_start +# +# ID: zfsd_fault_002_pos +# +# DESCRIPTION: +# If a vdev experiences delayed I/O, it will become faulted. +# +# +# STRATEGY: +# 1. Create a storage pool. Use gnop vdevs so we can inject I/O delays. +# 2. Inject IO delays while doing IO to the pool. +# 3. Verify that the vdev becomes FAULTED. +# 4. ONLINE it and verify that it resilvers and joins the pool. +# +# TESTABILITY: explicit +# +# TEST_AUTOMATION_LEVEL: automated +# +# __stc_assertion_end +# +############################################################################### + +verify_runnable "global" + +log_assert "ZFS will fault a vdev that experiences delayed I/O" + +ensure_zfsd_running + +DISK0_NOP=${DISK0}.nop +DISK1_NOP=${DISK1}.nop + +log_must create_gnops $DISK0 $DISK1 + +for type in "raidz" "mirror"; do + log_note "Testing raid type $type" + + # Create a pool on the supplied disks + create_pool $TESTPOOL $type "$DISK0_NOP" "$DISK1_NOP" + log_must $ZFS create $TESTPOOL/$TESTFS + + # Cause some IO delays writing to the pool + while true; do + # ZFS currently considers an I/O to be "slow" if it's delayed + # for 30 seconds (zio_slow_io_ms). + log_must gnop configure -d 31000 -x 100 "$DISK1_NOP" + $DD if=/dev/zero bs=128k count=1 >> \ + /$TESTPOOL/$TESTFS/$TESTFILE 2> /dev/null + $FSYNC /$TESTPOOL/$TESTFS/$TESTFILE + # Check to see if the pool is faulted yet + $ZPOOL status $TESTPOOL | grep -q 'state: DEGRADED' + if [ $? == 0 ] + then + log_note "$TESTPOOL got degraded" + $ZPOOL status -s $TESTPOOL + break + fi + done + + log_must check_state $TESTPOOL $TMPDISK "FAULTED" + + log_must gnop configure -x 0 "$DISK1_NOP" + destroy_pool $TESTPOOL + log_must $RM -rf /$TESTPOOL +done + +log_pass diff --git a/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh b/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh index b6dcfe97dd7b..7aa808c9eb82 100755 --- a/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh +++ b/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh @@ -56,6 +56,37 @@ zfsd_fault_001_pos_cleanup() } +atf_test_case zfsd_fault_002_pos cleanup +zfsd_fault_002_pos_head() +{ + atf_set "descr" "ZFS will fault a vdev that experiences delayed I/O" + atf_set "require.progs" "ksh93 gnop zfs zpool zfsd" + atf_set "timeout" 300 +} +zfsd_fault_002_pos_body() +{ + . $(atf_get_srcdir)/../../include/default.cfg + . $(atf_get_srcdir)/../hotspare/hotspare.kshlib + . $(atf_get_srcdir)/../hotspare/hotspare.cfg + . $(atf_get_srcdir)/zfsd.cfg + + verify_disk_count "$DISKS" 2 + verify_zfsd_running + ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" + ksh93 $(atf_get_srcdir)/zfsd_fault_002_pos.ksh + if [[ $? != 0 ]]; then + save_artifacts + atf_fail "Testcase failed" + fi +} +zfsd_fault_002_pos_cleanup() +{ + . $(atf_get_srcdir)/../../include/default.cfg + . $(atf_get_srcdir)/zfsd.cfg + + ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" +} + atf_test_case zfsd_degrade_001_pos cleanup zfsd_degrade_001_pos_head() { @@ -575,6 +606,7 @@ zfsd_import_001_pos_cleanup() atf_init_test_cases() { atf_add_test_case zfsd_fault_001_pos + atf_add_test_case zfsd_fault_002_pos atf_add_test_case zfsd_degrade_001_pos atf_add_test_case zfsd_degrade_002_pos atf_add_test_case zfsd_hotspare_001_pos From nobody Fri Jan 19 20:18:39 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGrXv4dKHz57KFN; Fri, 19 Jan 2024 20:18:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGrXv39t1z3xPg; Fri, 19 Jan 2024 20:18:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695519; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+hddCHdPAp8exkkRKyxHC1dessyIJpLcTD1HyKSqcWI=; b=ratamBVBrvKCDwmKPNGI9nK37vE/NkAUrqxFnWqK99l2mEKSq6A0c7+pSHgVvxbc3bAJVp 00eIyIlL/IwIZ346LKmzmbf/2asEcgthOd6O2taKrDtIsKt1eAJKDk9F1jPr5oyJ7GKA1u l7ck1Ia9pQ16v8vkZekZ7d+oAyvWgKxlJDFN8F+2bTovPTCmgzIr+2OzYPIB1dbTZj4mPA qyToUYCtohm2cWRYEKy04BZZLH/AMsYvRWA6YdhWsMtGP3WRzlZRKyJXTmg/1+xlr4sq8Y 41FVLW1jTc+VGGHJB+fM/icpAFwZYAr/mTBE4rjuG1Xoy9JkLRwTXNmtOAQtTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695519; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+hddCHdPAp8exkkRKyxHC1dessyIJpLcTD1HyKSqcWI=; b=eqVg8i8sKJdCmxdssCQb7Fg0m3KJzVILHlzeygqvRxMOraU/3pUa8KTZq08j95CNncYY70 M/8cAu/UqKnG+LyTzF5lmZrnkwjscZiLh7nKt/NzvDZE+ZtVIOBbQJfWAUEaPVtb+vDj/g LxZbDmxNfMN7zb8iHN5g8lrxxDxvz0GQl8a9NSV372TxFl6jAIXpJGIO5PiHuYv2NCOA3b dejbtJxSMl+Z7FkMo9vh+WulSpL5Cil8dNtCmH8LMi2ZCxgTyGKivNh2jTVa5GU9tsBtmG 7jdUF8jrQFCBEgNPnzku7oXUzxNfg/Gzioo85x7RqJ6WBMwOQbOahaAqYPd1cA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705695519; a=rsa-sha256; cv=none; b=CyPUhdoa4gSlVEofEl0o5BI6wBVz5X+dcYeey1jwXcS1cgVgvJFyRPMY9SdQNJZ1ivhiE0 rGrmOSUwnWIp98rbpfJL9Rf4yPTHIdIhUaw9I2NujGd+2jU3dzUmLoBQHzkh2+BmUwWtqP WuFdRAAgO48o+IysApim4wdSpHRS0HnL8kMmRkd1ImIzmKmKHWBeT+3h/C0bUFl+8Z5pTD 2K5qP3H3+2ruwDb56BLY97rzYKurtM2bJuKU9Y1vSmeJWZpNUC9VMM2k+xPBfUhviPcqUw YwJXmGGsqxX6IkGmKksj/mAznd8hE9kGAPRa0hFs9Ml2QTI5mmXWLnq9APqtrg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGrXv2GQnz15Ns; Fri, 19 Jan 2024 20:18:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JKIdU3000467; Fri, 19 Jan 2024 20:18:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JKIdjP000464; Fri, 19 Jan 2024 20:18:39 GMT (envelope-from git) Date: Fri, 19 Jan 2024 20:18:39 GMT Message-Id: <202401192018.40JKIdjP000464@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 6328c1449502 - stable/13 - sigaction.2: clarify that fork isn't async-signal-safe, but _Fork is List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 6328c1449502dae2b9a667a5a8e0f455eba70c90 Auto-Submitted: auto-generated The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=6328c1449502dae2b9a667a5a8e0f455eba70c90 commit 6328c1449502dae2b9a667a5a8e0f455eba70c90 Author: Alan Somers AuthorDate: 2023-12-01 15:19:24 +0000 Commit: Alan Somers CommitDate: 2024-01-19 20:18:18 +0000 sigaction.2: clarify that fork isn't async-signal-safe, but _Fork is [skip ci] Sponsored by: Axcient Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D42865 (cherry picked from commit c2ed7a63604fc86244adee2966e19f8aba2a07cb) --- lib/libc/sys/sigaction.2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libc/sys/sigaction.2 b/lib/libc/sys/sigaction.2 index 913ad60a6b40..1691c5f9e734 100644 --- a/lib/libc/sys/sigaction.2 +++ b/lib/libc/sys/sigaction.2 @@ -27,7 +27,7 @@ .\" .\" From: @(#)sigaction.2 8.2 (Berkeley) 4/3/94 .\" -.Dd June 29, 2020 +.Dd December 1, 2023 .Dt SIGACTION 2 .Os .Sh NAME @@ -392,7 +392,7 @@ Base Interfaces: .Fn fchown , .Fn fchownat , .Fn fcntl , -.Fn fork , +.Fn _Fork , .Fn fstat , .Fn fstatat , .Fn fsync , From nobody Fri Jan 19 20:19:50 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGrZG3GK0z57K2w; Fri, 19 Jan 2024 20:19:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGrZG2nHqz3xcB; Fri, 19 Jan 2024 20:19:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695590; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KI0jwU54ESrAScLtoJhu9C1bQRpDsP7flasjQA2hxEM=; b=xHf3iXv4ar3+H85eKHQOEnOPO0eBTyIbwNHzR5w5m8anucELhY7JlDxSXVCUvEv0nQEBHe Hhky0AYErspgApsYuojA1jZ/dzHETHdNsDxUILE1eAIgD1FrdU+kaE2nV92MN8rqwqRcaQ MHapQMN/h+jt4gCThcJvPqj1LSDKUY1HDK+kcK1prenPkkql0Vlq8YSx7bXDvLFuM2XGlT D/LF0DZKk2jqjs8Zpsbf1656dotpgVeVgfuj69ckGSinJW24i9bMwDxqO/V/bG/aab/Jch 7n3+hliW3IFJq+jQdAdmFEP2dNscml8XOaOnecFqUM+AD8xhsZFKtaUaEtGTng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695590; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KI0jwU54ESrAScLtoJhu9C1bQRpDsP7flasjQA2hxEM=; b=WDewP4LKYbr8rlStDiwlpDqaGd5DcoJio6QzpMMw+Nu6iaDz2mfkCHbb9V3MX0+JaSal8w Ab4ZXb3OYhRcvXAZeXxmiVchGo6ByhR473mXiFXWmvslXStSz2XWe+N2pI2VZVnS4OKCMp r1zrYDGQvy4k3nWPP2UD5/4K1i852MDDknKy7vCelJs6ZoBpBKfbDKhoR/fRS0HQw2mpwa QAP22mNdDVP+ck9S2VWtYeRb7K9xC1uWoKWSsBQyMK4bGKBQLOByLRusAiqI2laus0oGv/ 1Muhy1/YFFCuHJfrKYXLWruiz7kz/5qiWc7vrt/hYP7DDFUnEsruulGbfZ/RQA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705695590; a=rsa-sha256; cv=none; b=kJID3ybpfTY68tdM6EyFMn/eH8jgnHOLyR6TUrkP/vgPJShaU6ZAfmw7w4MbXRbFJjN66c qC3EHI2S7fCVQuWwbCNNeTRBpz3QDZEZGruB58aSevr/kEu0eoAty3W9ynVvyw2Vjq5nRF OnCHKKwjsoQtCpIX4EAyvf9rrpcFtJCxgYiqlB5hdDSXXzXlP41KYZ0iGP4kGBwUaNf11y W27hTnqnPM4rRn+dQP0t4tTsIc5uDxPcHYXzAz4pgqiNJb1t49xSuglDHAa7z4w6LP+zv/ VIhsHFgoNVMR56KLE8xCo0xwuOvNTBMcMo7kt5oNj3/jHDlKTTEx/PMDJWJrvw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGrZG1qqyz14v9; Fri, 19 Jan 2024 20:19:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JKJomq000752; Fri, 19 Jan 2024 20:19:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JKJoWT000749; Fri, 19 Jan 2024 20:19:50 GMT (envelope-from git) Date: Fri, 19 Jan 2024 20:19:50 GMT Message-Id: <202401192019.40JKJoWT000749@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: b4caacbef0a4 - stable/13 - cap_net.3: remove a copypasta List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b4caacbef0a4e5180cd8d1bc5bddae8904719c32 Auto-Submitted: auto-generated The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=b4caacbef0a4e5180cd8d1bc5bddae8904719c32 commit b4caacbef0a4e5180cd8d1bc5bddae8904719c32 Author: Alan Somers AuthorDate: 2023-12-05 23:23:29 +0000 Commit: Alan Somers CommitDate: 2024-01-19 20:19:38 +0000 cap_net.3: remove a copypasta This line appears to have been copied from cap_sysctl.3. While I'm here, reorder and reword the description of cap_net_limit a bit. [skip ci] Sponsored by: Axcient Reviewed by: oshogbo Differential Revision: https://reviews.freebsd.org/D42919 (cherry picked from commit 6b96125afdf245ae61dd82b59891ad0d6aab0066) --- lib/libcasper/services/cap_net/cap_net.3 | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/libcasper/services/cap_net/cap_net.3 b/lib/libcasper/services/cap_net/cap_net.3 index ad4b6f4e4c90..2851c2f023a0 100644 --- a/lib/libcasper/services/cap_net/cap_net.3 +++ b/lib/libcasper/services/cap_net/cap_net.3 @@ -21,7 +21,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 15, 2020 +.Dd December 5, 2023 .Dt CAP_NET 3 .Os .Sh NAME @@ -186,17 +186,14 @@ any port will be accepted in the .Fn cap_connect function. .Pp +The .Fn cap_net_limit -applies a set of sysctl limits to the capability, denying access to sysctl -variables not belonging to the set. +will consume and apply the limits. .Pp Once a set of limits is applied, subsequent calls to .Fn cap_net_limit will fail unless the new set is a subset of the current set. .Pp -The -.Fn cap_net_limit -will consume the limits. If the .Fn cap_net_limit was not called the rights may be freed using From nobody Fri Jan 19 20:21:16 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGrbw3V2Pz57KFd; Fri, 19 Jan 2024 20:21:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGrbw2z9hz3xgh; Fri, 19 Jan 2024 20:21:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695676; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jXcdJ6HabCl4XDJ10rYcfWdnt0dDwlwZqwsSI0EKU2Y=; b=SZLvHzGTbhDWMxXEeT7OuTRHLcNfvDd6NFqnBDkYrim+WGhc1Dj6L8U8/5rkwRsbI4yYw7 QH0mjhiAudq/SP910qr1AC0U01T3w82cFOs+c/odc405CbWZVkli+1ARXO5DNeStBr+qpx QQaf0wj57+5l3xXC6oEgDMlq4Nsz9sh9aQMCdR4jfjx4qLf0yIkipeu62CadCsx8D7oums F0oGBdERGpt9JibK4rJfJZGqycdZY66TMMuElJTjZhRDjyPOky5ku37oWstVnzRZuPqv4i N1ufK5+MIkAx8unFR1Do4E/TfeoVLn1MxNndCMLRMsbh9vpan7YmVwI2fqQEBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695676; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jXcdJ6HabCl4XDJ10rYcfWdnt0dDwlwZqwsSI0EKU2Y=; b=IHZdyUi88165foBQR014f2vKCvdnNPRbRJPgIqfBm5eLkmsNAcPkslpfDLtOWuiuFchWGF rgRw7EWRR64QMR9A+9V3Xatwz2gu1jwyPlPPCAwNhAmJ98zw5F6nzbfHd17TV96MO15cb7 6/yL3Fp5NdF8Ywrz+e0GzF42rxOZoY883Rv9RQ1sR7hAcuCaikLgYzYN3zyo4rIFOGWZqE 3SQ8vtQx7PaqV3AmB7cY+s882itb0lQD7QLEb0tnfyTx7bVS6C809v54ko8epdb/Nui448 3bC0Gt2894x1h6n7e8BGJs+O+SiaU9SvlD5+CMQm2GNONXY9xJZqscIqwyYmKg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705695676; a=rsa-sha256; cv=none; b=kkw1sYhipe5hZTVLsHYM4wfTmEd1WyIKs50ydm/eAN6tNdm5brI4RPDu5kdZVe0KHF7vdk EToZFCY1nKJawzIGQVDyQum0gdhs4AvwuO6LCO5jdV52erEahC3vnlHV3XDfbNYsJCpzU6 9KjSpT86ZWNqjWyMj+a7KSmSX9SN8X9kpKdi1/244XeSpFVWcdo8ot2nLumu8ijuzGPgM1 wtdaCDW/oO6WJnBgIEemd4tSOgZczV7/JkUtqxLqePBCSVJFj+UVLXEa6ulKbQj/EAx4tF c6Sr6QuYjVtsK0Zc7HvFiTEkypSV5O9vixG3Y8TqpH1Sf3CjTHeAT6L4GEtU+A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGrbw22Tfz159K; Fri, 19 Jan 2024 20:21:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JKLGr8014175; Fri, 19 Jan 2024 20:21:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JKLGfW014172; Fri, 19 Jan 2024 20:21:16 GMT (envelope-from git) Date: Fri, 19 Jan 2024 20:21:16 GMT Message-Id: <202401192021.40JKLGfW014172@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 08ac19609ca0 - stable/13 - Remove _POSIX_PRIORITIZED_IO references from man pages List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 08ac19609ca0ab1529c63482fbfdf7bb1605edce Auto-Submitted: auto-generated The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=08ac19609ca0ab1529c63482fbfdf7bb1605edce commit 08ac19609ca0ab1529c63482fbfdf7bb1605edce Author: Alan Somers AuthorDate: 2023-11-15 17:56:05 +0000 Commit: Alan Somers CommitDate: 2024-01-19 20:20:51 +0000 Remove _POSIX_PRIORITIZED_IO references from man pages We don't support it, so there's no need to tell readers what would happen if we did. Also, don't remind the user that a certain field is ignored by aio_read. Mentioning every ignored field would make the man pages too verbose. Sponsored by: Axcient Reviewed by: Pau Amma Differential Revision: https://reviews.freebsd.org/D42622 (cherry picked from commit 18e2c4175f78f1aaa648dd7fb7530220aed23671) --- lib/libc/sys/aio_fsync.2 | 7 +------ lib/libc/sys/aio_read.2 | 14 -------------- lib/libc/sys/aio_write.2 | 9 +-------- 3 files changed, 2 insertions(+), 28 deletions(-) diff --git a/lib/libc/sys/aio_fsync.2 b/lib/libc/sys/aio_fsync.2 index f386e0653b21..46fc5d95bcfd 100644 --- a/lib/libc/sys/aio_fsync.2 +++ b/lib/libc/sys/aio_fsync.2 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 6, 2021 +.Dd November 15, 2023 .Dt AIO_FSYNC 2 .Os .Sh NAME @@ -57,11 +57,6 @@ or for the behavior of .Xr fdatasync 2 . .Pp -If _POSIX_PRIORITIZED_IO is defined, and the descriptor supports it, -then the enqueued operation is submitted at a priority equal to that -of the calling process minus -.Fa iocb->aio_reqprio . -.Pp The .Fa iocb pointer may be subsequently used as an argument to diff --git a/lib/libc/sys/aio_read.2 b/lib/libc/sys/aio_read.2 index c6f062fa406d..092315e70c91 100644 --- a/lib/libc/sys/aio_read.2 +++ b/lib/libc/sys/aio_read.2 @@ -71,20 +71,6 @@ the structure is defined in .Xr readv 2 . .Pp -If _POSIX_PRIORITIZED_IO is defined, and the descriptor supports it, -then the enqueued operation is submitted at a priority equal to that -of the calling process minus -.Fa iocb->aio_reqprio . -.Pp -The -.Fa iocb->aio_lio_opcode -argument -is ignored by the -.Fn aio_read -and -.Fn aio_readv -system calls. -.Pp The .Fa iocb pointer may be subsequently used as an argument to diff --git a/lib/libc/sys/aio_write.2 b/lib/libc/sys/aio_write.2 index efc0938a5cf9..32ad53019ed2 100644 --- a/lib/libc/sys/aio_write.2 +++ b/lib/libc/sys/aio_write.2 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 2, 2021 +.Dd November 15, 2023 .Dt AIO_WRITE 2 .Os .Sh NAME @@ -84,13 +84,6 @@ is not set for the file descriptor, the write operation will occur at the absolute position from the beginning of the file plus .Fa iocb->aio_offset . .Pp -If -.Dv _POSIX_PRIORITIZED_IO -is defined, and the descriptor supports it, then the enqueued -operation is submitted at a priority equal to that of the calling -process minus -.Fa iocb->aio_reqprio . -.Pp The .Fa iocb pointer may be subsequently used as an argument to From nobody Fri Jan 19 20:22:02 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGrcs5pBZz57Kp4; Fri, 19 Jan 2024 20:22:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGrcq3mdyz40H6; Fri, 19 Jan 2024 20:22:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695723; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eS6ZIPe4U7zZ9arm28PP+34uxLMLhDV2Uxeal95T+mg=; b=fooMy/wHNgLvl8IhdCzGQNQBwWSU9HAjIX4im5kFZjyHpq8R2a0tDjZ7F/ex+o+S/+sg0n wy+F4isEwIHqGGeyBuG3QHx2O308Vey1OSCZoqaNHHomTCabMm+KGktIi9gAd6DvQeAZW4 DQ5lOwzNPWTUKFbwJU4wXs49TmQEzap5MbHrL2V9EFzL3Wy6WRDmhT3hPZXsfm15od1/PC w0PrSx4ID3MQ9Qw7UTOOX1vUgEFbJRZKGgJyPS1nQxrDdvWcHSo3smeEyt+3qo7XpIdkmD vHPLMdBF9tf6hMc3Bg8lIXinJdpcgSy4OzPZPCTfOpcm2gFaR3cK5tGx3y999A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695723; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eS6ZIPe4U7zZ9arm28PP+34uxLMLhDV2Uxeal95T+mg=; b=Ao7vUwQ1szNLOZ8lDXI2GzDjGqJ/oNwHnxW74hAsdOmmt651Ydw2uB/wtAk7t4jz2r1CkH DGJpiVGPamKGAbsFeGuZK5eULJJt2MNka3aBFnRlgkrOMRrG8x+k1ngzQb7Z2bHRoVu9zy p9i1EW86eWflakdgQQLJ7k6fyX5nFDZc8aPzYWrSxjwIv0peH7M+lgIsHcmmzSKkRRPfyK Dv/3ujvXGxQ8lf+3wmx/5RSSpK9ffjhgvXJXiiXmbqZ35Yoo5MhvAW0CVMaytAPCCGdGiL 3rNoZGojW+mwoBlaFVwYgazMWBppPQ19uV3hWg7Uoq4gNQqldPJ3XzV9kWqVAg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705695723; a=rsa-sha256; cv=none; b=WjurKei3ZbJadCbV+4rBhFb4grS73NjwPjLyKXcnUxbFdiN0XgBEUUnGHsyl4xU4ifJisC HAFQJJCjcbZqGwtN86iXavd4/hDe/VIVC/oxltt0pGMo9gUib07rNvcxq+ZD6I1bIXNK6C YIdBTIAZWYTXINegY0v4BrCCgaKnM4rQZoY/jHODi42BG39fawx16T9WkfjQo4Yl4WyH/v srBB18wVsvLIHVzM98IvZzwCO0bjBBkRtPFILbLd9hrVl9EEOynB+KGfdSGYpIUgRdtTWP UjsRkEqnzcxyzrXdJ+g1DhTnjNFog6/V+QcXHCDC+vO5jpfRwply69MWJ9t5xw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGrcq11fPz15XF; Fri, 19 Jan 2024 20:22:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JKM2M4016653; Fri, 19 Jan 2024 20:22:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JKM2f2016650; Fri, 19 Jan 2024 20:22:02 GMT (envelope-from git) Date: Fri, 19 Jan 2024 20:22:02 GMT Message-Id: <202401192022.40JKM2f2016650@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: c2ec8038a7f1 - stable/13 - Fix multiple bugs with ctld's UCL parsing List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c2ec8038a7f1a52c013c2d4d215363ff906c6781 Auto-Submitted: auto-generated The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=c2ec8038a7f1a52c013c2d4d215363ff906c6781 commit c2ec8038a7f1a52c013c2d4d215363ff906c6781 Author: Alan Somers AuthorDate: 2023-10-09 18:26:25 +0000 Commit: Alan Somers CommitDate: 2024-01-19 20:21:40 +0000 Fix multiple bugs with ctld's UCL parsing * Don't segfault when parsing a misformatted auth-group section * If the config file specifies a chap section within a target but no auth-group, create a new anonymous auth-group. That matches the behavior with non-UCL config files. * Protect some potential segfaults with assertions PR: 274380 Sponsored by: Axcient Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D43198 (cherry picked from commit 2391e536c01cb51d2a2c11a0f5820481314e9ec2) --- usr.sbin/ctld/ctld.c | 1 + usr.sbin/ctld/uclparse.c | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/usr.sbin/ctld/ctld.c b/usr.sbin/ctld/ctld.c index 2a69308ff067..f2b2de5b9a57 100644 --- a/usr.sbin/ctld/ctld.c +++ b/usr.sbin/ctld/ctld.c @@ -533,6 +533,7 @@ auth_group_find(const struct conf *conf, const char *name) { struct auth_group *ag; + assert(name != NULL); TAILQ_FOREACH(ag, &conf->conf_auth_groups, ag_next) { if (ag->ag_name != NULL && strcmp(ag->ag_name, name) == 0) return (ag); diff --git a/usr.sbin/ctld/uclparse.c b/usr.sbin/ctld/uclparse.c index f3f8df81e492..8bd1ca88d166 100644 --- a/usr.sbin/ctld/uclparse.c +++ b/usr.sbin/ctld/uclparse.c @@ -60,6 +60,7 @@ uclparse_chap(struct auth_group *auth_group, const ucl_object_t *obj) const struct auth *ca; const ucl_object_t *user, *secret; + assert(auth_group != NULL); user = ucl_object_find_key(obj, "user"); if (!user || user->type != UCL_STRING) { log_warnx("chap section in auth-group \"%s\" is missing " @@ -90,6 +91,7 @@ uclparse_chap_mutual(struct auth_group *auth_group, const ucl_object_t *obj) const ucl_object_t *user, *secret, *mutual_user; const ucl_object_t *mutual_secret; + assert(auth_group != NULL); user = ucl_object_find_key(obj, "user"); if (!user || user->type != UCL_STRING) { log_warnx("chap-mutual section in auth-group \"%s\" is missing " @@ -714,6 +716,8 @@ uclparse_target(const char *name, const ucl_object_t *top) } if (!strcmp(key, "auth-group")) { + const char *ag; + if (target->t_auth_group != NULL) { if (target->t_auth_group->ag_name != NULL) log_warnx("auth-group for target \"%s\" " @@ -725,8 +729,12 @@ uclparse_target(const char *name, const ucl_object_t *top) "target \"%s\"", target->t_name); return (1); } - target->t_auth_group = auth_group_find(conf, - ucl_object_tostring(obj)); + ag = ucl_object_tostring(obj); + if (!ag) { + log_warnx("auth-group must be a string"); + return (1); + } + target->t_auth_group = auth_group_find(conf, ag); if (target->t_auth_group == NULL) { log_warnx("unknown auth-group \"%s\" for target " "\"%s\"", ucl_object_tostring(obj), @@ -759,6 +767,20 @@ uclparse_target(const char *name, const ucl_object_t *top) } if (!strcmp(key, "chap")) { + if (target->t_auth_group != NULL) { + if (target->t_auth_group->ag_name != NULL) { + log_warnx("cannot use both auth-group " + "and chap for target \"%s\"", + target->t_name); + return (1); + } + } else { + target->t_auth_group = auth_group_new(conf, NULL); + if (target->t_auth_group == NULL) { + return (1); + } + target->t_auth_group->ag_target = target; + } if (uclparse_chap(target->t_auth_group, obj) != 0) return (1); } From nobody Fri Jan 19 20:23:16 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGrfF0ZjTz57KkG; Fri, 19 Jan 2024 20:23:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGrfD6rVVz412k; Fri, 19 Jan 2024 20:23:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695797; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xqT96dr+wYPxRDdAAlZF95ewBwT2Irr5t2BRKEGvoAk=; b=Vt3pK3EI6RSskz5j4w8lOv+3dl6kzPhwClFNHG/x+XORmL5RvqIONZq2U0uHqsslCbayIA fan8BwZIcwNb9lP8URWsYZH8KtCE/Dtm/9X1Dnn8CDi/E3SaxYr45VOMYXUUsStJk9u5Dh q7Q0f9l879KJU1HD/fz/qSB7Zj9RoNvtkXdGxz5jfR7h2fBeawb5I0T0fh6B31DPgf4zb+ ShxGFUCdJqLezqPqg5eIKLHPB/um0mtqpl++9us7BIJEKP+mXn3MzYoK1EWC5PPFT8L4Qz nIKPunTStbkekYsRpEd3cqFGQZFtTDbb9QsEvIDFAc2FP4KpUS2i+kx2RFWA9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695797; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xqT96dr+wYPxRDdAAlZF95ewBwT2Irr5t2BRKEGvoAk=; b=oEQz6LSOpE4dNmDYg4hSfFWiFjM92iMb47oMaDzy9rSil8H0vWeLN1pU0vK4MicfJfhRim KR+0hCyhYrwTD6zFz6IGosTC1yqhMo3zNHSPv4eNCHW/NJZrUeSkGoSjmKJWJCFT+BWdua EQkPgYFG6u/JUvjXEvseWQY8qHy70Ksu24fSD3iuLzYlexahcldQq5OFGfk8WDdVnK1+5X n7JjP5OYTSKRZ4jQvXgLQgw8HtZZaoRCo/sZ1JJ4vRYgnGx+zOjefKHxNYTufHcYNRBfsG CYQY4cRVA8lBE/ROwKGoQD2oyY82qp19ocytxSlA6rnV2FiAaMFAUEjPcsrEag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705695797; a=rsa-sha256; cv=none; b=lSHHDmhBceWPpi+80rv/bTvAx5fhp4h36yFezSSPv72nkvJFMK4/UGBrsMFT5RUGUZmwI9 tYtPGoIgf/HcYiz4AUBKtzJnH1IWPb6CMdJBjmdxxuseLwV5A0Zqq6vlNnaowA4FT3rwDh qZWaZMRXYLFWCF+Ys20OiSb1me+ix2lrMp19oBOiGCFL7Y9JrQTyD16sPLQzDgcYOACSQK g7O9y01EjZEFNqPdQ+HATagzBfizBXpGEKBpVUxqIOgj+E0dS7nhHoX/VRX4p/1KHDpICA UG7t22olscYzi0bneMeVt9vBwnK1bmUlGtiiOqwKmGAavaIsxA4wn360J69Xsg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGrfD5txfz159j; Fri, 19 Jan 2024 20:23:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JKNGLP016982; Fri, 19 Jan 2024 20:23:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JKNGPc016979; Fri, 19 Jan 2024 20:23:16 GMT (envelope-from git) Date: Fri, 19 Jan 2024 20:23:16 GMT Message-Id: <202401192023.40JKNGPc016979@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 266c79883a7e - stable/13 - nfsstat: update option strings in docs List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 266c79883a7e1653f80c482a6fba513c80ac5f35 Auto-Submitted: auto-generated The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=266c79883a7e1653f80c482a6fba513c80ac5f35 commit 266c79883a7e1653f80c482a6fba513c80ac5f35 Author: Lexi Winter AuthorDate: 2023-12-27 17:30:31 +0000 Commit: Alan Somers CommitDate: 2024-01-19 20:22:54 +0000 nfsstat: update option strings in docs Add the missing -q option to the nfsstat(1) manpage SYNOPSIS (it is already documented in DESCRIPTION), and add the missing -E and -q options to the built-in usage output. PR: 275912 Pull Request: https://github.com/freebsd/freebsd-src/pull/958 (cherry picked from commit 30ce26cacfd626552c647c9327dd510e7f421d97) --- usr.bin/nfsstat/nfsstat.1 | 4 ++-- usr.bin/nfsstat/nfsstat.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/usr.bin/nfsstat/nfsstat.1 b/usr.bin/nfsstat/nfsstat.1 index 08f254a9613b..f51e2662636d 100644 --- a/usr.bin/nfsstat/nfsstat.1 +++ b/usr.bin/nfsstat/nfsstat.1 @@ -27,7 +27,7 @@ .\" .\" From: @(#)nfsstat.1 8.1 (Berkeley) 6/6/93 .\" -.Dd June 5, 2023 +.Dd December 27, 2023 .Dt NFSSTAT 1 .Os .Sh NAME @@ -38,7 +38,7 @@ statistics .Sh SYNOPSIS .Nm .Op Fl -libxo -.Op Fl cdEemszW +.Op Fl cdEemqszW .Op Fl w Ar wait .Sh DESCRIPTION The diff --git a/usr.bin/nfsstat/nfsstat.c b/usr.bin/nfsstat/nfsstat.c index 1c12fb765e2e..e7e9850eb943 100644 --- a/usr.bin/nfsstat/nfsstat.c +++ b/usr.bin/nfsstat/nfsstat.c @@ -512,7 +512,7 @@ static void usage(void) { (void)fprintf(stderr, - "usage: nfsstat [-cdemszW] [-w wait]\n"); + "usage: nfsstat [-cdEemqszW] [-w wait]\n"); exit(1); } From nobody Fri Jan 19 20:24:20 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGrgS3zYtz57KqD; Fri, 19 Jan 2024 20:24:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGrgS33NRz41hm; Fri, 19 Jan 2024 20:24:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695860; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0AL0y1Ns52byR70LOnxXD34EaUShbYMZ6s896Q5fgjs=; b=VhTX/MHy6XTQ1t4kT4rzqfFXepnBPgXzUuf79V+05eoGNAe9OsAi0FweMgzi380dNUfn84 WEDrGqoe6tdWVzBavmDRdeAa6tW9oK62SP5Oa8tk0RdfItd3I3cuEYXR4TRLa2LOg+6TGE rdNiQMcYN4jdm35nF5fJ4yUCQEHtn2n8F5MrTDFDfBUn9NdZxH/4FW2u0kH96tTbKCkTHT 9X4K5RoFabjVSr2P0FRpoeP3kKQlTCifNST2LEo/V6R+eeHHzHX5fLIEauVl5Rs15Uvj2F 6aE6pCumsF5x61/vnVVdgag+E7z7/sDycgd1Lac8nEJzeBPw7RhR48gG5cbmxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705695860; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0AL0y1Ns52byR70LOnxXD34EaUShbYMZ6s896Q5fgjs=; b=Nj8uoV6ZQ8b1Qao3BHFgS1FK6QapxcrLll/wT3+ObT9NZhl2oQ9aKdFWB6iQyITIwFIpmD rv5jcqP8KQRHLlPTrV48HXj/v9CiRzoCMtied3LWeUcunhdujFPOZ8jnLCRcVONxR+Dh56 hEY3fjbVPYSfIu2d7S4IgXrcDDpQaSvJ2DRcDVX1oozZ62gN80//tOMseUjqzOlVluzuf2 2QHVJ6MmdnGoeIlkQl0SVdvwLFczKX/osaVJIfo5u1CRfosWnDmEeykQfOxU45FTl6hUa1 2aVN6fuKm1ftt2uY2rWBsfaPSG7evHaJGvPTn+Nf+MR5Ohk6epD08bFTO8r96g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705695860; a=rsa-sha256; cv=none; b=ktJJajF42FNXpUoefFzMtaUEMGd3CpitkJ8JvOJY4Sw/IpYTH8iCc0vn6fKK6iVQtoQZ5E yOdoSmq+11f1sGOg7kwRS1KYN7v0JHzeXSFRFk+gZ3S1mRJWGh7UqMof0rJJxp1fnsaHSR KhquEMAewoC+2+OXwsG5lHJkXViiD5pU4OLZzz1Hq+4tHsPR7/nbxdAZi/0LFatiyvK7Ks YSRqmAp21JgSj02wzg+SdJZtHxNhQOM37Dy1S76vVaTpPZXj/hMKfkZ5o9lHX0BPaunH4U RhAflk9oOl/YjvFA9EJvcB4T7fPjHEGS3Yr4xZ195BPZ35yAERyeaSmVdTxLDg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGrgS277Qz15XR; Fri, 19 Jan 2024 20:24:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JKOKF1017261; Fri, 19 Jan 2024 20:24:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JKOK7l017258; Fri, 19 Jan 2024 20:24:20 GMT (envelope-from git) Date: Fri, 19 Jan 2024 20:24:20 GMT Message-Id: <202401192024.40JKOK7l017258@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 1726e4ced900 - stable/13 - nfsstat: make -q work without -e/-E List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 1726e4ced9009b516bdb276234718489c1a0e05f Auto-Submitted: auto-generated The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=1726e4ced9009b516bdb276234718489c1a0e05f commit 1726e4ced9009b516bdb276234718489c1a0e05f Author: Lexi Winter AuthorDate: 2023-12-28 12:56:57 +0000 Commit: Alan Somers CommitDate: 2024-01-19 20:23:42 +0000 nfsstat: make -q work without -e/-E Pull Request: https://github.com/freebsd/freebsd-src/pull/961 (cherry picked from commit f79b200b6aefb9bdcbe931c5b7ea604e259beee0) --- usr.bin/nfsstat/nfsstat.1 | 4 ++-- usr.bin/nfsstat/nfsstat.c | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/usr.bin/nfsstat/nfsstat.1 b/usr.bin/nfsstat/nfsstat.1 index f51e2662636d..200b2fc2f6ef 100644 --- a/usr.bin/nfsstat/nfsstat.1 +++ b/usr.bin/nfsstat/nfsstat.1 @@ -27,7 +27,7 @@ .\" .\" From: @(#)nfsstat.1 8.1 (Berkeley) 6/6/93 .\" -.Dd December 27, 2023 +.Dd December 28, 2023 .Dt NFSSTAT 1 .Os .Sh NAME @@ -119,7 +119,7 @@ second intervals. .It Fl z Reset statistics after displaying them. .It Fl q -Do not print header +Do not print headers. .It Fl -libxo Generate output via .Xr libxo 3 diff --git a/usr.bin/nfsstat/nfsstat.c b/usr.bin/nfsstat/nfsstat.c index e7e9850eb943..ebe1e21cccc5 100644 --- a/usr.bin/nfsstat/nfsstat.c +++ b/usr.bin/nfsstat/nfsstat.c @@ -282,7 +282,8 @@ intpr(int clientOnly, int serverOnly) xo_emit("{T:Client Info:\n"); xo_open_container("operations"); - xo_emit("{T:Rpc Counts:}\n"); + if (printtitle) + xo_emit("{T:Rpc Counts:}\n"); xo_emit("{T:Getattr/%13.13s}{T:Setattr/%13.13s}" "{T:Lookup/%13.13s}{T:Readlink/%13.13s}" @@ -333,7 +334,8 @@ intpr(int clientOnly, int serverOnly) xo_close_container("operations"); xo_open_container("rpcs"); - xo_emit("{T:Rpc Info:}\n"); + if (printtitle) + xo_emit("{T:Rpc Info:}\n"); xo_emit("{T:TimedOut/%13.13s}{T:Invalid/%13.13s}" "{T:X Replies/%13.13s}{T:Retries/%13.13s}" @@ -349,7 +351,8 @@ intpr(int clientOnly, int serverOnly) xo_close_container("rpcs"); xo_open_container("cache"); - xo_emit("{T:Cache Info:}\n"); + if (printtitle) + xo_emit("{T:Cache Info:}\n"); xo_emit("{T:Attr Hits/%13.13s}{T:Attr Misses/%13.13s}" "{T:Lkup Hits/%13.13s}{T:Lkup Misses/%13.13s}" @@ -396,7 +399,8 @@ intpr(int clientOnly, int serverOnly) if (serverOnly) { xo_open_container("serverstats"); - xo_emit("{T:Server Info:}\n"); + if (printtitle) + xo_emit("{T:Server Info:}\n"); xo_open_container("operations"); xo_emit("{T:Getattr/%13.13s}{T:Setattr/%13.13s}" @@ -449,7 +453,8 @@ intpr(int clientOnly, int serverOnly) xo_open_container("server"); - xo_emit("{T:Server Write Gathering:/%13.13s}\n"); + if (printtitle) + xo_emit("{T:Server Write Gathering:/%13.13s}\n"); xo_emit("{T:WriteOps/%13.13s}{T:WriteRPC/%13.13s}" "{T:Opsaved/%13.13s}\n"); @@ -465,7 +470,8 @@ intpr(int clientOnly, int serverOnly) xo_close_container("server"); xo_open_container("cache"); - xo_emit("{T:Server Cache Stats:/%13.13s}\n"); + if (printtitle) + xo_emit("{T:Server Cache Stats:/%13.13s}\n"); xo_emit("{T:Inprog/%13.13s}" "{T:Non-Idem/%13.13s}{T:Misses/%13.13s}\n"); xo_emit("{:inprog/%13ju}{:nonidem/%13ju}{:misses/%13ju}\n", From nobody Fri Jan 19 20:27:27 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGrl332D6z57L2M; Fri, 19 Jan 2024 20:27:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGrl31xSpz426K; Fri, 19 Jan 2024 20:27:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705696047; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u7Pi27Cm427sUJcetmhUsu0THX4WFMnGwON7w9VrmZM=; b=fGPLfEOiS0xPMRXQ5fAGaPkKY/dyYKuSVafsorJJ3Fk1GIChBa9MSOQ/pkNRd0Ka1SGY0K wWlgUDNrZd59+PYAnbtAZSp6OZuKLK9ZOE5DH7JXWJbfP61g5JdBnNXmVe7WnqFh+EGa0d nroolBSy/IKkwiV2esF/1NkOXNVpQf3f5JoKXi70UidrfluagSwAFcwLT7dhsLucUMvuzd 85tH5un1H5QBcRAwbtZJHg+xZgTIF4fAPll+9Tre81xDBRS3z3k/W5BAUUiVO3/ejEBg0p 9xKYdfs71oCBDQf9PQk9rhhoPOvBgrUm7wawXNsuUan9WlBI0WgwwIrI4+hJmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705696047; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u7Pi27Cm427sUJcetmhUsu0THX4WFMnGwON7w9VrmZM=; b=CPAEHnJMrbi3AUgR+jrBeeu3wDTpN3uOf9znaoMzgPnCwG/bCttxLI647AwGaG77lTT1Hu 40KK3uVgiZ1drKETKr4FyJYPTTEKf8auwOHF0sCSv7+/hqFHOcSqbo4hkpWauTF1C9t6uk T5JP54D4N4qc0IKj14tpyncC8IF1fklslo7fL9kX20Y+xDy0jcoxpKv6C3zaFkXlEei16Y LbtZQlfztVAMWiQSHUC0VCYDrY5FXtu69hYoz9ZLwYXhFjL5Vo5RQXbL0ddjp7hr+8WxNv qD4S8K198E+LQUKiPvNBjoXt55kvNNpwk8/k1mzU+gtu2090CeivultmrE+Ryg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705696047; a=rsa-sha256; cv=none; b=V/5fSkVjW9sEUrCsjMMvMVklY/T+VC/OsDErxRrQ0/bNBa7aN/3rnU3R1pyXFkZoDdM1zF bUfMpYpMtHBRLXPENGgtnp86EPQP92W4ZZSwYoy/bYn+YguAhrhA1yxEorKEGxUARg3jOO 9Zk7s0g4zLxerv/ATMXCbsmdZnczOb2UhMxyrnZrrUUlc15fQf+jYGXAP9vzLbNOqVKdn1 6srSOuLb1Hkett/wbuMaQkKCGZwYsHi11S9Q59Ag6PQutjWE+dw9oS4fSHAhimrn/6geQD 10VjSWwBXO6xCx13EZ5qhGqzjkbAf9i3dN2wzNMI4/XwXXvGxyifVgt1LE+gtA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGrl311D8z15XV; Fri, 19 Jan 2024 20:27:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40JKRRcf017952; Fri, 19 Jan 2024 20:27:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40JKRRDt017949; Fri, 19 Jan 2024 20:27:27 GMT (envelope-from git) Date: Fri, 19 Jan 2024 20:27:27 GMT Message-Id: <202401192027.40JKRRDt017949@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: d89317a66ff7 - stable/13 - Add a regression test for PR 276191. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d89317a66ff7874c9c04461739d7546e3042c0ad Auto-Submitted: auto-generated The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=d89317a66ff7874c9c04461739d7546e3042c0ad commit d89317a66ff7874c9c04461739d7546e3042c0ad Author: Alan Somers AuthorDate: 2024-01-08 01:03:40 +0000 Commit: Alan Somers CommitDate: 2024-01-19 20:27:09 +0000 Add a regression test for PR 276191. The bug isn't fusefs-specific, but this is the easiest way to reproduce it. PR: 276191 MFC with: bdb46c21a3e68d4395d6e0b6a205187e655532b0 Differential Revision: https://reviews.freebsd.org/D43446 Reviewed by: kib (cherry picked from commit 6b1c534927ad47e9b0dd8be1a39f56c3ea813d44) --- tests/sys/fs/fusefs/io.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/sys/fs/fusefs/io.cc b/tests/sys/fs/fusefs/io.cc index 340c54f0c949..3c14621f0b66 100644 --- a/tests/sys/fs/fusefs/io.cc +++ b/tests/sys/fs/fusefs/io.cc @@ -507,6 +507,16 @@ TEST_P(Io, resize_a_valid_buffer_while_extending) close(m_test_fd); } +/* + * mmap of a suitable region could trigger a panic. I'm not sure what + * combination of size and offset counts as "suitable". Regression test for + * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276191 + */ +TEST_P(IoCacheable, vnode_pager_generic_putpage_clean_block_at_eof) +{ + do_mapwrite(0x1bbc3, 0x3b4e0); +} + INSTANTIATE_TEST_CASE_P(Io, Io, Combine(Bool(), /* async read */ Values(0x1000, 0x10000, 0x20000), /* m_maxwrite */ From nobody Sat Jan 20 00:32:43 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGyB36FJtz57m83; Sat, 20 Jan 2024 00:32:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGyB35hZKz4RBd; Sat, 20 Jan 2024 00:32:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705710763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0xGWh8OpuzPtmReqpfKm4bP1+n8Fqqu96BM7laNXOiY=; b=GuXasYyQdZi/1VURkOY1JmrFgNXhachxKGObEvnDrZv55iBWauOIBdl6OsQsaVz+Gq266X hJq85uN/P2q4GoOa5cSGn9RPHvZpYLzITtlpkSXJoecFd8uqZmyMcfRuKjhNWv7yHdbJ1b 4esNq331J3sBSqraUEWuxPwL+67ZiZdMD5zZtmdrc9ANlxGOutfyhDM7uGKWtX5+HyyFYY C/5XBlDvHNFBxaiZy4+nQfvqIHuYrMBuX+6aXeraTN9BB/1o5Qpq1T775+BqGx2YwvdvJF KHLhNA+18ED1rXGf7tN5fmIlaPSJUeCXi8BmsSz87KKLRUXFOIZ8ZA/kjcVd1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705710763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0xGWh8OpuzPtmReqpfKm4bP1+n8Fqqu96BM7laNXOiY=; b=TZDOPpfitzd0j8froxRECUUI0GfhyHiWFYZPYLO8xIZcv2qiQZ1BthTyTopFmohUPcpF1P vb/ij/svOmGGxqBZCiTyPlTg1MZVYu+3uqZL2j6WcLz+ZqMD6La+r/+E6LO13rKeJsIpsv wIc9YJnOCZPqWRvKfDwtSmmzwV5rI1MzRxFBRFq4knoLjOiUUbsnjzydmVxvFTHqoBbJyh coziTO8DRXRtvycdxx8EkotJIveVqBMk9UAHtRU9sdWt4uwLuNUnBscWcib8UteGWEtg2k oWFLO3cfUgHRarjsHtkcGgcHnOC8TDqUUFgWH4sFsXhrT/uNvZ02VbkPgg650Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705710763; a=rsa-sha256; cv=none; b=hjvwFwY8L7UdQv+nISHrFS5KssdglAroUZMDE8aJLlkFSshNMQsHykWt8RFuGShuU57gAJ R3UdDDnC2m2DoXVDlwBlbMt1HfqkJW2+DMmw6UyXc/QtQkejy/YVQ44RSsP2h3jpkjuLWs hTnia3jStsDGHuWMDQFOv+iSOpfahIgT7bQf695B/jTutkqY/lokviFUWveYEz50ZgWv5j DAkkN2t4R1ksxX9C6KAJYZKEj5YZ6EHwCKlgTlnTcmNpKgzAIi73OXz/fhiHfvWEQoNMJl jZqZUpVxfK3O4bsMKYz2OAS7Skb4DT59M8N/QSHL0XQeU+DWOPBa0Oy6On72Mw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGyB34mB2z1CbF; Sat, 20 Jan 2024 00:32:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K0WhfO036534; Sat, 20 Jan 2024 00:32:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K0WhJN036531; Sat, 20 Jan 2024 00:32:43 GMT (envelope-from git) Date: Sat, 20 Jan 2024 00:32:43 GMT Message-Id: <202401200032.40K0WhJN036531@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: e23813c0fe03 - stable/14 - vm/vm_object.c: minor cleanup List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e23813c0fe03e2949c425e6f60066b1cd048f535 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=e23813c0fe03e2949c425e6f60066b1cd048f535 commit e23813c0fe03e2949c425e6f60066b1cd048f535 Author: Konstantin Belousov AuthorDate: 2024-01-13 01:44:39 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-20 00:32:20 +0000 vm/vm_object.c: minor cleanup (cherry picked from commit 69748e62e82a1f5ef77fd3e1b0c9d7e6a89d22b2) --- sys/vm/vm_object.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 59d03ba7a2ae..d3337c038113 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -64,10 +64,8 @@ * Virtual memory object module. */ -#include #include "opt_vm.h" -#include #include #include #include @@ -76,19 +74,18 @@ #include #include #include -#include -#include #include -#include /* for curproc, pageproc */ +#include +#include #include -#include +#include +#include #include #include #include #include #include #include -#include #include #include @@ -2613,8 +2610,7 @@ vm_object_list_handler(struct sysctl_req *req, bool swap_only) } strlcpy(kvo->kvo_path, fullpath, sizeof(kvo->kvo_path)); - if (freepath != NULL) - free(freepath, M_TEMP); + free(freepath, M_TEMP); /* Pack record size down */ kvo->kvo_structsize = offsetof(struct kinfo_vmobject, kvo_path) From nobody Sat Jan 20 00:33:15 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGyBg5KXMz57lh2; Sat, 20 Jan 2024 00:33:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGyBg4Wbdz4RnQ; Sat, 20 Jan 2024 00:33:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705710795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+gUA77kRkwHJ7rgF1sZmRorleP7qlmutqSIYpcXnT+E=; b=UbuopKp2vHTyVYyjoaY7uAFEpfoHnYe7pE674K9zixSJtrouoywIsWDJM8xlP86X9Eexu6 K3eLUxt4oiu7VtcHHbMDPILyn2qjh1nUt1f6bxnGsXj5F7JVRVyMZih+UiTP0d/SDspthK pva0PuMOMbJQRn0aaLmmITLmTpE04t+qsJ6b7pUazphGyzaIPoEvKz/PMV1sdkoHNyBqJO feJpQ/QdN/mrOM5PHf1eNdP8VWeFyjSucIznph151P/OquGRUSi9lSxX9tzUt6nIBkd5ny 8Z9WDcyAI/2sfO9P7cweb3vr7eoz+S9j9Dy+0l7roE9ZPv6bRHjYm0Y1yL6O8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705710795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+gUA77kRkwHJ7rgF1sZmRorleP7qlmutqSIYpcXnT+E=; b=DAxbHQv61wSFSTAOmNkfITeKnvyY0a9SAKbndE7P/GRuKLDcKegTI9GScvrchFHK62b1BE UxxC4dpYj1Jg9WcoNyNd7u5bhMDDhK3AZy+tsfJrGDwKV/gr5TLh4K+O4tZLASrKEP1p10 sFXWudIosSRSm04PSmbdZ3HdC0eNVB5Uz6UnyEfE7czuy3aSvJwTv8MlKMcbKKlzJWf3jf No3kLkQNG5Ps/kP+CcpcJm91qFB4KH7yqEvU0tv0gOKOBMDqc1eMfE/tzGhXryyNQZcBn6 8BP7KDyG3XKxtyp048eUTgA0s1QiRIuSuL0YnXtXsACCJ6No8o/CpyYq5ZxF8w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705710795; a=rsa-sha256; cv=none; b=wCmrl+FdzIDkJD8NiqLoKIYV2zpOc0+TyXZfAgpKVf5Kher1ODokxgIT0NtvIbWNDEDTIW HIOAx8on0Q9yhb3lccONeN4PXGBYGhg8RmXZ7vHtcPr27UwtTZbjJ5YzwnTn+nurBlzJGU qWh7eAQBc2Z3vcz974Iqmzt+oH9aNb4cKFQX+XVOzr/zwozg/2gzAcnfTYAyBiRafusj36 nVmY1Mg7davFPq0eDOtNlhlPDd6+yV6r2pGg4Ur/HEKU9f9Fm1Kp7eMevvE5bPmdwG+SA1 RquhVZ8Fyxvxhm/sqfV4igsQCNCitQo2Xx31XORn251WROxozIG0n1ImInjbUg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGyBg3XgWz1CbG; Sat, 20 Jan 2024 00:33:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K0XFip036788; Sat, 20 Jan 2024 00:33:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K0XFBd036785; Sat, 20 Jan 2024 00:33:15 GMT (envelope-from git) Date: Sat, 20 Jan 2024 00:33:15 GMT Message-Id: <202401200033.40K0XFBd036785@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: edef4d715eea - stable/13 - vm/vm_object.c: minor cleanup List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: edef4d715eead740df4278cea9822aa29254a2a0 Auto-Submitted: auto-generated The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=edef4d715eead740df4278cea9822aa29254a2a0 commit edef4d715eead740df4278cea9822aa29254a2a0 Author: Konstantin Belousov AuthorDate: 2024-01-13 01:44:39 +0000 Commit: Konstantin Belousov CommitDate: 2024-01-20 00:32:53 +0000 vm/vm_object.c: minor cleanup (cherry picked from commit 69748e62e82a1f5ef77fd3e1b0c9d7e6a89d22b2) --- sys/vm/vm_object.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 675ac2901c6c..34d2de1ee875 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -64,10 +64,8 @@ * Virtual memory object module. */ -#include #include "opt_vm.h" -#include #include #include #include @@ -76,19 +74,18 @@ #include #include #include -#include -#include #include -#include /* for curproc, pageproc */ +#include +#include #include -#include +#include +#include #include #include #include #include #include #include -#include #include #include @@ -2657,8 +2654,7 @@ vm_object_list_handler(struct sysctl_req *req, bool swap_only) } strlcpy(kvo->kvo_path, fullpath, sizeof(kvo->kvo_path)); - if (freepath != NULL) - free(freepath, M_TEMP); + free(freepath, M_TEMP); /* Pack record size down */ kvo->kvo_structsize = offsetof(struct kinfo_vmobject, kvo_path) From nobody Sat Jan 20 01:45:40 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGzpD5cg4z57tFx; Sat, 20 Jan 2024 01:45:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGzpD56C6z4brD; Sat, 20 Jan 2024 01:45:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715140; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+WUEGjV/qN5SmrztGA8x+JB0mxregcGdi62Fz27gm9U=; b=uup5XNPl5rYwt/hxh8vLVOKiKCTtgY1QBhY6xrVDqXe8S4bWKYJLfROi6/O7H9F6d9n3eg mrSNy9b7PsNecqV9XUuSFyaMkFrEP7lHCWOL64S/DMSA3bKNPAnzIEFPYo61r9h2+oD6ak AoaCG2aRFtWXcgtuq5hztcK9GYCrK7oxXs4Ssv4FlvHbk/d4APt05jvvco6L5dpZwB0Azs l4bCMgwsqHvtYiLmworD2RiwM8dirdD36YXfuqH0zw6xjKLPaCNuiarXoAh00FQQLvyT6p 01K8iWg1grZJbfp4HvuANF2HZ1CRNcMJohAKTtyMPz2E6hK2vaZ1DVh4jTVdkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715140; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+WUEGjV/qN5SmrztGA8x+JB0mxregcGdi62Fz27gm9U=; b=dhAxr0fAcdPl3hOMLn9+IrTu0aiyBMYFUkoJp87MIsFI8zAaqQlp+RQiL7ReL4Befa8+qC 0vn3TrgZFU7mI5WT1No6IkMsLYwyaVHwUQMQe/oq2LjVhViOgPBCkRDPIiBje3qIj1JxAY nPMoDCClZm+z6SFF+Nk988ro/8o1Hhws/ZBo9V16hle6d7m2b+NnsSV4U2uNXU+sfF3pfn HjRqDrYmEJyGc8+0IUyotbZ5TEyFFW/3lQ8/fSfGe3ryt1XAYD9wYOWtO2XcMTnRq3fuSc eopLzsWtWaJ2vBHQ5LZQflR/cHZ7hgQ9CwVAsbpntOXFuJWc8t3ejSPvuFtk6w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715140; a=rsa-sha256; cv=none; b=vHRNKHePKM8ZpFTenO6E5EoZXaipACbqp7vV2AkrGiAEVbec5M6IfG6WF5J1QC8VOo6zUe LgGRe4dSuO7y3uBMlE7aTzmYEg+KqbSoyrBpV6b/+5hkIeWiW77tCBwlmit1ra6Gnr16FK hpdVQjo0Uy54b3OwgHbjG4k/Ny5Jzfix7ls8x0fC9cW875GixaBndhFkeXa5p1uXRA+q7c 7c0dgrc1NpgzOns9/loZiy77rbpL9+WlgFOe/Aw/PRL5XiVPoyPPBDlPylZLlwdNcaXZ2f F6XBa3hq85cIrEC8EpxPy+sVaD75yoEShUO56ChqdgVaaQcZRVWrDjW9JnQ8CA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGzpD3sq9zFqn; Sat, 20 Jan 2024 01:45:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1jenr055049; Sat, 20 Jan 2024 01:45:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1jeXX055046; Sat, 20 Jan 2024 01:45:40 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:45:40 GMT Message-Id: <202401200145.40K1jeXX055046@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: d34f4baaf138 - stable/14 - nfscl: Only update atime for Copy when noatime is not specified List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d34f4baaf13802759869d5ad341a4ca806b2f0fe Auto-Submitted: auto-generated The branch stable/14 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=d34f4baaf13802759869d5ad341a4ca806b2f0fe commit d34f4baaf13802759869d5ad341a4ca806b2f0fe Author: Rick Macklem AuthorDate: 2024-01-12 00:38:33 +0000 Commit: Rick Macklem CommitDate: 2024-01-20 01:44:23 +0000 nfscl: Only update atime for Copy when noatime is not specified Commit 57ce37f9dcd0 modified the NFSv4.2 Copy operation so that it will update atime on the infd file whenever possible. This is done by adding a Setattr of TimeAccess for the input file. This patch disables this change for the case of an NFSv4.2 mount with the "noatime" mount option, which avoids the additional Setattr of TimeAccess operation. (cherry picked from commit cc760de2183f9c9a4099783d3ff4c770521a4cb6) --- sys/fs/nfs/nfs_commonsubs.c | 2 +- sys/fs/nfsclient/nfs_clrpcops.c | 28 +++++++++++++++++----------- sys/fs/nfsclient/nfs_clvnops.c | 28 ++++++++++++++++------------ 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c index 832713e6c1de..f2305795e53e 100644 --- a/sys/fs/nfs/nfs_commonsubs.c +++ b/sys/fs/nfs/nfs_commonsubs.c @@ -296,7 +296,7 @@ static struct { { NFSV4OP_OPEN, 8, "CreateLayGet", 12, }, { NFSV4OP_IOADVISE, 1, "Advise", 6, }, { NFSV4OP_ALLOCATE, 2, "Allocate", 8, }, - { NFSV4OP_SAVEFH, 6, "Copy", 4, }, + { NFSV4OP_SAVEFH, 5, "Copy", 4, }, { NFSV4OP_SEEK, 2, "Seek", 4, }, { NFSV4OP_SEEK, 1, "SeekDS", 6, }, { NFSV4OP_GETXATTR, 2, "Getxattr", 8, }, diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index e9acedfb6473..09660730d485 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -8728,7 +8728,7 @@ nfsrpc_copyrpc(vnode_t invp, off_t inoff, vnode_t outvp, off_t outoff, int *outattrflagp, bool consecutive, int *commitp, struct ucred *cred, NFSPROC_T *p) { - uint32_t *tl; + uint32_t *tl, *opcntp; int error; struct nfsrv_descript nfsd; struct nfsrv_descript *nd = &nfsd; @@ -8737,14 +8737,15 @@ nfsrpc_copyrpc(vnode_t invp, off_t inoff, vnode_t outvp, off_t outoff, struct vattr va; uint64_t len; - nmp = VFSTONFS(outvp->v_mount); + nmp = VFSTONFS(invp->v_mount); *inattrflagp = *outattrflagp = 0; *commitp = NFSWRITE_UNSTABLE; len = *lenp; *lenp = 0; if (len > nfs_maxcopyrange) len = nfs_maxcopyrange; - NFSCL_REQSTART(nd, NFSPROC_COPY, invp, cred); + nfscl_reqstart(nd, NFSPROC_COPY, nmp, VTONFS(invp)->n_fhp->nfh_fh, + VTONFS(invp)->n_fhp->nfh_len, &opcntp, NULL, 0, 0, cred); /* * First do a Setattr of atime to the server's clock * time. The FreeBSD "collective" was of the opinion @@ -8753,13 +8754,17 @@ nfsrpc_copyrpc(vnode_t invp, off_t inoff, vnode_t outvp, off_t outoff, * handled well if the server replies NFSERR_DELAY to * the Setattr operation. */ - NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED); - *tl = txdr_unsigned(NFSV4OP_SETATTR); - nfsm_stateidtom(nd, instateidp, NFSSTATEID_PUTSTATEID); - VATTR_NULL(&va); - va.va_atime.tv_sec = va.va_atime.tv_nsec = 0; - va.va_vaflags = VA_UTIMES_NULL; - nfscl_fillsattr(nd, &va, invp, 0, 0); + if ((nmp->nm_mountp->mnt_flag & MNT_NOATIME) == 0) { + NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED); + *tl = txdr_unsigned(NFSV4OP_SETATTR); + nfsm_stateidtom(nd, instateidp, NFSSTATEID_PUTSTATEID); + VATTR_NULL(&va); + va.va_atime.tv_sec = va.va_atime.tv_nsec = 0; + va.va_vaflags = VA_UTIMES_NULL; + nfscl_fillsattr(nd, &va, invp, 0, 0); + /* Bump opcnt from 7 to 8. */ + *opcntp = txdr_unsigned(8); + } /* Now Getattr the invp attributes. */ NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED); @@ -8798,7 +8803,8 @@ nfsrpc_copyrpc(vnode_t invp, off_t inoff, vnode_t outvp, off_t outoff, if (error != 0) return (error); /* Skip over the Setattr reply. */ - if ((nd->nd_flag & ND_NOMOREDATA) == 0) { + if ((nd->nd_flag & ND_NOMOREDATA) == 0 && + (nmp->nm_mountp->mnt_flag & MNT_NOATIME) == 0) { NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); if (*(tl + 1) == 0) { error = nfsrv_getattrbits(nd, &attrbits, NULL, NULL); diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c index 0014f8a26d20..0b8c587a542c 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -3934,18 +3934,22 @@ relock: */ if (inoff >= vap->va_size) { *ap->a_lenp = len = 0; - VATTR_NULL(&va); - va.va_atime.tv_sec = va.va_atime.tv_nsec = 0; - va.va_vaflags = VA_UTIMES_NULL; - inattrflag = 0; - error = nfsrpc_setattr(invp, &va, NULL, - ap->a_incred, curthread, &innfsva, - &inattrflag); - if (inattrflag != 0) - ret = nfscl_loadattrcache(&invp, - &innfsva, NULL, 0, 1); - if (error == 0 && ret != 0) - error = ret; + if ((nmp->nm_mountp->mnt_flag & MNT_NOATIME) == + 0) { + VATTR_NULL(&va); + va.va_atime.tv_sec = 0; + va.va_atime.tv_nsec = 0; + va.va_vaflags = VA_UTIMES_NULL; + inattrflag = 0; + error = nfsrpc_setattr(invp, &va, NULL, + ap->a_incred, curthread, &innfsva, + &inattrflag); + if (inattrflag != 0) + ret = nfscl_loadattrcache(&invp, + &innfsva, NULL, 0, 1); + if (error == 0 && ret != 0) + error = ret; + } } else if (inoff + len > vap->va_size) *ap->a_lenp = len = vap->va_size - inoff; } else From nobody Sat Jan 20 01:50:45 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGzw52SpCz57tYq; Sat, 20 Jan 2024 01:50:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGzw51twlz4cKG; Sat, 20 Jan 2024 01:50:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715445; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=exBR1UJJOMA2SwCRWfHYUTKD7/wgbzNpG6ERxvd4wQo=; b=HD34+rdZZtn9inQJHfI4/GWPCIyeOpMjnbnFuXENzQAIbGvR6FedSQ1iInMZjPEIf0zrvO oL1h3hDeKh2+9TW1Hppp6qTzcXwKMLJ/JoQ2sXM6NIKhOKxdyKjukWsWb04u0S06Q1hXER cWDuOuAOnLyOr+PUKPhYeoJ8XBharv/qUZlGWQYZT3d+/3H55D2jlYG8euc4dxU2u3aqnc lZ7QWTlyfeSxkjcGkKxJQTXkQIUmWDj9Kv9e9lQfcc4qdkXupSIVH9ZhuD2dE9k8xjdnY5 oMQgI3ksT58UoXgVtjpyGZkMPFxYttXvscjBpdGSl4DAUHinN3ck1SxZ/By19A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715445; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=exBR1UJJOMA2SwCRWfHYUTKD7/wgbzNpG6ERxvd4wQo=; b=FN7hYE+GZZVERfzmxhnZM5jJXQlR6zoldjAm1GjGi+kNis5j/Lk/qKin4oympPOftDZctf UP86GKaLHnRDPkO9Ps+MzEcKsz1ZkkjYutr1QtJClf7OEscYXWtnTvl0ZONimlGHfcfoqV eJueilnSGEbU946CFp6c2oYancyPj9No+OSy3pUDD2mjBjbepX/8abNYgjA1q3Nn6qqGaR YOao1k4XUH3XMSsDaCQQJ3iizTCJeNmGpKNdBad2NV6SM0uLOMg8hMui/nxmk1CA1hdJAq Jcb51woFfVcdhBHEZ0hfzr4Gxsv19DH0JlIGEMUMekSTKxWBk6ZXZk5kMXuEhQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715445; a=rsa-sha256; cv=none; b=hHZnm86SGRKczkP/NKCHGokLp2JQAeMt9xC3BJGcm2QuDBthCZN7mzkIUXrVRIzw3VY2Nq PzH9AYNVV06ArIrAJMAJLlDxDZjhDYnYyjBvhYPIchQc65F7QnqIrWN50HXRGMzOXmeOa0 xJDl9g06wTGHOYPRKm8FxW5mEAF9A4aoPcW8ocZvAFK08pKFIhszyX2xvEhgFSxuhRfCj1 hDGAwBRIRUNkn8zPRtooMwF3BiPYr5JP90vRsXaaf5TIerCjlXvIKNkjeAKE1K7VvmIEPP QnlKp/j1Idl5otAEOvJWs2g2KfBCh9VWcMNRN3n5Q7kMd+7V2hxlRFd+pmaVcw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGzw50xMKzG9N; Sat, 20 Jan 2024 01:50:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1ojDR064424; Sat, 20 Jan 2024 01:50:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1oj5R064421; Sat, 20 Jan 2024 01:50:45 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:50:45 GMT Message-Id: <202401200150.40K1oj5R064421@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 946afb62aba5 - stable/14 - zfsd: fault disks that generate too many I/O delay events List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 946afb62aba5c45bc5d14a97ffacd12dc9cb1f93 Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=946afb62aba5c45bc5d14a97ffacd12dc9cb1f93 commit 946afb62aba5c45bc5d14a97ffacd12dc9cb1f93 Author: Alan Somers AuthorDate: 2023-07-12 20:46:27 +0000 Commit: Alan Somers CommitDate: 2024-01-20 01:50:25 +0000 zfsd: fault disks that generate too many I/O delay events If ZFS reports that a disk had at least 8 I/O operations over 60s that were each delayed by at least 30s (implying a queue depth > 4 or I/O aggregation, obviously), fault that disk. Disks that respond this slowly can degrade the entire system's performance. Sponsored by: Axcient Reviewed by: delphij Differential Revision: https://reviews.freebsd.org/D42825 (cherry picked from commit d565784a7ebaa59e26febdcfd4a60329786ea5f5) --- cddl/usr.sbin/zfsd/case_file.cc | 20 ++++- cddl/usr.sbin/zfsd/case_file.h | 6 +- cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc | 66 +++++++++++++++ tests/sys/cddl/zfs/tests/zfsd/Makefile | 1 + .../sys/cddl/zfs/tests/zfsd/zfsd_fault_002_pos.ksh | 99 ++++++++++++++++++++++ tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh | 32 +++++++ 6 files changed, 220 insertions(+), 4 deletions(-) diff --git a/cddl/usr.sbin/zfsd/case_file.cc b/cddl/usr.sbin/zfsd/case_file.cc index 3728913b646b..39f89fbbf7c8 100644 --- a/cddl/usr.sbin/zfsd/case_file.cc +++ b/cddl/usr.sbin/zfsd/case_file.cc @@ -470,7 +470,8 @@ CaseFile::ReEvaluate(const ZfsEvent &event) consumed = true; } else if (event.Value("class") == "ereport.fs.zfs.io" || - event.Value("class") == "ereport.fs.zfs.checksum") { + event.Value("class") == "ereport.fs.zfs.checksum" || + event.Value("class") == "ereport.fs.zfs.delay") { m_tentativeEvents.push_front(event.DeepCopy()); RegisterCallout(event); @@ -1171,6 +1172,13 @@ IsIOEvent(const Event* const event) return ("ereport.fs.zfs.io" == event->Value("type")); } +/* Does the argument event refer to an IO delay? */ +static bool +IsDelayEvent(const Event* const event) +{ + return ("ereport.fs.zfs.delay" == event->Value("type")); +} + bool CaseFile::ShouldDegrade() const { @@ -1181,8 +1189,14 @@ CaseFile::ShouldDegrade() const bool CaseFile::ShouldFault() const { - return (std::count_if(m_events.begin(), m_events.end(), - IsIOEvent) > ZFS_DEGRADE_IO_COUNT); + bool should_fault_for_io, should_fault_for_delay; + + should_fault_for_io = std::count_if(m_events.begin(), m_events.end(), + IsIOEvent) > ZFS_DEGRADE_IO_COUNT; + should_fault_for_delay = std::count_if(m_events.begin(), m_events.end(), + IsDelayEvent) > ZFS_FAULT_DELAY_COUNT; + + return (should_fault_for_io || should_fault_for_delay); } nvlist_t * diff --git a/cddl/usr.sbin/zfsd/case_file.h b/cddl/usr.sbin/zfsd/case_file.h index e6c7010af234..9566b1586ef5 100644 --- a/cddl/usr.sbin/zfsd/case_file.h +++ b/cddl/usr.sbin/zfsd/case_file.h @@ -242,7 +242,11 @@ protected: * to transition a vdev from healthy to degraded * status. */ - ZFS_DEGRADE_IO_COUNT = 50 + ZFS_DEGRADE_IO_COUNT = 50, + /** + * The number of delay errors on a vdev required to fault it + */ + ZFS_FAULT_DELAY_COUNT = 8, }; static CalloutFunc_t OnGracePeriodEnded; diff --git a/cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc b/cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc index caeb077a3de8..d76abb54c9ed 100644 --- a/cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc +++ b/cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc @@ -519,6 +519,72 @@ TEST_F(CaseFileTest, PoolDestroy) EXPECT_TRUE(m_caseFile->ReEvaluate(*zfs_event)); } +/* + * A Vdev with a very large number of Delay errors should fault + * For performance reasons, RefreshVdevState should be called at most once + */ +TEST_F(CaseFileTest, VeryManyDelayErrors) +{ + EXPECT_CALL(*m_caseFile, RefreshVdevState()) + .Times(::testing::AtMost(1)) + .WillRepeatedly(::testing::Return(true)); + + for(int i=0; i<100; i++) { + stringstream evStringStream; + evStringStream << + "!system=ZFS " + "class=ereport.fs.zfs.delay " + "ena=12091638756982918145 " + "parent_guid=13237004955564865395 " + "parent_type=raidz " + "pool=testpool.4415 " + "pool_context=0 " + "pool_failmode=wait " + "pool_guid=456 " + "pool_state= 0" + "subsystem=ZFS " + "time="; + evStringStream << i << "0000000000000000 "; + evStringStream << "timestamp=" << i << " "; + evStringStream << + "type=ereport.fs.zfs.delay " + "vdev_ashift=12 " + "vdev_cksum_errors=0 " + "vdev_complete_ts=948336226469 " + "vdev_delays=77 " + "vdev_delta_ts=123998485899 " + "vdev_guid=123 " + "vdev_path=/dev/da400 " + "vdev_read_errors=0 " + "vdev_spare_guids= " + "vdev_type=disk " + "vdev_write_errors=0 " + "zio_blkid=622 " + "zio_delay=31000041101 " + "zio_delta=123998485899 " + "zio_err=0 " + "zio_flags=1572992 " + "zio_level=-2 " + "zio_object=0 " + "zio_objset=37 " + "zio_offset=25598976 " + "zio_pipeline=48234496 " + "zio_priority=3 " + "zio_size=1024" + "zio_stage=33554432 " + "zio_timestamp=824337740570 "; + Event *event(Event::CreateEvent(*m_eventFactory, + evStringStream.str())); + ZfsEvent *zfs_event = static_cast(event); + EXPECT_TRUE(m_caseFile->ReEvaluate(*zfs_event)); + delete event; + } + + m_caseFile->SpliceEvents(); + EXPECT_FALSE(m_caseFile->ShouldDegrade()); + EXPECT_TRUE(m_caseFile->ShouldFault()); +} + /* * A Vdev with a very large number of IO errors should fault * For performance reasons, RefreshVdevState should be called at most once diff --git a/tests/sys/cddl/zfs/tests/zfsd/Makefile b/tests/sys/cddl/zfs/tests/zfsd/Makefile index a1863a03196c..7d3f29a7359e 100644 --- a/tests/sys/cddl/zfs/tests/zfsd/Makefile +++ b/tests/sys/cddl/zfs/tests/zfsd/Makefile @@ -21,6 +21,7 @@ ${PACKAGE}FILES+= zfsd_autoreplace_003_pos.ksh ${PACKAGE}FILES+= zfsd_degrade_001_pos.ksh ${PACKAGE}FILES+= zfsd_degrade_002_pos.ksh ${PACKAGE}FILES+= zfsd_fault_001_pos.ksh +${PACKAGE}FILES+= zfsd_fault_002_pos.ksh ${PACKAGE}FILES+= zfsd_hotspare_001_pos.ksh ${PACKAGE}FILES+= zfsd_hotspare_002_pos.ksh ${PACKAGE}FILES+= zfsd_hotspare_003_pos.ksh diff --git a/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_002_pos.ksh b/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_002_pos.ksh new file mode 100644 index 000000000000..d8de1ceaff4b --- /dev/null +++ b/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_002_pos.ksh @@ -0,0 +1,99 @@ +#!/usr/local/bin/ksh93 -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright (c) 2023 Axcient. All rights reserved. +# Use is subject to license terms. +# +# $FreeBSD$ + +. $STF_SUITE/include/libtest.kshlib +. $STF_SUITE/include/libgnop.kshlib + +################################################################################ +# +# __stc_assertion_start +# +# ID: zfsd_fault_002_pos +# +# DESCRIPTION: +# If a vdev experiences delayed I/O, it will become faulted. +# +# +# STRATEGY: +# 1. Create a storage pool. Use gnop vdevs so we can inject I/O delays. +# 2. Inject IO delays while doing IO to the pool. +# 3. Verify that the vdev becomes FAULTED. +# 4. ONLINE it and verify that it resilvers and joins the pool. +# +# TESTABILITY: explicit +# +# TEST_AUTOMATION_LEVEL: automated +# +# __stc_assertion_end +# +############################################################################### + +verify_runnable "global" + +log_assert "ZFS will fault a vdev that experiences delayed I/O" + +ensure_zfsd_running + +DISK0_NOP=${DISK0}.nop +DISK1_NOP=${DISK1}.nop + +log_must create_gnops $DISK0 $DISK1 + +for type in "raidz" "mirror"; do + log_note "Testing raid type $type" + + # Create a pool on the supplied disks + create_pool $TESTPOOL $type "$DISK0_NOP" "$DISK1_NOP" + log_must $ZFS create $TESTPOOL/$TESTFS + + # Cause some IO delays writing to the pool + while true; do + # ZFS currently considers an I/O to be "slow" if it's delayed + # for 30 seconds (zio_slow_io_ms). + log_must gnop configure -d 31000 -x 100 "$DISK1_NOP" + $DD if=/dev/zero bs=128k count=1 >> \ + /$TESTPOOL/$TESTFS/$TESTFILE 2> /dev/null + $FSYNC /$TESTPOOL/$TESTFS/$TESTFILE + # Check to see if the pool is faulted yet + $ZPOOL status $TESTPOOL | grep -q 'state: DEGRADED' + if [ $? == 0 ] + then + log_note "$TESTPOOL got degraded" + $ZPOOL status -s $TESTPOOL + break + fi + done + + log_must check_state $TESTPOOL $TMPDISK "FAULTED" + + log_must gnop configure -x 0 "$DISK1_NOP" + destroy_pool $TESTPOOL + log_must $RM -rf /$TESTPOOL +done + +log_pass diff --git a/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh b/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh index de9bd7bc94ed..fe4ac4866ed3 100755 --- a/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh +++ b/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh @@ -56,6 +56,37 @@ zfsd_fault_001_pos_cleanup() } +atf_test_case zfsd_fault_002_pos cleanup +zfsd_fault_002_pos_head() +{ + atf_set "descr" "ZFS will fault a vdev that experiences delayed I/O" + atf_set "require.progs" "ksh93 gnop zfs zpool zfsd" + atf_set "timeout" 300 +} +zfsd_fault_002_pos_body() +{ + . $(atf_get_srcdir)/../../include/default.cfg + . $(atf_get_srcdir)/../hotspare/hotspare.kshlib + . $(atf_get_srcdir)/../hotspare/hotspare.cfg + . $(atf_get_srcdir)/zfsd.cfg + + verify_disk_count "$DISKS" 2 + verify_zfsd_running + ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" + ksh93 $(atf_get_srcdir)/zfsd_fault_002_pos.ksh + if [[ $? != 0 ]]; then + save_artifacts + atf_fail "Testcase failed" + fi +} +zfsd_fault_002_pos_cleanup() +{ + . $(atf_get_srcdir)/../../include/default.cfg + . $(atf_get_srcdir)/zfsd.cfg + + ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" +} + atf_test_case zfsd_degrade_001_pos cleanup zfsd_degrade_001_pos_head() { @@ -631,6 +662,7 @@ zfsd_import_001_pos_cleanup() atf_init_test_cases() { atf_add_test_case zfsd_fault_001_pos + atf_add_test_case zfsd_fault_002_pos atf_add_test_case zfsd_degrade_001_pos atf_add_test_case zfsd_degrade_002_pos atf_add_test_case zfsd_hotspare_001_pos From nobody Sat Jan 20 01:51:34 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGzx23lNJz57txQ; Sat, 20 Jan 2024 01:51:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGzx23CMzz4ccj; Sat, 20 Jan 2024 01:51:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715494; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=urbuhp9yK09fQoKeDcvNTXD/vHbNHN9u+Bu/CYLCtj4=; b=X0vf/zH4e8KcK2dSHttW4adB02KRIVlwK3Wiz5eY7eti3mzhqtC9Wnv0SVL80bAuanx8DK +vZjMcVnZ/9SVsHqIkjYjM48X5+AFTpgYnMEygMhlTpytos8Hcc7k6Oq0u+HkjpZmE2XBz lU2M2ScqvOXbkiN9SHR5fqWi+bQEnwekeoUl5x2AOsnK1oVfOI882AREUoK081CgrIaAMm AIl+3AMgogZj9eZzMUaiDXRcGMeijqP+E2wRJfl12SoFpIMEc9QyR/CvdZpD277wPhYG2H UqSjayvQONJwXODmASUSzxqldU0kcbP+u+SNkeD9tpEx2DqeaNYD/W0g0jgxVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715494; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=urbuhp9yK09fQoKeDcvNTXD/vHbNHN9u+Bu/CYLCtj4=; b=opnCu8RMmoZkVK0VqQAzXvG+IoLUtrBX+yNaUuB6HTnH/YkHHumkpRl+4P1i/Nw0X6tY5u MNcvfkCbgbZjN1JSD8CtMWa/s4Nu4TfpysUGjHavJwC+lE5MeXGiEPx6VTS2RE5pEjua4q /bH7cPRmbbkHnEA2kIGMkZuwsJd4CfH1EYrnGlIdYUtg/OZ157aJliGWfr2I/UdNhW2PZh T4pVETv+qOhKTZwe3/EnXy+r3Mk5vhZ3h1OdJtv7VHJjnLv24EZVKdWqv/9z59FXC+0fA0 TyWMPGBgktliVdBLynVWg0ZygLbawBNPRUTRWLK+Dw/fuTqQSHeRe7wUxDBUkQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715494; a=rsa-sha256; cv=none; b=D2j3zaqekuNyncubZKgCQYgdCDNYx75AsuoA8QvXxPPEVwmmX4ztsnm+hxAdiAcX2FVL3/ O2Vuo+HKDmy4oeKRt6nKWJf3fGl2X2vI7PV0KgcBGTY36V357wIZy6PKpD0V/oPUDxCtgM idTXFpVpEkyfLjzYGPLYXc9GEHbRLoaFhHL5l/N5fUn/lgCmcsmy1aEeo93VKUA3PoSEZ1 0/3XQvZAK0AkFq+szdUat/w1riDpaIVqVvqzvNi82g4BS+kl0a4IlPAFt2JUgANhuGTzSo sz3eIktrjSJrk0AIehwmc8n0Iq0rFaEJNIGICURlnZ+ydYmHSvGy10f89dotsw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGzx22Fp0zG9d; Sat, 20 Jan 2024 01:51:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1pYxV070170; Sat, 20 Jan 2024 01:51:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1pYIo070167; Sat, 20 Jan 2024 01:51:34 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:51:34 GMT Message-Id: <202401200151.40K1pYIo070167@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: f9f7404cd5c7 - stable/14 - sigaction.2: clarify that fork isn't async-signal-safe, but _Fork is List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f9f7404cd5c7a1394dd18525fea67233fb62c8e5 Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=f9f7404cd5c7a1394dd18525fea67233fb62c8e5 commit f9f7404cd5c7a1394dd18525fea67233fb62c8e5 Author: Alan Somers AuthorDate: 2023-12-01 15:19:24 +0000 Commit: Alan Somers CommitDate: 2024-01-20 01:51:27 +0000 sigaction.2: clarify that fork isn't async-signal-safe, but _Fork is [skip ci] Sponsored by: Axcient Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D42865 (cherry picked from commit c2ed7a63604fc86244adee2966e19f8aba2a07cb) --- lib/libc/sys/sigaction.2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libc/sys/sigaction.2 b/lib/libc/sys/sigaction.2 index 913ad60a6b40..1691c5f9e734 100644 --- a/lib/libc/sys/sigaction.2 +++ b/lib/libc/sys/sigaction.2 @@ -27,7 +27,7 @@ .\" .\" From: @(#)sigaction.2 8.2 (Berkeley) 4/3/94 .\" -.Dd June 29, 2020 +.Dd December 1, 2023 .Dt SIGACTION 2 .Os .Sh NAME @@ -392,7 +392,7 @@ Base Interfaces: .Fn fchown , .Fn fchownat , .Fn fcntl , -.Fn fork , +.Fn _Fork , .Fn fstat , .Fn fstatat , .Fn fsync , From nobody Sat Jan 20 01:51:52 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGzxP0fc3z57tpB; Sat, 20 Jan 2024 01:51:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGzxP0CJ4z4cyt; Sat, 20 Jan 2024 01:51:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715513; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FnDxcn1ORAYdHl7sAZrpYjwvcdsN3ul19sjrN5QiK0I=; b=u6U3h0B2KBoO8SeRJk//PYE4JVn1dA0G6XFMmpmsMlM3GbfW9dxOJ3ISMUJPF5gOEYXzXb ucxgRQPBcdjcd5XA9wr0zmxjArFBSTpv8UGJS2W5yzRO9j/6c5s1yva4kiPx3CyT32jVqb aA0/pfkDa9GRk38EsjBadUqTDM58gdTdorDwgPJOThzGjP6wphl+R7U5wdypOJsbchhy5f Pmlz0gJ3P9CV6rP8ImnN3oF6amG+G6wHw1CJwdTy+78Q55WAsXrgslaXaETmtdgkvTBU4+ hBxDMAUuiIAo36YGTyTjnR4TsaQE/Qc/NpMVnBASWwjVolMiXT/eOMg0wwXgyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715513; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FnDxcn1ORAYdHl7sAZrpYjwvcdsN3ul19sjrN5QiK0I=; b=RaMjdVfkfEqRPRbJ9BjwFtdiX+RvTPof4aJo53vKUPiBc0qXX5+orFdQza0YT+icZyejLn 33oKDG3RpsegPqKMaSdpOq8yiwoPKY4LKdo4iZsmH15JVfkcW/YVEIQ8Nn19X+8EKbigJm XkUfeEybgyHOzSoVxPoXpho48OPruXoa82jgsTzK71ZtIXfyjQzgRU/UeXGj7yXZO8l9cz whDic9YHaFLVoRvZJnE6tbF4LdL//0SluDcDEKN8P9cBFE9JGPGCUmbv1zLGvjRFwlYJIh HjmdemIjw/nB7BkIL6lEbu0JVEODJdi9Qo6ciT53NUMF6vQf/FSL0/o1/rib+g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715513; a=rsa-sha256; cv=none; b=cnF/MV+tBmSC0zXNwbJyXw7kpMjGXnVDJlRyfDycUB8iYYYxVMfHxXbNNHWP3puFmNiGaV BWR6FFndUEByE1gqgg3FHWKpJLa3EEioB02T3DBZAAovdruflMVN0++p3ddwQQ4d+jTG+o 3vEFSOHy79XjOBfTRrLpwA9NxPuK5ZjKh7g/L1+st5hRm2L4NdgvMn4mKgnwCNg0/1A2R/ MuWdhLWRpP/4RPTqLAAbGtAhDv2dtBt+wnyuxB104G5oK/KfmddGn18wPcFVSYgl9YdqNb Y8UzkJ+plVj3Vo0p0dOY/UwPSnpZmNFGhNNOuce9gsCbBXKK6KQV5AxvfocKWw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGzxN6Nm5zFbs; Sat, 20 Jan 2024 01:51:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1pqgL070333; Sat, 20 Jan 2024 01:51:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1pq2B070330; Sat, 20 Jan 2024 01:51:52 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:51:52 GMT Message-Id: <202401200151.40K1pq2B070330@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: e016face1e26 - stable/14 - cap_net.3: remove a copypasta List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e016face1e2667611063b57a0e914603820bbf82 Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=e016face1e2667611063b57a0e914603820bbf82 commit e016face1e2667611063b57a0e914603820bbf82 Author: Alan Somers AuthorDate: 2023-12-05 23:23:29 +0000 Commit: Alan Somers CommitDate: 2024-01-20 01:51:41 +0000 cap_net.3: remove a copypasta This line appears to have been copied from cap_sysctl.3. While I'm here, reorder and reword the description of cap_net_limit a bit. [skip ci] Sponsored by: Axcient Reviewed by: oshogbo Differential Revision: https://reviews.freebsd.org/D42919 (cherry picked from commit 6b96125afdf245ae61dd82b59891ad0d6aab0066) --- lib/libcasper/services/cap_net/cap_net.3 | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/libcasper/services/cap_net/cap_net.3 b/lib/libcasper/services/cap_net/cap_net.3 index 97a044e3f950..534d28c2ef7c 100644 --- a/lib/libcasper/services/cap_net/cap_net.3 +++ b/lib/libcasper/services/cap_net/cap_net.3 @@ -21,7 +21,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd November 15, 2021 +.Dd December 5, 2023 .Dt CAP_NET 3 .Os .Sh NAME @@ -188,17 +188,14 @@ any port will be accepted in the .Fn cap_connect function. .Pp +The .Fn cap_net_limit -applies a set of sysctl limits to the capability, denying access to sysctl -variables not belonging to the set. +will consume and apply the limits. .Pp Once a set of limits is applied, subsequent calls to .Fn cap_net_limit will fail unless the new set is a subset of the current set. .Pp -The -.Fn cap_net_limit -will consume the limits. If the .Fn cap_net_limit was not called the rights may be freed using From nobody Sat Jan 20 01:52:12 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGzxm6t5Nz57v7l; Sat, 20 Jan 2024 01:52:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGzxm6Njfz4dH7; Sat, 20 Jan 2024 01:52:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715532; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xApw3YEVJAmtsYEkkjI1mF4pK0+o7Z6gR2T7wtCX4ZU=; b=U32nY9YToiK5FpNbmdDaH7KxlANzpNk7pW5EWweHTdpwFIHAf7b1LKp3P7IvEJEj4A52WA sT+Nyaa2exkqg85F2GHwnSV4Qis9llullgKv+ZkImqydEgcwljsRf3/FFuVS7DpJFvJJHM KqFaU3cFtH3PuP6aKE1r6pxlttZYr4gmHrGbnDp+B2iy7UOpisOPK8zWU4lh9ICdbFYNqv ZZbhMZYB7J5DrlZSpleKR3T+1AXTuUgFfqJQP13vjkKVy9Ta1WT0IYHkjlE/R69sUz7NAr Qs9YTa5R8f+p2T4JWQIRIOu4bac2yfsnsiclCI8FfsbitDLiphryyTThlwi0/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715532; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xApw3YEVJAmtsYEkkjI1mF4pK0+o7Z6gR2T7wtCX4ZU=; b=xTQkOMW71IlGBq7TStI225dXvHRqnGYHt3oUp0YuK+iLsvtFTUL/bGMZTE2UB0dWcWUNW1 T0cPtaHuHTx2Ofc8JZ95/EAx8unKSCeGJNDc2+sgpQqA0kwPK9SRj4tCUV0p4u2o83gy35 QOse5hQksaJgJ9dkYmSflT9C5YzDNIB5q4EMd57n5aWfq1vl2Tz+kspuqcuFFSn1VYtXOy SiGNik+HeD5AJyNUKtpmI7TxRnaZ2GmqyIv5QhCo/Ug2QZkWVw0uORTBlan/LAj9k1eSaT dYO8GsdA3ZcoadUZ/063L5ZW7MjBSnzv5xJ4Wp2lbAWqr5d4ZnIj38EkMknPcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715532; a=rsa-sha256; cv=none; b=DoAe//Wop9ZkWmAtoNTG+da2ND4nmbGnZ8f4OmieEmb2F2nS2Zz4sLS9avJKu9+M6YA/29 JnxB5qeq0RIHqyUYseCnW82cYbT+HLgoQ2WPuzzPqB6nAcX6AuucibYbQuPRJhR+nO4n9p 2CwBtkWLgmZ2Xq1HVfBR24YcS/tS73MxqgJnq6QsvXlahQWna7wHO4G0jP+0nhC9MPhNDk UgwCGHE9h38RZFuQEpeOm4CKuD3jHrtdQpCgH1L0FUqaAqnIJZbJ2kcneW9KHvRX+YAWph am7ojqzwn1gDs5Uc3zp3DNVfntcfHNX8dsH66eNAtlTcBjaGqcOi9AZP3DE0/Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGzxm5S0gzGDX; Sat, 20 Jan 2024 01:52:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1qCjd070518; Sat, 20 Jan 2024 01:52:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1qC8S070515; Sat, 20 Jan 2024 01:52:12 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:52:12 GMT Message-Id: <202401200152.40K1qC8S070515@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 0125d6a23ba9 - stable/14 - libcasper: document that most libcasper functions are not thread-safe List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 0125d6a23ba93efc2587f9935600f9a607c80cb7 Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=0125d6a23ba93efc2587f9935600f9a607c80cb7 commit 0125d6a23ba93efc2587f9935600f9a607c80cb7 Author: Alan Somers AuthorDate: 2023-12-05 23:24:28 +0000 Commit: Alan Somers CommitDate: 2024-01-20 01:51:58 +0000 libcasper: document that most libcasper functions are not thread-safe And neither are most libcasper services' functions, because internally they all use cap_xfer_nvlist. cap_xfer_nvlist sends and then receives data over a unix domain socket and associated with the cap_channel_t argument. So absent synchronization, two threads may not use the same cap_channel_t argument or they risk receiving the other's reply. Sponsored by: Axcient Reviewed by: oshogbo Differential Revision: https://reviews.freebsd.org/D42928 (cherry picked from commit cf037972ea8863e2bab7461d77345367d2c1e054) --- lib/libcasper/libcasper/libcasper.3 | 18 ++++++++++++++++-- lib/libcasper/services/cap_fileargs/cap_fileargs.3 | 14 +++++++++++++- lib/libcasper/services/cap_grp/cap_grp.3 | 7 ++++++- lib/libcasper/services/cap_net/cap_net.3 | 19 ++++++++++++++----- lib/libcasper/services/cap_netdb/cap_netdb.3 | 6 +++++- lib/libcasper/services/cap_pwd/cap_pwd.3 | 7 ++++++- lib/libcasper/services/cap_sysctl/cap_sysctl.3 | 11 ++++++++++- lib/libcasper/services/cap_syslog/cap_syslog.3 | 7 ++++++- 8 files changed, 76 insertions(+), 13 deletions(-) diff --git a/lib/libcasper/libcasper/libcasper.3 b/lib/libcasper/libcasper/libcasper.3 index ccd347232777..15f231d7e366 100644 --- a/lib/libcasper/libcasper/libcasper.3 +++ b/lib/libcasper/libcasper/libcasper.3 @@ -26,7 +26,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd September 6, 2023 +.Dd December 6, 2023 .Dt LIBCASPER 3 .Os .Sh NAME @@ -94,7 +94,6 @@ The .Fn cap_init function instantiates a capability to allow a program to access the casper daemon. -It must be called from a single-threaded context. .Pp The .Fn cap_wrap @@ -235,6 +234,21 @@ provides a .Xr syslog 3 compatible API .El +.Pp +.Fn cap_init +must be called from a single-threaded context. +.Fn cap_clone , +.Fn cap_close , +.Fn cap_limit_get , +.Fn cap_limit_set , +.Fn cap_send_nvlist , +.Fn cap_recv_nvlist , +and +.Fn cap_service_open +are reentrant but not thread-safe. +That is, they may be called from separate threads only with different +.Vt cap_channel_t +arguments or with synchronization. .Sh RETURN VALUES The .Fn cap_clone , diff --git a/lib/libcasper/services/cap_fileargs/cap_fileargs.3 b/lib/libcasper/services/cap_fileargs/cap_fileargs.3 index ef43c26cb3ed..c7ce45c518d1 100644 --- a/lib/libcasper/services/cap_fileargs/cap_fileargs.3 +++ b/lib/libcasper/services/cap_fileargs/cap_fileargs.3 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 10, 2021 +.Dd December 6, 2023 .Dt CAP_FILEARGS 3 .Os .Sh NAME @@ -169,6 +169,18 @@ The function .Fn fileargs_realpath is equivalent to .Xr realpath 3 . +.Pp +.Fn fileargs_open , +.Fn fileargs_lstat , +.Fn fileargs_realpath , +.Fn fileargs_cinitnv , +.Fn fileargs_initnv , +and +.Fn fileargs_fopen +are reentrant but not thread-safe. +That is, they may be called from separate threads only with different +.Vt cap_channel_t +arguments or with synchronization. .Sh LIMITS This section describe which values and types should be used to pass arguments to the .Fa system.fileargs diff --git a/lib/libcasper/services/cap_grp/cap_grp.3 b/lib/libcasper/services/cap_grp/cap_grp.3 index 7c1bf0320e25..9647b1936b0c 100644 --- a/lib/libcasper/services/cap_grp/cap_grp.3 +++ b/lib/libcasper/services/cap_grp/cap_grp.3 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 5, 2020 +.Dd December 6, 2023 .Dt CAP_GRP 3 .Os .Sh NAME @@ -152,6 +152,11 @@ The and .Fa ngids variables provide numbers of limited names and gids. +.Pp +All of these functions are reentrant but not thread-safe. +That is, they may be called from separate threads only with different +.Vt cap_channel_t +arguments or with synchronization. .Sh EXAMPLES The following example first opens a capability to casper and then uses this capability to create the diff --git a/lib/libcasper/services/cap_net/cap_net.3 b/lib/libcasper/services/cap_net/cap_net.3 index 534d28c2ef7c..6e525508d3c4 100644 --- a/lib/libcasper/services/cap_net/cap_net.3 +++ b/lib/libcasper/services/cap_net/cap_net.3 @@ -21,7 +21,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd December 5, 2023 +.Dd December 6, 2023 .Dt CAP_NET 3 .Os .Sh NAME @@ -84,22 +84,31 @@ The functions .Fn cap_bind , .Fn cap_connect , +.Fn cap_getaddrinfo , +.Fn cap_getnameinfo , .Fn cap_gethostbyname , .Fn cap_gethostbyname2 , -.Fn cap_gethostbyaddr and -.Fn cap_getnameinfo +.Fn cap_gethostbyaddr provide a set of APIs equivalent to .Xr bind 2 , .Xr connect 2 , +.Xr getaddrinfo 3 , +.Xr getnameinfo 3 , .Xr gethostbyname 3 , .Xr gethostbyname2 3 , -.Xr gethostbyaddr 3 and -.Xr getnameinfo 3 +.Xr gethostbyaddr 3 except that a connection to the .Nm system.net service needs to be provided. +.Pp +These functions, as well as +.Fn cap_net_limit , +are reentrant but not thread-safe. +That is, they may be called from separate threads only with different +.Vt cap_channel_t +arguments or with synchronization. .Sh LIMITS By default, the cap_net capability provides unrestricted access to the network namespace. diff --git a/lib/libcasper/services/cap_netdb/cap_netdb.3 b/lib/libcasper/services/cap_netdb/cap_netdb.3 index 1f08ff275067..1f587c2057e7 100644 --- a/lib/libcasper/services/cap_netdb/cap_netdb.3 +++ b/lib/libcasper/services/cap_netdb/cap_netdb.3 @@ -21,7 +21,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd September 29, 2022 +.Dd December 6, 2023 .Dt CAP_NETDB 3 .Os .Sh NAME @@ -43,6 +43,10 @@ is equivalent to except that the connection to the .Nm system.netdb service needs to be provided. +It is reentrant but not thread-safe. +That is, it may be called from separate threads only with different +.Vt cap_channel_t +arguments or with synchronization. .Sh EXAMPLES The following example first opens a capability to casper and then uses this capability to create the diff --git a/lib/libcasper/services/cap_pwd/cap_pwd.3 b/lib/libcasper/services/cap_pwd/cap_pwd.3 index 7417d177a678..b66a0cd083ba 100644 --- a/lib/libcasper/services/cap_pwd/cap_pwd.3 +++ b/lib/libcasper/services/cap_pwd/cap_pwd.3 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 5, 2020 +.Dd December 6, 2023 .Dt CAP_PWD 3 .Os .Sh NAME @@ -158,6 +158,11 @@ The and .Fa nuids variables provide numbers of limited names and uids. +.Pp +All of these functions are reentrant but not thread-safe. +That is, they may be called from separate threads only with different +.Vt cap_channel_t +arguments or with synchronization. .Sh EXAMPLES The following example first opens a capability to casper and then uses this capability to create the diff --git a/lib/libcasper/services/cap_sysctl/cap_sysctl.3 b/lib/libcasper/services/cap_sysctl/cap_sysctl.3 index c007c04aa3b7..2c7a491a1f8b 100644 --- a/lib/libcasper/services/cap_sysctl/cap_sysctl.3 +++ b/lib/libcasper/services/cap_sysctl/cap_sysctl.3 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd December 1, 2022 +.Dd December 6, 2023 .Dt CAP_SYSCTL 3 .Os .Sh NAME @@ -64,6 +64,15 @@ except that they are implemented by the service and require a corresponding .Xr libcasper 3 capability. +.Pp +All of these functions, with the exceptions of +.Fn cap_sysctl_limit_init +and +.Fn cap_sysctl_limit_mib , +are reentrant but not thread-safe. +That is, they may be called from separate threads only with different +.Vt cap_channel_t +arguments or with synchronization. .Sh LIMITS By default, the .Nm diff --git a/lib/libcasper/services/cap_syslog/cap_syslog.3 b/lib/libcasper/services/cap_syslog/cap_syslog.3 index 7e5376c5ca89..4d6463ef3f81 100644 --- a/lib/libcasper/services/cap_syslog/cap_syslog.3 +++ b/lib/libcasper/services/cap_syslog/cap_syslog.3 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 5, 2020 +.Dd December 6, 2023 .Dt CAP_SYSLOG 3 .Os .Sh NAME @@ -63,6 +63,11 @@ are respectively equivalent to except that the connection to the .Nm system.syslog service needs to be provided. +.Pp +All of these functions are reentrant but not thread-safe. +That is, they may be called from separate threads only with different +.Vt cap_channel_t +arguments or with synchronization. .Sh EXAMPLES The following example first opens a capability to casper and then uses this capability to create the From nobody Sat Jan 20 01:52:31 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGzy80MPJz57v7s; Sat, 20 Jan 2024 01:52:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGzy770JXz4dYm; Sat, 20 Jan 2024 01:52:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715552; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z/ZY5IIIBYbfMXey9Y30Sbcw4D3xhBwOHTfJKV3GkE8=; b=sDoMWipC4wLFfO4xEW5M9JEfzxOuQ0TSGpmYCKX71WVZANzDKM4lk+rk6FRv8ck0eVk01K QqbexMQLMwzlrwzU+gafF5LpVcHBhwW+kdylTStkXhHenO+I9Hm6yCntLhb1SI8ShXD84G B+w5d4Wf1Fzr6a+iGSLjXR1Vxxb/1pBQ7RGlYtNYwIZ90uBmYLvosX+jPnnDC5VxUNFFVx 2CZ9/CaI2uaWROHDkoinzsPGwUTECbyxwqwbBFl6iFyRFgaaq6wfURs15zezaL23f/nH0t qyMRecwPHce21WsHtpxtA/xOMii5F1c1prGkZj+Hz+1k8CaCZo8nJ3AtEEToHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715552; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z/ZY5IIIBYbfMXey9Y30Sbcw4D3xhBwOHTfJKV3GkE8=; b=PeqcSuqM5tfqXJHyJMNhuEY1m/NbFGxuGIRmgZeDj4QA7zxh3pylBsW3b7FM0m7+UM9+IE dnYz+GcHwKvMOMZjbrRycsPm77iAGAuO1n7ygY6EZs/qaAn2g3PYomV96lXKyUhHroNFNm BVKZqw+CrLviCsU0KpajKmiHypUW4QTuYqUmg2XjaN4GvDrrxfA1wgfHU7hVK9rc8B1Fp5 tRbl5LYPqZZ9n1nUCWlQCAy7AjxydQS70w7DmkQWjku3RUw7cvERUSYYhiwxX8ENTh661V //aqkVzVxWpBvRd1GQh4kztdPHUuixrzopK4NX5Ds80afAnlcURdv0kTSHR29w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715552; a=rsa-sha256; cv=none; b=P+FBWER/rVp0c94YHO3bRHR/FtpqjxB6TptDzy5Q8fP36sWGZ5YagUZMJqgHhg8gCvVLti i4t1xy0OGB4IHIjhtjEj2Vi3zb90FIqnc4ONjPPlJ8BRk7xLC5oZuauUmx9+nlRTJBuos7 Oz6KPgH+nRtBh7D9xuNzv+wpxj/IlqseECbm+R8g8GontRn4l/zYvRIBGNQTX8TRBYVr4M 10ceaQzHTvGciVaq3PhUvt5gFwKBYO6yr5gOrwFpfhNAC/SKqeW7RITLqr7kWgYqBZ1BGa g61Yce5Uz4cFXOdBKTmCeDJ4xH/deePdL90hvdWwIS3tXFpOytzGxwhzrYFqUA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGzy7635NzG13; Sat, 20 Jan 2024 01:52:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1qV43071923; Sat, 20 Jan 2024 01:52:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1qVXT071920; Sat, 20 Jan 2024 01:52:31 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:52:31 GMT Message-Id: <202401200152.40K1qVXT071920@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 5b4873c5b861 - stable/14 - Remove _POSIX_PRIORITIZED_IO references from man pages List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5b4873c5b8613061995a4675b53d3263b8c9d637 Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=5b4873c5b8613061995a4675b53d3263b8c9d637 commit 5b4873c5b8613061995a4675b53d3263b8c9d637 Author: Alan Somers AuthorDate: 2023-11-15 17:56:05 +0000 Commit: Alan Somers CommitDate: 2024-01-20 01:52:18 +0000 Remove _POSIX_PRIORITIZED_IO references from man pages We don't support it, so there's no need to tell readers what would happen if we did. Also, don't remind the user that a certain field is ignored by aio_read. Mentioning every ignored field would make the man pages too verbose. Sponsored by: Axcient Reviewed by: Pau Amma Differential Revision: https://reviews.freebsd.org/D42622 (cherry picked from commit 18e2c4175f78f1aaa648dd7fb7530220aed23671) --- lib/libc/sys/aio_fsync.2 | 7 +------ lib/libc/sys/aio_read.2 | 14 -------------- lib/libc/sys/aio_write.2 | 9 +-------- 3 files changed, 2 insertions(+), 28 deletions(-) diff --git a/lib/libc/sys/aio_fsync.2 b/lib/libc/sys/aio_fsync.2 index f386e0653b21..46fc5d95bcfd 100644 --- a/lib/libc/sys/aio_fsync.2 +++ b/lib/libc/sys/aio_fsync.2 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 6, 2021 +.Dd November 15, 2023 .Dt AIO_FSYNC 2 .Os .Sh NAME @@ -57,11 +57,6 @@ or for the behavior of .Xr fdatasync 2 . .Pp -If _POSIX_PRIORITIZED_IO is defined, and the descriptor supports it, -then the enqueued operation is submitted at a priority equal to that -of the calling process minus -.Fa iocb->aio_reqprio . -.Pp The .Fa iocb pointer may be subsequently used as an argument to diff --git a/lib/libc/sys/aio_read.2 b/lib/libc/sys/aio_read.2 index c6f062fa406d..092315e70c91 100644 --- a/lib/libc/sys/aio_read.2 +++ b/lib/libc/sys/aio_read.2 @@ -71,20 +71,6 @@ the structure is defined in .Xr readv 2 . .Pp -If _POSIX_PRIORITIZED_IO is defined, and the descriptor supports it, -then the enqueued operation is submitted at a priority equal to that -of the calling process minus -.Fa iocb->aio_reqprio . -.Pp -The -.Fa iocb->aio_lio_opcode -argument -is ignored by the -.Fn aio_read -and -.Fn aio_readv -system calls. -.Pp The .Fa iocb pointer may be subsequently used as an argument to diff --git a/lib/libc/sys/aio_write.2 b/lib/libc/sys/aio_write.2 index efc0938a5cf9..32ad53019ed2 100644 --- a/lib/libc/sys/aio_write.2 +++ b/lib/libc/sys/aio_write.2 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 2, 2021 +.Dd November 15, 2023 .Dt AIO_WRITE 2 .Os .Sh NAME @@ -84,13 +84,6 @@ is not set for the file descriptor, the write operation will occur at the absolute position from the beginning of the file plus .Fa iocb->aio_offset . .Pp -If -.Dv _POSIX_PRIORITIZED_IO -is defined, and the descriptor supports it, then the enqueued -operation is submitted at a priority equal to that of the calling -process minus -.Fa iocb->aio_reqprio . -.Pp The .Fa iocb pointer may be subsequently used as an argument to From nobody Sat Jan 20 01:53:31 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TGzzH5fG3z57v1y; Sat, 20 Jan 2024 01:53:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TGzzH4jRlz4dmB; Sat, 20 Jan 2024 01:53:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715611; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=y97hixk6k7v4/CLEX+uf/mEPJqIVIpZFHz21ipBk5+Y=; b=RNnopjr2tpp1h/nk5HCKtutjnpaIUUa7FPCwghAUwhfY1mP5+htNIfUJvxfWxgzd+xwCXt WU2qR9DVJU+vP8J6hAx+kRESCiOiP8lLGjcPfLBG3aVpH0UVplEoi1GPNtNyQzxFpwB9B0 KPNFWMVMNFkMuS9qGWLpiEvgLS+jf1Px9J+K5zo9Jtc9dJjVAibFz6KjeAp8U55zpF8Vuo 5SOckCAlc8TEfwRqogUcjwTk7ReZxnhnSrvkjo5equnE3Sdr9aJPDWl2+gaPv23KM17E0s N5a7GTUpYVirH0geyA2Bm78polSShHDaxAcnkdnjATMWWCL51Be+k0i23g2V9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715611; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=y97hixk6k7v4/CLEX+uf/mEPJqIVIpZFHz21ipBk5+Y=; b=eeo4yYE/mcQK5vYZphI1WbUQWKbkUahXgbs1vBRKUD42uoSjVgOFL0M9QJqtUhSAcBz+eP KrsM5luNgYPzyhphUMYxBRy36OWBRqsvn2OoxxR3ioNUq/M/di0+YnK26ngjtPW9otT4TC kIuI+iAg+MwFeZKwjQjyziBJ9lVxhHuvUsDtyUNcXZfp9swE6LAaEa12ZXKPcyWGeHmmqJ cOqB5idMtkumur49bsAXeKbnYhFR/hXTRrIlSYzk2OQZ00gfpE4s3eRGhsG5CDTb+iz0dz WkG91WPJL8n4dKKYzytf5jZdtjkuryQVIvZM33J2LjzZljHOz1OCeBap8CQWJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715611; a=rsa-sha256; cv=none; b=SNLoo2yZW8F8ikKE6vwUoWzjmHA5UVbVopbkEQKIxw+Cv45MJzLJH5s6IZeocBEiI/rXbe Tu3iQdtOYIiCMJzEKmvSbQ9kgXWsm1ow9Cmcx8N7WNveg4vRkuTULlk4AhAZetjccaY5/F 7wqAPi77EAyXHAHbeJUz6Go8MCd/D0r1i7HKWLb0tvQLsFa1dxiErwmIOIx24yLv8w9VlJ Ertc9ckxQAyvbCKhh8qcI+hJWcIHJo4xgk46TCjupHZUFwf7IgGbsjsmZIOEZWBwWeOgd1 bEgD5Y9tpjdnZSn8xQUp0vVSyonvwOpChyCnw2h4KdoDeNJTIhLAgav1lrTmtg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TGzzH3mh3zGGC; Sat, 20 Jan 2024 01:53:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1rVjn072192; Sat, 20 Jan 2024 01:53:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1rVm6072189; Sat, 20 Jan 2024 01:53:31 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:53:31 GMT Message-Id: <202401200153.40K1rVm6072189@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 5a2767d20325 - stable/14 - Fix multiple bugs with ctld's UCL parsing List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5a2767d20325d5065ae4bc04d954530150551016 Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=5a2767d20325d5065ae4bc04d954530150551016 commit 5a2767d20325d5065ae4bc04d954530150551016 Author: Alan Somers AuthorDate: 2023-10-09 18:26:25 +0000 Commit: Alan Somers CommitDate: 2024-01-20 01:52:38 +0000 Fix multiple bugs with ctld's UCL parsing * Don't segfault when parsing a misformatted auth-group section * If the config file specifies a chap section within a target but no auth-group, create a new anonymous auth-group. That matches the behavior with non-UCL config files. * Protect some potential segfaults with assertions PR: 274380 Sponsored by: Axcient Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D43198 (cherry picked from commit 2391e536c01cb51d2a2c11a0f5820481314e9ec2) --- usr.sbin/ctld/ctld.c | 1 + usr.sbin/ctld/uclparse.c | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/usr.sbin/ctld/ctld.c b/usr.sbin/ctld/ctld.c index 2a69308ff067..f2b2de5b9a57 100644 --- a/usr.sbin/ctld/ctld.c +++ b/usr.sbin/ctld/ctld.c @@ -533,6 +533,7 @@ auth_group_find(const struct conf *conf, const char *name) { struct auth_group *ag; + assert(name != NULL); TAILQ_FOREACH(ag, &conf->conf_auth_groups, ag_next) { if (ag->ag_name != NULL && strcmp(ag->ag_name, name) == 0) return (ag); diff --git a/usr.sbin/ctld/uclparse.c b/usr.sbin/ctld/uclparse.c index f3f8df81e492..8bd1ca88d166 100644 --- a/usr.sbin/ctld/uclparse.c +++ b/usr.sbin/ctld/uclparse.c @@ -60,6 +60,7 @@ uclparse_chap(struct auth_group *auth_group, const ucl_object_t *obj) const struct auth *ca; const ucl_object_t *user, *secret; + assert(auth_group != NULL); user = ucl_object_find_key(obj, "user"); if (!user || user->type != UCL_STRING) { log_warnx("chap section in auth-group \"%s\" is missing " @@ -90,6 +91,7 @@ uclparse_chap_mutual(struct auth_group *auth_group, const ucl_object_t *obj) const ucl_object_t *user, *secret, *mutual_user; const ucl_object_t *mutual_secret; + assert(auth_group != NULL); user = ucl_object_find_key(obj, "user"); if (!user || user->type != UCL_STRING) { log_warnx("chap-mutual section in auth-group \"%s\" is missing " @@ -714,6 +716,8 @@ uclparse_target(const char *name, const ucl_object_t *top) } if (!strcmp(key, "auth-group")) { + const char *ag; + if (target->t_auth_group != NULL) { if (target->t_auth_group->ag_name != NULL) log_warnx("auth-group for target \"%s\" " @@ -725,8 +729,12 @@ uclparse_target(const char *name, const ucl_object_t *top) "target \"%s\"", target->t_name); return (1); } - target->t_auth_group = auth_group_find(conf, - ucl_object_tostring(obj)); + ag = ucl_object_tostring(obj); + if (!ag) { + log_warnx("auth-group must be a string"); + return (1); + } + target->t_auth_group = auth_group_find(conf, ag); if (target->t_auth_group == NULL) { log_warnx("unknown auth-group \"%s\" for target " "\"%s\"", ucl_object_tostring(obj), @@ -759,6 +767,20 @@ uclparse_target(const char *name, const ucl_object_t *top) } if (!strcmp(key, "chap")) { + if (target->t_auth_group != NULL) { + if (target->t_auth_group->ag_name != NULL) { + log_warnx("cannot use both auth-group " + "and chap for target \"%s\"", + target->t_name); + return (1); + } + } else { + target->t_auth_group = auth_group_new(conf, NULL); + if (target->t_auth_group == NULL) { + return (1); + } + target->t_auth_group->ag_target = target; + } if (uclparse_chap(target->t_auth_group, obj) != 0) return (1); } From nobody Sat Jan 20 01:54:45 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TH00k1jpxz57v5y; Sat, 20 Jan 2024 01:54:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TH00k18zdz4fHH; Sat, 20 Jan 2024 01:54:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715686; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=h/rgPhDvsMLh0buq/m8deyu675+EKA8z4sj1k3uNoF8=; b=L4H4wK+7OZDVBFvV4Kf6DytxlT/kFexlJTO3SuhAGhcMmQKSxt3hjkvi+b6iXkOWZCcCgo W9v0VdDeGxuihptRrx7nGKwJEAFih+BpQVV0CeUY5ArmMMWzl8/tA4GLz/w9EZsgkdIcQG LFFpabpdaaIBMnLj62DelkX4CIV45Xcksb/8CPVfRveQ8tPnt32oCYmdpmkW1YB6r8Nv5B fWf/LoTjb0X/cdfX7dKNiB+A0IK7omOk5W+XLWEvN1+5gTAyHKC3qMaYWEQTTHCd8oBxm/ 3sYFM7p8vfvhcRcie0cIoNiEqrrrpb2s3joQqBW83r7SgFpL01wg4Z8TznarWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715686; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=h/rgPhDvsMLh0buq/m8deyu675+EKA8z4sj1k3uNoF8=; b=edKG9Ju6MEidDZD0MH2DwxqATLwKzT2Oe8RqYSTi2Prr1125claq+GVcFGOKGLITQE5KC3 G0XHiO08vCUV3JFBsn+VVhbAKWqrPlvZUWiTRxejhsTr4KC9ZUILoPL9p47n+kOV0EWJYg FYUy0ZDyVFyF86RXL5PvqLyZXDKPsmYzHgDu1wrFlT64a4jSC/Tbo02n6myujn/HJ20yWD 6byrgW16KU8G+1rGcVTNlZbFF7W7v4eyJbppjy4ggqa6IWtBo4d086RBmNjvzKlMQLZo8Q WTMGoflzyDIzO9iTpTIO3uzIuWjSjFSteyvlBkEeLMH9x+BOlKm95kN3JejHlA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715686; a=rsa-sha256; cv=none; b=PaHUUUf0zyCT1EydEId16fVcY2dqKG5DtABm6tdMtlR24xoNpQ8nTzjR4/c4oQGjzXfKmM 9h5ZQ5El51UMxBkH7EUhqf3wWr2ATCK9UfVcT0ualMY9WcleiJ7vQi+yf6JDoFXI+kjofK mo5efTAmrOLvm2mIDaRqRDSEbfrcZF57QgOWE6OeNWorXB2C0aUiJPTqW9MDfs5/AwJNkT HZXnw7eXWpUtWJY5HM7Lm+K+rupjCLv3cpz13bB9931gAEDY/JnRYw+5HQnCzf7hHaJoHO FWhXp/P4ZiIb46UnuBRStTP9OI2rjBTXBgQu4yg/Jq2FAY4ZMLzjWXPrhh1Unw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TH00k0DY6zFc2; Sat, 20 Jan 2024 01:54:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1sjVJ072491; Sat, 20 Jan 2024 01:54:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1sjYg072488; Sat, 20 Jan 2024 01:54:45 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:54:45 GMT Message-Id: <202401200154.40K1sjYg072488@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: be908114fd62 - stable/14 - nfsstat: update option strings in docs List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: be908114fd62a0ac4e42dffae3c5fbfa0db58e43 Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=be908114fd62a0ac4e42dffae3c5fbfa0db58e43 commit be908114fd62a0ac4e42dffae3c5fbfa0db58e43 Author: Lexi Winter AuthorDate: 2023-12-27 17:30:31 +0000 Commit: Alan Somers CommitDate: 2024-01-20 01:54:27 +0000 nfsstat: update option strings in docs Add the missing -q option to the nfsstat(1) manpage SYNOPSIS (it is already documented in DESCRIPTION), and add the missing -E and -q options to the built-in usage output. PR: 275912 Pull Request: https://github.com/freebsd/freebsd-src/pull/958 (cherry picked from commit 30ce26cacfd626552c647c9327dd510e7f421d97) --- usr.bin/nfsstat/nfsstat.1 | 4 ++-- usr.bin/nfsstat/nfsstat.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/usr.bin/nfsstat/nfsstat.1 b/usr.bin/nfsstat/nfsstat.1 index 08f254a9613b..f51e2662636d 100644 --- a/usr.bin/nfsstat/nfsstat.1 +++ b/usr.bin/nfsstat/nfsstat.1 @@ -27,7 +27,7 @@ .\" .\" From: @(#)nfsstat.1 8.1 (Berkeley) 6/6/93 .\" -.Dd June 5, 2023 +.Dd December 27, 2023 .Dt NFSSTAT 1 .Os .Sh NAME @@ -38,7 +38,7 @@ statistics .Sh SYNOPSIS .Nm .Op Fl -libxo -.Op Fl cdEemszW +.Op Fl cdEemqszW .Op Fl w Ar wait .Sh DESCRIPTION The diff --git a/usr.bin/nfsstat/nfsstat.c b/usr.bin/nfsstat/nfsstat.c index 11f403a9c14c..12a80c721dbd 100644 --- a/usr.bin/nfsstat/nfsstat.c +++ b/usr.bin/nfsstat/nfsstat.c @@ -512,7 +512,7 @@ static void usage(void) { (void)fprintf(stderr, - "usage: nfsstat [-cdemszW] [-w wait]\n"); + "usage: nfsstat [-cdEemqszW] [-w wait]\n"); exit(1); } From nobody Sat Jan 20 01:55:35 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TH01g3zqwz57tk9; Sat, 20 Jan 2024 01:55:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TH01g3RHJz4fXl; Sat, 20 Jan 2024 01:55:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715735; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qig/jP2AhPGDTbOD+cGxSd9q6KnLDOwrBdc3BA2omnA=; b=y0WX5QyJIGXH0PFF+/8FKLxFOYTjlPKMdhsowmJcxm+zl/PIZ3hpaLCJe+6D02Q/VGRbj5 DhR52p72E334z9WBS4PLubEotTLy4RFgpwI8PJzG0oKwwhJ5DdD6YKVCRd1PsHW+0X7ZL5 rpcRzWjT9397plBkxZ7kTYwlvrPjSqKhS0nYXY0p0rE4qhH2NRDMIw3GKAYYTJn+4s2zmw sCWjqjQ0YMQMFIWCFqAwtzCkl+a+X+BvC9sX0s93Q5THNlF4Jib59m2tcT4AP701D3OhFf /SH1ux/qYewEJvlguzemj9hr3hb/GcvCm/jXv1A76xrlQ+G/AzJAm9R5oL8Vew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715735; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qig/jP2AhPGDTbOD+cGxSd9q6KnLDOwrBdc3BA2omnA=; b=H6Ene6Ck2hxgq3722+VXCuuad4Sq+qwTRdheY5ye9kX3N1E5h74QsBOA0+JP2fKGhiyavG LfTGJykvdYQF8iKs551ROA4//bqP5xiX+UMhtxDV3z/T9BHArqqrn2LYq07NTfonqI+drG 6G9MdB0FkVRLJyzfrAK39wVOghVTjXsirm0CnsZwZ9XUQFn4QW+GHpTbtJeN0oXsqsRbeO zn2iKWgJ8Pr3KBvvc/nwMHDdMdzmb3BjYhYj6j8sRmavnYxV6JQpsLP0tHz6b8UBUHiTh1 iVu8H1eHMzDv6Ty1KKGRh73bRV7s7z97lnzTsMnpfUsbjlED4Uv9Uec2cN8oJA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715735; a=rsa-sha256; cv=none; b=v9kz9XVKyIgxUQywohOrJe75WDWN4C84Rc3wE9GyrWKYrKfhnEdu56MWDDj2YarGz2zBoV c3WVLm95bMi+RC4yBg+i+pxwxDIpMLXaGzOe/+RQbJxsUJta4cwKEN/On/e5qlTOz5+aBV Tjr6+gHZ6HUmCNQDCcodAsz5H7wgqWUQtB6UU0txOf0qu/JNzdTB27KJh4pHi8G5DCWCn3 PFYR0B3iUu+cpz1JnbeU8rZDg5B0SWcFtBJD8PuqeROLU76eHaTny4UJoWqLzZIbtdFYTj wO9v2PfUG4umY5S7Z4PAibtIeBzFWQNL8Nof+ysHq+ONNyyM2oe0UhF+TQmMww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TH01g2VYfzG16; Sat, 20 Jan 2024 01:55:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1tZ1Q072793; Sat, 20 Jan 2024 01:55:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1tZQY072790; Sat, 20 Jan 2024 01:55:35 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:55:35 GMT Message-Id: <202401200155.40K1tZQY072790@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: d741d23133be - stable/14 - nfsstat: make -q work without -e/-E List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d741d23133be4770f4b870bd6d056080f1857c89 Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=d741d23133be4770f4b870bd6d056080f1857c89 commit d741d23133be4770f4b870bd6d056080f1857c89 Author: Lexi Winter AuthorDate: 2023-12-28 12:56:57 +0000 Commit: Alan Somers CommitDate: 2024-01-20 01:55:26 +0000 nfsstat: make -q work without -e/-E MFC after: 2 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/961 (cherry picked from commit f79b200b6aefb9bdcbe931c5b7ea604e259beee0) --- usr.bin/nfsstat/nfsstat.1 | 4 ++-- usr.bin/nfsstat/nfsstat.c | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/usr.bin/nfsstat/nfsstat.1 b/usr.bin/nfsstat/nfsstat.1 index f51e2662636d..200b2fc2f6ef 100644 --- a/usr.bin/nfsstat/nfsstat.1 +++ b/usr.bin/nfsstat/nfsstat.1 @@ -27,7 +27,7 @@ .\" .\" From: @(#)nfsstat.1 8.1 (Berkeley) 6/6/93 .\" -.Dd December 27, 2023 +.Dd December 28, 2023 .Dt NFSSTAT 1 .Os .Sh NAME @@ -119,7 +119,7 @@ second intervals. .It Fl z Reset statistics after displaying them. .It Fl q -Do not print header +Do not print headers. .It Fl -libxo Generate output via .Xr libxo 3 diff --git a/usr.bin/nfsstat/nfsstat.c b/usr.bin/nfsstat/nfsstat.c index 12a80c721dbd..58ed44d3fe22 100644 --- a/usr.bin/nfsstat/nfsstat.c +++ b/usr.bin/nfsstat/nfsstat.c @@ -282,7 +282,8 @@ intpr(int clientOnly, int serverOnly) xo_emit("{T:Client Info:\n"); xo_open_container("operations"); - xo_emit("{T:Rpc Counts:}\n"); + if (printtitle) + xo_emit("{T:Rpc Counts:}\n"); xo_emit("{T:Getattr/%13.13s}{T:Setattr/%13.13s}" "{T:Lookup/%13.13s}{T:Readlink/%13.13s}" @@ -333,7 +334,8 @@ intpr(int clientOnly, int serverOnly) xo_close_container("operations"); xo_open_container("rpcs"); - xo_emit("{T:Rpc Info:}\n"); + if (printtitle) + xo_emit("{T:Rpc Info:}\n"); xo_emit("{T:TimedOut/%13.13s}{T:Invalid/%13.13s}" "{T:X Replies/%13.13s}{T:Retries/%13.13s}" @@ -349,7 +351,8 @@ intpr(int clientOnly, int serverOnly) xo_close_container("rpcs"); xo_open_container("cache"); - xo_emit("{T:Cache Info:}\n"); + if (printtitle) + xo_emit("{T:Cache Info:}\n"); xo_emit("{T:Attr Hits/%13.13s}{T:Attr Misses/%13.13s}" "{T:Lkup Hits/%13.13s}{T:Lkup Misses/%13.13s}" @@ -396,7 +399,8 @@ intpr(int clientOnly, int serverOnly) if (serverOnly) { xo_open_container("serverstats"); - xo_emit("{T:Server Info:}\n"); + if (printtitle) + xo_emit("{T:Server Info:}\n"); xo_open_container("operations"); xo_emit("{T:Getattr/%13.13s}{T:Setattr/%13.13s}" @@ -449,7 +453,8 @@ intpr(int clientOnly, int serverOnly) xo_open_container("server"); - xo_emit("{T:Server Write Gathering:/%13.13s}\n"); + if (printtitle) + xo_emit("{T:Server Write Gathering:/%13.13s}\n"); xo_emit("{T:WriteOps/%13.13s}{T:WriteRPC/%13.13s}" "{T:Opsaved/%13.13s}\n"); @@ -465,7 +470,8 @@ intpr(int clientOnly, int serverOnly) xo_close_container("server"); xo_open_container("cache"); - xo_emit("{T:Server Cache Stats:/%13.13s}\n"); + if (printtitle) + xo_emit("{T:Server Cache Stats:/%13.13s}\n"); xo_emit("{T:Inprog/%13.13s}" "{T:Non-Idem/%13.13s}{T:Misses/%13.13s}\n"); xo_emit("{:inprog/%13ju}{:nonidem/%13ju}{:misses/%13ju}\n", From nobody Sat Jan 20 01:56:20 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TH02X691Vz57v8D; Sat, 20 Jan 2024 01:56:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TH02X5fcvz4g6G; Sat, 20 Jan 2024 01:56:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715780; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SgnI1RksxIkWNusZmE61z0fiFu9EZF02i0NM+fKgRmw=; b=V/meLN4r0plLQX0qt8R27b0lZk3jCcZ3MspMqhkChmbggeHY3x2PKPFgfd4IZNoR9fDTB/ VLVZ/5m1W07vynP4J70HfSsoV/nTKTHNPxvKNN2hjFqBWvqsRxmVEW9qqXiY4kHXw36nAK HRkE2r3tu/k3f5YTqreGnaJsW1xgSe774x3HBeOn9K8I+8FelEnPETxhvAOfJTZH32RbOZ E24ljUcTmWsput5ZojaYuHw2Thvoi+YaJosBKFYi6oe8HBCp86+vzK4wrN9EPDhcOGUPGe pKBukPWBOOBBvEAOAn94vIFfXokzg+mYyktnReU2zjrIfHDge9BMM9+uuukLwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715780; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SgnI1RksxIkWNusZmE61z0fiFu9EZF02i0NM+fKgRmw=; b=VF+Z+WTjh/NtLBa/B6fULl1eOqiVZGcju6WuErDoDDXUAgUIxcbP2MsFEOjL1o51phGRaJ dE5yo+99z1T1e/ZX8Y0H4ANAimgp8Re7uSHdKRbQHE0PqHWMtplpPo+AdI6x46TYGqt7+i cg1kCfrfBgK8roRWf6PHfX2y24+/8pVBrDC3k+FVkUaWj+zzY7TDoBcOhdDK0j3oByD/KU 3xNLpXNx2STocAMZ1QM1XoyMUSe47zGhENqwFalv0clupSR2Y/iJ6opOHCQyrkv9dVyu3G MccVFlH8G7NK02JYKJnAa1qHIYyluK1PzSiQHs7IYZnBfPlXsxWybysKFUtlOQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715780; a=rsa-sha256; cv=none; b=erCFRE0mzHuPE+SAKqcCNyJ81WDw9jCfLxZ1Ofd7m4ZEqlRQaBg+BBdKaduWYTeK0MkdRq NsmFuop5UzqX84yqWqr6MEKghKhxJRK9GGEjq7YJEvDMlMM0lN8BFaFQlmKMUJzVHJf5SO NX4z2nZFA2TpBsTxoUet56yvHxuJFNt3xGvW0Q6k4kd8dcj4OhM42T6e9TPcCeo+hMrO9c +Wgrwi2qnbPfsi95C4bqmM3A6fBv6z5NSkQMbd73iD/yFd29XX4l2fAdWY7urrAuLIpp3u AAloKMB6vACyVWuMFdJOOgBRHdH9vKyJqKocgFjvHmEE1Pi2ZOXuPsTgfuOL+A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TH02X4j8rzG7m; Sat, 20 Jan 2024 01:56:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1uKBL073043; Sat, 20 Jan 2024 01:56:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1uKp8073040; Sat, 20 Jan 2024 01:56:20 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:56:20 GMT Message-Id: <202401200156.40K1uKp8073040@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: d90417109582 - stable/14 - param.h: Bump __FreeBSD_version to 1400506 for d34f4baaf138 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d9041710958227194c5e34b169ae73d7ad411017 Auto-Submitted: auto-generated The branch stable/14 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=d9041710958227194c5e34b169ae73d7ad411017 commit d9041710958227194c5e34b169ae73d7ad411017 Author: Rick Macklem AuthorDate: 2024-01-20 01:52:10 +0000 Commit: Rick Macklem CommitDate: 2024-01-20 01:56:00 +0000 param.h: Bump __FreeBSD_version to 1400506 for d34f4baaf138 --- sys/sys/param.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/sys/param.h b/sys/sys/param.h index d273886a79be..7afa1fc98af9 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -75,7 +75,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1400505 +#define __FreeBSD_version 1400506 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From nobody Sat Jan 20 01:59:48 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TH06X3KXGz57vPK; Sat, 20 Jan 2024 01:59:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TH06X2nyqz4gK0; Sat, 20 Jan 2024 01:59:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715988; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5t9RndACU1F8GqD1esHXmoFfEAcsG9X1mVQZQAP9olw=; b=YuYZdthxB00IN0zZ3DZyn48qnGP6ue/f+cAdMcqoijGm4reyHwb0fRDxP/QJh5UQ82u1C9 XoDhp34jMurblLdXYyALR3Th4Vj+mYEzt3+W6v3Ky4cr5TOds+ssgNWroJTCh88x/A1ua/ 605JSF18/OdEKhfgc+7sz5jq7eeGvNz3gD8HxpqEBJ/LC1JmypWNtdQpjAYjUeVDRNKuFi QadMiIXwIj06zOCHLAFyg/eL5wLyVaQmoKDFjdzrkcjxJg5TT+KE8M5K0akxKv5czfQlUi OODJwSuK+o+emw5zTxrg8MVOMsNHPgyOG7AvJknV6hrnYTHir06JCMsgnAHUbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705715988; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5t9RndACU1F8GqD1esHXmoFfEAcsG9X1mVQZQAP9olw=; b=fAusrXTFxJ1Lgidv2KvhpNjipqYZZoqFkiZ8xOK7Z0BPIRTCv7KAyee7il4F30xwbr/bTG IdXb81NBBV3ytwOhU2KBrssZS4bm4xwaSR7iyiKEhOMZkFytkg8NXloE1TRYZr7F777PrG /v8pErU6vm18eotQySNGZe4Khn1yE4VlCnlpoOsUuH+02jvj2/ldn+kveBoyaPCFy/uLAh VNb6bBjERSBle0M4B8YRo2bVHxHj/VusIzNkiRLbLTycyiKg6S2gIT6j68pKyEeAgHldnx 0HEMGJXxW1NAUiYc8gMQntMmyc77qOHGOV9H+ZdbZPJ/7BJ8TAUBjr3N+xAFyA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705715988; a=rsa-sha256; cv=none; b=rOrqPrUKsNW93A3vMfvvxKyAS9xFZ8CiUT/D9/7LZFKYI8sBGMyg9m95CVsjlVjINmv4uu jhZ+6Vj287ZHSPDpzyyFsq/BZrooA0XINhlvQvSWtzErQwtTK4s3kV1KW+qoBrt/K3SLvM d2hBNbeL8hhvr8fLlQfThCeETGFuOxJ4ih6snMgM+BTAFtIPp14zEQ7e3DU5P4fuCzLgv7 kq6tJWi9dtVDwkjp6Y9MOj15SoaS7ytVcXB3nPldbtYloGkvCcd/+6j2AkJCnNBqymoQjy M8aXJPRJAoC+U1qJ0WRDnWx0zigCfmlFYwpGFoxTPjLDgtamVRBIcN32MjMhXw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TH06X1sRPzGDs; Sat, 20 Jan 2024 01:59:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K1xmeb073600; Sat, 20 Jan 2024 01:59:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K1xmt9073598; Sat, 20 Jan 2024 01:59:48 GMT (envelope-from git) Date: Sat, 20 Jan 2024 01:59:48 GMT Message-Id: <202401200159.40K1xmt9073598@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: 15c21f325ea4 - stable/14 - UPDATING: Add an entry for commit d34f4baaf138 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 15c21f325ea4dfb69f2f52d582bdf43c1ded8242 Auto-Submitted: auto-generated The branch stable/14 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=15c21f325ea4dfb69f2f52d582bdf43c1ded8242 commit 15c21f325ea4dfb69f2f52d582bdf43c1ded8242 Author: Rick Macklem AuthorDate: 2024-01-20 01:58:15 +0000 Commit: Rick Macklem CommitDate: 2024-01-20 01:58:15 +0000 UPDATING: Add an entry for commit d34f4baaf138 --- UPDATING | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/UPDATING b/UPDATING index 44f7115614ea..0da6458888b4 100644 --- a/UPDATING +++ b/UPDATING @@ -12,6 +12,12 @@ Items affecting the ports and packages system can be found in /usr/ports/UPDATING. Please read that file before updating system packages and/or ports. +20240119: + Commit d34f4baaf138 changed the internal interface between + the nfscommon and nfscl modules. As such, both need to be + rebuilt from sources. Therefore, bump __FreeBSD_version + to 1400506. + 20231229: Commit 925d9b3abac2 modified the internal API between the nfscommon and nfscl modules. From nobody Sat Jan 20 02:01:27 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TH08S0Tb8z57vRQ; Sat, 20 Jan 2024 02:01:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TH08S02QZz4gX2; Sat, 20 Jan 2024 02:01:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705716088; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mZEA+xO0ZL+S8hsN32Dt6ftb/MDJgVTs9zMZvA3UDH0=; b=Oxw95sPziVlOiE0a4Rz7cH0OpgCWwlknvarpJncUo86/PtHtyFOVZYDcdiAI9RQLPd9xLh YINFEKCIweNY4gUKRdE8GG6Wnw+zrE+u3leWC40/JbjcolmqUstKCN0UskxpDB2qE5rycg DPD7t5kXzeJv7udSiq9eLtVnOBvEq+30t5L1x5XKjbphyINyrTC51lH/8136xz4lA9WrSp poSk6ZaoLjSZHX6Q13bBV6sbaCTOdI8N0ua77n4IjJnYALo2quEUUGqQQGXERrwdxvpcKR NvIN4/MsoAKcW274nmdconTnPADh/cuGlKZRvsaNWtaWPUXPJ0Chegof5A0bqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705716088; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mZEA+xO0ZL+S8hsN32Dt6ftb/MDJgVTs9zMZvA3UDH0=; b=TzMI1SWi37ogJA9zN7OEMuBbT+kJ2TOwVijB7u373m56XpVpKIZKpqoR+zCXOV3Vb5+TrB jbvqHKOKRRq+qXTl/EQb/sDtKWX0VzWP5YpgVkECDujVI1ToB2ws2Nn0DU+5irWA+Umiap prtXqWBAOLo9FwrH1cZkMm4BeRSIziMH9rCmb/zSvPEDyQNtdZaHm8N8whpVha/BdVan3A Z++Kvl1ixWGaXqoe6fkBwy14u+OTo/gYCDnnkhS0icmKFmQbipu3HPmR1aOi9T5+Wm5N56 Z7za8EImL7PC+s316zoxonprp/qf+aB1oe6UrinYZGnishQchm/QjB8KIaOhoQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705716088; a=rsa-sha256; cv=none; b=wHyTtqkyPMJcxNvcNX4LYh3v32hc3QH5LTsGzMfkvpgbUT4ozPbQbI2m6zcBx76Cft7WlR KMnAVdhhkhIdeEz6HA5Wdolw6BrZTYUb1/ihvHDeGWKsAzXMij9o1saMgu9JVMK29Q43ql vG20LsZ1QlzExOVfCrRyI4E4XI6B40diWBfQAE3Ct9etg1Ujx3U4YaFl1tMeReK/k4UCk9 azi0qZp6OEgiFUKDoVTJ/1kY5oSw4x+JzzbhNzg6tObiMb8UvSHToTc0qELDJh98gThdnG ojSMpvAaGTgYUhY/K+O51B03nuleFsp7rZpF86VyZ8YqbYSNMNOQWyJyvy4CjQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TH08R6C3fzGhb; Sat, 20 Jan 2024 02:01:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K21Rch085442; Sat, 20 Jan 2024 02:01:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K21Rem085439; Sat, 20 Jan 2024 02:01:27 GMT (envelope-from git) Date: Sat, 20 Jan 2024 02:01:27 GMT Message-Id: <202401200201.40K21Rem085439@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: 62f890cfbc35 - stable/14 - Add a regression test for PR 276191. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 62f890cfbc358160ef42f11de78ad2015a6885cb Auto-Submitted: auto-generated The branch stable/14 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=62f890cfbc358160ef42f11de78ad2015a6885cb commit 62f890cfbc358160ef42f11de78ad2015a6885cb Author: Alan Somers AuthorDate: 2024-01-08 01:03:40 +0000 Commit: Alan Somers CommitDate: 2024-01-20 02:01:14 +0000 Add a regression test for PR 276191. The bug isn't fusefs-specific, but this is the easiest way to reproduce it. PR: 276191 Differential Revision: https://reviews.freebsd.org/D43446 Reviewed by: kib (cherry picked from commit 6b1c534927ad47e9b0dd8be1a39f56c3ea813d44) --- tests/sys/fs/fusefs/io.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/sys/fs/fusefs/io.cc b/tests/sys/fs/fusefs/io.cc index b17d3857d327..fda13a72cc4c 100644 --- a/tests/sys/fs/fusefs/io.cc +++ b/tests/sys/fs/fusefs/io.cc @@ -507,6 +507,16 @@ TEST_P(Io, resize_a_valid_buffer_while_extending) close(m_test_fd); } +/* + * mmap of a suitable region could trigger a panic. I'm not sure what + * combination of size and offset counts as "suitable". Regression test for + * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276191 + */ +TEST_P(IoCacheable, vnode_pager_generic_putpage_clean_block_at_eof) +{ + do_mapwrite(0x1bbc3, 0x3b4e0); +} + INSTANTIATE_TEST_SUITE_P(Io, Io, Combine(Bool(), /* async read */ Values(0x1000, 0x10000, 0x20000), /* m_maxwrite */ From nobody Sat Jan 20 08:55:16 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TH9Kx01zYz56cGR; Sat, 20 Jan 2024 08:55:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TH9Kw6WnZz4JCC; Sat, 20 Jan 2024 08:55:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705740916; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pGzYe7pOXTXxNmXbnOsvdjt+SrRWchMpVyUuQGmslV4=; b=oKpMq6yJdu9dBuuIxUsyRfJuvgVdOlUH3FpFTeOc/C5pzICRi1v/Y1rUhu2qRsy4KJ4O8n 6zVkufzoa+/DbWY8fcd3rZocBdajOLqfJ6RQERI05yww5+ZfuLpFDREcxKRDbEb1htsUio gOMn/n1WAbC138ED1cqzQ1SKdlIK7T1jac0RvyWwkEE8UPwNQgS+eDP5/faBudGvgNEAb6 1Vfo09KjbGqIMQEOjUPvkdYM9R4qMqcusi6dDXIh9LArvfcSL/1vE4rKJD2B3+XJRIDoDA 8bq06liTJ3uCFMScHDH7w2GjsT9duJ0LdJnsWxL8AxvgRXK88C5czUdRvNVcEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705740916; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pGzYe7pOXTXxNmXbnOsvdjt+SrRWchMpVyUuQGmslV4=; b=RowGHZKSck2bCUXHGLuKJzVuPdPVrFnT9lUr7DmdhQmETYAHaX6jOSFnZij5ypjFLdnoqF b/UTr3u7UFHDFgzJEc/FlRvHZaOBL3SHzCWC01ClQzMsaDVo4CLKtBvPnu2HQmI5LQHYMV 5X0CHR3oDNQjM0X8Ya5HRa07RBtdfQeiuh7y6x0q11UBkGnhoOafAXt00NkSAbC8Dxzt9O +NdQhVpup3SehKnuBUCur+USvHJRRmQ7lIZ3iJTvv6SOiPEfCclNnlAueh219cJ+SdYTFv F1GoW6WmnrETDYrjkH3cJK45W/bpgcgV7aRWyxgXrKpyBu5TCugutzfkohd43g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705740916; a=rsa-sha256; cv=none; b=fCbBQT2CX4Gg3RvrwnduIGsk5t6v3rfWz5KOH+dXyufT9dQlkQ5HPs3lLT+rRfC7EXqHBf n1Kr1UBu6lDsEooH1+Ci13flDiL5NW/QMARzwImIC4GMKLSYe4V6oVuexRo5Pt++rUomu0 MJSRLfRBwQtnypvn2kizP4R1Z8AozNSARy2fdlHv7fhcOk8RsYcejELMr2783ouavyD2Ej NOx2V132Py/jRB5lL1y/SQECoMoY2ymeNbhBKvYVp33XfX80Yx6KXPqoqkFdpntCAw0yzg Zbf5IPNGPH72comkEXsHDQ0Xrwy4/fZ8jos1hzgalYuvr78GzbyFAeXEXDOzyQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TH9Kw5ZZ5zSlh; Sat, 20 Jan 2024 08:55:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40K8tGjk078743; Sat, 20 Jan 2024 08:55:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40K8tGuT078740; Sat, 20 Jan 2024 08:55:16 GMT (envelope-from git) Date: Sat, 20 Jan 2024 08:55:16 GMT Message-Id: <202401200855.40K8tGuT078740@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Wolfram Schneider Subject: git: 7169c947ab41 - stable/14 - man(1): support spaces in filenames List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wosch X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 7169c947ab4150a539f2af6c9dcf3ab4344b0033 Auto-Submitted: auto-generated The branch stable/14 has been updated by wosch: URL: https://cgit.FreeBSD.org/src/commit/?id=7169c947ab4150a539f2af6c9dcf3ab4344b0033 commit 7169c947ab4150a539f2af6c9dcf3ab4344b0033 Author: Wolfram Schneider AuthorDate: 2024-01-13 16:16:55 +0000 Commit: Wolfram Schneider CommitDate: 2024-01-20 08:51:12 +0000 man(1): support spaces in filenames The globbing function in exists() needs to handle white spaces. PR: 275978 Reviewed by: kevans, bapt, emaste Differential Revision: https://reviews.freebsd.org/D43222 MFC after: 1 week (cherry picked from commit e3c7b76fa8105929ae9a785e5ffc44274b1b0a81) --- usr.bin/man/man.sh | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/usr.bin/man/man.sh b/usr.bin/man/man.sh index 7e2151295ba7..777726f880db 100755 --- a/usr.bin/man/man.sh +++ b/usr.bin/man/man.sh @@ -191,7 +191,9 @@ decho() { } # Usage: exists glob -# Returns true if glob resolves to a real file. +# +# Returns true if glob resolves to a real file and store the first +# found filename in the variable $found exists() { local IFS @@ -201,14 +203,16 @@ exists() { # Use some globbing tricks in the shell to determine if a file # exists or not. set +f - set -- "$1" $1 + for file in "$1"* + do + if [ -r "$file" ]; then + found="$file" + set -f + return 0 + fi + done set -f - if [ "$1" != "$2" -a -r "$2" ]; then - found="$2" - return 0 - fi - return 1 } @@ -230,10 +234,10 @@ find_file() { fi decho " Searching directory $manroot" 2 - mann="$manroot/$4.$2*" - man0="$manroot/$4.0*" - catn="$catroot/$4.$2*" - cat0="$catroot/$4.0*" + mann="$manroot/$4.$2" + man0="$manroot/$4.0" + catn="$catroot/$4.$2" + cat0="$catroot/$4.0" # This is the behavior as seen by the original man utility. # Let's not change that which doesn't seem broken. @@ -313,7 +317,7 @@ man_check_for_so() { .so*) trim "${line#.so}" decho "$manpage includes $tstr" # Glob and check for the file. - if ! check_man "$path/$tstr*" ""; then + if ! check_man "$path/$tstr" ""; then decho " Unable to find $tstr" return 1 fi From nobody Sat Jan 20 22:57:30 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4THX2033LLz57hxZ; Sat, 20 Jan 2024 22:57:44 +0000 (UTC) (envelope-from marius@btk.zeist.de) Received: from btk.zeist.de (btk.zeist.de [IPv6:2a01:4f8:221:2f4f::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "btk.zeist.de", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4THX1z4mMgz582H; Sat, 20 Jan 2024 22:57:43 +0000 (UTC) (envelope-from marius@btk.zeist.de) Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=freebsd.org (policy=none); spf=none (mx1.freebsd.org: domain of marius@btk.zeist.de has no SPF policy when checking 2a01:4f8:221:2f4f::2) smtp.mailfrom=marius@btk.zeist.de Received: from btk.zeist.de (localhost [127.0.0.1]) by btk.zeist.de (8.17.1/8.17.1/BTK.ZEIST.DE) with ESMTPS id 40KMvUfQ069682 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Sat, 20 Jan 2024 23:57:30 +0100 (CET) (envelope-from marius@btk.zeist.de) Received: (from marius@localhost) by btk.zeist.de (8.17.1/8.17.1/Submit) id 40KMvUlH069681; Sat, 20 Jan 2024 23:57:30 +0100 (CET) (envelope-from marius) Date: Sat, 20 Jan 2024 23:57:30 +0100 From: Marius Strobl To: Brooks Davis Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-branches@freebsd.org Subject: Re: git: d6ec20a30919 - stable/14 - geom_map(4): Garbage collect disconnected driver Message-ID: References: <202401182015.40IKF7M7068068@gitrepo.freebsd.org> List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spamd-Bar: -- X-Spamd-Result: default: False [-2.70 / 15.00]; NEURAL_HAM_SHORT(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FORGED_SENDER(0.30)[marius@freebsd.org,marius@btk.zeist.de]; MIME_GOOD(-0.10)[text/plain]; DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : No valid SPF, No valid DKIM,none]; ASN(0.00)[asn:24940, ipnet:2a01:4f8::/32, country:DE]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; FREEFALL_USER(0.00)[marius]; ARC_NA(0.00)[]; R_SPF_NA(0.00)[no SPF record]; R_DKIM_NA(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-branches@freebsd.org]; FROM_NEQ_ENVFROM(0.00)[marius@freebsd.org,marius@btk.zeist.de]; FROM_HAS_DN(0.00)[]; MISSING_XM_UA(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCPT_COUNT_THREE(0.00)[4] X-Rspamd-Queue-Id: 4THX1z4mMgz582H On Thu, Jan 18, 2024 at 09:23:05PM +0000, Brooks Davis wrote: > On Thu, Jan 18, 2024 at 08:15:07PM +0000, Marius Strobl wrote: > > The branch stable/14 has been updated by marius: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=d6ec20a3091924793576ba3fd71f42d4fcd3371f > > > > commit d6ec20a3091924793576ba3fd71f42d4fcd3371f > > Author: Marius Strobl > > AuthorDate: 2024-01-14 08:31:26 +0000 > > Commit: Marius Strobl > > CommitDate: 2024-01-18 20:14:46 +0000 > > > > geom_map(4): Garbage collect disconnected driver > > > > The last MIPS user has been removed in c09981f1 2 years ago, the last > > ARM one in 58d5c511 even 5.5 years ago. > > Unless this and geom_redboot were getting in the way of MFCing other > work, it seems a bit odd to MFC the removal of functionality. Yes, the motivation here is to simplify merges for code that no longer can be tested in either main or stable. Recently, I wasted a considerable amount of time trying to figure out how on earth I'm supposed to even just compile-test the code in sys/arm/ti when only a fraction of it is hooked up to the build until I found 3416e102 (which removes most but not all glue for sys/arm/ti from the kernel config files). Apart from that, unlike as with say le(4) (which also can be used by emulated and virtualized x86 guests) or sys/mips, I don't see which net "functionality" is removed in these two cases that wasn't already gone when sys/mips has been removed prior to branching stable/14. Marius From nobody Sun Jan 21 18:11:06 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TJ1cp538Xz57RGx; Sun, 21 Jan 2024 18:11:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TJ1cp2nSJz4PmC; Sun, 21 Jan 2024 18:11:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705860666; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AWOgEhHZUVaPw84hLrAItrq0R70KzUMzR5sn2bPVUeU=; b=Q565txS8OMNv2xmtrhMn7SlxDGSJBbOcuLuRv0cqm5vTBcQYB4XmsQF2zGsiPX2YDIBB3d gyA4K85jeDCxNCg2GRNVH64wgZZwScuYUIOCP9MFYSUtvq2kgUo667uz8Wm8jgYLw/6dGw qjR8r3n4i2XhrzvLHKd9jVFkEgwx7TDW6WypATBthh4PKuz10uOwjF6Mz4KI79yZUxbMBo TuICzmnPC4x9QRnfCw822bSeYygo0Rs6fv52MbOyjFy8F1r1noapHQTffY2oaOG4qCq5M0 xfXqh0Lpwh1U6ISQz/dkS7pIVHnHNbc+ycsXZc3qQi9iyfdO7oP8uUfE7L4gDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705860666; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AWOgEhHZUVaPw84hLrAItrq0R70KzUMzR5sn2bPVUeU=; b=cvIJ0SOen/MQw66A7LT3BlHLmB4hmZ/I9syQL54DLIzVdI8brrkeHj9fi48UBmEr73IPmg Jp2zkEf6GaQLOEG6HQim6kGskjkTzi+ThygP6eSJzmLFumH1Mb9aMkoV/3hLKCdhcLKpmM 0WkaMq3itpIiEE+gItl2zbMEaM0sLEFIl/kduI/fJe7kLoOFG6tHg9KVFz+PyPY/w7koqw 0pfoYt6+w4CkDHm2SKa5np+i0O4jZ3ycuxFoUqjOQN2dYW00A5SmTjOL9FhXe/1Rpm3f+B uIJcaCsrLYh68dUB7e1naMO01Rf5AxUz2bTigwE/zQxWi1TLuFkiW9LK5hWj8Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705860666; a=rsa-sha256; cv=none; b=oQGnm848oYyG6/DKecxEdh8aE8dwQy23NIYAk9KsePPBlTtbuLQg+DAkOaRA00flbdDusn KJ/bD5HxXcCseW6CXojvFIWtSMTvGDOs/RTyksqqTYfIp0Jiia2xHvY9ppwHMIhoobeUET 3YMA5xr4AiQTdM7qJ07AFzJV+s7jlqNjkVfwBcEdTxHe7PrXL9kcWSvnbfubIEuYJe+cfN 3QZngQHlEd91MQm8hDDSD3ESDmOirJlNuHw/ByBzfLXRyg9JCaPfiqKIMHMfqRsDU6rUlz 7tQnrmWRr4PhLk1sM8RDa0i4TsLLBBwiMR3QN0O6J3td7cvw9OzJPRwA+h2SeQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TJ1cp1s21zSDD; Sun, 21 Jan 2024 18:11:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40LIB6q1051869; Sun, 21 Jan 2024 18:11:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40LIB63h051866; Sun, 21 Jan 2024 18:11:06 GMT (envelope-from git) Date: Sun, 21 Jan 2024 18:11:06 GMT Message-Id: <202401211811.40LIB63h051866@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 559c7ac87dfb - stable/14 - renice: Clean up the tests a bit. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 559c7ac87dfbd2d6ad224541fed029a78cf50c11 Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=559c7ac87dfbd2d6ad224541fed029a78cf50c11 commit 559c7ac87dfbd2d6ad224541fed029a78cf50c11 Author: Dag-Erling Smørgrav AuthorDate: 2023-12-20 16:59:37 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-21 16:08:48 +0000 renice: Clean up the tests a bit. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: ngie, asomers Differential Revision: https://reviews.freebsd.org/D43087 (cherry picked from commit afdce0837014fb7a41fced959c9457f89e878052) --- usr.bin/renice/tests/renice_test.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/usr.bin/renice/tests/renice_test.sh b/usr.bin/renice/tests/renice_test.sh index 8a4df7879ad4..7983eb594716 100755 --- a/usr.bin/renice/tests/renice_test.sh +++ b/usr.bin/renice/tests/renice_test.sh @@ -14,8 +14,9 @@ _renice() { atf_check_nice_value() { local pid=$1 - local nice=$2 - atf_check test "$(ps -o nice= -p $pid)" -eq "$nice" + local expected=$2 + local actual="$(ps -o nice= -p $pid)" + atf_check test "$actual" -eq "$expected" } atf_test_case renice_abs_pid @@ -57,7 +58,7 @@ renice_abs_pgid_head() { renice_abs_pgid_body() { local pid pgid nice incr # make sure target runs in a different pgrp than ours - pid=$(sh -mc "sleep 60 >/dev/null & echo \$!") + pid="$(sh -mc "sleep 60 >/dev/null & echo \$!")" pgid="$(ps -o pgid= -p $pid)" nice="$(ps -o nice= -p $pid)" incr=3 @@ -73,7 +74,7 @@ renice_rel_pgid_head() { renice_rel_pgid_body() { local pid pgid nice incr # make sure target runs in a different pgrp than ours - pid=$(sh -mc "sleep 60 >/dev/null & echo \$!") + pid="$(sh -mc "sleep 60 >/dev/null & echo \$!")" pgid="$(ps -o pgid= -p $pid)" nice="$(ps -o nice= -p $pid)" incr=3 @@ -90,7 +91,7 @@ renice_abs_user_head() { } renice_abs_user_body() { local user pid nice incr - pid=$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'") + pid="$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'")" nice="$(ps -o nice= -p $pid)" incr=3 _renice $((nice+incr)) -u $TEST_USER @@ -105,7 +106,7 @@ renice_rel_user_head() { } renice_rel_user_body() { local user pid nice incr - pid=$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'") + pid="$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'")" nice="$(ps -o nice= -p $pid)" incr=3 _renice -u -n $incr $TEST_USER From nobody Sun Jan 21 18:11:11 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TJ1cv4brMz57RKH; Sun, 21 Jan 2024 18:11:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TJ1cv4B43z4Q2p; Sun, 21 Jan 2024 18:11:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705860671; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RTzO0PUQyEvAznlZMrVkPYxErXXXQ88Zkfion2EbTu8=; b=OsPBFENBMjHl9OJxwi/HzlSQYpQ/X/tq+A3FHg6R9sB+VutHwRna880yH6NXG4vBuS5ep6 Nao/wax6cSumt8XGsIVq57osn3weAyR8kVKC5CT8TXO/QlOqfgsM/36Frtedr2umwNlu+a xprzIt8JTKolghCWc+6Fn/FG99Nstvk+rfiY3pt43QvWJK646mbdpgbbtzMwxkL26oeZro honNXdmpWnmKdkB3RLXw3zWKzukpeunAMjeVp1oprwaOzWfJtROp1xG7489T7e731xlajX 5cG6KV2ZCQUHgjhLo9myVQXeeF0LF6NZaVMgsWXM9S59pTGcVchtKjyD8Ja5LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705860671; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RTzO0PUQyEvAznlZMrVkPYxErXXXQ88Zkfion2EbTu8=; b=Y72FooupiJCOWzbdGPiay7ACyC+KJW9C0TR5mh2oG5b7oUPun64Hd2zN/QmB6HRpPjzgGg rVi+VL67gctU25bFd5KZGWOIgpboXNMRtcgVqtAyApOYs1U/S4T87hBcEI9MamhWdXWdfX wz8RHQnYl2k1bT4jLM6YjbJVT14xycAJ9XYXy65e8Ux3c736i5oQNtI1s+xJhdabpa9ivP Dm9/8EV3WUrUvdmGxPIXQZE0o2wcC7cQ2A6e8n1hGl8hggUlwQyw9U2TZw8OyDuSCexpvI UUfH4A95Zt5Y5TE/F8mhmFHO2jYtVZs+htCI6oDwWT2JV1Qx/Kqe3TZYMU+7RQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705860671; a=rsa-sha256; cv=none; b=HHXgEFeoeMmC8GWIMINbO6YD7A2Tl46sFLFGAWX434Z4L3K8/ct5DUXGhsIKoiF1SUBs+/ 5gr5z6qaaFILFC7/LYcIcSKIMYayp4UkoZ9MFpDhfPRfogJmBjLTz4edQuH6eiZ3zibZPr KTqnlbFq0EabtJMtHG0WR7qJSS3cytiAnFmNudoZR9R817ic3Ud+uzQkOjaw5diIH2j5AR iZbBeYru3ypEZcTN1SoIH3/NF74CVP77u9+Bn3zo05VulAE1V6ythJcV9PFBaTy4xocblN 6QULPreGOemtzE2/BrwscWop5guvcJjd136KbgfO3W41F7VIqSJGtiSHZIwrzw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TJ1cv3J65zSj4; Sun, 21 Jan 2024 18:11:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40LIBBuF052043; Sun, 21 Jan 2024 18:11:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40LIBBGW052040; Sun, 21 Jan 2024 18:11:11 GMT (envelope-from git) Date: Sun, 21 Jan 2024 18:11:11 GMT Message-Id: <202401211811.40LIBBGW052040@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 9f5c2e34f226 - stable/13 - renice: Force /bin/sh usage on su calls for the regression tests. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 9f5c2e34f226a7ffd04a71dfb5e9c7f358068607 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=9f5c2e34f226a7ffd04a71dfb5e9c7f358068607 commit 9f5c2e34f226a7ffd04a71dfb5e9c7f358068607 Author: Olivier Cochard AuthorDate: 2022-10-13 15:23:54 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-21 16:11:08 +0000 renice: Force /bin/sh usage on su calls for the regression tests. If the root account is configured to use a different shell than sh, it fails to retreive the pid of the background process. Approved by: des Obtained from: chs Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D36930 (cherry picked from commit 07b1ea961af77d728dfef4d0a11f98a8ab2fe226) --- usr.bin/renice/tests/renice_test.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.bin/renice/tests/renice_test.sh b/usr.bin/renice/tests/renice_test.sh index feb07a6af825..8a4df7879ad4 100755 --- a/usr.bin/renice/tests/renice_test.sh +++ b/usr.bin/renice/tests/renice_test.sh @@ -90,7 +90,7 @@ renice_abs_user_head() { } renice_abs_user_body() { local user pid nice incr - pid=$(su -m $TEST_USER -c "sleep 60 >/dev/null & echo \$!") + pid=$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'") nice="$(ps -o nice= -p $pid)" incr=3 _renice $((nice+incr)) -u $TEST_USER @@ -105,7 +105,7 @@ renice_rel_user_head() { } renice_rel_user_body() { local user pid nice incr - pid=$(su -m $TEST_USER -c "sleep 60 >/dev/null & echo \$!") + pid=$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'") nice="$(ps -o nice= -p $pid)" incr=3 _renice -u -n $incr $TEST_USER From nobody Sun Jan 21 18:11:12 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TJ1cw5mMRz57RFF; Sun, 21 Jan 2024 18:11:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TJ1cw4z3Gz4PlD; Sun, 21 Jan 2024 18:11:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705860672; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8t3PbXnY/LtlgiDSp2RKr/sSKqeumNhvyrkGyqjn+Os=; b=oKVN0+FE97t0ZjoZ01Vx5u0dPdMNBjRb0up0llK2v2t7yUX9Aspuzi5Guq3nRLW6bBOFKX YS1+mqoeECDa/8gSim0KwWZQrtQqDREQZfSzvNdGVWXjK5zYIs7NgCv6ZRZ75c53RW91/m wmfI60tLPCiVPCN+MSaB7+wW734nxpYXFTOrvzxtBYE+sqZTR6SS8J4WZabBf9hIg/x2x4 LrIkNcPkWJ8T3lLdJKk5i9SfEHsF6HtTt7U6UhzKI5VS5BZmZ64yG8FqffRHZ9PxZiKOGu ZQR1e1m1i1fOtrn41OJwYb0PDMMZJe4dY3sKta6Bf6xFeIZUe3QYYb78LOImDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705860672; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8t3PbXnY/LtlgiDSp2RKr/sSKqeumNhvyrkGyqjn+Os=; b=oJ0oFKzBpeyf35C7VRlHVdcjU8WLC0K9Ikl4oZhq789wXghDgekzEWPlUw8mS11TAJx3Bj M+ISuEOoHQC6ji2YDgQNvDB76sB5hmaby2TlMxd5glrlABE1IQXFU5ccWdOLeWdshHD39f +a5vGo32JxM1E1nbS9itIG6GMoReaa1msnmeWLv8pjA1AWjDoUXo4/b+Jtrlx8Is8mPVU0 WNwJey5N6p9DJiVkC7yiItThSBV25yA653OP9AcKEoPFX2ZGQPLyB1JEghLY7HgLi7i/qu OeLpX+ZX/MBY0XAalZUrZ18IZTn5jO2XUcEXwOPEpam4PhX5KLFk8C6uaHgOaQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705860672; a=rsa-sha256; cv=none; b=mS8yocYcLf7K5ivoduN90/ISLzGqccNR3cG1XUohPm+CxPuthJGtlJ68POHdrkVGF1ep9h yF0T2oBbeanoJtUs8Lwy/TvuyJmlB6GfeBH4Pi6kErXl3upD1fFCiDPcgdHBmivVXeDqLT bZTR4uuxKlMjl+dUSRsJJzzXqa9/hxe0Zs7qqf1YyvQH0wBEM34juz1i3nVbEvRNU4xqFM V4UcYy+at33FpJd6sjWB5+ZGzUyKKJ1SKDsaKGK2xzFuyyvrV+L0Av1TYy7ebe2Gmft+a1 2j9tv1nGeXGdSMaE74ZF9ECvq+U6r5jSvhh2Eip+nRewDT7uQqYU2PjjAYgDAQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TJ1cw44fHzSH9; Sun, 21 Jan 2024 18:11:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40LIBCci052096; Sun, 21 Jan 2024 18:11:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40LIBCxN052093; Sun, 21 Jan 2024 18:11:12 GMT (envelope-from git) Date: Sun, 21 Jan 2024 18:11:12 GMT Message-Id: <202401211811.40LIBCxN052093@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 5b88f1efe108 - stable/13 - renice: Clean up the tests a bit. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 5b88f1efe1081885e0015bc4332a693a542fc5cf Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=5b88f1efe1081885e0015bc4332a693a542fc5cf commit 5b88f1efe1081885e0015bc4332a693a542fc5cf Author: Dag-Erling Smørgrav AuthorDate: 2023-12-20 16:59:37 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-01-21 16:11:13 +0000 renice: Clean up the tests a bit. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: ngie, asomers Differential Revision: https://reviews.freebsd.org/D43087 (cherry picked from commit afdce0837014fb7a41fced959c9457f89e878052) --- usr.bin/renice/tests/renice_test.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/usr.bin/renice/tests/renice_test.sh b/usr.bin/renice/tests/renice_test.sh index 8a4df7879ad4..7983eb594716 100755 --- a/usr.bin/renice/tests/renice_test.sh +++ b/usr.bin/renice/tests/renice_test.sh @@ -14,8 +14,9 @@ _renice() { atf_check_nice_value() { local pid=$1 - local nice=$2 - atf_check test "$(ps -o nice= -p $pid)" -eq "$nice" + local expected=$2 + local actual="$(ps -o nice= -p $pid)" + atf_check test "$actual" -eq "$expected" } atf_test_case renice_abs_pid @@ -57,7 +58,7 @@ renice_abs_pgid_head() { renice_abs_pgid_body() { local pid pgid nice incr # make sure target runs in a different pgrp than ours - pid=$(sh -mc "sleep 60 >/dev/null & echo \$!") + pid="$(sh -mc "sleep 60 >/dev/null & echo \$!")" pgid="$(ps -o pgid= -p $pid)" nice="$(ps -o nice= -p $pid)" incr=3 @@ -73,7 +74,7 @@ renice_rel_pgid_head() { renice_rel_pgid_body() { local pid pgid nice incr # make sure target runs in a different pgrp than ours - pid=$(sh -mc "sleep 60 >/dev/null & echo \$!") + pid="$(sh -mc "sleep 60 >/dev/null & echo \$!")" pgid="$(ps -o pgid= -p $pid)" nice="$(ps -o nice= -p $pid)" incr=3 @@ -90,7 +91,7 @@ renice_abs_user_head() { } renice_abs_user_body() { local user pid nice incr - pid=$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'") + pid="$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'")" nice="$(ps -o nice= -p $pid)" incr=3 _renice $((nice+incr)) -u $TEST_USER @@ -105,7 +106,7 @@ renice_rel_user_head() { } renice_rel_user_body() { local user pid nice incr - pid=$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'") + pid="$(su -m $TEST_USER -c "/bin/sh -c 'sleep 60 >/dev/null & echo \$!'")" nice="$(ps -o nice= -p $pid)" incr=3 _renice -u -n $incr $TEST_USER