All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] KVM: MMU: fast invalid all mmio sptes
@ 2013-03-15 15:26 Xiao Guangrong
  2013-03-15 15:26 ` [PATCH 1/5] Revert "KVM: x86: Optimize mmio spte zapping when, creating/moving memslot" Xiao Guangrong
                   ` (5 more replies)
  0 siblings, 6 replies; 29+ messages in thread
From: Xiao Guangrong @ 2013-03-15 15:26 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Gleb Natapov, LKML, KVM

The current way is holding hot mmu-lock and walking all shadow pages, this
is not scale. This patchset tries to introduce a very simple and scale way
to fast invalid all mmio sptes - it need not walk any shadow pages and hold
any locks.

The idea is simple:
KVM maintains a global mmio invalid generation-number which is stored in
kvm->arch.mmio_invalid_gen and every mmio spte stores the current global
generation-number into his available bits when it is created.

When KVM need zap all mmio sptes, it just simply increase the global
generation-number. When guests do mmio access, KVM intercepts a MMIO #PF
then it walks the shadow page table and get the mmio spte. If the
generation-number on the spte does not equal the global generation-number,
it will go to the normal #PF handler to update the mmio spte.

Since 19 bits are used to store generation-number on mmio spte, the
generation-number can be round after 33554432 times. It is large enough
for nearly all most cases, but making the code be more strong, we zap all
shadow pages when the number is round.

Note: after my patchset that fast zap all shadow pages, kvm_mmu_zap_all is
not a problem any more. The scalability is the same as zap mmio shadow page



^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2013-03-20 18:44 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-15 15:26 [PATCH 0/5] KVM: MMU: fast invalid all mmio sptes Xiao Guangrong
2013-03-15 15:26 ` [PATCH 1/5] Revert "KVM: x86: Optimize mmio spte zapping when, creating/moving memslot" Xiao Guangrong
2013-03-16  2:07   ` Takuya Yoshikawa
2013-03-18  7:36     ` Xiao Guangrong
2013-03-15 15:27 ` [PATCH 2/5] Revert "KVM: MMU: Mark sp mmio cached when creating mmio spte" Xiao Guangrong
2013-03-15 15:28 ` [PATCH 3/5] KVM: MMU: retain more available bits available on mmio spte Xiao Guangrong
2013-03-15 15:29 ` [PATCH 4/5] KVM: MMU: store generation-number into " Xiao Guangrong
2013-03-18 11:19   ` Paolo Bonzini
2013-03-18 12:42     ` Xiao Guangrong
2013-03-18 12:48       ` Gleb Natapov
2013-03-20 18:43       ` Marcelo Tosatti
2013-03-15 15:29 ` [PATCH 5/5] KVM: MMU: fast invalid all mmio sptes Xiao Guangrong
2013-03-16  2:13   ` Takuya Yoshikawa
2013-03-18  7:38     ` Xiao Guangrong
2013-03-17 15:02   ` Gleb Natapov
2013-03-18  8:08     ` Xiao Guangrong
2013-03-18  9:13       ` Gleb Natapov
2013-03-18 12:29         ` Xiao Guangrong
2013-03-18 12:46           ` Gleb Natapov
2013-03-18 13:09             ` Xiao Guangrong
2013-03-18 13:19               ` Gleb Natapov
2013-03-18 13:25                 ` Xiao Guangrong
2013-03-18 13:27                   ` Gleb Natapov
2013-03-18 13:32                     ` Xiao Guangrong
2013-03-18 22:16   ` Eric Northup
2013-03-19  3:15     ` Xiao Guangrong
2013-03-19  7:36       ` Gleb Natapov
2013-03-19  7:52         ` Xiao Guangrong
2013-03-16  2:06 ` [PATCH 0/5] " Takuya Yoshikawa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.