Anthony Liguori <anth...@codemonkey.ws> wrote:
> 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).

I was heading here for something that was able to be backported for
stable.  I agree that "longer term" we need to split this code (how we
manage the bitmap is way too expensive for kvm and lots of RAM).

THanks, Juan.

> 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