STRUCT HL_DBG_DEVICE_ENTRY(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct hl_dbg_device_entry(9) β€” Kernel API Manual πŸ’–

okay bestie, welcome to the group chat for the ASIC specific debugfs manager ✨ this struct is literally the manager for the debugfs situation, and it’s giving main character energy. no cap, we’re going through every field, every cross-reference, the whole vibe. 🫢

🌸 NAME 🌸

struct hl_dbg_device_entry β€” ASIC specific debugfs manager. that’s the whole name, periodt. πŸ’…

✨ SYNOPSIS ✨

here’s the exact struct, bestie β€” do not touch the semicolons, they’re part of the lore:

       struct hl_dbg_device_entry {
           struct dentry                   *root;
           struct hl_device                *hdev;
           struct hl_debugfs_entry         *entry_arr;
           struct list_head                file_list;
           struct mutex                    file_mutex;
           struct list_head                cb_list;
           spinlock_t cb_spinlock;
           struct list_head                cs_list;
           spinlock_t cs_spinlock;
           struct list_head                cs_job_list;
           spinlock_t cs_job_spinlock;
           struct list_head                userptr_list;
           spinlock_t userptr_spinlock;
           struct list_head                ctx_mem_hash_list;
           struct mutex                    ctx_mem_hash_mutex;
           struct debugfs_blob_wrapper     data_dma_blob_desc;
           struct debugfs_blob_wrapper     mon_dump_blob_desc;
           char *state_dump[HL_STATE_DUMP_HIST_LEN];
           struct rw_semaphore             state_dump_sem;
           u64 addr;
           u64 mmu_addr;
           u64 mmu_cap_mask;
           u64 userptr_lookup;
           u32 mmu_asid;
           u32 state_dump_head;
           u8 i2c_bus;
           u8 i2c_addr;
           u8 i2c_reg;
           u8 i2c_len;
         #ifdef CONFIG_HL_HLDIO;
           struct hl_dio_stats     dio_stats;
         #endif;
        };

πŸ’… Members πŸ’…

okay so every member is in the struct, and here’s the tea, one by one:

  • root β€” root dentry. it’s the root dentry, serving root energy. 🌱
  • hdev β€” habanalabs device structure. the device itself, bestie.
  • entry_arr β€” array of available hl_debugfs_entry. the lineup of debugfs entries, slay.
  • file_list β€” list of available debugfs files. the file roster.
  • file_mutex β€” protects file_list. lowkey its bodyguard.
  • cb_list β€” list of available CBs. the CB crew.
  • cb_spinlock β€” protects cb_list. yes, another protector.
  • cs_list β€” list of available CSs. iconic.
  • cs_spinlock β€” protects cs_list. keeping it safe.
  • cs_job_list β€” list of available CB jobs. note: CB jobs, exactly as the page says.
  • cs_job_spinlock β€” protects cs_job_list. the spinlock for that job list.
  • userptr_list β€” list of available userptrs (virtual memory chunk descriptor). parenthetical included, no cap.
  • userptr_spinlock β€” protects userptr_list. bodyguard behavior.
  • ctx_mem_hash_list β€” list of available contexts with MMU mappings.
  • ctx_mem_hash_mutex β€” protects list of available contexts with MMU mappings.
  • data_dma_blob_desc β€” data DMA descriptor of blob.
  • mon_dump_blob_desc β€” monitor dump descriptor of blob.
  • state_dump β€” data of the system states in case of a bad cs.
  • state_dump_sem β€” protects state_dump.
  • addr β€” next address to read/write from/to in read/write32.
  • mmu_addr β€” next virtual address to translate to physical address in mmu_show.
  • mmu_cap_mask β€” mmu hw capability mask, to be used in mmu_ack_error.
  • userptr_lookup β€” the target user ptr to look up for on demand.
  • mmu_asid β€” ASID to use while translating in mmu_show.
  • state_dump_head β€” index of the latest state dump.
  • i2c_bus β€” generic u8 debugfs file for bus value to use in i2c_data_read.
  • i2c_addr β€” generic u8 debugfs file for address value to use in i2c_data_read.
  • i2c_reg β€” generic u8 debugfs file for register value to use in i2c_data_read.
  • i2c_len β€” generic u8 debugfs file for length value to use in i2c_data_read.
  • dio_stats β€” Direct I/O statistics, chilling inside the #ifdef CONFIG_HL_HLDIO; block like the synopsis says.

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./drivers/accel/habanalabs/common/habanalabs.h is the source-file bestie, and these are all the SEE ALSO references β€” every single one, iykyk:

  • 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(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_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)

okay that’s the whole manual page, bestie. cute sign-off time: source/version vibes are ./drivers/accel/habanalabs/common, the date is October 2026, and the page is struct hl_dbg_device_entry(9) from the Kernel API Manual. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from