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 <pbonz...@redhat.com>
>> Cc: Jordan Justen <jordan.l.jus...@intel.com>
>> Cc: Janusz Mocek <janusz...@gmail.com>
>> Cc: Alex Williamson <alex.william...@redhat.com>
>> Cc: Xiao Guangrong <guangrong.x...@linux.intel.com>
>> Signed-off-by: Laszlo Ersek <ler...@redhat.com>
>> ---
>>  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 <janusz...@gmail.com>

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to