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  [2011-01-04 09:49]:
> > * Aurelien Jarno  [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  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 Harper
> > > > > > Signed-off-by: Aurelien Jarno
> > > > > > ---
> > > > > > 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 
> Date:   Thu Mar 11 21:29:42 2010 +0100
> 
> target-ppc: fix evsrwu and evsrws (second try)
> 
> Signed-off-by: Aurelien Jarno 
> 
> 
> 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 

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

2011-01-05 Thread Ryan Harper
* Ryan Harper  [2011-01-04 09:49]:
> * Aurelien Jarno  [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  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 Harper
> > > > > Signed-off-by: Aurelien Jarno
> > > > > ---
> > > > > 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 
Date:   Thu Mar 11 21:29:42 2010 +0100

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

Signed-off-by: Aurelien Jarno 


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  [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  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 Harper
> > > > Signed-off-by: Aurelien Jarno
> > > > ---
> > > > 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  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 Harper
> > > Signed-off-by: Aurelien Jarno
> > > ---
> > > 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:27 PM, Luiz Capitulino wrote:

On Wed, 08 Dec 2010 12:23:12 -0600
Anthony Liguori  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 Harper
Signed-off-by: Aurelien Jarno
---
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()) {

   
 
   





[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  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 Harper
> > Signed-off-by: Aurelien Jarno
> > ---
> > 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: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 Harper
Signed-off-by: Aurelien Jarno
---
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()) {