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

  1. Ensure the GIC (IRQ chip) is created before the operation requiring it is invoked.
  2. 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.