From: "Radim Krčmář" <rkrcmar@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, bsd@redhat.com
Subject: Re: [PATCH 08/12] KVM: x86: save/load state on SMM switch
Date: Thu, 21 May 2015 19:00:14 +0200 [thread overview]
Message-ID: <20150521170014.GB31171@potion.brq.redhat.com> (raw)
In-Reply-To: <555E0683.6020600@redhat.com>
2015-05-21 18:23+0200, Paolo Bonzini:
> On 21/05/2015 18:20, Radim Krčmář wrote:
>> 2. NMI -> SMI -> IRET -> RSM -> NMI
>> NMI is injected; I think it shouldn't be ... have you based this
>> behavior on the 3rd paragraph of SDM 34.8 NMI HANDLING WHILE IN SMM
>> ("A special case [...]")?
>
> Yes.
Well, if I were to go lawyer
[...] saves the SMRAM state save map but does not save the attribute to
keep NMI interrupts disabled.
NMI masking is a bit, so it'd be really wasteful not to have an
attribute to keep NMI enabled in the same place ...
Potentially, an NMI could be latched (while in SMM or upon exit) and
serviced upon exit [...]
This "Potentially" could be in the sense that the whole 3rd paragraph is
only applicable to some ancient SMM design :)
The 1st paragraph has quite clear sentence:
If NMIs were blocked before the SMI occurred, they are blocked after
execution of RSM.
so I'd just ignore the 3rd paragraph ...
And the APM 2:10.3.3 Exceptions and Interrupts
NMI—If an NMI occurs while the processor is in SMM, it is latched by
the processor, but the NMI handler is not invoked until the processor
leaves SMM with the execution of an RSM instruction. A pending NMI
causes the handler to be invoked immediately after the RSM completes
and before the first instruction in the interrupted program is
executed.
An SMM handler can unmask NMI interrupts by simply executing an IRET.
Upon completion of the IRET instruction, the processor recognizes the
pending NMI, and transfers control to the NMI handler. Once an NMI is
recognized within SMM using this technique, subsequent NMIs are
recognized until SMM is exited. Later SMIs cause NMIs to be masked,
until the SMM handler unmasks them.
makes me think that we should unmask them unconditionally or that SMM
doesn't do anything with NMI masking.
If we can choose, less NMI nesting seems like a good idea.
next prev parent reply other threads:[~2015-05-21 17:00 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-08 11:20 [PATCH 00/12] KVM: x86: SMM support Paolo Bonzini
2015-05-08 11:20 ` [PATCH 01/12] KVM: export __gfn_to_pfn_memslot, drop gfn_to_pfn_async Paolo Bonzini
2015-05-08 11:20 ` [PATCH 02/12] KVM: x86: introduce num_emulated_msrs Paolo Bonzini
2015-05-08 11:20 ` [PATCH 03/12] KVM: remove unnecessary arg from mark_page_dirty_in_slot, export it Paolo Bonzini
2015-05-08 11:20 ` [PATCH 04/12] KVM: x86: pass host_initiated to functions that read MSRs Paolo Bonzini
2015-05-08 11:20 ` [PATCH 05/12] KVM: x86: pass the whole hflags field to emulator and back Paolo Bonzini
2015-05-08 11:20 ` [PATCH 06/12] KVM: x86: API changes for SMM support Paolo Bonzini
2015-05-21 14:49 ` Radim Krčmář
2015-05-21 14:59 ` Paolo Bonzini
2015-05-21 16:26 ` Radim Krčmář
2015-05-21 21:21 ` Paolo Bonzini
2015-05-08 11:20 ` [PATCH 07/12] KVM: x86: stubs " Paolo Bonzini
2015-05-21 14:55 ` Radim Krčmář
2015-05-08 11:20 ` [PATCH 08/12] KVM: x86: save/load state on SMM switch Paolo Bonzini
2015-05-21 16:20 ` Radim Krčmář
2015-05-21 16:21 ` Paolo Bonzini
2015-05-21 16:33 ` Radim Krčmář
2015-05-21 20:24 ` Paolo Bonzini
2015-05-22 13:13 ` Radim Krčmář
2015-05-21 16:23 ` Paolo Bonzini
2015-05-21 17:00 ` Radim Krčmář [this message]
2015-05-21 21:21 ` Paolo Bonzini
2015-05-22 14:17 ` Radim Krčmář
2015-05-25 12:46 ` Paolo Bonzini
2015-05-08 11:20 ` [PATCH 09/12] KVM: x86: add vcpu-specific functions to read/write/translate GFNs Paolo Bonzini
2015-05-08 11:20 ` [PATCH 10/12] KVM: x86: add SMM to the MMU role Paolo Bonzini
2015-05-08 11:20 ` [PATCH 11/12] KVM: x86: add KVM_MEM_X86_SMRAM memory slot flag Paolo Bonzini
2015-05-26 18:45 ` Avi Kivity
2015-05-27 9:26 ` Paolo Bonzini
2015-05-08 11:20 ` [PATCH 12/12] KVM: x86: advertise KVM_CAP_X86_SMM Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150521170014.GB31171@potion.brq.redhat.com \
--to=rkrcmar@redhat.com \
--cc=bsd@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®