← Interrupt 상세 목차DUJINLABS.COM

Hardware · Interrupt detailed manual 02 · Linux v6.18.37

2. Local APIC와 x2APIC의 IRR·ISR·TMR·priority를 읽는다

xAPIC MMIO와 x2APIC MSR 접근 차이, APIC ID, TPR/PPR, IRR→ISR 이동, TMR trigger mode와 EOI를 CPU별로 추적합니다.

상세 표
2
검증 행
14
절차
4 checkpoints
기준
x86 APIC · IOAPIC · MSI · Linux v6.18.37

CHAPTER 02

2. Local APIC와 x2APIC의 IRR·ISR·TMR·priority를 읽는다

xAPIC MMIO와 x2APIC MSR 접근 차이, APIC ID, TPR/PPR, IRR→ISR 이동, TMR trigger mode와 EOI를 CPU별로 추적합니다.

xAPIC/x2APIC

register 의미는 유사하지만 접근 방식과 APIC ID 폭이 다릅니다.

IRR

수신됐지만 아직 service되지 않은 vector입니다.

ISR

acknowledge돼 현재 service 중인 vector입니다.

PPR

TPR과 현재 ISR priority로 계산돼 새 interrupt 수용을 제한합니다.

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

항목소유자값의 의미정상 증거오류 해석
APIC IDLAPICphysical/logical destinationMADT/CPU topology와 일치wrong target
SVRLAPICAPIC software enable/spurious vectorenable=1, 유효 vectorLAPIC disabled
TPR/PPRLAPICpriority threshold/current요청 vector 허용priority masking
IRR/ISRLAPICpending/active vector bitmap사건에 따라 IRR→ISR→clearentry/EOI 문제
TMR/EOILAPIClevel trigger와 completionIOAPIC/MSI mode와 일치remote IRR 고정

실패 경계 판정

증상직전 통과우선 확인반증 시험판정
message 도착, IRR 없음bus/MSI write 확인destination APIC IDself-IPI와 target 비교LAPIC 입력
IRR 고정, ISR 이동 없음pending vectorTPR/PPR/IFthreshold와 irq mask 확인CPU acceptance
ISR 고정entry 실행EOI pathEOI write tracecompletion
CPU 256 이상 target 실패낮은 ID 정상x2APIC mode와 destination widthAPIC mode/ID raw 확인addressability
level IRQ remote IRR 고정handler 실행source clear+EOIIOAPIC RTE와 LAPIC EOI 비교level completion
그림 1. 2. Local APIC와 x2APIC의 IRR·ISR·TMR·priority를 읽는다의 실행 순서왼쪽에서 오른쪽으로 실제 소유권과 관찰 지점이 이동합니다.
01 interrupt message
02 destination match
03 IRR
04 priority arbitration
05 ISR
06 IDT handler
07 EOI
08 ISR clear

실제 검증 절차

순서실행남길 증거판정 목적
1CPU별 APIC ID/mode/SVR/TPR을 저장합니다.LAPIC identity기준선
2시험 vector의 IRR/ISR/TMR를 entry/EOI 전후 capture합니다.상태 이동lifecycle 검증
3TPR을 조정해 priority 전달 경계를 측정합니다.vector class별 결과mask 검증
4CPU별 self-IPI와 cross-IPI를 보내 destination을 확인합니다.APIC ID mappingrouting 검증

주의x2APIC register는 MSR로 접근합니다. xAPIC MMIO 주소를 그대로 읽어 현재 상태라고 해석하지 않습니다.

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

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