gem5  v20.1.0.0
Functions
KVM Interrupt handling.

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

Functions

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

Detailed Description

These methods control interrupt delivery to the guest system.

Function Documentation

◆ createIRQChip()

void KvmVM::createIRQChip ( )

Create an in-kernel interrupt controller.

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

Definition at line 486 of file vm.cc.

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

◆ enableKernelIRQChip()

void 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 360 of file vm.hh.

References KvmVM::_hasKernelIRQChip.

Referenced by KvmKernelGicV2::KvmKernelGicV2().

◆ hasKernelIRQChip()

bool KvmVM::hasKernelIRQChip ( ) const
inline

Is in-kernel IRQ chip emulation enabled?

Definition at line 351 of file vm.hh.

References KvmVM::_hasKernelIRQChip.

Referenced by BaseArmKvmCPU::kvmRun(), and BaseArmKvmCPU::startup().

◆ kvmInterrupt()

void 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 790 of file base.cc.

References BaseKvmCPU::ioctl(), BaseKvmCPU::StatGroup::numInterrupts, panic, and BaseKvmCPU::stats.

Referenced by X86KvmCPU::deliverInterrupts().

◆ kvmNonMaskableInterrupt()

void BaseKvmCPU::kvmNonMaskableInterrupt ( )
protected

Send a non-maskable interrupt to the guest.

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

Definition at line 782 of file base.cc.

References BaseKvmCPU::ioctl(), BaseKvmCPU::StatGroup::numInterrupts, panic, and BaseKvmCPU::stats.

Referenced by X86KvmCPU::deliverInterrupts().

◆ setIRQLine()

void 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 501 of file vm.cc.

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

Referenced by BaseArmKvmCPU::kvmRun(), ArmKvmCPU::kvmRun(), and KvmKernelGicV2::setIntState().


Generated on Wed Sep 30 2020 14:02:19 for gem5 by doxygen 1.8.17