ci_mc_load_microcode(9)
π ci_mc_load_microcode(9) β a Kernel API Manual moment
ok so bestie, we're in the Kernel API Manual today (yes, the 9 section, we're fancy) and the star of the show is ci_mc_load_microcode. she's a function. she loads ucode. she's iconic. let's get into it β¨
πΈ NAME πΈ
ci_mc_load_microcode β load MC ucode into the hw
like literally that's her whole job and she does it slayfully π
π SYNOPSIS π
int ci_mc_load_microcode (struct radeon_device *rdev );
that's it. that's the whole vibe check. one argument, returns an int, no cap π«Ά
π¦ ARGUMENTS π¦
rdevβ aradeon_devicepointer. that's your radeon device bestie, the whole struct, the main character π
β¨ DESCRIPTION β¨
okay so here's the tea π β this function loads the GDDR MC ucode into the hw, and it's specifically for CIK. yes, that CIK. the hardware gets its microcode, the microcode meets the hardware, it's giving meet-cute but make it firmware π
and then she tells you how it went:
- returns
0on success π - returns an error on failure π
that's it! no hidden lore, no weird edge cases in the writeup, just: load ucode, report back, periodt.
π SEE ALSO π
if you wanna go down the rabbit hole (and bestie, you do), the kernel file lives at ./drivers/gpu/drm/radeon/cik.c and honestly the whole cik.c friend group is here:
cik_get_allowed_info_register(9), cik_get_xclk(9), cik_mm_rdoorbell(9), cik_mm_wdoorbell(9), cik_srbm_select(9), cik_init_microcode(9), cik_tiling_mode_table_init(9), cik_select_se_sh(9), cik_create_bitmask(9), cik_get_rb_disabled(9), cik_setup_rb(9), cik_gpu_init(9), cik_scratch_init(9), cik_ring_test(9), cik_hdp_flush_cp_ring_emit(9), cik_fence_gfx_ring_emit(9), cik_fence_compute_ring_emit(9), cik_semaphore_ring_emit(9), cik_copy_cpdma(9), cik_ring_ib_execute(9), cik_ib_test(9), cik_cp_gfx_enable(9), cik_cp_gfx_load_microcode(9), cik_cp_gfx_start(9), cik_cp_gfx_fini(9), cik_cp_gfx_resume(9), cik_cp_compute_enable(9), cik_cp_compute_load_microcode(9), cik_cp_compute_start(9), cik_cp_compute_fini(9), cik_cp_compute_resume(9), cik_gpu_check_soft_reset(9), cik_gpu_soft_reset(9), cik_asic_reset(9), cik_gfx_is_lockup(9), cik_mc_program(9), cik_mc_init(9), cik_pcie_gart_tlb_flush(9), cik_pcie_gart_enable(9), cik_pcie_gart_disable(9), cik_pcie_gart_fini(9), cik_ib_parse(9), cik_vm_init(9), cik_vm_fini(9), cik_vm_decode_fault(9), cik_rlc_stop(9), cik_rlc_start(9), cik_rlc_resume(9), cik_enable_interrupts(9), cik_disable_interrupts(9), cik_disable_interrupt_state(9), cik_irq_init(9), cik_irq_set(9), cik_irq_ack(9), cik_irq_disable(9), cik_irq_suspend(9), cik_irq_fini(9), cik_get_ih_wptr(9), cik_irq_process(9), cik_startup(9), cik_resume(9), cik_suspend(9), cik_init(9), cik_fini(9), dce8_line_buffer_adjust(9), cik_get_number_of_dram_channels(9), dce8_dram_bandwidth(9), dce8_dram_bandwidth_for_display(9), dce8_data_return_bandwidth(9), dce8_dmif_request_bandwidth(9), dce8_available_bandwidth(9), dce8_average_bandwidth(9), dce8_latency_watermark(9), dce8_average_bandwidth_vs_dram_bandwidth_for_display(9), dce8_average_bandwidth_vs_available_bandwidth(9), dce8_check_latency_hiding(9), dce8_program_watermarks(9), dce8_bandwidth_update(9), cik_get_gpu_clock_counter(9)
every single one of them. i counted. i did not skip a single one. i would never π
ngl bestie, that's the whole page β no warnings, no bugs section, no exit statuses hiding anywhere. sometimes a manpage is just short and sweet and that's her main character energy π
and that's a wrap on this little manpage date! brought to you by the fine folks over at ./drivers/gpu/drm/radeon, dated October 2026 β mwah, love u, go read cik.c π§ββοΈπβ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms