← Interrupt 상세 목차DUJINLABS.COM

Hardware · Interrupt detailed manual 01 · Linux v6.18.37

1. legacy PIC, virtual wire와 ACPI MADT topology를 구분한다

8259 PIC의 IRQ0~15, ExtINT virtual wire, IOAPIC GSI base와 interrupt source override를 부팅 시 선택한 APIC mode와 함께 읽습니다.

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

CHAPTER 01

1. legacy PIC, virtual wire와 ACPI MADT topology를 구분한다

8259 PIC의 IRQ0~15, ExtINT virtual wire, IOAPIC GSI base와 interrupt source override를 부팅 시 선택한 APIC mode와 함께 읽습니다.

PIC

두 개의 8259가 16개 legacy IRQ를 mask/priority 처리합니다.

virtual wire

PIC 출력을 LAPIC LINT0 ExtINT로 받아 APIC 환경으로 이행할 수 있습니다.

MADT

Local APIC/x2APIC, IOAPIC, source override와 NMI 정보를 제공합니다.

GSI

ACPI global system interrupt는 Linux virq나 IDT vector와 다른 번호입니다.

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

항목소유자값의 의미정상 증거오류 해석
PIC IMR/ISR/IRR8259mask/in-service/request선택 mode에서 기대 상태legacy source 고정
LVT LINT0/1Local APICExtINT/NMI/maskMADT policy와 일치중복 delivery
MADT IOAPICfirmwareID/address/GSI baseMMIO ID와 일치topology 오류
MADT ISOfirmwarelegacy IRQ→GSI, polarity/trigger실제 wiring과 일치IRQ0/SCI 등 override 오류
APIC modeLinuxPIC/virtual wire/IOAPIC 선택boot log와 register 일치fallback mode

실패 경계 판정

증상직전 통과우선 확인반증 시험판정
timer만 안 옴CPU/APIC onlineIRQ0 override/LAPIC timerMADT ISO와 clockevent 확인legacy routing
IRQ가 두 번 옴source 정상PIC와 IOAPIC 동시 enablePIC mask 후 count 비교중복 route
특정 GSI 없음device statusIOAPIC GSI base 계산RTE index와 MADT 비교topology
polarity 반대로 stormRTE unmaskISO flagsline level과 RTE bit 비교firmware trigger
noapic에서만 부팅PIC path 성공MADT/IOAPIC 초기화IOAPIC ID/address readAPIC topology
그림 1. 1. legacy PIC, virtual wire와 ACPI MADT topology를 구분한다의 실행 순서왼쪽에서 오른쪽으로 실제 소유권과 관찰 지점이 이동합니다.
01 firmware MADT
02 APIC mode 선택
03 legacy IRQ/ISO
04 GSI
05 IOAPIC 또는 virtual wire
06 LAPIC vector
07 IDT

실제 검증 절차

순서실행남길 증거판정 목적
1MADT 항목을 APIC ID/GSI base/override 표로 풉니다.firmware topology입력 확인
2PIC mask와 LINT0/IOAPIC route를 동시에 dump합니다.활성 경로 하나중복 배제
3legacy source별 실제 GSI와 trigger를 자극해 확인합니다.source mapoverride 검증
4PIC/IOAPIC boot mode 결과를 분리 저장합니다.fallback 차이경계 판정

주의ISA IRQ 번호, ACPI GSI, IOAPIC pin, Linux virq와 IDT vector를 같은 숫자로 취급하지 않습니다.

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

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