firecracker-microvm/firecracker · error
IRQ chip not set
Error message
IRQ chip not set
What it means
Error "IRQ chip not set" thrown in firecracker-microvm/firecracker.
Source
Thrown at src/vmm/src/arch/aarch64/vm.rs:120
// On aarch64, the vCPUs need to be created (i.e call KVM_CREATE_VCPU) before setting up the
// IRQ chip because the `KVM_CREATE_VCPU` ioctl will return error if the IRQCHIP
// was already initialized.
// Search for `kvm_arch_vcpu_create` in arch/arm/kvm/arm.c.
self.setup_irqchip(nr_vcpus)
}
/// Creates the GIC (Global Interrupt Controller).
pub fn setup_irqchip(&mut self, vcpu_count: u8) -> Result<(), KvmVmError> {
self.irqchip_handle = Some(
crate::arch::aarch64::gic::create_gic(self.fd(), vcpu_count.into(), None)
.map_err(KvmVmError::VmCreateGIC)?,
);
Ok(())
}
/// Gets a reference to the irqchip of the VM.
pub fn get_irqchip(&self) -> &crate::arch::aarch64::gic::GICDevice {
self.irqchip_handle.as_ref().expect("IRQ chip not set")
}
/// Saves and returns the KVM VM state.
pub fn save_state(&self, mpidrs: &[u64]) -> Result<VmState, KvmVmError> {
Ok(VmState {
memory: self.common.guest_memory.describe(),
gic: self
.get_irqchip()
.save_device(mpidrs)
.map_err(KvmVmError::SaveGic)?,
resource_allocator: self.resource_allocator().save(),
})
}
/// Restore the KVM VM state
///
/// # Errors
///View on GitHub (pinned to cc535f035f)
Solutions
- Ensure the GIC (IRQ chip) is created before the operation requiring it is invoked.
- Create the IRQ chip during VM setup before attaching devices that raise interrupts.
When it happens
Trigger: Thrown at src/vmm/src/arch/aarch64/vm.rs:72 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of firecracker-microvm/firecracker@cc535f035f (2026-08-19).
Data as JSON: /api/errors/70aa8c84686133a2.
Report an issue: GitHub.