xe_bo_create..._map_at_novm(9)
π xe_bo_create..._map_at_novm(9) π
okay so bestie, we're deep in the Kernel API Manual today β this one's a real drm/xe deep-lore page and honestly it's kind of iconic once you get past the name, which is a whole mouthful ngl π«Ά
β¨ NAME β¨
xe_bo_create_pin_map_at_novm β the girlie that creates a pinned and mapped bo, and she'll even do it at an optional VRAM offset if you ask nicely π
πΈ SYNOPSIS πΈ
struct xe_bo * xe_bo_create_pin_map_at_novm (struct xe_device *xe ,
struct xe_tile *tile , size_t size , u64 offset , enum ttm_bo_type type
, u32 flags , u64 alignment , bool intr );
like yes, that's a lot of arguments. she's high-maintenance. she's worth it. π
π ARGUMENTS π
xeβ the xe device, obviously. your main character. πtileβ the tile you're picking for the migration of this bo, and also the tile used for GGTT binding if there is any. heads up though: only let this be non-NULLforttm_bo_type_kernelbos, ok? no cap.sizeβ the storage size to use for the bo. πoffsetβ optional VRAM offset, or~0ullfor "don't care", which is the most relatable value in this whole manpage honestly πtypeβ the TTM buffer object type.flagsβ theXE_BO_FLAG_flags. π©alignmentβ GGTT alignment.intrβ whether to execute any waits for backing store interruptible. i.e., are we being polite about signals or not.
π¦ DESCRIPTION π¦
so what she does is: create a pinned and optionally mapped bo, and she's got options, ok? VRAM offset options, GGTT alignment options β the whole vibe menu β¨
the bo comes out external and not associated with a VM. that's the whole point. she's free-floating. she's not tied down. main character energy fr fr π
β RETURN β
on success you get the buffer object. slay. π
on failure you get a negative error pointer β which, yeah, sounds ominous, but that's just how we do it around here.
and in particular β listen up β the function may return ERR_PTR(-EINTR) if intr was set to true on entry. so if you set intr and then act surprised about -EINTR... bestie. π that's on you.
π SEE ALSO π
the whole friend group, honestly. this section is a group chat and everyone's in it:
Kernel file ./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(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_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)
like. that's a lot of xe_bo functions. she knows everyone. iykyk π
and that's the page, bestie π§ this lil doc lives in ./drivers/gpu/drm/xe (that's the source/version, mwah), stamped October 2026, and it's filed under xe_bo_create..._map_at_novm(9) β go forth and pin responsibly ππ
π¦ 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