xe_bo_decompress(9)
π xe_bo_decompress β the Linux kernel API manual, bestie edition π
okay so real talk, this is the xe_bo_decompress(9) kernel API manual page β that's the title, that's the manual name, we're not copying the literal header line because we're better than that. it lives in the kernel API manual and it's all about scheduling an in-place decompress and installing a fence β¨
πΈ SYNOPSIS πΈ
int xe_bo_decompress (struct xe_bo *bo );
that's it. that's the whole call. one arg, one int back. slay π
π ARGUMENTS π
boβ the buffer object, bestie. heads up though: the caller should holddrm_execreservations for VM+BO. that's on you, not on this function. no cap π«Ά
β¨ DESCRIPTION β¨
so what does it actually do? it schedules an in-place resolve via the migrate layer, and then it installs the returned dma_fence into the BO kernel reservation slot β that's DMA_RESV_USAGE_KERNEL, for the record. iconic behavior honestly π
now here's the tea β: in preempt fence mode, this operation interrupts hardware execution, which is expensive. like, expensive expensive. so page fault mode is recommended for better performance. do with that what you will π
another thing β the resolve path only runs for VRAM-backed buffers (currently dGPU-only). iGPU/system-memory objects will fail the resource check and just bypass the resolve entirely. not me getting skipped π
returns 0 on success, negative errno on error. that's the whole vibe check π₯
β οΈ please actually hold those drm_exec reservations for VM+BO when you call this. it's in the arguments section for a reason π§
π¦ SEE ALSO π¦
literally the entire xe_bo friend group, and the kernel file that started it all: ./drivers/gpu/drm/xe/xe_bo.c
xe_bo_has_single_placement(9), xe_bo_is_stolen_devmem(9), xe_bo_is_vm_bound(9), xe_bo_pin_account(9), xe_bo_unpin_account(9), xe_bo_is_visible_vram(9), xe_bo_move_notify(9), xe_bo_set_purgeable_shrinker(9), xe_bo_set_purgeable_state(9), xe_ttm_bo_purge(9), xe_bo_shrink(9), xe_bo_notifier_prepare_pinned(9), xe_bo_notifier_unprepare_pinned(9), xe_bo_evict_pinned(9), xe_bo_restore_pinned(9), xe_bo_read(9), xe_bo_alloc(9), xe_bo_free(9), xe_bo_init_locked(9), xe_bo_create_locked(9), xe_bo_create_user(9), xe_bo_create_pin_range_novm(9), xe_bo_create_pin_map_at_novm(9), xe_bo_create_pin_map(9), xe_bo_create_pin_map_novm(9), xe_managed_bo_reinit_in_vram(9), xe_bo_pin_external(9), xe_bo_pin(9), xe_bo_unpin_external(9), xe_bo_validate(9), xe_bo_lock(9), xe_bo_unlock(9), xe_bo_can_migrate(9), xe_bo_migrate(9), xe_bo_evict(9), xe_bo_needs_ccs_pages(9), __xe_bo_release_dummy(9), xe_bo_put_commit(9), xe_bo_dev_init(9), xe_bo_dev_fini(9), xe_bo_dumb_create(9)
and that's the page!! π mwah π this one ships out of ./drivers/gpu/drm/xe, dated October 2026 β so basically it's from the future, which tracks, because it's giving main character energy π go decompress something, bestie π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms