Patchwork pc: unbreak vhost

login
register
mail settings
Submitter Michael S. Tsirkin
Date July 16, 2010, 11 a.m.
Message ID <20100716110004.GA28018@redhat.com>
Download mbox | patch
Permalink /patch/59093/
State New
Headers show

Comments

Michael S. Tsirkin - July 16, 2010, 11 a.m.
Commit 44ae28f3152138e71ccad66c201d730b93374bc2 breaks vhost
on small guests as we get a zero-sized memory slot at >4G,
which that code does not expect.
The removal of if (above_4g_size > 0) seems unintentional
(commit log only mentions allocation memory in a single chunk)
so just put it back in.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/pc.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
Alex Williamson - July 16, 2010, 12:39 p.m.
On Fri, 2010-07-16 at 14:00 +0300, Michael S. Tsirkin wrote:
> Commit 44ae28f3152138e71ccad66c201d730b93374bc2 breaks vhost
> on small guests as we get a zero-sized memory slot at >4G,
> which that code does not expect.
> The removal of if (above_4g_size > 0) seems unintentional
> (commit log only mentions allocation memory in a single chunk)
> so just put it back in.

Yep, I already submitted an identical patch too:

http://lists.nongnu.org/archive/html/qemu-devel/2010-07/msg00364.html

Alex

> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  hw/pc.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/pc.c b/hw/pc.c
> index 89bd4af..77b1592 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -920,8 +920,10 @@ void pc_memory_init(ram_addr_t ram_size,
>                   below_4g_mem_size - 0x100000,
>                   ram_addr + 0x100000);
>  #if TARGET_PHYS_ADDR_BITS > 32
> -    cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
> -                                 ram_addr + below_4g_mem_size);
> +    if (above_4g_mem_size > 0) {
> +        cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
> +                                     ram_addr + below_4g_mem_size);
> +    }
>  #endif
>  
>      /* BIOS load */
Anthony Liguori - July 16, 2010, 1:04 p.m.
On 07/16/2010 07:39 AM, Alex Williamson wrote:
> On Fri, 2010-07-16 at 14:00 +0300, Michael S. Tsirkin wrote:
>    
>> Commit 44ae28f3152138e71ccad66c201d730b93374bc2 breaks vhost
>> on small guests as we get a zero-sized memory slot at>4G,
>> which that code does not expect.
>> The removal of if (above_4g_size>  0) seems unintentional
>> (commit log only mentions allocation memory in a single chunk)
>> so just put it back in.
>>      
> Yep, I already submitted an identical patch too:
>
> http://lists.nongnu.org/archive/html/qemu-devel/2010-07/msg00364.html
>    

Sorry Alex, I apparently forgot to push yesterday.  Let me do a quick 
merge and build and I'll push.

Regards,

Anthony Liguori

> Alex
>
>    
>> Signed-off-by: Michael S. Tsirkin<mst@redhat.com>
>> ---
>>   hw/pc.c |    6 ++++--
>>   1 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/pc.c b/hw/pc.c
>> index 89bd4af..77b1592 100644
>> --- a/hw/pc.c
>> +++ b/hw/pc.c
>> @@ -920,8 +920,10 @@ void pc_memory_init(ram_addr_t ram_size,
>>                    below_4g_mem_size - 0x100000,
>>                    ram_addr + 0x100000);
>>   #if TARGET_PHYS_ADDR_BITS>  32
>> -    cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
>> -                                 ram_addr + below_4g_mem_size);
>> +    if (above_4g_mem_size>  0) {
>> +        cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
>> +                                     ram_addr + below_4g_mem_size);
>> +    }
>>   #endif
>>
>>       /* BIOS load */
>>      
>
>
>

Patch

diff --git a/hw/pc.c b/hw/pc.c
index 89bd4af..77b1592 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -920,8 +920,10 @@  void pc_memory_init(ram_addr_t ram_size,
                  below_4g_mem_size - 0x100000,
                  ram_addr + 0x100000);
 #if TARGET_PHYS_ADDR_BITS > 32
-    cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
-                                 ram_addr + below_4g_mem_size);
+    if (above_4g_mem_size > 0) {
+        cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
+                                     ram_addr + below_4g_mem_size);
+    }
 #endif
 
     /* BIOS load */