STRUCT HL_CS(9)
π NAME π
Okay bestie, welcome to struct hl_cs(9) from the Kernel API Manual β this page is literally struct hl_cs - command submission, and she is the main character. Not me being obsessed with a kernel struct, but here we are. π
β¨ SYNOPSIS β¨
Here's the struct in all her glory, no cap β every field exactly as she ships:
struct hl_cs {
u16 *jobs_in_queue_cnt;
struct hl_ctx *ctx;
struct list_head job_list;
spinlock_t job_lock;
struct kref refcount;
struct hl_fence *fence;
struct hl_fence *signal_fence;
struct work_struct finish_work;
struct delayed_work work_tdr;
struct list_head mirror_node;
struct list_head staged_cs_node;
struct list_head debugfs_list;
struct hl_cs_encaps_sig_handle *encaps_sig_hdl;
ktime_t completion_timestamp;
u64 sequence;
u64 staged_sequence;
u64 timeout_jiffies;
u64 submission_time_jiffies;
enum hl_cs_type type;
u32 jobs_cnt;
u32 encaps_sig_hdl_id;
u32 sob_addr_offset;
u16 initial_sob_count;
u8 submitted;
u8 completed;
u8 timedout;
u8 tdr_active;
u8 aborted;
u8 timestamp;
u8 staged_last;
u8 staged_first;
u8 staged_cs;
u8 skip_reset_on_timeout;
u8 encaps_signals;
};
π«Ά Members π«Ά
Vibe check, bestie: every member gets her own little moment, and we're going one by one.
jobs_in_queue_cntβ per each queue, maintain a counter of submitted jobs. πctxβ the context this CS belongs to. π«Άjob_listβ list of the CS's jobs in the various queues. πΈjob_lockβ spinlock for the CS's jobs list. Needed forfree_job. πrefcountβ reference counter for usage of the CS. πfenceβ pointer to the fence object of this CS. β¨signal_fenceβ pointer to the fence object of the signal CS (used by wait CS only). πfinish_workβ workqueue object to run when CS is completed by H/W. π₯work_tdrβ delayed work node for TDR. πmirror_nodeβ node in device mirror list of command submissions. π¦staged_cs_nodeβ node in the staged cs list. πΈdebugfs_listβ node in debugfs list of command submissions. πencaps_sig_hdlβ holds the encaps signals handle. π«Άcompletion_timestampβ timestamp of the last completed cs job. βsequenceβ the sequence number of this CS. β¨staged_sequenceβ the sequence of the staged submission this CS is part of, relevant only ifstaged_csis set. πtimeout_jiffiesβ cs timeout in jiffies. πsubmission_time_jiffiesβ submission time of the cs. βtypeβCS_TYPE_*. πjobs_cntβ counter of submitted jobs on all queues. πencaps_sig_hdl_idβ encaps signals handle id, set for the first staged cs. πsob_addr_offsetβ sob offset from the configuration base address. πΈinitial_sob_countβ count of completed signals in SOB before current submission of signal or cs with encaps signals. π«Άsubmittedβ true if CS was submitted to H/W. π₯completedβ true if CS was completed by device. πtimedoutβ true if CS was timedout. πtdr_activeβ true if TDR was activated for this CS (to prevent double TDR activation). πabortedβ true if CS was aborted due to some device error. πtimestampβ true if a timestamp must be captured upon completion. βstaged_lastβ true if this is the last staged CS and needs completion. πstaged_firstβ true if this is the first staged CS and we need to receive timeout for this CS. πΈstaged_csβ true if this CS is part of a staged submission. π¦skip_reset_on_timeoutβ true if we shall not reset the device in case timeout occurs (debug scenario). π§encaps_signalsβ true if this CS has encaps reserved signals. π
π SEE ALSO π
Bestie, this section is giving entire kernel friend group. Kernel file first:
- Kernel file
./drivers/accel/habanalabs/common/habanalabs.h
And then the squad, fr fr:
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_fence(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_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)
Sign-off time, bestie: this page comes from the source/version at ./drivers/accel/habanalabs/common, dated October 2026, and it is literally struct hl_cs(9). She ate, periodt. π
π¦ 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