drivers/accel/habanalabs/gaudi2/gaudi2.c
Source file repositories/reference/linux-study-clean/drivers/accel/habanalabs/gaudi2/gaudi2.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/accel/habanalabs/gaudi2/gaudi2.c- Extension
.c- Size
- 412991 bytes
- Lines
- 12009
- Domain
- Driver Families
- Bucket
- drivers/accel
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
gaudi2P.hgaudi2_masks.h../include/gaudi2/gaudi2_special_blocks.h../include/hw_ip/mmu/mmu_general.h../include/hw_ip/mmu/mmu_v2_0.h../include/gaudi2/gaudi2_packets.h../include/gaudi2/gaudi2_reg_map.h../include/gaudi2/gaudi2_async_ids_map_extended.h../include/gaudi2/arc/gaudi2_arc_common_packets.hlinux/module.hlinux/pci.hlinux/hwmon.hlinux/iommu.h
Detected Declarations
struct gaudi2_razwi_infostruct gaudi2_sm_sei_cause_datastruct mme_initiators_rtr_idstruct hbm_mc_error_causesstruct mmu_spi_sei_causestruct gaudi2_cache_invld_paramsstruct gaudi2_tpc_idle_datastruct gaudi2_tpc_mmu_datastruct gaudi2_tpc_init_cfg_dataenum hl_pmmu_fatal_causeenum hl_pcie_drain_ind_causeenum rtr_idenum mme_initiatorsenum razwi_event_sourcesfunction gaudi2_init_scrambler_hbmfunction gaudi2_get_wait_cb_sizefunction gaudi2_iterate_tpcsfunction gaudi2_host_phys_addr_validfunction set_number_of_functional_hbmsfunction driverfunction gaudi2_is_edma_queue_idfunction gaudi2_set_dram_propertiesfunction gaudi2_set_fixed_propertiesfunction gaudi2_pci_bars_mapfunction gaudi2_set_hbm_bar_basefunction gaudi2_init_iatufunction gaudi2_get_hw_statefunction gaudi2_tpc_binning_init_propfunction gaudi2_set_tpc_binning_masksfunction gaudi2_set_dec_binning_masksfunction gaudi2_set_dram_binning_masksfunction gaudi2_set_edma_binning_masksfunction gaudi2_set_xbar_edge_enable_maskfunction gaudi2_set_cluster_binning_masks_commonfunction gaudi2_set_cluster_binning_masksfunction gaudi2_set_binning_masksfunction gaudi2_cpucp_info_getfunction gaudi2_fetch_psoc_frequencyfunction gaudi2_mmu_clear_pgt_rangefunction gaudi2_early_initfunction gaudi2_early_finifunction gaudi2_is_arc_nic_ownedfunction gaudi2_is_arc_tpc_ownedfunction gaudi2_init_arcsfunction gaudi2_scrub_arc_dccmfunction gaudi2_scrub_arcs_dccmfunction gaudi2_late_initfunction gaudi2_late_fini
Annotated Snippet
.context_switch = gaudi2_context_switch,
.restore_phase_topology = gaudi2_restore_phase_topology,
.debugfs_read_dma = gaudi2_debugfs_read_dma,
.add_device_attr = gaudi2_add_device_attr,
.handle_eqe = gaudi2_handle_eqe,
.get_events_stat = gaudi2_get_events_stat,
.read_pte = gaudi2_read_pte,
.write_pte = gaudi2_write_pte,
.mmu_invalidate_cache = gaudi2_mmu_invalidate_cache,
.mmu_invalidate_cache_range = gaudi2_mmu_invalidate_cache_range,
.mmu_prefetch_cache_range = NULL,
.send_heartbeat = gaudi2_send_heartbeat,
.debug_coresight = gaudi2_debug_coresight,
.is_device_idle = gaudi2_is_device_idle,
.compute_reset_late_init = gaudi2_compute_reset_late_init,
.hw_queues_lock = gaudi2_hw_queues_lock,
.hw_queues_unlock = gaudi2_hw_queues_unlock,
.get_pci_id = gaudi2_get_pci_id,
.get_eeprom_data = gaudi2_get_eeprom_data,
.get_monitor_dump = gaudi2_get_monitor_dump,
.send_cpu_message = gaudi2_send_cpu_message,
.pci_bars_map = gaudi2_pci_bars_map,
.init_iatu = gaudi2_init_iatu,
.rreg = hl_rreg,
.wreg = hl_wreg,
.halt_coresight = gaudi2_halt_coresight,
.ctx_init = gaudi2_ctx_init,
.ctx_fini = gaudi2_ctx_fini,
.pre_schedule_cs = gaudi2_pre_schedule_cs,
.get_queue_id_for_cq = gaudi2_get_queue_id_for_cq,
.load_firmware_to_device = NULL,
.load_boot_fit_to_device = NULL,
.get_signal_cb_size = gaudi2_get_signal_cb_size,
.get_wait_cb_size = gaudi2_get_wait_cb_size,
.gen_signal_cb = gaudi2_gen_signal_cb,
.gen_wait_cb = gaudi2_gen_wait_cb,
.reset_sob = gaudi2_reset_sob,
.reset_sob_group = gaudi2_reset_sob_group,
.get_device_time = gaudi2_get_device_time,
.pb_print_security_errors = gaudi2_pb_print_security_errors,
.collective_wait_init_cs = gaudi2_collective_wait_init_cs,
.collective_wait_create_jobs = gaudi2_collective_wait_create_jobs,
.get_dec_base_addr = gaudi2_get_dec_base_addr,
.scramble_addr = gaudi2_mmu_scramble_addr,
.descramble_addr = gaudi2_mmu_descramble_addr,
.ack_protection_bits_errors = gaudi2_ack_protection_bits_errors,
.get_hw_block_id = gaudi2_get_hw_block_id,
.hw_block_mmap = gaudi2_block_mmap,
.enable_events_from_fw = gaudi2_enable_events_from_fw,
.ack_mmu_errors = gaudi2_ack_mmu_page_fault_or_access_error,
.get_msi_info = gaudi2_get_msi_info,
.map_pll_idx_to_fw_idx = gaudi2_map_pll_idx_to_fw_idx,
.init_firmware_preload_params = gaudi2_init_firmware_preload_params,
.init_firmware_loader = gaudi2_init_firmware_loader,
.init_cpu_scrambler_dram = gaudi2_init_scrambler_hbm,
.state_dump_init = gaudi2_state_dump_init,
.get_sob_addr = &gaudi2_get_sob_addr,
.set_pci_memory_regions = gaudi2_set_pci_memory_regions,
.get_stream_master_qid_arr = gaudi2_get_stream_master_qid_arr,
.check_if_razwi_happened = gaudi2_check_if_razwi_happened,
.mmu_get_real_page_size = gaudi2_mmu_get_real_page_size,
.access_dev_mem = hl_access_dev_mem,
.set_dram_bar_base = gaudi2_set_hbm_bar_base,
.set_engine_cores = gaudi2_set_engine_cores,
.set_engines = gaudi2_set_engines,
.send_device_activity = gaudi2_send_device_activity,
.set_dram_properties = gaudi2_set_dram_properties,
.set_binning_masks = gaudi2_set_binning_masks,
};
void gaudi2_set_asic_funcs(struct hl_device *hdev)
{
hdev->asic_funcs = &gaudi2_funcs;
}
Annotation
- Immediate include surface: `gaudi2P.h`, `gaudi2_masks.h`, `../include/gaudi2/gaudi2_special_blocks.h`, `../include/hw_ip/mmu/mmu_general.h`, `../include/hw_ip/mmu/mmu_v2_0.h`, `../include/gaudi2/gaudi2_packets.h`, `../include/gaudi2/gaudi2_reg_map.h`, `../include/gaudi2/gaudi2_async_ids_map_extended.h`.
- Detected declarations: `struct gaudi2_razwi_info`, `struct gaudi2_sm_sei_cause_data`, `struct mme_initiators_rtr_id`, `struct hbm_mc_error_causes`, `struct mmu_spi_sei_cause`, `struct gaudi2_cache_invld_params`, `struct gaudi2_tpc_idle_data`, `struct gaudi2_tpc_mmu_data`, `struct gaudi2_tpc_init_cfg_data`, `enum hl_pmmu_fatal_cause`.
- Atlas domain: Driver Families / drivers/accel.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.