STRUCT HL_CS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 for free_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 if staged_cs is 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