xemu/target-i386
Alex Williamson 9db2efd95e x86: Clear MTRRs on vCPU reset
The SDM specifies (June 2014 Vol3 11.11.5):

    On a hardware reset, the P6 and more recent processors clear the
    valid flags in variable-range MTRRs and clear the E flag in the
    IA32_MTRR_DEF_TYPE MSR to disable all MTRRs. All other bits in the
    MTRRs are undefined.

We currently do none of that, so whatever MTRR settings you had prior
to reset is what you have after reset.  Usually this doesn't matter
because KVM often ignores the guest mappings and uses write-back
anyway.  However, if you have an assigned device and an IOMMU that
allows NoSnoop for that device, KVM defers to the guest memory
mappings which are now stale after reset.  The result is that OVMF
rebooting on such a configuration takes a full minute to LZMA
decompress the firmware volume, a process that is nearly instant on
the initial boot.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2014-08-25 18:53:42 +02:00
..
arch_dump.c dump: rebase from host-private RAMBlock offsets to guest-physical addresses 2013-08-08 11:01:46 -04:00
arch_memory_mapping.c exec: Make ldq/ldub_*_phys input an AddressSpace 2014-02-11 22:57:00 +10:00
cc_helper_template.h target-i386: Implement BLSR, BLSMSK, BLSI 2013-02-18 15:52:05 -08:00
cc_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
cpu-qom.h target-i386: block migration and savevm if invariant tsc is exposed 2014-06-25 23:54:57 +02:00
cpu.c x86: Clear MTRRs on vCPU reset 2014-08-25 18:53:42 +02:00
cpu.h x86: kvm: Add MTRR support for kvm_get|put_msrs() 2014-08-25 18:53:42 +02:00
excp_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
fpu_helper.c softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
gdbstub.c target-i386: fix segment flags for SMM and VM86 mode 2014-05-21 18:02:08 +02:00
helper.c target-i386: Don't forbid NX bit on PAE PDEs and PTEs 2014-08-25 18:53:42 +02:00
helper.h tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
int_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
ioport-user.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
kvm_i386.h kvm: forward INIT signals coming from the chipset 2014-05-13 13:12:40 +02: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 x86: kvm: Add MTRR support for kvm_get|put_msrs() 2014-08-25 18:53:42 +02:00
machine.c x86: Use common variable range MTRR counts 2014-08-25 18:53:42 +02:00
Makefile.objs Makefile.target: CONFIG_NO_* variables removed 2013-10-16 18:21:00 +02:00
mem_helper.c softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
misc_helper.c target-i386: move check_io helpers to seg_helper.c 2014-06-05 16:10:34 +02:00
ops_sse_header.h target-i386: add AES-NI instructions 2013-04-13 13:51:57 +02:00
ops_sse.h target-i386: Use Common ShiftRows and InvShiftRows Tables 2014-06-16 13:24:33 +02:00
seg_helper.c Merge remote-tracking branch 'remotes/bonzini/softmmu-smap' into staging 2014-06-05 21:06:14 +01:00
shift_helper_template.h target-i386: compute eflags outside rcl/rcr helper 2013-02-18 15:03:56 -08:00
smm_helper.c Merge remote-tracking branch 'remotes/kvm/uq/master' into staging 2014-06-05 19:16:28 +01:00
svm_helper.c Merge remote-tracking branch 'remotes/bonzini/softmmu-smap' into staging 2014-06-05 21:06:14 +01:00
svm.h Use new macro QEMU_PACKED for packed structures 2011-09-03 10:45:59 +00:00
TODO target-i386: fix {min,max}{pd,ps,sd,ss} SSE2 instructions 2012-01-11 09:55:28 +01:00
topology.h target-i386: Inline bitops_flsl 2013-02-16 11:12:29 +00:00
translate.c trace: [tcg] Include TCG-tracing header on all targets 2014-08-12 14:26:12 +01:00