STRUCT PAGE_FAULT_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct page_fault_info(9) πŸ’–

okay so bestie, welcome to the Kernel API Manual β€” this is the page for struct page_fault_info, and no cap it's lowkey important because it's literally the little data blob that holds everything we learned when the GPU driver caught a page fault. let's get into it 🫢


✨ NAME ✨

struct page_fault_info β€” page fault information. that's it, that's the vibe. it's giving "receipts for a fault" 🌸


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the shape of the struct, and yes you need all of it:

struct page_fault_info {
    struct hl_page_fault_info       page_fault;
    struct hl_user_mapping          *user_mappings;
    u64 num_of_user_mappings;
    atomic_t page_fault_detected;
    bool page_fault_info_available;
 };

πŸŽ€ Members πŸŽ€

not me listing every single field because every single field matters πŸ’…

  • page_fault β€” holds information collected during a page fault. the actual tea β˜•
  • user_mappings β€” buffer containing user mappings. it's a pointer, it's a buffer, it's doing both πŸ’€
  • num_of_user_mappings β€” number of user mappings. a u64, so like, a lot of them, go off πŸ‘‘
  • page_fault_detected β€” if set as 1, then a page-fault was discovered for the first time after the driver has finished booting-up. since we're looking for the page-fault's root cause, we don't care of the others that might follow it β€” so once changed to 1, it will remain that way. it's a one-way trip, main character energy, no takebacks ⭐
  • page_fault_info_available β€” indicates that a page fault info is now available. it's the bool that says "bestie the info has ARRIVED" πŸ“¬
real talk: page_fault_detected is a latch, not a counter. once it flips to 1 it stays 1 forever, because we only care about the first fault after boot β€” the root cause. everything after is just noise πŸ™ˆ

πŸ”₯ SEE ALSO πŸ”₯

okay this is the part where I need you to stay with me because this list is LONG and every single one of these is real, bestie. iykyk. here we go:

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

that's the whole page bestie, we ate and left no crumbs πŸ’…βœ¨

this little beauty lives in ./drivers/accel/habanalabs/common, and it's dated October 2026 β€” so yeah, from the future, iconic of it honestly πŸ¦‹πŸŽ€ love that for us. mwah, bye! πŸ’œ

πŸ“¦ where this page comes from