On Sat, Sep 26, 2026 at 04:50:37PM +0100, Gary Guo wrote: > On Sat Sep 26, 2026 at 1:26 AM BST, Deborah Brouwer wrote: > > Make the zerocopy and zerocopy_derive crates available for use when > > building the UAPI crate and its tests. Then attempt to derive most of > > the zerocopy traits for struct drm_panthor_gpu_info when generating its > > binding. 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 <[email protected]> > > --- > > rust/Makefile | 12 +++++++++--- > > rust/bindgen_parameters | 3 +++ > > 2 files changed, 12 insertions(+), 3 deletions(-) > > > > diff --git a/rust/Makefile b/rust/Makefile > > index da1a7409d984..bf02a1efd6f3 100644 > > --- a/rust/Makefile > > +++ b/rust/Makefile > > @@ -365,8 +365,11 @@ rusttestlib-bindings: private rustc_target_flags = > > --extern ffi --extern pin_ini > > rusttestlib-bindings: $(src)/bindings/lib.rs rusttestlib-ffi > > rusttestlib-pin_init 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 $< > > @@ -782,11 +785,14 @@ $(obj)/bindings.o: $(src)/bindings/lib.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) \ > > Please add these to `bindings` crate as well to avoid have it diverging with > `uapi`.
Ack. > > > $(obj)/uapi/uapi_generated.rs FORCE > > +$(call if_changed_rule,rustc_library) > > > > diff --git a/rust/bindgen_parameters b/rust/bindgen_parameters > > index 8402b0c93545..332bc8d6a9f7 100644 > > --- a/rust/bindgen_parameters > > +++ b/rust/bindgen_parameters > > @@ -71,3 +71,6 @@ > > # Structs should implement `Zeroable` when all of their fields do. > > --with-derive-custom-struct .*=MaybeZeroable > > --with-derive-custom-union .*=MaybeZeroable > > + > > +# `drm_panthor_gpu_info` is copied byte-for-byte to userspace. > > +--with-derive-custom-struct > > '^drm_panthor_gpu_info$'=zerocopy_derive::most_traits > > This is Tyr specific change and should be in patch 2. Ack, will update in next verion. > > Best, > Gary > >
