qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH] split memory allocation


From: Glauber Costa
Subject: [Qemu-devel] Re: [PATCH] split memory allocation
Date: Thu, 11 Sep 2008 12:03:57 -0300
User-agent: Mutt/1.5.18 (2008-05-17)

On Thu, Sep 11, 2008 at 09:43:19AM -0500, Anthony Liguori wrote:
> Glauber Costa wrote:
>> Right now, kvm keeps the memory allocation split, so we can
>> handle different areas in different ways. This schema works with qemu
>> too, so it appears to be the common ground.
>>
>> This patch proposes using this common ground for everyone, by spliting
>> raw qemu.
>>
>> Signed-off-by: Glauber Costa <address@hidden>
>> ---
>>  hw/pc.c |   16 ++++++++++++----
>>  1 files changed, 12 insertions(+), 4 deletions(-)
>>
>> diff --git a/hw/pc.c b/hw/pc.c
>> index 435c7d4..d6084ee 100644
>> --- a/hw/pc.c
>> +++ b/hw/pc.c
>> @@ -777,16 +777,24 @@ static void pc_init1(ram_addr_t ram_size, int 
>> vga_ram_size,
>>      vmport_init();
>>
>>      /* allocate RAM */
>> -    ram_addr = qemu_ram_alloc(ram_size);
>> -    cpu_register_physical_memory(0, below_4g_mem_size, ram_addr);
>> +    ram_addr = qemu_ram_alloc(0xa0000);
>> +    cpu_register_physical_memory(0, 0xa0000, ram_addr);
>> +
>> +    ram_addr = qemu_ram_alloc(0x100000 - 0xa0000);   /* hole */
>>   
>
> It's not really a hole.  QEMU leaves a hole from 0xa0000 to 0xc0000  
> because this is the VGA area.  KVM remaps this range to normal RAM when  
> the guest sets the VGA card to have a linear framebuffer as an 
> optimization.
>
> Later, 0xc0000 to 0xd0000 gets registered as ROM (because it's the VGA  
> BIOS), and 0xd0000 to about 0xe0000 is option ROM space, and 0xe0000 to  
> 0x100000 is where the BIOS gets mapped.
>
> So the comment code be improved to explain what goes in this region and  
> why we need to allocate ram for it in the first place.
>
150 % in agreement.
Wait for a new one.

> Regards,
>
> Anthony Liguori
>
>> +    ram_addr = qemu_ram_alloc(below_4g_mem_size - 0x100000);
>> +    cpu_register_physical_memory(0x100000,
>> +                 below_4g_mem_size - 0x100000,
>> +                 ram_addr);
>>
>>      /* above 4giga memory allocation */
>>      if (above_4g_mem_size > 0) {
>> -        cpu_register_physical_memory((target_phys_addr_t) 0x100000000ULL,
>> +        ram_addr = qemu_ram_alloc(above_4g_mem_size);
>> +        cpu_register_physical_memory(0x100000000ULL,
>>                                       above_4g_mem_size,
>> -                                     ram_addr + below_4g_mem_size);
>> +                                     ram_addr);
>>      }
>>
>> +
>>      /* allocate VGA RAM */
>>      vga_ram_addr = qemu_ram_alloc(vga_ram_size);
>>
>>   
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]