mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-06 07:45:49 +07:00
KVM: x86: Fix misleading comments on handling pending exceptions
The reason that exception.pending should block re-injection of NMI/interrupt is not described correctly in comment in code. Instead, it describes why a pending exception should be injected before a pending NMI/interrupt. Therefore, move currently present comment to code-block evaluating a new pending event which explains why exception.pending is evaluated first. In addition, create a new comment describing that exception.pending blocks re-injection of NMI/interrupt because the exception was queued by handling vmexit which was due to NMI/interrupt delivery. Signed-off-by: Liran Alon <liran.alon@oracle.com> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com> Signed-off-by: Krish Sadhukhan <krish.sadhukhan@orcle.com> [Used a comment from Sean J <sean.j.christopherson@intel.com>. - Radim] Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
This commit is contained in:
parent
04140b4144
commit
a042c26fd8
@ -6758,8 +6758,18 @@ static int inject_pending_event(struct kvm_vcpu *vcpu, bool req_int_win)
|
||||
}
|
||||
|
||||
/*
|
||||
* Exceptions must be injected immediately, or the exception
|
||||
* frame will have the address of the NMI or interrupt handler.
|
||||
* Do not inject an NMI or interrupt if there is a pending
|
||||
* exception. Exceptions and interrupts are recognized at
|
||||
* instruction boundaries, i.e. the start of an instruction.
|
||||
* Trap-like exceptions, e.g. #DB, have higher priority than
|
||||
* NMIs and interrupts, i.e. traps are recognized before an
|
||||
* NMI/interrupt that's pending on the same instruction.
|
||||
* Fault-like exceptions, e.g. #GP and #PF, are the lowest
|
||||
* priority, but are only generated (pended) during instruction
|
||||
* execution, i.e. a pending fault-like exception means the
|
||||
* fault occurred on the *previous* instruction and must be
|
||||
* serviced prior to recognizing any new events in order to
|
||||
* fully complete the previous instruction.
|
||||
*/
|
||||
if (!vcpu->arch.exception.pending) {
|
||||
if (vcpu->arch.nmi_injected) {
|
||||
|
Loading…
Reference in New Issue
Block a user