cik_mc_program(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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 β€” a radeon_device pointer. 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