(Sorry for the delay, I was in bad form this weekend.)
I am sorry, I see what I was misreading.
My eyes misread "kvm_mmu_flush_tlb()" as "kvm_flush_remote_tlbs()".
That's why I could not understand what you said, really sorry.
(2012/02/10 16:42), Xiao Guangrong wrote:
It is obvious wrong, i do not think all tlbs always need be flushed...
What do you mean by "obvious wrong" ?
In the current code, all tlbs are flushed only when s spte is zapped, but after
your change, they are always changed.
Above description will probably tell you what I was thinking.
Even before this patch, we were always flushing TLBs from the caller.
Oh, could you please tell me where tlbs can be flushed except when a spte is
zapped in this path?
Ditto.
I have a question: your patches apparently changed the timing of TLB flush
but all I could see from the changelogs were:
KVM: MMU: cleanup FNAME(invlpg)
Directly Use mmu_page_zap_pte to zap spte in FNAME(invlpg), also remove the
same code between FNAME(invlpg) and FNAME(sync_page)
This patch dose not change the logic, the tlb flushed time is also not changed,
it just directly call kvm_flush_remote_tlbs when a spte is zapped.
KVM: MMU: fast prefetch spte on invlpg path
Fast prefetch spte for the unsync shadow page on invlpg path
This patch did not change the code when kvm_flush_remote_tlbs is called.
Where cause your confused?
Thank you for your explanation!
Probably I should reread the code after taking enough sleep.
BTW, do you think that "kvm_mmu_flush_tlb()" should be moved inside of the
mmu_lock critical section?
Takuya
--
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