CHAPTER 06
6. APLIC wired source와 IMSIC MSI interrupt file을 구분한다
AIA 시스템에서는 APLIC이 wired source를 직접 hart line으로 전달하거나 MSI로 변환해 IMSIC에 보낼 수 있습니다. IMSIC은 hart별 interrupt file의 pending/enable과 top external interrupt를 관리합니다.
APLIC domain
sourcecfg, target, enable/pending과 delivery mode를 privilege domain별로 관리합니다.
direct mode
APLIC이 hart external interrupt를 직접 신호하고 claimi로 ID를 제공합니다.
MSI mode
APLIC이 wired source를 MSI address/data write로 변환해 IMSIC에 전달합니다.
IMSIC
hart/privilege/guest별 interrupt file이 EIP/EIE와 top-of-pending CSR를 가집니다.
레지스터·번호·소유권 대조
| 항목 | 소유자 | 값의 의미 | 정상 증거 | 오류 해석 |
|---|---|---|---|---|
| APLIC domaincfg | APLIC domain | enable와 direct/MSI mode | firmware 설계와 일치 | delivery mode 혼동 |
| sourcecfg/target | APLIC | edge/level/delegation과 hart/EIID | source wiring과 일치 | polarity/target 오류 |
| setienum/setipnum | APLIC | enable/pending 번호 접근 | source별 상태 일치 | 번호 0/상한 오류 |
| IMSIC eidelivery/eithreshold | interrupt file | global delivery/threshold | EIID 전달 가능 | file 차단 |
| IMSIC eip/eie/topei | interrupt file | pending/enable/top EIID | MSI data와 EIID 일치 | 잘못된 file/guest |
실패 경계 판정
| 증상 | 직전 통과 | 우선 확인 | 반증 시험 | 판정 |
|---|---|---|---|---|
| APLIC pending, MSI write 없음 | wired source 수신 | domain mode/target | genmsi와 target address 확인 | APLIC 변환 |
| MSI write, IMSIC pending 없음 | bus transaction 성공 | interrupt file 주소/data | software MSI write | IMSIC 입력 |
| IMSIC pending, trap 없음 | EIP set | EIE/delivery/threshold/CSR | EIID enable과 sie 확인 | hart delivery |
| direct와 MSI driver 충돌 | hardware 동작 일부 | domaincfg와 Linux 선택 | firmware node/compatible 검토 | mode 기술 |
| guest로 잘못 전달 | host IMSIC 정상 | guest index와 IOMMU MSI translation | host/guest file address 비교 | virtualization routing |
실제 검증 절차
| 순서 | 실행 | 남길 증거 | 판정 목적 |
|---|---|---|---|
| 1 | APLIC mode와 source target을 raw로 저장합니다. | source→hart/EIID map | 설정 확인 |
| 2 | MSI bus address/data와 IMSIC file base를 대조합니다. | message ledger | 입력 검증 |
| 3 | EIP/EIE/topei를 사건 전후 capture합니다. | interrupt file 상태 | delivery 확인 |
| 4 | wired source와 software MSI를 각각 주입합니다. | APLIC/IMSIC 경계 분할 | 원인 격리 |
주의PLIC register 의미를 APLIC/IMSIC에 그대로 적용하지 않습니다. AIA는 번호, privilege와 delivery 구조가 다릅니다.
공개적으로 다시 확인할 수 있는 자료
공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.
RISC-V PLIC specification
gateway, priority, target context와 claim/complete
RISC-V AIA specification
APLIC, IMSIC, interrupt files와 virtualization
Linux SiFive PLIC driver
PLIC domain, enable, claim/complete와 chained handler
Linux RISC-V INTC
local interrupt cause와 root domain