From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sc8-sf-mx2-b.sourceforge.net ([10.3.1.92] helo=mail.sourceforge.net) by sc8-sf-list1-new.sourceforge.net with esmtp (Exim 4.43) id 1JpSA6-0003lV-Tb for user-mode-linux-devel@lists.sourceforge.net; Fri, 25 Apr 2008 10:56:43 -0700 Received: from [198.99.130.12] (helo=saraswathi.solana.com) by mail.sourceforge.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.44) id 1JpSA1-0005Pz-QM for user-mode-linux-devel@lists.sourceforge.net; Fri, 25 Apr 2008 10:56:41 -0700 Date: Fri, 25 Apr 2008 13:56:18 -0400 From: Jeff Dike Message-ID: <20080425175618.GA11208@c2.user-mode-linux.org> MIME-Version: 1.0 Content-Disposition: inline Subject: [uml-devel] [PATCH 19/19] UML - Physical memory shouldn't include initial stack List-Id: The user-mode Linux development list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: user-mode-linux-devel-bounces@lists.sourceforge.net Errors-To: user-mode-linux-devel-bounces@lists.sourceforge.net To: Andrew Morton , LKML , uml-devel Cc: "Christopher S. Aker" The top of physical memory should be below the initial process stack, not the top of the address space, at least for as long as the stack isn't known to the kernel VM system and appropriately reserved. Cc: "Christopher S. Aker" Signed-off-by: Jeff Dike --- arch/um/kernel/um_arch.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) Index: linux-2.6-git/arch/um/kernel/um_arch.c =================================================================== --- linux-2.6-git.orig/arch/um/kernel/um_arch.c 2008-04-24 15:16:52.000000000 -0400 +++ linux-2.6-git/arch/um/kernel/um_arch.c 2008-04-24 16:04:52.000000000 -0400 @@ -258,6 +258,7 @@ int __init linux_main(int argc, char **a { unsigned long avail, diff; unsigned long virtmem_size, max_physmem; + unsigned long stack; unsigned int i, add; char * mode; @@ -347,7 +348,9 @@ int __init linux_main(int argc, char **a } virtmem_size = physmem_size; - avail = TASK_SIZE - start_vm; + stack = (unsigned long) argv; + stack &= ~(1024 * 1024 - 1); + avail = stack - start_vm; if (physmem_size > avail) virtmem_size = avail; end_vm = start_vm + virtmem_size; ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1765637AbYDYSD4 (ORCPT ); Fri, 25 Apr 2008 14:03:56 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1764814AbYDYR53 (ORCPT ); Fri, 25 Apr 2008 13:57:29 -0400 Received: from saraswathi.solana.com ([198.99.130.12]:53140 "EHLO saraswathi.solana.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1763453AbYDYR5V (ORCPT ); Fri, 25 Apr 2008 13:57:21 -0400 Date: Fri, 25 Apr 2008 13:56:18 -0400 From: Jeff Dike To: Andrew Morton , LKML , uml-devel Cc: "Christopher S. Aker" Subject: [PATCH 19/19] UML - Physical memory shouldn't include initial stack Message-ID: <20080425175618.GA11208@c2.user-mode-linux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.17 (2007-11-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The top of physical memory should be below the initial process stack, not the top of the address space, at least for as long as the stack isn't known to the kernel VM system and appropriately reserved. Cc: "Christopher S. Aker" Signed-off-by: Jeff Dike --- arch/um/kernel/um_arch.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) Index: linux-2.6-git/arch/um/kernel/um_arch.c =================================================================== --- linux-2.6-git.orig/arch/um/kernel/um_arch.c 2008-04-24 15:16:52.000000000 -0400 +++ linux-2.6-git/arch/um/kernel/um_arch.c 2008-04-24 16:04:52.000000000 -0400 @@ -258,6 +258,7 @@ int __init linux_main(int argc, char **a { unsigned long avail, diff; unsigned long virtmem_size, max_physmem; + unsigned long stack; unsigned int i, add; char * mode; @@ -347,7 +348,9 @@ int __init linux_main(int argc, char **a } virtmem_size = physmem_size; - avail = TASK_SIZE - start_vm; + stack = (unsigned long) argv; + stack &= ~(1024 * 1024 - 1); + avail = stack - start_vm; if (physmem_size > avail) virtmem_size = avail; end_vm = start_vm + virtmem_size;