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
> 
> 

Reply via email to