drivers/accel/habanalabs/gaudi/gaudi.c
Source file repositories/reference/linux-study-clean/drivers/accel/habanalabs/gaudi/gaudi.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/accel/habanalabs/gaudi/gaudi.c- Extension
.c- Size
- 280419 bytes
- Lines
- 9237
- 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
gaudiP.h../include/hw_ip/mmu/mmu_general.h../include/hw_ip/mmu/mmu_v1_1.h../include/gaudi/gaudi_masks.h../include/gaudi/gaudi_fw_if.h../include/gaudi/gaudi_reg_map.h../include/gaudi/gaudi_async_ids_map_extended.hlinux/module.hlinux/pci.hlinux/firmware.hlinux/hwmon.hlinux/iommu.hlinux/seq_file.h
Detected Declarations
struct ecc_info_extract_paramsfunction validate_packet_idfunction get_collective_modefunction set_default_power_valuesfunction gaudi_set_fixed_propertiesfunction gaudi_pci_bars_mapfunction gaudi_set_hbm_bar_basefunction gaudi_init_iatufunction gaudi_get_hw_statefunction gaudi_early_initfunction gaudi_early_finifunction gaudi_fetch_psoc_frequencyfunction _gaudi_init_tpc_memfunction gaudi_init_tpc_memfunction gaudi_collective_map_sobsfunction gaudi_sob_group_hw_resetfunction gaudi_sob_group_reset_errorfunction gaudi_collective_mstr_sob_mask_setfunction gaudi_collective_initfunction gaudi_reset_sob_groupfunction gaudi_collective_master_init_jobfunction gaudi_collective_slave_init_jobfunction gaudi_collective_wait_init_csfunction list_for_each_entryfunction gaudi_get_patched_cb_extra_sizefunction gaudi_collective_wait_create_jobfunction gaudi_collective_wait_create_jobsfunction gaudi_late_initfunction gaudi_late_finifunction gaudi_alloc_cpu_accessible_dma_memfunction gaudi_free_internal_qmans_pq_memfunction gaudi_alloc_internal_qmans_pq_memfunction gaudi_set_pci_memory_regionsfunction gaudi_sw_initfunction gaudi_sw_finifunction gaudi_irq_handler_singlefunction gaudi_pci_irq_vectorfunction gaudi_enable_msi_singlefunction gaudi_enable_msifunction gaudi_sync_irqsfunction gaudi_disable_msifunction gaudi_init_scrambler_sramfunction gaudi_init_scrambler_hbmfunction gaudi_init_e2efunction gaudi_init_hbm_credfunction gaudi_init_golden_registersfunction gaudi_init_pci_dma_qmanfunction gaudi_init_dma_core
Annotated Snippet
.context_switch = gaudi_context_switch,
.restore_phase_topology = gaudi_restore_phase_topology,
.debugfs_read_dma = gaudi_debugfs_read_dma,
.add_device_attr = gaudi_add_device_attr,
.handle_eqe = gaudi_handle_eqe,
.get_events_stat = gaudi_get_events_stat,
.read_pte = gaudi_read_pte,
.write_pte = gaudi_write_pte,
.mmu_invalidate_cache = gaudi_mmu_invalidate_cache,
.mmu_invalidate_cache_range = gaudi_mmu_invalidate_cache_range,
.mmu_prefetch_cache_range = NULL,
.send_heartbeat = gaudi_send_heartbeat,
.debug_coresight = gaudi_debug_coresight,
.is_device_idle = gaudi_is_device_idle,
.compute_reset_late_init = gaudi_compute_reset_late_init,
.hw_queues_lock = gaudi_hw_queues_lock,
.hw_queues_unlock = gaudi_hw_queues_unlock,
.get_pci_id = gaudi_get_pci_id,
.get_eeprom_data = gaudi_get_eeprom_data,
.get_monitor_dump = gaudi_get_monitor_dump,
.send_cpu_message = gaudi_send_cpu_message,
.pci_bars_map = gaudi_pci_bars_map,
.init_iatu = gaudi_init_iatu,
.rreg = hl_rreg,
.wreg = hl_wreg,
.halt_coresight = gaudi_halt_coresight,
.ctx_init = gaudi_ctx_init,
.ctx_fini = gaudi_ctx_fini,
.pre_schedule_cs = gaudi_pre_schedule_cs,
.get_queue_id_for_cq = gaudi_get_queue_id_for_cq,
.load_firmware_to_device = gaudi_load_firmware_to_device,
.load_boot_fit_to_device = gaudi_load_boot_fit_to_device,
.get_signal_cb_size = gaudi_get_signal_cb_size,
.get_wait_cb_size = gaudi_get_wait_cb_size,
.gen_signal_cb = gaudi_gen_signal_cb,
.gen_wait_cb = gaudi_gen_wait_cb,
.reset_sob = gaudi_reset_sob,
.reset_sob_group = gaudi_reset_sob_group,
.get_device_time = gaudi_get_device_time,
.pb_print_security_errors = NULL,
.collective_wait_init_cs = gaudi_collective_wait_init_cs,
.collective_wait_create_jobs = gaudi_collective_wait_create_jobs,
.get_dec_base_addr = NULL,
.scramble_addr = hl_mmu_scramble_addr,
.descramble_addr = hl_mmu_descramble_addr,
.ack_protection_bits_errors = gaudi_ack_protection_bits_errors,
.get_hw_block_id = gaudi_get_hw_block_id,
.hw_block_mmap = gaudi_block_mmap,
.enable_events_from_fw = gaudi_enable_events_from_fw,
.ack_mmu_errors = gaudi_ack_mmu_page_fault_or_access_error,
.map_pll_idx_to_fw_idx = gaudi_map_pll_idx_to_fw_idx,
.init_firmware_preload_params = gaudi_init_firmware_preload_params,
.init_firmware_loader = gaudi_init_firmware_loader,
.init_cpu_scrambler_dram = gaudi_init_scrambler_hbm,
.state_dump_init = gaudi_state_dump_init,
.get_sob_addr = gaudi_get_sob_addr,
.set_pci_memory_regions = gaudi_set_pci_memory_regions,
.get_stream_master_qid_arr = gaudi_get_stream_master_qid_arr,
.check_if_razwi_happened = gaudi_check_if_razwi_happened,
.mmu_get_real_page_size = hl_mmu_get_real_page_size,
.access_dev_mem = hl_access_dev_mem,
.set_dram_bar_base = gaudi_set_hbm_bar_base,
.send_device_activity = gaudi_send_device_activity,
.set_dram_properties = gaudi_set_dram_properties,
.set_binning_masks = gaudi_set_binning_masks,
};
/**
* gaudi_set_asic_funcs - set GAUDI function pointers
*
* @hdev: pointer to hl_device structure
*
*/
void gaudi_set_asic_funcs(struct hl_device *hdev)
{
hdev->asic_funcs = &gaudi_funcs;
}
Annotation
- Immediate include surface: `gaudiP.h`, `../include/hw_ip/mmu/mmu_general.h`, `../include/hw_ip/mmu/mmu_v1_1.h`, `../include/gaudi/gaudi_masks.h`, `../include/gaudi/gaudi_fw_if.h`, `../include/gaudi/gaudi_reg_map.h`, `../include/gaudi/gaudi_async_ids_map_extended.h`, `linux/module.h`.
- Detected declarations: `struct ecc_info_extract_params`, `function validate_packet_id`, `function get_collective_mode`, `function set_default_power_values`, `function gaudi_set_fixed_properties`, `function gaudi_pci_bars_map`, `function gaudi_set_hbm_bar_base`, `function gaudi_init_iatu`, `function gaudi_get_hw_state`, `function gaudi_early_init`.
- 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.