Re: [PATCH 4/6] KVM MMU: optimize for writing cr4

Avi Kivity
2010-04-12T11:22:34Z

On 04/12/2010 01:42 PM, Xiao Guangrong wrote:
> Hi Avi,
>
> Thanks for your comments.
>
> Avi Kivity wrote:
>
>
>> Later we have:
>>
>>
>>> kvm_x86_ops->set_cr4(vcpu, cr4);
>>> vcpu->arch.cr4 = cr4;
>>> vcpu->arch.mmu.base_role.cr4_pge = (cr4& X86_CR4_PGE)&&
>>> !tdp_enabled;
>>>
>> All of which depend on cr4.
>>
> Oh, destroy_kvm_mmu() is not really destroyed cr3 and we can reload it later
> form shadow page cache, so, maybe this patch is unnecessary.
>
> But, i have a another question here, why we need encode 'cr4& X86_CR4_PGE' into
> base_role.cr4_gpe? Why we need allocation different shadow page for global page
> and no-global page?
>

See 6364a3918cb. It was reverted later due to a problem with the
implementation. I'm not sure whether I want to fix the bug and restore
that patch, or to drop it altogether and give the guest ownership of
cr4.pge. See cr4_guest_owned_bits (currently only used on ept).

> As i know, global page is not static in TLB, and x86 cpu also may flush them form TLB,
> maybe we no need treat global page specially... Am i miss something? :-(
>

You can't read reverted patches? :)

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.