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