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.

Dependency Surface

Detected Declarations

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

Implementation Notes