xe_tlb_inval_job_push(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… xe_tlb_inval_job_push(9) β€” like, the TLB invalidation job push era

Okay bestie, before anything else: this page lives in the Kernel API Manual, and the function we're obsessing over is xe_tlb_inval_job_push. Yes, that's the whole name, no we're not shortening it, it's iconic and it knows it. πŸŽ€


✨ NAME ✨

xe_tlb_inval_job_push β€” TLB invalidation job push. That's it, that's the vibe. Short, sweet, gets straight to the point. πŸ’…


🌸 SYNOPSIS 🌸

struct dma_fence * xe_tlb_inval_job_push (struct xe_tlb_inval_job *job ,
struct xe_migrate *m , struct dma_fence *fence );

Look at those three parameters lined up like a little squad. 🫢 Copy it exactly, bestie, character for character, no freestyling.


πŸ¦‹ ARGUMENTS πŸ¦‹

  • job β€” the TLB invalidation job you're pushing. This is the main character of this whole operation, ngl.
  • m β€” the migration object being used. It's the supporting cast, but it matters. ✨
  • fence β€” the dependency for the TLB invalidation job. Basically the "wait for this first" of it all.

πŸ’– DESCRIPTION πŸ’–

So here's the tea: this function pushes a TLB invalidation job for execution, using fence as a dependency. Like, the job doesn't just go, it waits for fence to be a whole situation first. 😌

Now the important bit, and I'm saying this loud because it's a real constraint, not a vibe: storage for fence must be preallocated with xe_tlb_inval_job_alloc_dep prior to this call β€” but only if fence is not signaled. Preallocated. Before. Not during. Iykyk. ⚠️

It takes a reference to the job's finished fence, and the caller is responsible for releasing it, and then it returns that fence to the caller. So like, you got the fence, congratulations, it's yours now, please remember to release it or it's giving leak energy. πŸ™ˆ

And the slay detail: this function is safe to be called in the path of reclaim. Yes bestie, reclaim-path safe. We love a function that behaves under pressure. πŸ‘‘


⭐ RETURN ⭐

Returns the job's finished fence on success. And the "on failure" column? Empty. Because it cannot fail. Not "probably won't", not "rarely" β€” cannot. Periodt. πŸ”₯


🌈 SEE ALSO 🌈

Start with the kernel file, because that's where the lore lives:

./drivers/gpu/drm/xe/xe_tlb_inval_job.c

Then the whole friend group of related calls, all of them, in order, no skipping:

Go read them, they're all part of the same storyline πŸ’œ


Quick vibe check reminder: preallocate the fence storage with xe_tlb_inval_job_alloc_dep if fence isn't signaled, and release the finished fence reference you get back. The function can't fail, but your memory management absolutely can. 🫢

Okay that's the whole page, mwah πŸ’‹ this one came from the ./drivers/gpu/drm/xe source tree, dated October 2026, and it's filed under xe_tlb_inval_job_push(9) β€” go forth and push those invalidation jobs, bestie. πŸŽ€βœ¨

πŸ“¦ where this page comes from