qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 8/9] linux-user: Default to 64k guest base


From: Riku Voipio
Subject: Re: [Qemu-devel] [PATCH 8/9] linux-user: Default to 64k guest base
Date: Mon, 22 Jul 2013 22:54:23 +0300

On 6 July 2013 15:17, Alexander Graf <address@hidden> 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 <address@hidden>
> ---
>  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
>



reply via email to

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