drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c- Extension
.c- Size
- 19574 bytes
- Lines
- 814
- Domain
- Driver Families
- Bucket
- drivers/gpu
- 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.
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/irq.hlinux/pci.hdrm/drm_vblank.hdrm/amdgpu_drm.hdrm/drm_drv.hamdgpu.hamdgpu_ih.hatom.hamdgpu_connectors.hamdgpu_trace.hamdgpu_amdkfd.hamdgpu_ras.hlinux/pm_runtime.hamdgpu_dm_irq.h
Detected Declarations
function amdgpu_irq_disable_allfunction driverfunction amdgpu_irq_handle_ih1function amdgpu_irq_handle_ih2function amdgpu_irq_handle_ih_softfunction amdgpu_msi_okfunction amdgpu_restore_msixfunction amdgpu_irq_initfunction amdgpu_irq_fini_hwfunction sourcesfunction amdgpu_irq_add_idfunction amdgpu_irq_dispatchfunction amdgpu_irq_delegatefunction sourcefunction amdgpu_irq_gpu_reset_resume_helperfunction sourcefunction sourcefunction amdgpu_irq_enabledfunction amdgpu_irq_maskfunction amdgpu_irqdomain_mapfunction driverfunction driverfunction IRQ
Annotated Snippet
#include <linux/irq.h>
#include <linux/pci.h>
#include <drm/drm_vblank.h>
#include <drm/amdgpu_drm.h>
#include <drm/drm_drv.h>
#include "amdgpu.h"
#include "amdgpu_ih.h"
#include "atom.h"
#include "amdgpu_connectors.h"
#include "amdgpu_trace.h"
#include "amdgpu_amdkfd.h"
#include "amdgpu_ras.h"
#include <linux/pm_runtime.h>
#ifdef CONFIG_DRM_AMD_DC
#include "amdgpu_dm_irq.h"
#endif
#define AMDGPU_WAIT_IDLE_TIMEOUT 200
const char *soc15_ih_clientid_name[] = {
"IH",
"SDMA2 or ACP",
"ATHUB",
"BIF",
"SDMA3 or DCE",
"SDMA4 or ISP",
"VMC1 or PCIE0",
"RLC",
"SDMA0",
"SDMA1",
"SE0SH",
"SE1SH",
"SE2SH",
"SE3SH",
"VCN1 or UVD1",
"THM",
"VCN or UVD",
"SDMA5 or VCE0",
"VMC",
"SDMA6 or XDMA",
"GRBM_CP",
"ATS",
"ROM_SMUIO",
"DF",
"SDMA7 or VCE1",
"PWR",
"reserved",
"UTCL2",
"EA",
"UTCL2LOG",
"MP0",
"MP1"
};
const char *soc_v1_0_ih_clientid_name[] = {
"IH",
"Reserved",
"ATHUB",
"BIF",
"Reserved",
"Reserved",
"Reserved",
"RLC",
"Reserved",
"Reserved",
"GFX",
"IMU",
"Reserved",
"Reserved",
"VCN1 or UVD1",
"THM",
"VCN or UVD",
"Reserved",
"VMC",
"Reserved",
"GRBM_CP",
"GC_AID",
"ROM_SMUIO",
"DF",
"Reserved",
"PWR",
"LSDMA",
"GC_UTCL2",
"nHT",
"Reserved",
"MP0",
"MP1",
Annotation
- Immediate include surface: `linux/irq.h`, `linux/pci.h`, `drm/drm_vblank.h`, `drm/amdgpu_drm.h`, `drm/drm_drv.h`, `amdgpu.h`, `amdgpu_ih.h`, `atom.h`.
- Detected declarations: `function amdgpu_irq_disable_all`, `function driver`, `function amdgpu_irq_handle_ih1`, `function amdgpu_irq_handle_ih2`, `function amdgpu_irq_handle_ih_soft`, `function amdgpu_msi_ok`, `function amdgpu_restore_msix`, `function amdgpu_irq_init`, `function amdgpu_irq_fini_hw`, `function sources`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.