qemu/target-i386
Paolo Bonzini 9982f74bad target-i386: mask NMIs on entry to SMM
QEMU is not blocking NMIs on entry to SMM.  Implementing this has to
cover a few corner cases, because:

- NMIs can then be enabled by an IRET instruction and there
is no mechanism to _set_ the "NMIs masked" flag on exit from SMM:
"A special case can occur if an SMI handler nests inside an NMI handler
and then another NMI occurs. [...] When the processor enters SMM while
executing an NMI handler, the processor saves the SMRAM state save map
but does not save the attribute to keep NMI interrupts disabled.

- However, there is some hidden state, because "If NMIs were blocked
before the SMI occurred [and no IRET is executed while in SMM], they
are blocked after execution of RSM."  This is represented by the new
HF2_SMM_INSIDE_NMI_MASK bit.  If it is zero, NMIs are _unblocked_
on exit from RSM.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-06-05 17:10:01 +02:00
..
Makefile.objs target-i386: Use correct memory attributes for ioport accesses 2015-06-05 17:10:00 +02:00
TODO target-i386: fix {min,max}{pd,ps,sd,ss} SSE2 instructions 2012-01-11 09:55:28 +01:00
arch_dump.c x86: Fuse g_malloc(); memset() into g_malloc0() 2014-12-15 12:21:02 +01:00
arch_memory_mapping.c Switch non-CPU callers from ld/st*_phys to address_space_ld/st* 2015-04-26 16:49:24 +01:00
cc_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
cc_helper_template.h target-i386: Implement BLSR, BLSMSK, BLSI 2013-02-18 15:52:05 -08:00
cpu-qom.h target-i386: Require APIC ID to be explicitly set before CPU realize 2015-03-09 16:30:03 -03:00
cpu.c target-i386: Register QOM properties for feature flags 2015-06-02 15:15:52 -03:00
cpu.h target-i386: mask NMIs on entry to SMM 2015-06-05 17:10:01 +02:00
excp_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
fpu_helper.c target-i386: fbld instruction doesn't set minus sign 2014-12-14 16:34:29 -06:00
gdbstub.c target-i386: update fp status fix 2014-09-18 17:06:12 +02:00
helper.c target-i386: Use correct memory attributes for memory accesses 2015-06-05 17:10:00 +02:00
helper.h target-i386: Use correct memory attributes for ioport accesses 2015-06-05 17:10:00 +02:00
int_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
kvm-stub.c target-i386: Fix build by providing stub kvm_arch_get_supported_cpuid() 2013-11-21 17:39:11 +01:00
kvm.c target-i386: introduce cpu_get_mem_attrs 2015-06-05 17:10:00 +02:00
kvm_i386.h kvm: forward INIT signals coming from the chipset 2014-05-13 13:12:40 +02:00
machine.c target-i386: make xmm_regs 512-bit wide 2015-01-26 12:22:44 +01:00
mem_helper.c softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
misc_helper.c target-i386: Use correct memory attributes for ioport accesses 2015-06-05 17:10:00 +02:00
ops_sse.h target-i386: simplify AES emulation 2014-12-15 12:21:01 +01:00
ops_sse_header.h target-i386: add AES-NI instructions 2013-04-13 13:51:57 +02:00
seg_helper.c target-i386: Use correct memory attributes for memory accesses 2015-06-05 17:10:00 +02:00
shift_helper_template.h target-i386: compute eflags outside rcl/rcr helper 2013-02-18 15:03:56 -08:00
smm_helper.c target-i386: mask NMIs on entry to SMM 2015-06-05 17:10:01 +02:00
svm.h Use new macro QEMU_PACKED for packed structures 2011-09-03 10:45:59 +00:00
svm_helper.c target-i386: Use correct memory attributes for memory accesses 2015-06-05 17:10:00 +02:00
translate.c target-i386: Use correct memory attributes for ioport accesses 2015-06-05 17:10:00 +02:00