← Interrupt 상세 목차DUJINLABS.COM

Hardware · Interrupt detailed manual 01 · Linux v6.18.37

1. INTID 종류, pending·active와 trigger를 구분한다

SGI 0~15, PPI 16~31, SPI 32 이상, extended PPI/SPI와 LPI는 배치와 제어 bank가 다릅니다. inactive, pending, active, active+pending 네 상태와 level/edge source clear 순서를 함께 봅니다.

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

CHAPTER 01

1. INTID 종류, pending·active와 trigger를 구분한다

SGI 0~15, PPI 16~31, SPI 32 이상, extended PPI/SPI와 LPI는 배치와 제어 bank가 다릅니다. inactive, pending, active, active+pending 네 상태와 level/edge source clear 순서를 함께 봅니다.

SGI

PE 사이 software interrupt이며 target affinity와 source PE를 구분합니다.

PPI

각 PE의 private interrupt로 timer와 maintenance interrupt에 많이 쓰입니다.

SPI

shared peripheral source이며 GICD에서 enable, trigger, priority와 route를 설정합니다.

LPI

메모리 기반 property/pending table과 ITS translation을 쓰며 GICD ISPENDR 방식으로 다루지 않습니다.

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

항목소유자값의 의미정상 증거오류 해석
GICD_TYPERDistributor구현 INTID 수와 기능firmware interrupt 상한과 일치존재하지 않는 INTID 접근
GICD_IGROUPR/IGRPMODRDistributorSecurity groupEL과 group enable 정책 일치Group0/1 routing 오류
GICD_ISENABLERDistributorSPI enabletarget source bit 1device status 있으나 GIC가 차단
GICD_ICFGRDistributoredge/levelDT/ACPI trigger와 전기 신호 일치잘못된 trigger로 storm/loss
GICD_ISPENDR/ISACTIVERDistributorpending/active snapshot사건에 따라 상태 이동EOI/source clear 순서 오류

실패 경계 판정

증상직전 통과우선 확인반증 시험판정
device status 1, pending 0장치 source 발생enable/trigger/wiresoftware pending 주입GIC 입력 경계
pending 1, CPU 미진입GIC source 수신route/priority/groupPMR 완화와 affinity 변경delivery policy
active 고정CPU acknowledgeEOI/deactivateEOImode와 DIR traceCPU interface 완료
level IRQ stormhandler 실행device source clearmask 후 status clear 순서 비교장치 clear 경계
edge IRQ 손실일부 edge 도착pulse width/ack/mask windowsoftware trigger와 외부 pin 비교전기 또는 masking race
그림 1. 1. INTID 종류, pending·active와 trigger를 구분한다의 실행 순서왼쪽에서 오른쪽으로 실제 소유권과 관찰 지점이 이동합니다.
01 device source
02 trigger detect
03 pending
04 priority+route
05 IAR acknowledge
06 active
07 handler source clear
08 EOI/deactivate

실제 검증 절차

순서실행남길 증거판정 목적
1device raw status와 GIC pending/active를 동시 저장합니다.동일 사건 snapshot입력 경계 판정
2DT/ACPI trigger와 ICFGR, 실제 pin 파형을 대조합니다.세 값의 일치trigger 검증
3handler enter/source clear/EOI 시간을 trace합니다.상태 수명storm/loss 분석
4software generated interrupt로 장치 바깥 경로를 시험합니다.CPU delivery 성공경계 분할

주의level interrupt는 GIC pending bit만 지워 해결하지 않습니다. 장치의 level 원인을 먼저 제거해야 다시 pending되지 않습니다.

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

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