On 10/31/2012 01:25 PM, Peter Maydell wrote:
> On 31 October 2012 12:19, Orit Wasserman <owass...@redhat.com> wrote:
>> The number of bits is off by one, for example if last_ram_offset
>> is 0x1000 (the guest has one page) we get 0 bits instead of 1.
>>
>> Signed-off-by: Orit Wasserman <owass...@redhat.com>
>> ---
>>  arch_init.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch_init.c b/arch_init.c
>> index b75a4c5..a80c3c8 100644
>> --- a/arch_init.c
>> +++ b/arch_init.c
>> @@ -565,7 +565,7 @@ static void reset_ram_globals(void)
>>  static int ram_save_setup(QEMUFile *f, void *opaque)
>>  {
>>      RAMBlock *block;
>> -    int64_t ram_pages = last_ram_offset() >> TARGET_PAGE_BITS;
>> +    int64_t ram_pages = (last_ram_offset() >> TARGET_PAGE_BITS) + 1;
> 
> This will give you an extra bit if the last_ram_offset()
> is an exact multiple of the page size, though. Try
>   int64_t ram_pages = DIV_ROUND_UP(last_ram_offset(), TARGET_PAGE_SIZE);
Good idea ...
> ?
> 
> -- PMM
> 


Reply via email to