gem5 [DEVELOP-FOR-25.0]
Loading...
Searching...
No Matches
KVM Interrupt handling.

These methods control interrupt delivery to the guest system. More...

Functions

void gem5::BaseKvmCPU::kvmNonMaskableInterrupt ()
 Send a non-maskable interrupt to the guest.
 
void gem5::BaseKvmCPU::kvmInterrupt (const struct kvm_interrupt &interrupt)
 Send a normal interrupt to the guest.
 
void gem5::KvmVM::createIRQChip ()
 Create an in-kernel interrupt controller.
 
void gem5::KvmVM::setIRQLine (uint32_t irq, bool high)
 Set the status of an IRQ line using KVM_IRQ_LINE.
 
bool gem5::KvmVM::hasKernelIRQChip () const
 Is in-kernel IRQ chip emulation enabled?
 
void gem5::KvmVM::enableKernelIRQChip ()
 Tell the VM and VCPUs to use an in-kernel IRQ chip for interrupt delivery.
 

Detailed Description

These methods control interrupt delivery to the guest system.

Function Documentation

◆ createIRQChip()

void gem5::KvmVM::createIRQChip ( )

Create an in-kernel interrupt controller.

Note
This functionality depends on Kvm::capIRQChip().

Definition at line 510 of file vm.cc.

References _hasKernelIRQChip, ioctl(), panic, and warn.

◆ enableKernelIRQChip()

void gem5::KvmVM::enableKernelIRQChip ( )
inline

Tell the VM and VCPUs to use an in-kernel IRQ chip for interrupt delivery.

Note
This is set automatically if the IRQ chip is created using the KvmVM::createIRQChip() API.

Definition at line 372 of file vm.hh.

References _hasKernelIRQChip.

◆ hasKernelIRQChip()

bool gem5::KvmVM::hasKernelIRQChip ( ) const
inline

Is in-kernel IRQ chip emulation enabled?

Definition at line 363 of file vm.hh.

References _hasKernelIRQChip.

◆ kvmInterrupt()

void gem5::BaseKvmCPU::kvmInterrupt ( const struct kvm_interrupt & interrupt)
protected

Send a normal interrupt to the guest.

Note
Make sure that ready_for_interrupt_injection in kvm_run is set prior to calling this function. If not, an interrupt window must be requested by setting request_interrupt_window in kvm_run to 1 and restarting the guest.
Parameters
interruptStructure describing the interrupt to send

Definition at line 834 of file base.cc.

References ioctl(), panic, and stats.

Referenced by gem5::X86KvmCPU::deliverInterrupts().

◆ kvmNonMaskableInterrupt()

void gem5::BaseKvmCPU::kvmNonMaskableInterrupt ( )
protected

Send a non-maskable interrupt to the guest.

Note
The presence of this call depends on Kvm::capUserNMI().

Definition at line 826 of file base.cc.

References ioctl(), panic, and stats.

Referenced by gem5::X86KvmCPU::deliverInterrupts().

◆ setIRQLine()

void gem5::KvmVM::setIRQLine ( uint32_t irq,
bool high )

Set the status of an IRQ line using KVM_IRQ_LINE.

Note
This ioctl is usually only used if the interrupt controller is emulated by the kernel (i.e., after calling createIRQChip()). Some architectures (e.g., ARM) use it instead of BaseKvmCPU::kvmInterrupt().
Parameters
irqInterrupt number
highLine level (true for high, false for low)

Definition at line 525 of file vm.cc.

References ioctl(), gem5::ArmISA::irq, and panic.


Generated on Mon May 26 2025 09:19:16 for gem5 by doxygen 1.13.2