On 11/23/2010 05:03 PM, Juan Quintela wrote:
From: Juan Quintela<quint...@trasno.org>

TLB handling is only used in TCG mode.  It is very costly for guests with lots
of memory ad lots of CPU's.

Signed-off-by: Juan Quintela<quint...@redhat.com>
Signed-off-by: Juan Quintela<quint...@trasno.org>
---
  exec.c |    3 +++
  1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/exec.c b/exec.c
index db9ff55..f5b2386 100644
--- a/exec.c
+++ b/exec.c
@@ -2028,6 +2028,9 @@ void cpu_physical_memory_reset_dirty(ram_addr_t start, 
ram_addr_t end,
          return;
      cpu_physical_memory_mask_dirty_range(start, length, dirty_flags);

+    if (kvm_enabled())
+        return;
+

Not a bad idea, but this is the wrong approach.

Refactor the following code into another function tlb_reset_dirty_range_all() and then have a nop KVM implementation. Exits in the middle of functions are difficult to maintain long term whereas refactoring the function provides a more obvious idea about what's going on and why it's not needed for KVM (btw, a comment is definitely needed).

Regards,

Anthony Liguori

      /* we modify the TLB cache so that the dirty bit will be set again
         when accessing the range */
      start1 = (unsigned long)qemu_get_ram_ptr(start);


Reply via email to