Re: [Qemu-devel] Re: [PATCH] Fix segfault with ram_size 4095M without kvm

2011-01-06 Thread Aurelien Jarno
On Wed, Jan 05, 2011 at 01:04:51PM -0600, Ryan Harper wrote:
 * Ryan Harper ry...@us.ibm.com [2011-01-04 09:49]:
  * Aurelien Jarno aurel...@aurel32.net [2010-12-25 16:37]:
   On Wed, Dec 08, 2010 at 04:27:45PM -0200, Luiz Capitulino wrote:
On Wed, 08 Dec 2010 12:23:12 -0600
Anthony Liguori aligu...@linux.vnet.ibm.com wrote:

 On 12/08/2010 12:01 PM, Luiz Capitulino wrote:
  Currently, x86_64-softmmu qemu segfaults when trying to use  4095M 
  memsize.
  This patch adds a simple check and error message (much like the 
  2047 limit on
  32-bit hosts) on ram_size in the control path after we determine 
  we're
  not using kvm
 
  Upstream qemu-kvm is affected if using the -no-kvm option; this 
  patch address
  the segfault there as well.
 
  Signed-off-by: Ryan Harperry...@us.ibm.com
  Signed-off-by: Aurelien Jarnoaurel...@aurel32.net
  ---
  NOTE: this patch was applied in the v0.12.x branch, but it seems it 
  got
 lost for master
 
 
 No, it was intentional.  We should fix the segv, this is not a known 
 limitation but rather a bug.

A TCG bug, I presume?

   
   Do you have more details about this issue and how to reproduce it? 
  
  At the time of the bug, it was something simple like:
  
  qemu-system-x86_64 -m 4097 -hda /dev/null
  
  we'd get an imediate segfault.  As you say, I'm not seeing it now on
  current git; I'll see about bisecting to see if we did get a fix for the
  issue.
 
 I attempted to bisect, but there a couple commits around where the issue
 was fixed that broke git bisect =(  That narrowed it down to about 5
 commits to check.
 
 This the last git commit where I can reproduce the segfault with the
 above test case (qemu invocation).
 
 commit 0aef4261ac0ec9089ade0e3a92f986cb4ba7317e
 Author: Aurelien Jarno aurel...@aurel32.net
 Date:   Thu Mar 11 21:29:42 2010 +0100
 
 target-ppc: fix evsrwu and evsrws (second try)
 
 Signed-off-by: Aurelien Jarno aurel...@aurel32.net
 
 
 The next 4 commits don't compile so they are untest-able:
 
 commit 14f24e1465edc44b9b4d89fbbea66e06088154e1
  - fails to build with:
 - ./configure --target-list=x86_64-softmmu  make clean  make
 /home/rharper/work/git/qemu/exec.c: In function 'phys_page_find_alloc':
 /home/rharper/work/git/qemu/exec.c:341: error: #error unsupported 
 TARGET_PHYS_ADDR_SPACE_BITS
 /home/rharper/work/git/qemu/exec.c: In function 'phys_page_for_each':
 /home/rharper/work/git/qemu/exec.c:1670: error: #error unsupported 
 TARGET_PHYS_ADDR_SPACE_BITS
 make[1]: *** [exec.o] Error 1
 make: *** [subdir-x86_64-softmmu] Error 2
 
 commit 7bc7b099dfa38a856b1bc892c0f9f3d6fe28e170
  - fails to build with:
 - ./configure --target-list=x86_64-softmmu  make clean  make
 /home/rharper/work/git/qemu/exec.c: In function 'phys_page_find_alloc':
 /home/rharper/work/git/qemu/exec.c:341: error: #error unsupported 
 TARGET_PHYS_ADDR_SPACE_BITS
 /home/rharper/work/git/qemu/exec.c: In function 'phys_page_for_each':
 /home/rharper/work/git/qemu/exec.c:1670: error: #error unsupported 
 TARGET_PHYS_ADDR_SPACE_BITS
 make[1]: *** [exec.o] Error 1
 make: *** [subdir-x86_64-softmmu] Error 2
 
 commit b9f83121a13153536d886305414b540460c34508
  - fails to build with:
 - ./configure --target-list=x86_64-softmmu  make clean  make
 /home/rharper/work/git/qemu/exec.c: In function 'phys_page_find_alloc':
 /home/rharper/work/git/qemu/exec.c:341: error: #error unsupported 
 TARGET_PHYS_ADDR_SPACE_BITS
 /home/rharper/work/git/qemu/exec.c: In function 'phys_page_for_each':
 /home/rharper/work/git/qemu/exec.c:1670: error: #error unsupported 
 TARGET_PHYS_ADDR_SPACE_BITS
 make[1]: *** [exec.o] Error 1
 make: *** [subdir-x86_64-softmmu] Error 2
 
 commit 5270589032f450ae7c3448730855aa18ff68ccff
  - fails to build with:
 - ./configure --target-list=x86_64-softmmu  make clean  make
 /home/rharper/work/git/qemu/exec.c: In function 'phys_page_find_alloc':
 /home/rharper/work/git/qemu/exec.c:341: error: #error unsupported 
 TARGET_PHYS_ADDR_SPACE_BITS
 /home/rharper/work/git/qemu/exec.c: In function 'phys_page_for_each':
 /home/rharper/work/git/qemu/exec.c:1670: error: #error unsupported 
 TARGET_PHYS_ADDR_SPACE_BITS
 make[1]: *** [exec.o] Error 1
 make: *** [subdir-x86_64-softmmu] Error 2
 
 
 And this commit compiles and the test case no longer segfaults.  So I'd
 say things are fixed at this point.
 
 commit 5cd2c5b6ad75c46d40118ac67c0c09d4e7930a65
 - compiles and issue is no longer present.
 - ./configure --target-list=x86_64-softmmu  make clean  make 
 sudo x86_64-softmmu/qemu-syem-x86_64 -L pc-bios -hda /dev/null -m 4097
 

It's more likely this commit which fixes the bug.

-- 
Aurelien Jarno  GPG: 1024D/F1BCDB73
aurel...@aurel32.net http://www.aurel32.net



Re: [Qemu-devel] Re: [PATCH] Fix segfault with ram_size 4095M without kvm

2011-01-05 Thread Ryan Harper
* Ryan Harper ry...@us.ibm.com [2011-01-04 09:49]:
 * Aurelien Jarno aurel...@aurel32.net [2010-12-25 16:37]:
  On Wed, Dec 08, 2010 at 04:27:45PM -0200, Luiz Capitulino wrote:
   On Wed, 08 Dec 2010 12:23:12 -0600
   Anthony Liguori aligu...@linux.vnet.ibm.com wrote:
   
On 12/08/2010 12:01 PM, Luiz Capitulino wrote:
 Currently, x86_64-softmmu qemu segfaults when trying to use  4095M 
 memsize.
 This patch adds a simple check and error message (much like the 2047 
 limit on
 32-bit hosts) on ram_size in the control path after we determine we're
 not using kvm

 Upstream qemu-kvm is affected if using the -no-kvm option; this patch 
 address
 the segfault there as well.

 Signed-off-by: Ryan Harperry...@us.ibm.com
 Signed-off-by: Aurelien Jarnoaurel...@aurel32.net
 ---
 NOTE: this patch was applied in the v0.12.x branch, but it seems it 
 got
lost for master


No, it was intentional.  We should fix the segv, this is not a known 
limitation but rather a bug.
   
   A TCG bug, I presume?
   
  
  Do you have more details about this issue and how to reproduce it? 
 
 At the time of the bug, it was something simple like:
 
 qemu-system-x86_64 -m 4097 -hda /dev/null
 
 we'd get an imediate segfault.  As you say, I'm not seeing it now on
 current git; I'll see about bisecting to see if we did get a fix for the
 issue.

I attempted to bisect, but there a couple commits around where the issue
was fixed that broke git bisect =(  That narrowed it down to about 5
commits to check.

This the last git commit where I can reproduce the segfault with the
above test case (qemu invocation).

commit 0aef4261ac0ec9089ade0e3a92f986cb4ba7317e
Author: Aurelien Jarno aurel...@aurel32.net
Date:   Thu Mar 11 21:29:42 2010 +0100

target-ppc: fix evsrwu and evsrws (second try)

Signed-off-by: Aurelien Jarno aurel...@aurel32.net


The next 4 commits don't compile so they are untest-able:

commit 14f24e1465edc44b9b4d89fbbea66e06088154e1
 - fails to build with:
- ./configure --target-list=x86_64-softmmu  make clean  make
/home/rharper/work/git/qemu/exec.c: In function 'phys_page_find_alloc':
/home/rharper/work/git/qemu/exec.c:341: error: #error unsupported 
TARGET_PHYS_ADDR_SPACE_BITS
/home/rharper/work/git/qemu/exec.c: In function 'phys_page_for_each':
/home/rharper/work/git/qemu/exec.c:1670: error: #error unsupported 
TARGET_PHYS_ADDR_SPACE_BITS
make[1]: *** [exec.o] Error 1
make: *** [subdir-x86_64-softmmu] Error 2

commit 7bc7b099dfa38a856b1bc892c0f9f3d6fe28e170
 - fails to build with:
- ./configure --target-list=x86_64-softmmu  make clean  make
/home/rharper/work/git/qemu/exec.c: In function 'phys_page_find_alloc':
/home/rharper/work/git/qemu/exec.c:341: error: #error unsupported 
TARGET_PHYS_ADDR_SPACE_BITS
/home/rharper/work/git/qemu/exec.c: In function 'phys_page_for_each':
/home/rharper/work/git/qemu/exec.c:1670: error: #error unsupported 
TARGET_PHYS_ADDR_SPACE_BITS
make[1]: *** [exec.o] Error 1
make: *** [subdir-x86_64-softmmu] Error 2

commit b9f83121a13153536d886305414b540460c34508
 - fails to build with:
- ./configure --target-list=x86_64-softmmu  make clean  make
/home/rharper/work/git/qemu/exec.c: In function 'phys_page_find_alloc':
/home/rharper/work/git/qemu/exec.c:341: error: #error unsupported 
TARGET_PHYS_ADDR_SPACE_BITS
/home/rharper/work/git/qemu/exec.c: In function 'phys_page_for_each':
/home/rharper/work/git/qemu/exec.c:1670: error: #error unsupported 
TARGET_PHYS_ADDR_SPACE_BITS
make[1]: *** [exec.o] Error 1
make: *** [subdir-x86_64-softmmu] Error 2

commit 5270589032f450ae7c3448730855aa18ff68ccff
 - fails to build with:
- ./configure --target-list=x86_64-softmmu  make clean  make
/home/rharper/work/git/qemu/exec.c: In function 'phys_page_find_alloc':
/home/rharper/work/git/qemu/exec.c:341: error: #error unsupported 
TARGET_PHYS_ADDR_SPACE_BITS
/home/rharper/work/git/qemu/exec.c: In function 'phys_page_for_each':
/home/rharper/work/git/qemu/exec.c:1670: error: #error unsupported 
TARGET_PHYS_ADDR_SPACE_BITS
make[1]: *** [exec.o] Error 1
make: *** [subdir-x86_64-softmmu] Error 2


And this commit compiles and the test case no longer segfaults.  So I'd
say things are fixed at this point.

commit 5cd2c5b6ad75c46d40118ac67c0c09d4e7930a65
- compiles and issue is no longer present.
- ./configure --target-list=x86_64-softmmu  make clean  make 
sudo x86_64-softmmu/qemu-syem-x86_64 -L pc-bios -hda /dev/null -m 4097


-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
ry...@us.ibm.com



Re: [Qemu-devel] Re: [PATCH] Fix segfault with ram_size 4095M without kvm

2011-01-04 Thread Ryan Harper
* Aurelien Jarno aurel...@aurel32.net [2010-12-25 16:37]:
 On Wed, Dec 08, 2010 at 04:27:45PM -0200, Luiz Capitulino wrote:
  On Wed, 08 Dec 2010 12:23:12 -0600
  Anthony Liguori aligu...@linux.vnet.ibm.com wrote:
  
   On 12/08/2010 12:01 PM, Luiz Capitulino wrote:
Currently, x86_64-softmmu qemu segfaults when trying to use  4095M 
memsize.
This patch adds a simple check and error message (much like the 2047 
limit on
32-bit hosts) on ram_size in the control path after we determine we're
not using kvm
   
Upstream qemu-kvm is affected if using the -no-kvm option; this patch 
address
the segfault there as well.
   
Signed-off-by: Ryan Harperry...@us.ibm.com
Signed-off-by: Aurelien Jarnoaurel...@aurel32.net
---
NOTE: this patch was applied in the v0.12.x branch, but it seems it got
   lost for master
   
   
   No, it was intentional.  We should fix the segv, this is not a known 
   limitation but rather a bug.
  
  A TCG bug, I presume?
  
 
 Do you have more details about this issue and how to reproduce it? 

At the time of the bug, it was something simple like:

qemu-system-x86_64 -m 4097 -hda /dev/null

we'd get an imediate segfault.  As you say, I'm not seeing it now on
current git; I'll see about bisecting to see if we did get a fix for the
issue.

 
 Support for more than 4GB of memory has been added a few years ago, 
 and I am not able to reproduce the problem anymore (I have booted a 
 64-bit guest with 6GB of RAM, and make sure the guest use the whole 
 memory). I guess TCG itself is fine, but there might be a bug in
 the MMU emulation in some cases.
 
 I also noticed that now i386-softmmu has been artificially limited to
 2047MB. Tthis configuration used to support up to 64GB of RAM (PAE)
 on 64-bit hosts.
 
 -- 
 Aurelien Jarno  GPG: 1024D/F1BCDB73
 aurel...@aurel32.net http://www.aurel33.net

-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
ry...@us.ibm.com



[Qemu-devel] Re: [PATCH] Fix segfault with ram_size 4095M without kvm

2010-12-25 Thread Aurelien Jarno
On Wed, Dec 08, 2010 at 04:27:45PM -0200, Luiz Capitulino wrote:
 On Wed, 08 Dec 2010 12:23:12 -0600
 Anthony Liguori aligu...@linux.vnet.ibm.com wrote:
 
  On 12/08/2010 12:01 PM, Luiz Capitulino wrote:
   Currently, x86_64-softmmu qemu segfaults when trying to use  4095M 
   memsize.
   This patch adds a simple check and error message (much like the 2047 
   limit on
   32-bit hosts) on ram_size in the control path after we determine we're
   not using kvm
  
   Upstream qemu-kvm is affected if using the -no-kvm option; this patch 
   address
   the segfault there as well.
  
   Signed-off-by: Ryan Harperry...@us.ibm.com
   Signed-off-by: Aurelien Jarnoaurel...@aurel32.net
   ---
   NOTE: this patch was applied in the v0.12.x branch, but it seems it got
  lost for master
  
  
  No, it was intentional.  We should fix the segv, this is not a known 
  limitation but rather a bug.
 
 A TCG bug, I presume?
 

Do you have more details about this issue and how to reproduce it? 

Support for more than 4GB of memory has been added a few years ago, 
and I am not able to reproduce the problem anymore (I have booted a 
64-bit guest with 6GB of RAM, and make sure the guest use the whole 
memory). I guess TCG itself is fine, but there might be a bug in
the MMU emulation in some cases.

I also noticed that now i386-softmmu has been artificially limited to
2047MB. Tthis configuration used to support up to 64GB of RAM (PAE)
on 64-bit hosts.

-- 
Aurelien Jarno  GPG: 1024D/F1BCDB73
aurel...@aurel32.net http://www.aurel33.net



[Qemu-devel] Re: [PATCH] Fix segfault with ram_size 4095M without kvm

2010-12-09 Thread Anthony Liguori

On 12/08/2010 12:01 PM, Luiz Capitulino wrote:

Currently, x86_64-softmmu qemu segfaults when trying to use  4095M memsize.
This patch adds a simple check and error message (much like the 2047 limit on
32-bit hosts) on ram_size in the control path after we determine we're
not using kvm

Upstream qemu-kvm is affected if using the -no-kvm option; this patch address
the segfault there as well.

Signed-off-by: Ryan Harperry...@us.ibm.com
Signed-off-by: Aurelien Jarnoaurel...@aurel32.net
---
NOTE: this patch was applied in the v0.12.x branch, but it seems it got
   lost for master
   


No, it was intentional.  We should fix the segv, this is not a known 
limitation but rather a bug.


Regards,

Anthony Liguori


  vl.c |6 ++
  1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/vl.c b/vl.c
index 2dbb6db..bb9c21c 100644
--- a/vl.c
+++ b/vl.c
@@ -5792,6 +5792,12 @@ int main(int argc, char **argv, char **envp)
  fprintf(stderr, failed to initialize KVM\n);
  exit(1);
  }
+} else {
+/* without kvm enabled, we can only support 4095 MB RAM */
+if (ram_size  (4095UL  20)) {
+fprintf(stderr, qemu: without kvm support at most 4095 MB RAM can be 
simulated\n);
+exit(1);
+}
  }

  if (qemu_init_main_loop()) {
   





[Qemu-devel] Re: [PATCH] Fix segfault with ram_size 4095M without kvm

2010-12-09 Thread Luiz Capitulino
On Wed, 08 Dec 2010 12:23:12 -0600
Anthony Liguori aligu...@linux.vnet.ibm.com wrote:

 On 12/08/2010 12:01 PM, Luiz Capitulino wrote:
  Currently, x86_64-softmmu qemu segfaults when trying to use  4095M memsize.
  This patch adds a simple check and error message (much like the 2047 limit 
  on
  32-bit hosts) on ram_size in the control path after we determine we're
  not using kvm
 
  Upstream qemu-kvm is affected if using the -no-kvm option; this patch 
  address
  the segfault there as well.
 
  Signed-off-by: Ryan Harperry...@us.ibm.com
  Signed-off-by: Aurelien Jarnoaurel...@aurel32.net
  ---
  NOTE: this patch was applied in the v0.12.x branch, but it seems it got
 lost for master
 
 
 No, it was intentional.  We should fix the segv, this is not a known 
 limitation but rather a bug.

A TCG bug, I presume?

 
 Regards,
 
 Anthony Liguori
 
vl.c |6 ++
1 files changed, 6 insertions(+), 0 deletions(-)
 
  diff --git a/vl.c b/vl.c
  index 2dbb6db..bb9c21c 100644
  --- a/vl.c
  +++ b/vl.c
  @@ -5792,6 +5792,12 @@ int main(int argc, char **argv, char **envp)
fprintf(stderr, failed to initialize KVM\n);
exit(1);
}
  +} else {
  +/* without kvm enabled, we can only support 4095 MB RAM */
  +if (ram_size  (4095UL  20)) {
  +fprintf(stderr, qemu: without kvm support at most 4095 MB RAM 
  can be simulated\n);
  +exit(1);
  +}
}
 
if (qemu_init_main_loop()) {
 
 




[Qemu-devel] Re: [PATCH] Fix segfault with ram_size 4095M without kvm

2010-12-09 Thread Anthony Liguori

On 12/08/2010 12:27 PM, Luiz Capitulino wrote:

On Wed, 08 Dec 2010 12:23:12 -0600
Anthony Liguorialigu...@linux.vnet.ibm.com  wrote:

   

On 12/08/2010 12:01 PM, Luiz Capitulino wrote:
 

Currently, x86_64-softmmu qemu segfaults when trying to use   4095M memsize.
This patch adds a simple check and error message (much like the 2047 limit on
32-bit hosts) on ram_size in the control path after we determine we're
not using kvm

Upstream qemu-kvm is affected if using the -no-kvm option; this patch address
the segfault there as well.

Signed-off-by: Ryan Harperry...@us.ibm.com
Signed-off-by: Aurelien Jarnoaurel...@aurel32.net
---
NOTE: this patch was applied in the v0.12.x branch, but it seems it got
lost for master

   

No, it was intentional.  We should fix the segv, this is not a known
limitation but rather a bug.
 

A TCG bug, I presume?
   


Dunno, that's why we shouldn't just paper over it.

Regards,

Anthony Liguori

   

Regards,

Anthony Liguori

 

   vl.c |6 ++
   1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/vl.c b/vl.c
index 2dbb6db..bb9c21c 100644
--- a/vl.c
+++ b/vl.c
@@ -5792,6 +5792,12 @@ int main(int argc, char **argv, char **envp)
   fprintf(stderr, failed to initialize KVM\n);
   exit(1);
   }
+} else {
+/* without kvm enabled, we can only support 4095 MB RAM */
+if (ram_size   (4095UL   20)) {
+fprintf(stderr, qemu: without kvm support at most 4095 MB RAM can be 
simulated\n);
+exit(1);
+}
   }

   if (qemu_init_main_loop()) {