CHAPTER 07
7. RISC-V interrupt virtualization, ordering과 latency를 검증한다
VS interrupt file, guest index, IOMMU MSI translation, hart migration과 local interrupt priority를 포함해 물리 source부터 guest handler까지 지연과 소유권을 추적합니다.
guest files
IMSIC은 hart마다 여러 VS interrupt file을 제공할 수 있습니다.
migration
vCPU 이동 시 guest file state와 device MSI target을 일관되게 바꿔야 합니다.
IOMMU
direct-assigned device MSI가 올바른 guest interrupt file로 변환되도록 translation과 권한이 필요합니다.
latency
source→APLIC/PLIC→hart trap→host/guest entry 각 구간을 따로 측정합니다.
레지스터·번호·소유권 대조
| 항목 | 소유자 | 값의 의미 | 정상 증거 | 오류 해석 |
|---|---|---|---|---|
| hgeie/hgeip | hart hypervisor CSR | guest external pending/enable | guest file index와 일치 | guest notification 차단 |
| vstopei | VS interrupt file | guest top EIID | device vector와 일치 | wrong guest file |
| IMSIC guest base | platform/IOMMU | guest index별 MSI address | vCPU placement와 일치 | stale target |
| IOMMU MSI table | IOMMU | device→guest file translation | Requester/EIID map 정상 | fault/wrong VM |
| latency trace | host/guest | 각 entry timestamp | 조건별 상한 설명 | migration/idle tail |
실패 경계 판정
| 증상 | 직전 통과 | 우선 확인 | 반증 시험 | 판정 |
|---|---|---|---|---|
| host는 받고 guest는 못 받음 | physical interrupt 도착 | guest injection/file enable | software guest EIID 주입 | virtual delivery |
| vCPU migration 중 loss | steady state 정상 | MSI target/file state 전환 | sequence count 반복 | migration race |
| 다른 VM이 받음 | MSI bus write | IOMMU/guest index | Requester ID translation dump | 격리 오류 |
| deep idle tail 증가 | 기능 정상 | hart wake와 IMSIC delivery | idle state별 측정 | power latency |
| 부하에서 priority inversion | 모든 interrupt 도착 | local priority/threshold | priority class별 histogram | hart arbitration |
실제 검증 절차
| 순서 | 실행 | 남길 증거 | 판정 목적 |
|---|---|---|---|
| 1 | physical source ID/EIID와 guest EIID/virq를 연결합니다. | 가상 번호 ledger | translation 확인 |
| 2 | MSI translation과 IOMMU fault를 vCPU placement와 함께 저장합니다. | target 증거 | 격리 검증 |
| 3 | vCPU migration 중 sequence interrupt를 발생시킵니다. | loss/duplicate 0 | state 이동 |
| 4 | host/guest entry timestamp로 구간별 max latency를 계산합니다. | 상한과 원인 | 성능 검증 |
주의가상화 경로에서 평균 latency만 비교하면 migration 순간의 interrupt loss나 긴 tail을 놓칩니다.
공개적으로 다시 확인할 수 있는 자료
공개되지 않은 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