STRUCT PANTHOR_SYNC_SIGNAL(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct panthor_sync_signal(9) πŸ¦‹

okay so this is the Kernel API Manual page for struct panthor_sync_signal, and bestie we are about to get into the sync-object lore. It’s giving β€œtiny struct, big job-submission energy” and I’m obsessed. πŸ’…


πŸ’– NAME πŸ’–

struct panthor_sync_signal β€” this struct represents a synchronization object point, aka the spot to attach our job fence to. Slay.

✨ SYNOPSIS ✨

struct panthor_sync_signal {
    struct list_head node;
    u32 handle;
    u64 point;
    struct drm_syncobj *syncobj;
    struct dma_fence_chain *chain;
    struct dma_fence *fence;
};

πŸŽ€ Members πŸŽ€

  • node β€” a list_head to track signal ops within a submit operation. Think of it as the list that keeps the signal-op girlies together during one submit operation.
  • handle β€” the syncobj handle. That’s the handle ID situation.
  • point β€” the syncobj point. Zero for regular syncobjs, and non-zero for timeline syncobjs. Not me remembering both cases? We love a clear distinction. πŸ’…
  • syncobj β€” the sync object pointed by handle. Yes, the actual sync object that handle is pointing at.
  • chain β€” chain object used to link the new fence to an existing timeline syncobj. NULL for regular syncobj, non-NULL for timeline syncobjs. The timeline syncobj girlies get the non-NULL treatment.
  • fence β€” the fence to assign to the syncobj or syncobj-point. The main character fence, basically.

πŸ¦‹ Description πŸ¦‹

okay so this structure is here to keep track of fences that are currently bound to a specific syncobj point. That’s the whole vibe: it’s the bookkeeping baddie for fence-to-point situations.

At the beginning of a job submission, the fence is retrieved from the syncobj itself, and it can be NULL if no fence was attached to this point. No fence? No problem β€” NULL is valid here.

At the end, it points to the fence of the last job that had a DRM_PANTHOR_SYNC_OP_SIGNAL on this syncobj. So it follows the handoff through the process.

With jobs being submitted in batches, the fence might change several times during the process, allowing one job to wait on a job that’s part of the same submission but appears earlier in the drm_panthor_group_submit::queue_submits array. The way that works is lowkey iconic: earlier-in-the-array job, meet later job’s wait. 🫢

🌈 SEE ALSO 🌈

kisses bestie πŸ«ΆπŸ’– β€” source/version: ./drivers/gpu/drm/panthor; date: October 2026; page: struct panthor_sync_signal(9). byeee, go attach those fences responsibly. πŸ’…βœ¨

πŸ“¦ where this page comes from