On 6 July 2013 15:17, Alexander Graf <ag...@suse.de> wrote: > Most kernels these days have protection code in place to forbid user space > to access low memory. The barrier varies between architectures though. > > For this purpose we have the guest base option that allows us to offset > guest visible memory from host memory, so that the guest process thinks > it can access lower memory than it really can access. > > Set the default for the guest base to 64k which should be good enough on > any host system.
> This fixes running i386 wine on ARM for me. It also makes qemu-x86_64 segfault busybox running on x86_64 host: x86_64-linux-user/qemu-x86_64 qemu-smoke/amd64/busybox ls -l qemu: uncaught target signal 11 (Segmentation fault) - core dumped ./smoke-test: line 28: 16061 Segmentation fault (core dumped) $qemudir/x86_64-linux-user/qemu-x86_64 $testdir/amd64/busybox $@ Riku > Signed-off-by: Alexander Graf <ag...@suse.de> > --- > linux-user/main.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/linux-user/main.c b/linux-user/main.c > index 7f15d3d..a246cff 100644 > --- a/linux-user/main.c > +++ b/linux-user/main.c > @@ -45,8 +45,8 @@ envlist_t *envlist; > const char *cpu_model; > unsigned long mmap_min_addr; > #if defined(CONFIG_USE_GUEST_BASE) > -unsigned long guest_base; > -int have_guest_base; > +unsigned long guest_base = 64 * 1024; > +int have_guest_base = 1; > #if (TARGET_LONG_BITS == 32) && (HOST_LONG_BITS == 64) > /* > * When running 32-on-64 we should make sure we can fit all of the possible > @@ -3294,7 +3294,7 @@ static void handle_arg_cpu(const char *arg) > static void handle_arg_guest_base(const char *arg) > { > guest_base = strtol(arg, NULL, 0); > - have_guest_base = 1; > + have_guest_base = guest_base ? 1 : 0; > } > > static void handle_arg_reserved_va(const char *arg) > -- > 1.6.0.2 >