W dniu 03.11.2015 o 19:57, Laszlo Ersek pisze: > On 11/03/15 19:34, Laszlo Ersek wrote: >> Commit b18d5431acc7 ("KVM: x86: fix CR0.CD virtualization") was >> technically correct, but it broke OVMF guests by slowing down various >> parts of the firmware. >> >> Commit fb279950ba02 ("KVM: vmx: obey KVM_QUIRK_CD_NW_CLEARED") quirked the >> first function modified by b18d5431acc7, vmx_get_mt_mask(), for OVMF's >> sake. This restored the speed of the OVMF code that runs before >> PlatformPei (including the memory intensive LZMA decompression in SEC). >> >> This patch extends the quirk to the second function modified by >> b18d5431acc7, kvm_set_cr0(). It eliminates the intrusive slowdown that >> hits the EFI_MP_SERVICES_PROTOCOL implementation of edk2's >> UefiCpuPkg/CpuDxe -- which is built into OVMF --, when CpuDxe starts up >> all APs at once for initialization, in order to count them. >> >> We also carry over the kvm_arch_has_noncoherent_dma() sub-condition from >> the other half of the original commit b18d5431acc7. >> >> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> >> Cc: Jordan Justen <jordan.l.justen@xxxxxxxxx> >> Cc: Janusz Mocek <januszmk6@xxxxxxxxx> >> Cc: Alex Williamson <alex.williamson@xxxxxxxxxx> >> Cc: Xiao Guangrong <guangrong.xiao@xxxxxxxxxxxxxxx> >> Signed-off-by: Laszlo Ersek <lersek@xxxxxxxxxx> >> --- >> arch/x86/kvm/x86.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c >> index a24bae0..30723a4 100644 >> --- a/arch/x86/kvm/x86.c >> +++ b/arch/x86/kvm/x86.c >> @@ -625,7 +625,9 @@ int kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0) >> if ((cr0 ^ old_cr0) & update_bits) >> kvm_mmu_reset_context(vcpu); >> >> - if ((cr0 ^ old_cr0) & X86_CR0_CD) >> + if (((cr0 ^ old_cr0) & X86_CR0_CD) && >> + kvm_arch_has_noncoherent_dma(vcpu->kvm) && >> + !kvm_check_has_quirk(vcpu->kvm, KVM_X86_QUIRK_CD_NW_CLEARED)) >> kvm_zap_gfn_range(vcpu->kvm, 0, ~0ULL); >> >> return 0; >> > > I had notes on this patch, but I forgot to format it with --notes. They > were: > > - People on the CC list, please reply with your Tested-by, Reported-by, > etc tags as appropriate; it's getting blurry who participated in what > and how. > > - This patch is *not* necessary for the OVMF SMM work; instead it > addresses an independent OVMF boot regression seen by users. > > Thanks > Laszlo Tested-by: Janusz Mocek <januszmk6@xxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html