Building Mesa's Perfetto requires including the panfrost drm uAPI header in
C++ code, but the C++ compiler requires anonymous unions to have only
public non-static data members.

Commit 730c2bf4ad39 ("drm/panfrost: Add support for devcoredump")
introduces one such union, breaking the Mesa build.

Give it a name, and also rename pan_reg_hdr structure because it will
always be prefixed by the union name.

Bug: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7195

Signed-off-by: Adrián Larumbe <adrian.laru...@collabora.com>
---
 drivers/gpu/drm/panfrost/panfrost_dump.c | 20 ++++++++++----------
 include/uapi/drm/panfrost_drm.h          |  4 ++--
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_dump.c 
b/drivers/gpu/drm/panfrost/panfrost_dump.c
index 89056a1aac7d..e40b6eace187 100644
--- a/drivers/gpu/drm/panfrost/panfrost_dump.c
+++ b/drivers/gpu/drm/panfrost/panfrost_dump.c
@@ -177,11 +177,11 @@ void panfrost_core_dump(struct panfrost_job *job)
         * For now, we write the job identifier in the register dump header,
         * so that we can decode the entire dump later with pandecode
         */
-       iter.hdr->reghdr.jc = cpu_to_le64(job->jc);
-       iter.hdr->reghdr.major = cpu_to_le32(PANFROSTDUMP_MAJOR);
-       iter.hdr->reghdr.minor = cpu_to_le32(PANFROSTDUMP_MINOR);
-       iter.hdr->reghdr.gpu_id = cpu_to_le32(pfdev->features.id);
-       iter.hdr->reghdr.nbos = cpu_to_le64(job->bo_count);
+       iter.hdr->pan_hdr.regs.jc = cpu_to_le64(job->jc);
+       iter.hdr->pan_hdr.regs.major = cpu_to_le32(PANFROSTDUMP_MAJOR);
+       iter.hdr->pan_hdr.regs.minor = cpu_to_le32(PANFROSTDUMP_MINOR);
+       iter.hdr->pan_hdr.regs.gpu_id = cpu_to_le32(pfdev->features.id);
+       iter.hdr->pan_hdr.regs.nbos = cpu_to_le64(job->bo_count);
 
        panfrost_core_dump_registers(&iter, pfdev, as_nr, slot);
 
@@ -205,20 +205,20 @@ void panfrost_core_dump(struct panfrost_job *job)
 
                if (!bo->base.sgt) {
                        dev_err(pfdev->dev, "Panfrost Dump: BO has no sgt, 
cannot dump\n");
-                       iter.hdr->bomap.valid = 0;
+                       iter.hdr->pan_hdr.bomap.valid = 0;
                        goto dump_header;
                }
 
                ret = drm_gem_shmem_vmap(&bo->base, &map);
                if (ret) {
                        dev_err(pfdev->dev, "Panfrost Dump: couldn't map Buffer 
Object\n");
-                       iter.hdr->bomap.valid = 0;
+                       iter.hdr->pan_hdr.bomap.valid = 0;
                        goto dump_header;
                }
 
                WARN_ON(!mapping->active);
 
-               iter.hdr->bomap.data[0] = cpu_to_le32((bomap - bomap_start));
+               iter.hdr->pan_hdr.bomap.data[0] = cpu_to_le32((bomap - 
bomap_start));
 
                for_each_sgtable_page(bo->base.sgt, &page_iter, 0) {
                        struct page *page = sg_page_iter_page(&page_iter);
@@ -231,14 +231,14 @@ void panfrost_core_dump(struct panfrost_job *job)
                        }
                }
 
-               iter.hdr->bomap.iova = cpu_to_le64(mapping->mmnode.start << 
PAGE_SHIFT);
+               iter.hdr->pan_hdr.bomap.iova = 
cpu_to_le64(mapping->mmnode.start << PAGE_SHIFT);
 
                vaddr = map.vaddr;
                memcpy(iter.data, vaddr, bo->base.base.size);
 
                drm_gem_shmem_vunmap(&bo->base, &map);
 
-               iter.hdr->bomap.valid = cpu_to_le32(1);
+               iter.hdr->pan_hdr.bomap.valid = cpu_to_le32(1);
 
 dump_header:   panfrost_core_dump_header(&iter, PANFROSTDUMP_BUF_BO, iter.data 
+
                                          bo->base.base.size);
diff --git a/include/uapi/drm/panfrost_drm.h b/include/uapi/drm/panfrost_drm.h
index eac87310b348..4da33e4d7e2c 100644
--- a/include/uapi/drm/panfrost_drm.h
+++ b/include/uapi/drm/panfrost_drm.h
@@ -248,7 +248,7 @@ struct panfrost_dump_object_header {
                        __le32 major;
                        __le32 minor;
                        __le64 nbos;
-               } reghdr;
+               } regs;
 
                struct pan_bomap_hdr {
                        __le32 valid;
@@ -262,7 +262,7 @@ struct panfrost_dump_object_header {
                 */
 
                __le32 sizer[496];
-       };
+       } pan_hdr;
 };
 
 /* Registers object, an array of these */
-- 
2.37.0

Reply via email to