← Interrupt 상세 목차DUJINLABS.COM

Hardware · Interrupt detailed manual 05 · Linux v6.18.37

5. firmware specifier에서 irq_desc와 handler까지 번호를 연결한다

DT의 interrupt type/number/flags 또는 ACPI GSI를 GIC hwirq로 번역하고 irqdomain이 virq를 할당한 뒤 `gic_handle_irq()`가 INTID를 Linux generic IRQ flow로 넘기는 과정을 읽습니다.

상세 표
2
검증 행
14
절차
4 checkpoints
기준
Arm GICv3 · Linux irqchip · Linux v6.18.37

CHAPTER 05

5. firmware specifier에서 irq_desc와 handler까지 번호를 연결한다

DT의 interrupt type/number/flags 또는 ACPI GSI를 GIC hwirq로 번역하고 irqdomain이 virq를 할당한 뒤 `gic_handle_irq()`가 INTID를 Linux generic IRQ flow로 넘기는 과정을 읽습니다.

세 번호

firmware specifier, GIC INTID(hwirq), Linux virq는 같을 수도 있지만 동일 개념이 아닙니다.

irqdomain

controller별 hwirq 공간을 Linux 전역 virq와 연결하고 irq_chip/handler를 설정합니다.

irq_desc

mask depth, state, affinity와 irqaction chain을 소유합니다.

dispatch

architecture entry→GIC handle_irq→domain lookup→flow handler→driver action 순서입니다.

레지스터·번호·소유권 대조

항목소유자값의 의미정상 증거오류 해석
DT interrupts cellsfirmwareSPI/PPI 번호와 flagsbinding 계산 INTID와 일치offset/trigger 오해
irq_domain mappingLinux IRQ corehwirq↔virq유일한 mappingmissing/duplicate mapping
irq_data chipLinux IRQ coregic_chip와 hwirq해당 domain ops잘못된 parent hierarchy
irq_desc handle_irqLinux IRQ coreedge/level flow handlerhardware trigger와 일치ack/mask 순서 오류
/proc/interruptsLinux/userspacevirq, CPU count, action실제 target CPU 증가다른 번호를 INTID로 오인

실패 경계 판정

증상직전 통과우선 확인반증 시험판정
DT 번호가 있는데 request_irq 실패firmware node 존재domain translate/mappingirqdomain debug와 fwspec dumpspecifier 경계
IAR INTID 수신, virq 없음GIC delivery 성공irq_find_mappingdomain map 생성 시점 확인Linux mapping
virq count 증가, driver status 0handler dispatchshared line/source 식별모든 action status 비교잘못된 source/공유 IRQ
edge handler로 level source 처리mapping 존재flags와 ICFGRDT flags 수정 전 raw 비교trigger 기술 오류
affinity가 적용 안 됨virq 확인irq_chip set_affinity와 routeIROUTER readbackchip callback 경계
그림 1. 5. firmware specifier에서 irq_desc와 handler까지 번호를 연결한다의 실행 순서왼쪽에서 오른쪽으로 실제 소유권과 관찰 지점이 이동합니다.
01 DT/ACPI specifier
02 domain translate
03 hwirq INTID
04 virq allocate
05 irq_desc/chip
06 IAR
07 generic_handle_domain_irq
08 flow handler
09 irqaction

실제 검증 절차

순서실행남길 증거판정 목적
1firmware specifier→INTID 계산을 문서로 적습니다.계산식과 flags입력 확인
2hwirq/virq/irq_desc/action을 한 표로 dump합니다.번호 ledgermapping 검증
3entry부터 driver handler까지 tracepoint/function graph를 수집합니다.호출 순서와 latencydispatch 확인
4trigger와 affinity 변경을 hardware readback과 비교합니다.software 요청/실제 설정irq_chip 동작 확인

주의`/proc/interrupts` 왼쪽 숫자를 GIC INTID로 단정하지 않습니다. Linux virq일 뿐이며 hwirq는 irq_data에서 확인합니다.

공개적으로 다시 확인할 수 있는 자료

공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.