cik_mc_program(9)
β¨ cik_mc_program(9) β a kernel API manual moment β¨
okay bestie, so this little cutie lives in the cik_mc_program(9) kernel API manual and honestly? she's short but she matters. let me walk you through it π«Ά
π NAME π
cik_mc_program β program the GPU memory controller
like, literally that's the whole job. she programs the memory controller. iconic, no notes π
πΈ SYNOPSIS πΈ
void cik_mc_program (struct radeon_device *rdev );
that's it. no return value, no drama, just vibes and a struct radeon_device * β¨
π¦ ARGUMENTS π¦
rdevβ aradeon_devicepointer. that's your radeon device, the main character of this whole situation π
π DESCRIPTION π
so what does she actually do? she sets the location of vram, gart, and AGP in the GPU's physical address space, and this is the CIK version specifically β iykyk π
three regions, all placed in physical address space, all handled by this one function. lowkey a lot of responsibility for such a tiny synopsis, but she ate π
β SEE ALSO β
first up, the source of truth, no cap:
- Kernel file
./drivers/gpu/drm/radeon/cik.c
and then, bestie, the extended friend group. like genuinely the whole group chat showed up π every single one of these is a (9) manpage and yes i'm listing all of them, don't @ me:
cik_get_allowed_info_register(9), cik_get_xclk(9), cik_mm_rdoorbell(9), cik_mm_wdoorbell(9), cik_srbm_select(9), ci_mc_load_microcode(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)
still going, she has so many friends π§
cik_gpu_check_soft_reset(9), cik_gpu_soft_reset(9), cik_asic_reset(9), cik_gfx_is_lockup(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)
and the display bandwidth girlies, we love them π
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)
that's the whole list, every last one, periodt π₯
if you're here because something in the memory controller looks cursed: same bestie, same. start with cik_mc_init(9) and work your way out π
that's the page!! π source/version? she comes to you from ./drivers/gpu/drm/radeon, dated October 2026. mwah, go program something cute πβ¨
π¦ 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