Arm GIC v3와 Pseudo-NMI에 대한 이해

x86에는 IRQ 마스크와 무관하게 항상 들어오는 진짜 NMI(Non-Maskable Interrupt) 핀이 있지만, ARM에는 그런 하드웨어가 없다. 그런데 PMU(성능 카운터) 오버플로우 인터럽트처럼 "일반 IRQ가 막혀 있는 구간에서도 반드시 들어와야" 정확한 프로파일링이 되는…

Continue ReadingArm GIC v3와 Pseudo-NMI에 대한 이해

GIC v3 초기화 in ATF

멀티코어 ARM SoC가 부팅할 때 인터럽트 컨트롤러(GIC)는 커널이 넘겨받기 한참 전, EL3(Secure Monitor)에서부터 설정돼 있어야 한다. 초기화가 빠지거나 순서가 틀리면 커널 입장에서는 GIC가 있는데도 인터럽트가 아예 안 들어오거나 특정 코어만…

Continue ReadingGIC v3 초기화 in ATF

ARM GIC v3 (Generic Interrupt Controller v3)

GICv2는 아키텍처상 PE(Processing Element, 코어)를 최대 8개까지만 지원한다. 서버·모바일 SoC의 코어 수가 계속 늘어나면서 이 상한이 실제 병목이 됐고, ARM은 GICv3에서 Distributor 하나가 모든 코어를 직접 상대하던 구조를 버리고 코어마다…

Continue ReadingARM GIC v3 (Generic Interrupt Controller v3)