[PATCH 1/2] drm/panthor: Fix missing explicit padding in drm_panthor_gpu_info
Boris Brezillon
boris.brezillon at collabora.com
Thu Apr 17 10:05:02 UTC 2025
drm_panthor_gpu_info::shader_present is currently automatically offset
by 4 byte to meet Arm's 32-bit/64-bit field alignment rules, but those
constraints don't stand on 32-bit x86 and cause a mismatch when running
an x86 binary in a user emulated environment like FEX. It's also
generally agreed that uAPIs should explicitly pad their struct fields,
which we originally intended to do, but a mistake slipped through during
the submission process, leading drm_panthor_gpu_info::shader_present to
be misaligned.
This uAPI change doesn't break any of the existing users of panthor
which are either arm32 or arm64 where the 64-bit alignment of
u64 fields is already enforced a the compiler level.
Fixes: 0f25e493a246 ("drm/panthor: Add uAPI")
Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
---
include/uapi/drm/panthor_drm.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/include/uapi/drm/panthor_drm.h b/include/uapi/drm/panthor_drm.h
index 97e2c4510e69..1379a2d4548c 100644
--- a/include/uapi/drm/panthor_drm.h
+++ b/include/uapi/drm/panthor_drm.h
@@ -293,6 +293,18 @@ struct drm_panthor_gpu_info {
/** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
__u32 as_present;
+ /**
+ * @garbage: Unused field that's not even zero-checked.
+ *
+ * This originates from a missing padding that leaked in the initial driver submission
+ * and was only found when testing the driver in a 32-bit x86 environment, where
+ * u64 field alignment rules are relaxed compared to aarch32.
+ *
+ * This field can't be repurposed, because it's never been checked by the driver and
+ * userspace is not guaranteed to zero it out.
+ */
+ __u32 garbage;
+
/** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */
__u64 shader_present;
--
2.49.0
More information about the dri-devel
mailing list