gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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...
 

Detailed Description

These methods control interrupt delivery to the guest system.

Function Documentation

void KvmVM::createIRQChip ( )

Create an in-kernel interrupt controller.

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

Definition at line 487 of file vm.cc.

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

bool KvmVM::hasKernelIRQChip ( ) const
inline

Is in-kernel IRQ chip emulation enabled?

Definition at line 353 of file vm.hh.

References KvmVM::_hasKernelIRQChip.

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

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

Referenced by X86KvmCPU::deliverInterrupts().

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

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

Referenced by X86KvmCPU::deliverInterrupts().

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

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

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


Generated on Fri Jun 9 2017 13:03:59 for gem5 by doxygen 1.8.6