From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=pass header.oldest-pass=0 smtp.remote-ip=165.173.180.11 ARC-Seal: i=2; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=pass; t=1792540103; b=cY67XbbRgwoubH5JKKBNoQYWkbUWBaI6ZdE5fFH3PqzHqmkHeGm3Gl0hs97fm+5JO8hM Y5AyCNHVWLrvPl++OR58uKB246TecvEpHMQwsMxIqR53BZNiAcwPgtbxKYa62LOqrEa41 hvM/bP76ifr5hJvpHwlTdzbisqdicjrwImBcmUaJw3WaR3FNFMircmseo18+bAfO+cwAW YonPFlAYCSbyyOD1Ehas7X3RrHFy3kY9qhsxb0IHGz4PQtiAQj6ERTWO5r/rxHO5sWcbB H+O8++m79k+SYYgSpTNMHRRYgU1LC2fPk019gknkT9LsEaP+1uDsYdSq24wC49UW5nw== ARC-Message-Signature: i=2; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792540103; h=DMARC-Filter:DKIM-Signature:Received:From:Date:Subject:MIME-Version: Content-Type:Content-Transfer-Encoding:Message-Id:References: In-Reply-To:To:Cc:X-Mailer:X-Developer-Signature:X-Developer-Key; bh=YmHrXWU3qMwB9b2uAxX6OMWoxOJoFBDFFfj/j0paiqk=; b=Kw/o3G7O8lyifwL0kHIPwo776eUMkutDgaTyALIQrM5/OgtiNui97UwYJf0T/xTxbIEv qnY9q0bNZKy8jHuB4q7dnabWLZYwHAyv/4evPkWOU16DrS0vKO80AJugIYZw0wOmr7Yjt TAp79IkbOB8YSltCm9n7vbzunFJWtOD4hq/c0fYPCje5JMWVpiPKWQ5l8q68hIQ1IGR7S kq/OyznbxZrcLWEy9vieTTnEbKSEDcVDxHBWE5q6PCZep8FC2OUrWL/PstwPYD/gb5u9a WIPgoI8+sQawGkCToiICYO1YELUaSKHuBrEtoa4wSMjLzgsUJf4D5ZczvD5BXUd3YJg== ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass header.d=collabora.com header.i=deborah.brouwer@collabora.com header.a=rsa-sha256 header.s=zohomail header.b=curye+Pz; arc=pass header.oldest-pass=0 smtp.remote-ip=165.173.180.11 Received: from sender6-op-o11.zoho.com (sender6-op-o11.zoho.com [165.173.180.11]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 539DC606A319; Tue, 20 Oct 2026 23:48:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 539DC606A319 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key, unprotected) header.d=collabora.com header.i=deborah.brouwer@collabora.com header.a=rsa-sha256 header.s=zohomail header.b=curye+Pz ARC-Seal: i=1; a=rsa-sha256; t=1792540074; cv=none; d=zohomail.com; s=zohoarc; b=LBu7GexQf4uyuZKE8Hmsguyxg6btlq1xjlYOov/whde8TdHkQ8BYxMovYdgzp7JWvzs3PzI7F8QQYu92qRx8hZ8FMeWdtyUepRdw5QaDGXCeiz7Ky1s3j1Ux0uVVBFxQWWgq3D9rUwSU8T6c7JD7EjMTN4jrSoWwTH1/CUFSPE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1792540074; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=YmHrXWU3qMwB9b2uAxX6OMWoxOJoFBDFFfj/j0paiqk=; b=aHHCV9nEN6yGYpbnGttwkFYkE+x7kZ48lLB5eZVHZVtudycQEzHClYXObazs5BVzPorw/RAIVLAuTGNYjHYpg32vNB4kLbCLA4TtWPG8LJzYGVvCfUpliISkvsQT7b4pnwI3hiG2Z3IugaojrAE7ddR74iftMSHssO+GtTlLCr0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=deborah.brouwer@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1792540074; s=zohomail; d=collabora.com; i=deborah.brouwer@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=YmHrXWU3qMwB9b2uAxX6OMWoxOJoFBDFFfj/j0paiqk=; b=curye+PzcNaYM1m8osNL+K+/wnECKiC7OjnUfmgV5AwrfNTYc+bLtv9eUEY1Y/EB wKaSbW/owLurT23yRFrvNNI3ZwwTboofkBu7+QWrAWIaU9r3aVDcXFQojC/QHpJmEXy 3BcbRUj8aLXUlrQCWyqbmNzvRcA/QqdLoT+rmXKY= Received: by smtp.zohomail.com with SMTPS id 1792540072479813.6681805514874; Tue, 20 Oct 2026 16:47:52 -0700 (PDT) From: Deborah Brouwer Date: Tue, 20 Oct 2026 16:47:48 -0700 Subject: [PATCH v5 1/2] rust: add zerocopy to bindings and uapi X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261020-b4-gpu_info_intobytes-v5-1-3e0c7c93223c@collabora.com> References: <20261020-b4-gpu_info_intobytes-v5-0-3e0c7c93223c@collabora.com> In-Reply-To: <20261020-b4-gpu_info_intobytes-v5-0-3e0c7c93223c@collabora.com> To: Danilo Krummrich , Alice Ryhl , Daniel Almeida , David Airlie , Simona Vetter , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= , Jesung Yang Cc: dri-devel@lists.freedesktop.org, rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Deborah Brouwer X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4236; i=deborah.brouwer@collabora.com; h=from:subject:message-id; bh=ksUdZjJLS9NRl0QqnesGr43vVVUDSiP4F76anxruEjA=; b=owGbwMvMwCVWuULzOU9c7WvG02pJDFnX/y5NSJrI5vJzr66YxOPuH9z7Os3PMigz30m8tO3og QUvZ8wT6ChlYRDjYpAVU2Q5a2/UI1713kh3/v9mmDmsTCBDGLg4BWAipqyMDDMTTtzMye6fO99Q b5LNBZZZUe6tctsenFQQPHHarveA7z2G/8Ebdq5kN+7p267t6C595t2B0Go+z3yBXf3pNn2ak7U 38gAA X-Developer-Key: i=deborah.brouwer@collabora.com; a=openpgp; fpr=CD3F328C177AEF322D9FFF8379A829E70C5E7DEB Make the zerocopy and zerocopy_derive crates available to use when building the bindings and uapi crates and their tests. Also make the zerocopy and zerocopy_derive crates available to rust-analyzer when it runs on the bindings and uapi crates. This will be used by the Tyr driver that needs the traits IntoBytes and Immutable to safely copy the struct byte-for-byte to userspace. Signed-off-by: Deborah Brouwer --- rust/Makefile | 24 ++++++++++++++++++------ scripts/generate_rust_analyzer.py | 4 ++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/rust/Makefile b/rust/Makefile index da1a7409d984..a182c0e96974 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -361,12 +361,18 @@ rusttestlib-kernel: $(src)/kernel/lib.rs rusttestlib-bindings rusttestlib-uapi \ $(obj)/bindings.o rusttestlib-zerocopy rusttestlib-zerocopy_derive FORCE +$(call if_changed,rustc_test_library) -rusttestlib-bindings: private rustc_target_flags = --extern ffi --extern pin_init -rusttestlib-bindings: $(src)/bindings/lib.rs rusttestlib-ffi rusttestlib-pin_init FORCE +rusttestlib-bindings: private rustc_target_flags = --extern ffi --extern pin_init \ + --extern zerocopy=$(objtree)/$(obj)/test/libzerocopy.rlib \ + --extern zerocopy_derive=$(objtree)/$(obj)/test/$(libzerocopy_derive_name) +rusttestlib-bindings: $(src)/bindings/lib.rs rusttestlib-ffi rusttestlib-pin_init \ + rusttestlib-zerocopy rusttestlib-zerocopy_derive FORCE +$(call if_changed,rustc_test_library) -rusttestlib-uapi: private rustc_target_flags = --extern ffi --extern pin_init -rusttestlib-uapi: $(src)/uapi/lib.rs rusttestlib-ffi rusttestlib-pin_init FORCE +rusttestlib-uapi: private rustc_target_flags = --extern ffi --extern pin_init \ + --extern zerocopy=$(objtree)/$(obj)/test/libzerocopy.rlib \ + --extern zerocopy_derive=$(objtree)/$(obj)/test/$(libzerocopy_derive_name) +rusttestlib-uapi: $(src)/uapi/lib.rs rusttestlib-ffi rusttestlib-pin_init \ + rusttestlib-zerocopy rusttestlib-zerocopy_derive FORCE +$(call if_changed,rustc_test_library) quiet_cmd_rustdoc_test = RUSTDOC T $< @@ -774,19 +780,25 @@ $(obj)/ffi.o: private skip_gendwarfksyms = 1 $(obj)/ffi.o: $(src)/ffi.rs $(obj)/compiler_builtins.o FORCE +$(call if_changed_rule,rustc_library) -$(obj)/bindings.o: private rustc_target_flags = --extern ffi --extern pin_init +$(obj)/bindings.o: private rustc_target_flags = --extern ffi --extern pin_init \ + --extern zerocopy --extern zerocopy_derive $(obj)/bindings.o: $(src)/bindings/lib.rs \ $(obj)/ffi.o \ $(obj)/pin_init.o \ + $(obj)/zerocopy.o \ + $(obj)/$(libzerocopy_derive_name) \ $(obj)/bindings/bindings_generated.rs \ $(obj)/bindings/bindings_helpers_generated.rs FORCE +$(call if_changed_rule,rustc_library) -$(obj)/uapi.o: private rustc_target_flags = --extern ffi --extern pin_init +$(obj)/uapi.o: private rustc_target_flags = --extern ffi --extern pin_init \ + --extern zerocopy --extern zerocopy_derive $(obj)/uapi.o: private skip_gendwarfksyms = 1 $(obj)/uapi.o: $(src)/uapi/lib.rs \ $(obj)/ffi.o \ $(obj)/pin_init.o \ + $(obj)/zerocopy.o \ + $(obj)/$(libzerocopy_derive_name) \ $(obj)/uapi/uapi_generated.rs FORCE +$(call if_changed_rule,rustc_library) diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py index dc1219736f77..6255a81591eb 100755 --- a/scripts/generate_rust_analyzer.py +++ b/scripts/generate_rust_analyzer.py @@ -313,8 +313,8 @@ def generate_crates( } return register_crate(crate_with_generated) - bindings = append_crate_with_generated("bindings", [core, ffi, pin_init]) - uapi = append_crate_with_generated("uapi", [core, ffi, pin_init]) + bindings = append_crate_with_generated("bindings", [core, ffi, pin_init, zerocopy, zerocopy_derive]) + uapi = append_crate_with_generated("uapi", [core, ffi, pin_init, zerocopy, zerocopy_derive]) kernel = append_crate_with_generated( "kernel", [core, macros, build_error, pin_init, ffi, bindings, uapi, zerocopy, zerocopy_derive] ) -- 2.56.0