← Interrupt 상세 목차DUJINLABS.COM

Hardware · Interrupt detailed manual 04 · Linux v6.18.37

4. Linux IRQ에서 CPU별 vector와 IDT entry까지 연결한다

Linux virq가 CPU별 vector matrix에 할당되고 IDT device vector가 assembly entry와 `common_interrupt`를 거쳐 irq_desc를 찾는 과정을 migration state와 함께 봅니다.

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

CHAPTER 04

4. Linux IRQ에서 CPU별 vector와 IDT entry까지 연결한다

Linux virq가 CPU별 vector matrix에 할당되고 IDT device vector가 assembly entry와 `common_interrupt`를 거쳐 irq_desc를 찾는 과정을 migration state와 함께 봅니다.

vector

8-bit IDT vector는 CPU별 자원이며 Linux virq와 1:1 전역 번호가 아닙니다.

vector matrix

예약 vector와 priority class를 제외하고 CPU affinity에 따라 할당합니다.

IDT

gate type, DPL, IST와 entry 주소가 vector 진입을 결정합니다.

migration

old vector를 즉시 재사용하지 않고 cleanup interrupt 등으로 stale delivery를 처리합니다.

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

항목소유자값의 의미정상 증거오류 해석
irq_cfg vector/domainLinux x86 IRQCPU별 vector와 domainaffinity target에 할당vector 없음/old vector
IDT gateCPUentry address/typegenerated entry와 일치잘못된 gate
pt_regs vectorentry code수신 vectorLAPIC ISR와 동일entry decode
vector_irq[vector]per-CPU Linuxirq_desc mapping현재 virq 또는 cleanup statestale mapping
irq_desc/actionLinux IRQ coreflow handler와 driver요청 action 존재dispatch 이후 경계

실패 경계 판정

증상직전 통과우선 확인반증 시험판정
LAPIC ISR set, common entry 없음vector activeIDT gate/IF/entryIDT dump와 traceCPU entry
entry vector는 맞고 wrong virqcommon_interrupt 실행per-CPU vector_irqCPU별 mapping dumpvector mapping
affinity 이동 중 spurious평상시 정상old vector cleanupmigration trace와 ISRstale delivery
vector allocation 실패virq 생성vector matrix/affinity maskCPU mask 확대자원 고갈
handler latency CPU별 차이entry 모두 실행vector priority/irqoff sectionCPU별 irqsoff tracelocal scheduling
그림 1. 4. Linux IRQ에서 CPU별 vector와 IDT entry까지 연결한다의 실행 순서왼쪽에서 오른쪽으로 실제 소유권과 관찰 지점이 이동합니다.
01 hwirq/virq
02 vector allocation
03 IOAPIC/MSI programming
04 LAPIC IRR
05 IDT gate
06 common_interrupt
07 vector_irq lookup
08 irq_desc/action

실제 검증 절차

순서실행남길 증거판정 목적
1virq→CPU→vector→IDT entry를 표로 저장합니다.번호 ledgermapping 확인
2LAPIC ISR vector와 pt_regs vector를 비교합니다.동일 vectorentry 검증
3affinity migration trace에서 old/new vector 수명을 봅니다.cleanup 완료stale 처리
4CPU hotplug와 vector 압박 조건을 반복합니다.allocation/이동 성공경계조건 검증

주의`/proc/interrupts` 번호는 IDT vector가 아닙니다. vector는 CPU별로 다를 수 있습니다.

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

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