lkml.org 
[lkml]   [2010]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2 6/10] KVM MMU: don't write-protect if have new mapping to unsync page
On 04/26/2010 06:58 AM, Xiao Guangrong wrote:
>
> Avi Kivity wrote:
>
>> On 04/25/2010 10:00 AM, Xiao Guangrong wrote:
>>
>>> Two cases maybe happen in kvm_mmu_get_page() function:
>>>
>>> - one case is, the goal sp is already in cache, if the sp is unsync,
>>> we only need update it to assure this mapping is valid, but not
>>> mark it sync and not write-protect sp->gfn since it not broke unsync
>>> rule(one shadow page for a gfn)
>>>
>>> - another case is, the goal sp not existed, we need create a new sp
>>> for gfn, i.e, gfn (may)has another shadow page, to keep unsync rule,
>>> we should sync(mark sync and write-protect) gfn's unsync shadow page.
>>> After enabling multiple unsync shadows, we sync those shadow pages
>>> only when the new sp not allow to become unsync(also for the unsyc
>>> rule, the new rule is: allow all pte page become unsync)
>>>
>>>
>> Another interesting case is to create new shadow pages in the unsync
>> state. That can help when the guest starts a short lived process: we
>> can avoid write protecting its pagetables completely. Even if we do
>> sync them, we can sync them in a batch instead of one by one, saving IPIs.
>>
> IPI is needed when rmap_write_protect() changes mappings form writable to read-only,
> so while we sync all gfn's unsync page, only one IPI is needed.
>

I meant, we can write protect all pages, then use one IPI to drop the
tlbs for all of them.

> And, another problem is we call ramp_write_protect()/flush-local-tlb many times when sync gfn's
> unsync page, the same problem is in mmu_sync_children() function, could you allow me to improve
> it after this patchset? :-)
>

Of course, this is more than enough to chew on. Just suggesting an idea...


--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.



\
 
 \ /
  Last update: 2010-04-26 08:11    [W:0.038 / U:1.464 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site