← Interrupt 상세 목차

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되지 않습니다.

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

공개되지 않은 제조사 레지스터나 제품별 오프셋은 추측하지 않았습니다. 아래의 제조사 자료, 아키텍처 문서, Linux v6.18.37 원본으로 확인할 수 있는 내용만 다뤘습니다.