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

Xiao Guangrong
2010-04-13T03:09:50Z

Avi Kivity wrote:

> 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).
>

Oh, i see, thanks very much.

>> 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 usually use 'get blame' to look into source, and not noticed reverted
patches, i'll pay more attention on those.

Below code still confused me:

| vcpu->arch.mmu.base_role.cr4_pge = (cr4& X86_CR4_PGE)&&!tdp_enabled;

And i found the commit 87778d60ee:

| KVM: MMU: Segregate mmu pages created with different cr4.pge settings
|
| Don't allow a vcpu with cr4.pge cleared to use a shadow page created with
| cr4.pge set; this might cause a cr3 switch not to sync ptes that have the
| global bit set (the global bit has no effect if !cr4.pge).
|
| This can only occur on smp with different cr4.pge settings for different
| vcpus (since a cr4 change will resync the shadow ptes), but there's no
| cost to being correct here.

In current code, cr3 switch will sync all unsync shadow pages(regardless it's
global or not) and this issue not live now, so, do we need also revert this
patch?

Xiao