On Thu, 2021-09-30 at 10:22 +0100, Melissa Wen wrote: > > > > O 09/30, Iago Toral wrote: > > On Wed, 2021-09-29 at 10:44 +0100, Melissa Wen wrote: (...) > > > /** > > > * struct drm_v3d_submit_cl - ioctl argument for submitting > > > commands > > > to the 3D > > > @@ -135,12 +149,16 @@ struct drm_v3d_submit_cl { > > > /* Number of BO handles passed in (size is that times 4). */ > > > __u32 bo_handle_count; > > > > > > + /* DRM_V3D_SUBMIT_* properties */ > > > __u32 flags; > > > > > > /* ID of the perfmon to attach to this job. 0 means no perfmon. > > > */ > > > __u32 perfmon_id; > > > > > > __u32 pad; > > > + > > > + /* Pointer to an array of ioctl extensions*/ > > > + __u64 extensions; > > > }; > > > > > > /** > > > @@ -248,6 +266,12 @@ struct drm_v3d_submit_tfu { > > > __u32 in_sync; > > > /* Sync object to signal when the TFU job is done. */ > > > __u32 out_sync; > > > + > > > + __u32 flags; > > > + > > > + /* Pointer to an array of ioctl extensions*/ > > > + __u64 extensions; > > > > We want __u64 fields aligned to 64-bit so we should swap the > > positions > > of flags and extensions. > > hmm.. not sure. before two arrays of 4 x _u32 elements, we have seven > _u32 elements... this is why I counted a odd number of _u32 and put > _u32 > flags before _u64 extensions... or is it working different for array > types? > Ah yes, I was confused by the patch format, but you're right. > For the same reason, I think there is an unalignment issue on > submit_csd that would need to change the current interface to solve > (afaiu)... > Yes, that one is not aligned, but it is too late to fix now without braking the interface. We have not seen any issues caused by that on 32-bit Raspbian though. Iago > > > + > > > }; > > > > > > /* Submits a compute shader for dispatch. This job will block > > > on > > > any > > > @@ -276,6 +300,13 @@ struct drm_v3d_submit_csd { > > > > > > /* ID of the perfmon to attach to this job. 0 means no perfmon. > > > */ > > > __u32 perfmon_id; > > > + > > > + /* Pointer to an array of ioctl extensions*/ > > > + __u64 extensions; > > > + > > > + __u32 flags; > > > + > > > + __u32 pad; > > > }; > > > > > > enum {