From: Boris Brezillon <[email protected]>

Keep a copy of the FW section size and VA in the
panthor_fw_section object. We need this in the future when handling
late init of protected memory for FW sections of type
CSF_FW_BINARY_IFACE_ENTRY_PROT.

Signed-off-by: Boris Brezillon <[email protected]>
Co-developed-by: Ketil Johnsen <[email protected]>
Signed-off-by: Ketil Johnsen <[email protected]>

---

v4:
- First version of this change as a separate commit
---
 drivers/gpu/drm/panthor/panthor_fw.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/panthor/panthor_fw.c 
b/drivers/gpu/drm/panthor/panthor_fw.c
index 7b8c90b19f4fe..fc07796fc9ef7 100644
--- a/drivers/gpu/drm/panthor/panthor_fw.c
+++ b/drivers/gpu/drm/panthor/panthor_fw.c
@@ -198,6 +198,12 @@ struct panthor_fw_section {
                /** @size: Size of @buf in bytes. */
                size_t size;
        } data;
+
+       /** @size: Section size. */
+       size_t size;
+
+       /** @va: Section VA. */
+       u32 va;
 };
 
 #define CSF_MCU_SHARED_REGION_START            0x04000000ULL
@@ -669,18 +675,21 @@ static int panthor_fw_load_section_entry(struct 
panthor_device *ptdev,
                section->name = name;
        }
 
+       section->size = section_size;
+       section->va = hdr.va.start;
+
        if (section_size) {
                u32 vm_map_flags = section_vm_map_flags(section);
-               u64 va = hdr.va.start;
 
-               section->mem = panthor_kernel_bo_create(ptdev, 
panthor_fw_vm(ptdev),
-                                                       section_size,
-                                                       DRM_PANTHOR_BO_NO_MMAP,
-                                                       vm_map_flags, va, "FW 
section");
+               section->mem = panthor_kernel_bo_create(
+                       ptdev, panthor_fw_vm(ptdev), section->size,
+                       DRM_PANTHOR_BO_NO_MMAP, vm_map_flags, section->va,
+                       "FW section");
                if (IS_ERR(section->mem))
                        return PTR_ERR(section->mem);
 
-               if (drm_WARN_ON(&ptdev->base, section->mem->va_node.start != 
hdr.va.start))
+               if (drm_WARN_ON(&ptdev->base,
+                               section->mem->va_node.start != section->va))
                        return -EINVAL;
 
                if (section->flags & CSF_FW_BINARY_IFACE_ENTRY_SHARED) {
-- 
2.43.0

Reply via email to