STRUCT HL_FENCE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 struct hl_fence(9) β€” Kernel API Manual, bestie edition 🌸

okay so we're in the kernel docs, it's the struct hl_fence(9) page, and honestly? this little guy is a whole vibe. it's a software synchronization primitive β€” that's the whole name, that's the whole point πŸ’…


✨ NAME ✨

struct hl_fence β€” a software synchronization primitive. that's it, that's the summary, no cap ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

struct hl_fence {
    struct completion       completion;
    struct kref             refcount;
    u64 cs_sequence;
    u32 stream_master_qid_map;
    int error;
    ktime_t timestamp;
    u8 mcs_handling_done;
 };

yes bestie, look at those fields, we're gonna go through every single one 🫢


πŸ’– Members πŸ’–

  • completion β€” the fence is implemented using completion. that's literally how it does its thing, periodt.
  • refcount β€” the refcount for this fence. gotta know how many people are holding onto it πŸ’…
  • cs_sequence β€” sequence of the corresponding command submission. it's giving numbered receipts 🧾✨
  • stream_master_qid_map β€” streams masters QID bitmap, representing all the streams masters QIDs that multi cs is waiting on. it's a whole lil bitmap of who-we-waiting-on, iykyk πŸ—ΊοΈ
  • error β€” mark this fence with error. when it's got beef, it says so 😭
  • timestamp β€” timestamp upon completion. the moment-of-slaying record ⏰πŸ”₯
  • mcs_handling_done β€” indicates that the corresponding command submission has finished msc handling. but β€” and this is the important bit β€” this does not mean it was part of the mcs. read that twice, bestie, fr fr πŸ™ˆ

πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./drivers/accel/habanalabs/common/habanalabs.h enum hl_mmu_page_table_location(9), struct iterate_module_ctx(9), struct hl_gen_wait_properties(9), struct pgt_info(9), enum hl_pci_match_mode(9), enum hl_fw_component(9), enum hl_fw_types(9), enum hl_queue_type(9), struct hw_queue_properties(9), enum vm_type(9), enum mmu_op_flags(9), enum hl_device_hw_state(9), struct hl_mmu_properties(9), struct hl_hints_range(9), struct asic_fixed_properties(9), struct hl_cs_compl(9), struct hl_ts_buff(9), struct hl_mem_mgr(9), struct hl_mem_mgr_fini_stats(9), struct hl_mmap_mem_buf_behavior(9), struct hl_mmap_mem_buf(9), struct hl_cb(9), struct hl_sync_stream_properties(9), struct hl_encaps_signals_mgr(9), struct hl_hw_queue(9), struct hl_cq(9), struct hl_ts_free_jobs(9), struct hl_user_interrupt(9), struct timestamp_reg_free_node(9), struct hl_user_pending_interrupt(9), struct hl_eq(9), struct hl_dec(9), enum hl_asic_type(9), enum hl_pm_mng_profile(9), enum hl_pll_frequency(9), struct pci_mem_region(9), struct static_fw_load_mgr(9), struct fw_response(9), struct dynamic_fw_load_mgr(9), struct pre_fw_load_props(9), struct fw_image_props(9), struct fw_load_mgr(9), struct engines_data(9), struct hl_asic_funcs(9), enum hl_va_range_type(9), struct hl_va_range(9), struct hl_cs_counters_atomic(9), struct hl_dmabuf_priv(9), struct hl_cs_outcome(9), struct hl_cs_outcome_store(9), struct hl_ctx(9), struct hl_ctx_mgr(9), struct hl_userptr(9), struct hl_cs(9), struct hl_cs_job(9), struct hl_cs_parser(9), struct hl_vm_hash_node(9), struct hl_vm_hw_block_list_node(9), struct hl_vm_phys_pg_pack(9), struct hl_vm_va_block(9), struct hl_vm(9), struct hl_debug_params(9), struct hl_notifier_event(9), struct hl_fpriv(9), struct hl_info_list(9), struct hl_debugfs_entry(9), struct hl_dbg_device_entry(9), struct hl_debugfs_cfg_access_entry(9), struct hl_debugfs_cfg_access(9), struct hl_hw_obj_name_entry(9), struct hl_mon_state_dump(9), struct hl_sync_to_engine_map_entry(9), struct hl_sync_to_engine_map(9), struct hl_state_dump_specs_funcs(9), struct hl_state_dump_specs(9), struct hl_device_reset_work(9), struct hl_mmu_priv(9), struct hl_mmu_per_hop_info(9), struct hl_mmu_hop_info(9), struct hl_hr_mmu_funcs(9), struct hl_mmu_funcs(9), struct hl_prefetch_work(9), struct multi_cs_completion(9), struct multi_cs_data(9), struct hl_clk_throttle_timestamp(9), struct hl_clk_throttle(9), struct user_mapped_block(9), struct cs_timeout_info(9), struct undefined_opcode_info(9), struct page_fault_info(9), struct razwi_info(9), struct hw_err_info(9), struct fw_err_info(9), struct engine_err_info(9), struct hl_error_info(9), struct hl_reset_info(9), struct eq_heartbeat_debug_info(9), struct hl_device(9), struct hl_cs_encaps_sig_handle(9), struct hl_info_fw_err_info(9), hl_ioctl_t(9), struct hl_ioctl_desc(9), hl_get_sg_info(9), hl_mem_area_inside_range(9), hl_mem_area_crosses_range(9)


lowkey that's a lot of cross-references and every single one of them made the list πŸ’€ no skipping, no summarising, we're thorough in this house πŸ‘‘

and that's the page!! huge shoutout to ./drivers/accel/habanalabs/common for the source, to the October 2026 date stamp, and to the manual slot itself, struct hl_fence(9) β€” she's iconic, she's documented, she's done πŸ’œπŸŽ€βœ¨

πŸ“¦ where this page comes from