amdgpu_device_halt(9)
π amdgpu_device_halt(9)
okay so this is a page from the Kernel API Manual, and honestly? it's giving "emergency brake for your GPU" energy. buckle up bestie π
β¨ NAME β¨
amdgpu_device_halt β bring hardware to some kind of halt state π
β¨ SYNOPSIS β¨
void amdgpu_device_halt (struct amdgpu_device *adev );
β¨ ARGUMENTS β¨
adevβ anamdgpu_devicepointer, aka your lil handle to the GPU we're about to put in time-out π«Ά
β¨ DESCRIPTION β¨
So the whole vibe here: we bring the hardware to some kind of halt state so that no one can touch it any more. literally nobody. hands off. π It helps maintain the error context when an error has occurred β like preserving the crime scene, iykyk π.
Compared to a simple hang, the system will keep stable at least for SSH access, which is the whole point β then it should be trivial to inspect the hardware state and see what's going on. main character debugging energy fr fr π
It's implemented as the following steps, in order:
drm_dev_unplugmakes device inaccessible to user space (IOCTLs, etc), clears all CPU mappings to device, disallows remappings through page faults β so user space is officially uninvited to the party π«amdgpu_irq_disable_alldisables all interrupts β no more surprise knocks at the door πamdgpu_fence_driver_hw_finisignals all HW fences β everyone gets the memo π- set
adev->no_hw_accessto avoid potential crashes after step 5 β important!! this is the safety goggles moment π₯½ amdgpu_device_unmap_mmioclears all MMIO mappings πΊοΈpci_disable_deviceandpci_wait_for_pending_transactionflush any in flight DMA operations β clean exit, no loose ends β¨
bestie pls note: step 4 has to happen before step 5, that's literally why it's there β adev->no_hw_access keeps things from crashing after the MMIO mappings get cleared π
β¨ SEE ALSO β¨
Kernel file ./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
and the whole friend group π:
pcie_replay_count(9)board_info(9)uma/carveout_options(9)uma/carveout(9)amdgpu_device_supports_px(9)amdgpu_device_supports_boco(9)amdgpu_device_supports_baco(9)amdgpu_device_supports_smart_shift(9)amdgpu_device_mm_access(9)amdgpu_device_aper_access(9)amdgpu_device_vram_access(9)amdgpu_device_get_rev_id(9)amdgpu_device_asic_init(9)amdgpu_device_mem_scratch_init(9)amdgpu_device_mem_scratch_fini(9)amdgpu_device_program_register_sequence(9)amdgpu_device_pci_config_reset(9)amdgpu_device_pci_reset(9)amdgpu_device_resize_fb_bar(9)amdgpu_device_need_post(9)amdgpu_device_should_use_aspm(9)amdgpu_device_vga_set_decode(9)amdgpu_device_check_block_size(9)amdgpu_device_check_vm_size(9)amdgpu_device_check_arguments(9)amdgpu_switcheroo_set_state(9)amdgpu_switcheroo_can_switch(9)amdgpu_device_enable_virtual_display(9)amdgpu_device_parse_gpu_info_fw(9)amdgpu_device_ip_early_init(9)amdgpu_device_ip_init(9)amdgpu_device_fill_reset_magic(9)amdgpu_device_check_vram_lost(9)amdgpu_device_set_cg_state(9)amdgpu_device_ip_late_init(9)amdgpu_device_smu_fini_early(9)amdgpu_device_ip_fini(9)amdgpu_device_delayed_init_work_handler(9)amdgpu_device_ip_suspend_phase1(9)amdgpu_device_ip_suspend_phase2(9)amdgpu_device_ip_suspend(9)amdgpu_device_ip_resume_phase1(9)amdgpu_device_ip_resume_phase2(9)amdgpu_device_ip_resume_phase3(9)amdgpu_device_ip_resume(9)amdgpu_device_detect_sriov_bios(9)amdgpu_device_asic_has_dc_support(9)amdgpu_device_has_dc_support(9)amdgpu_device_check_iommu_direct_map(9)amdgpu_device_check_iommu_remap(9)amdgpu_device_init(9)amdgpu_device_fini_hw(9)amdgpu_device_evict_resources(9)amdgpu_device_pm_notifier(9)amdgpu_device_prepare(9)amdgpu_device_complete(9)amdgpu_device_suspend(9)amdgpu_device_resume(9)amdgpu_device_reset_sriov(9)amdgpu_device_has_job_running(9)amdgpu_device_should_recover_gpu(9)amdgpu_device_gpu_recover(9)amdgpu_device_partner_bandwidth(9)amdgpu_device_gpu_bandwidth(9)amdgpu_device_get_pcie_info(9)amdgpu_device_is_peer_accessible(9)amdgpu_pci_error_detected(9)amdgpu_pci_mmio_enabled(9)amdgpu_pci_slot_reset(9)amdgpu_pci_resume(9)amdgpu_device_get_gang(9)amdgpu_device_switch_gang(9)amdgpu_device_enforce_isolation(9)
that's the whole page bestie, slay π this one lives in ./drivers/gpu/drm/amd/amdgpu, dated October 2026, and it's page amdgpu_device_halt(9) β go read it again if you forgot anything, no cap π¦β¨
π¦ 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