xe_bo_create_pin_map_novm(9)
π xe_bo_create_pin_map_novm(9) β a Kernel API Manual moment
okay so bestie, we're in the Kernel API Manual today and this one's a whole function. buckle up, it's giving "create a pinned and mapped bo" and honestly? iconic. β¨
πΈ NAME πΈ
xe_bo_create_pin_map_novm β create a pinned and mapped bo, fr fr
π¦ SYNOPSIS π¦
struct xe_bo * xe_bo_create_pin_map_novm (struct xe_device *xe , struct
xe_tile *tile , size_t size , enum ttm_bo_type type , u32 flags , bool
intr );
π ARGUMENTS π
xeβ the xe device. that's her. the main character. πtileβ the tile you pick for migration of this bo, and also the tile used for GGTT binding if there is any. lowkey important: this one is only to be non-NULLforttm_bo_type_kernelbos. no cap, that's the rule. π«Άsizeβ the storage size to use for the bo. like, how much room she gets. πtypeβ the TTM buffer object type. yes that's literally just what the parameter is. πflagsβXE_BO_FLAG_flags. the little flag guys. π©intrβ whether to execute any waits for backing store interruptible. so like, can we get interrupted while waiting? that's the vibe check. π
β¨ DESCRIPTION β¨
so basically: create a pinned and mapped bo. she is external and not associated with a VM. periodt. that's the whole bit β she's out here living her life unbound to any virtual memory, iykyk. π
π₯ RETURN π₯
on success you get the buffer object back, slay. π on failure you get a negative error pointer β not a NULL, a whole error pointer, so don't be out here dereferencing it, bestie. π
and in particular? the function may returnERR_PTR(-EINTR)ifintrwas set totrueon entry. so yeah, if you asked for interruptible waits, you might actually get interrupted. makes sense, still stressful. π
π SEE ALSO π
okay this list is LONG and I'm obsessed. everything below is (9), go read them if you want the full lore:
Kernel file ./drivers/gpu/drm/xe/xe_bo.cxe_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_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_decompress(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)
anyway that's the whole page, she ate and left no crumbs π
this lil gem lives in ./drivers/gpu/drm/xe and the version stamp is October 2026, and yes the header was xe_bo_create_pin_map_novm(9) the whole time β hope that cleared the vibe check 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