From patchwork Sun Oct 25 21:09:10 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Juan Quintela X-Patchwork-Id: 36877 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 41A0EB7BDC for ; Mon, 26 Oct 2009 08:10:00 +1100 (EST) Received: from localhost ([127.0.0.1]:46794 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N2ALc-00011Q-3n for incoming@patchwork.ozlabs.org; Sun, 25 Oct 2009 17:09:56 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N2ALB-00010o-2V for qemu-devel@nongnu.org; Sun, 25 Oct 2009 17:09:29 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N2AL6-0000zu-Hy for qemu-devel@nongnu.org; Sun, 25 Oct 2009 17:09:28 -0400 Received: from [199.232.76.173] (port=33024 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N2AL6-0000zr-Bt for qemu-devel@nongnu.org; Sun, 25 Oct 2009 17:09:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46186) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1N2AL5-0001Ly-S1 for qemu-devel@nongnu.org; Sun, 25 Oct 2009 17:09:24 -0400 Received: from int-mx05.intmail.prod.int.phx2.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.18]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n9PL9GWJ019575; Sun, 25 Oct 2009 17:09:16 -0400 Received: from localhost (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx05.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n9PL9FQb030812; Sun, 25 Oct 2009 17:09:16 -0400 From: Juan Quintela To: =?utf-8?Q?Jan-Simon_M=C3=B6ller?= In-Reply-To: <200910251849.44301.dl9pf@gmx.de> ("Jan-Simon =?utf-8?Q?M?= =?utf-8?Q?=C3=B6ller=22's?= message of "Sun, 25 Oct 2009 18:49:44 +0100") References: <200910251622.07800.dl9pf@gmx.de> <761ea48b0910250854g2aa96a49w65eb5ede77c38f51@mail.gmail.com> <200910251841.25045.dl9pf@gmx.de> <200910251849.44301.dl9pf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Date: Sun, 25 Oct 2009 22:09:10 +0100 Message-ID: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.67 on 10.5.11.18 X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: qemu-devel@nongnu.org Subject: [Qemu-devel] Re: [Patch] Make usermode stacksize (-s) configurable at compile-time X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org "Jan-Simon Möller" wrote: > @@ -2481,6 +2485,16 @@ if test "$target_user_only" = "yes" -a "$static" = "no" -a \ > ldflags="-pie $ldflags" > fi > > +# change default stacksize in usermode > +# > +if test "$target_user_only" = "yes" -a "$user_mode_stacksize" != "" ; then > + cflags="-DUSER_MODE_STACKSIZE=$user_mode_stacksize $cflags" > + echo "user_mode_stack $user_mode_stacksize" Put this line together with: echo "PIE user targets $user_pie" > +else > + echo "user_mode_stack default" > +fi > + > + > if test "$target_softmmu" = "yes" -a \( \ > "$TARGET_ARCH" = "microblaze" -o \ > "$TARGET_ARCH" = "cris" \) ; then > diff --git a/linux-user/main.c b/linux-user/main.c > index 81a1ada..9ac2421 100644 > --- a/linux-user/main.c > +++ b/linux-user/main.c > @@ -51,7 +51,10 @@ const char *qemu_uname_release = CONFIG_UNAME_RELEASE; > /* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so > we allocate a bigger stack. Need a better solution, for example > by remapping the process stack directly at the right place */ > -unsigned long x86_stack_size = 512 * 1024; > +#ifndef USER_MODE_STACKSIZE > +#define USER_MODE_STACKSIZE (512 * 1024) > +#endif If we are changing the code in configure anyways, why don't add the default there? Something like this (I tested that it compiled, but didn't tested usermode). I am assuming that you only want it for linux-user. From 0dc910f5d1b2e1dd7120abf32d25db190cd394e5 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Sun, 25 Oct 2009 22:06:52 +0100 Subject: [PATCH] User mode stacksize implementation Signed-off-by: Juan Quintela Signed-off-by: Jan-Simon Möller --- configure | 5 +++++ linux-user/main.c | 2 +- 2 files changed, 6 insertions(+), 1 deletions(-) diff --git a/configure b/configure index 43d87c5..82b9825 100755 --- a/configure +++ b/configure @@ -225,6 +225,7 @@ blobs="yes" pkgversion="" check_utests="no" user_pie="no" +user_mode_stacksize="512*1024" # OS specific if check_define __linux__ ; then @@ -517,6 +518,8 @@ for opt do ;; --disable-user-pie) user_pie="no" ;; + --user-mode-stacksize=*) user_mode_stacksize="$optarg" + ;; --enable-uname-release=*) uname_release="$optarg" ;; --sparc_cpu=*) @@ -1841,6 +1844,7 @@ echo "uname -r $uname_release" echo "NPTL support $nptl" echo "GUEST_BASE $guest_base" echo "PIE user targets $user_pie" +echo "User mode stacksize $user_mode_stacksize" echo "vde support $vde" echo "IO thread $io_thread" echo "Linux AIO support $linux_aio" @@ -2361,6 +2365,7 @@ if test "$target_user_only" = "yes" ; then fi if test "$target_linux_user" = "yes" ; then echo "CONFIG_LINUX_USER=y" >> $config_target_mak + echo "CONFIG_USER_MODE_STACKSIZE=$user_mode_stacksize" >> $config_target_mak fi if test "$target_darwin_user" = "yes" ; then echo "CONFIG_DARWIN_USER=y" >> $config_target_mak diff --git a/linux-user/main.c b/linux-user/main.c index 81a1ada..5d0f849 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -51,7 +51,7 @@ const char *qemu_uname_release = CONFIG_UNAME_RELEASE; /* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so we allocate a bigger stack. Need a better solution, for example by remapping the process stack directly at the right place */ -unsigned long x86_stack_size = 512 * 1024; +unsigned long x86_stack_size = CONFIG_USER_MODE_STACKSIZE; void gemu_log(const char *fmt, ...) {