STRUCT HL_INFO_UNDEFINED_OPCODE_EVENT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct hl_info_undefined_opcode_event β€” Kernel API Manual ✨

okay bestie, so this is a page from the Kernel API Manual about struct hl_info_undefined_opcode_event, which is lowkey just the receipts for the last undefined opcode error. like, the moment something in the hardware went "bestie what" and executed a thing that isn't a thing 🫢


🌸 NAME 🌸

struct hl_info_undefined_opcode_event β€” info about last undefined opcode error

no cap, that's it. that's the whole vibe check. πŸ’–


✨ SYNOPSIS ✨

struct hl_info_undefined_opcode_event {
    __s64 timestamp;
    __u64
 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
    __u64 cq_addr;
    __u32 cq_size;
    __u32 cb_addr_streams_len;
    __u32 engine_id;
    __u32 stream_id;
 };

look at her. iconic. slightly chaotic line-wrapping on the __u64 before cb_addr_streams, but she ate, we don't judge. πŸ‘‘


πŸŽ€ Members πŸŽ€

  • timestamp β€” the timestamp of the undefined opcode error. literally the when. the moment in time. the little timestamp saying "yeah this happened" ⏰
  • cb_addr_streams β€” the CB addresses (per stream) that are currently exists in the PQ entries. and okay hear me out: if all the streams array entries are filled with values, that means the execution was in Lower-CP. that's the tell, iykyk πŸ•΅οΈβ€β™€οΈ
  • cq_addr β€” the address of the current handled command buffer. yes bestie, this one. πŸ“
  • cq_size β€” the size of the current handled command buffer. how chunky she is. πŸ“
  • cb_addr_streams_len β€” num of streams, aka the actual len of the cb_addr_streams array. it should be equal to 1 in case of undefined opcode in Upper-CP (specific stream), and equal to 4 incase of undefined opcode in Lower-CP. those two numbers? memorize them. they're the whole plot. πŸ”’
  • engine_id β€” engine-id that the error occurred on. which engine was being a little main character when it all went down 😭
  • stream_id β€” the stream id the error occurred on. and in case the stream equals MAX_QMAN_STREAMS_INFO? that means the error occurred on a Lower-CP. sneaky little sentinel value, we love her πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./include/uapi/drm/habanalabs_accel.h, enum hl_goya_dma_direction(9), enum hl_device_status(9), struct hl_info_hw_ip_info(9), struct hl_info_pci_counters(9), struct hl_info_clk_throttle(9), struct hl_info_energy(9), struct hl_open_stats_info(9), struct hl_power_info(9), struct hl_info_sync_manager(9), struct hl_info_cs_counters(9), struct hl_info_last_err_open_dev_time(9), struct hl_info_cs_timeout_event(9), struct hl_info_razwi_event(9), struct hl_info_hw_err_event(9), struct hl_info_fw_err_event(9), struct hl_info_engine_err_event(9), struct hl_info_dev_memalloc_page_sizes(9), struct hl_page_fault_info(9), struct hl_user_mapping(9), struct hl_info_args(9).

that's the whole friend group right there, go say hi πŸ’œ


mwah πŸ’‹ that's the page. sourced straight from ./include/uapi/drm, dated October 2026, filed under struct hl_i...opcode_event(9) β€” the truncated lil' header name that the man page tooling gave us and honestly? she's doing her best. stay hydrated, read your structs, and remember: 1 means Upper-CP, 4 means Lower-CP. periodt. 🌈⭐

πŸ“¦ where this page comes from