From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NnIgw-0003SF-PK for qemu-devel@nongnu.org; Thu, 04 Mar 2010 16:34:46 -0500 Received: from [199.232.76.173] (port=53999 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NnIgw-0003Rg-75 for qemu-devel@nongnu.org; Thu, 04 Mar 2010 16:34:46 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NnIgu-0003pe-LU for qemu-devel@nongnu.org; Thu, 04 Mar 2010 16:34:45 -0500 Received: from e6.ny.us.ibm.com ([32.97.182.146]:35806) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NnIgu-0003oy-8y for qemu-devel@nongnu.org; Thu, 04 Mar 2010 16:34:44 -0500 Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by e6.ny.us.ibm.com (8.14.3/8.13.1) with ESMTP id o24LVatU002733 for ; Thu, 4 Mar 2010 16:31:36 -0500 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o24LYe8O146490 for ; Thu, 4 Mar 2010 16:34:40 -0500 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.3/8.13.1/NCO v10.0 AVout) with ESMTP id o24LYdKJ018055 for ; Thu, 4 Mar 2010 18:34:39 -0300 Date: Thu, 4 Mar 2010 15:34:34 -0600 From: Ryan Harper Subject: Re: [Qemu-devel] [PATCH] Fix segfault with ram_size > 4095M without kvm Message-ID: <20100304213434.GA17350@us.ibm.com> References: <20100223151314.GN17350@us.ibm.com> <4B840A17.9050809@aurel32.net> <20100304212724.GH5860@hall.aurel32.net> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <20100304212724.GH5860@hall.aurel32.net> Content-Transfer-Encoding: quoted-printable List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aurelien Jarno Cc: Anthony Liguori , Ryan Harper , qemu-devel@nongnu.org, kvm@vger.kernel.org * Aurelien Jarno [2010-03-04 15:27]: > On Tue, Feb 23, 2010 at 06:02:15PM +0100, Aurelien Jarno wrote: > > Ryan Harper a =E9crit : > > > Currently, x86_64-softmmu qemu segfaults when trying to use > 4095M= memsize. > > > This patch adds a simple check and error message (much like the 204= 7 limit on > > > 32-bit hosts) on ram_size in the control path after we determine we= 're > > > not using kvm > > >=20 > > > Upstream qemu-kvm is affected if using the -no-kvm option; this pat= ch address > > > the segfault there as well. > >=20 > > It looks like workarounding the real bug. At some point both > > i386-softmmu (via PAE) and x86_64-softmmu were able to support > 4GB = of > > memory. I remember adding the support long time ago, and testing it w= ith > > 32GB of emulated RAM. >=20 > I have looked into that, and actually one patch to get full support for > > 4GB of memory was not merged: Thanks for looking into this. >=20 > diff --git a/exec.c b/exec.c > index 8389c54..b0bb058 100644 > --- a/exec.c > +++ b/exec.c > @@ -166,7 +166,7 @@ typedef struct PhysPageDesc { > */ > #define L1_BITS (TARGET_VIRT_ADDR_SPACE_BITS - L2_BITS - TARGET_PAGE_B= ITS) > #else > -#define L1_BITS (32 - L2_BITS - TARGET_PAGE_BITS) > +#define L1_BITS (TARGET_PHYS_ADDR_SPACE_BITS - L2_BITS - TARGET_PAGE_B= ITS) > #endif >=20 > #define L1_SIZE (1 << L1_BITS) >=20 > While this patch is acceptable for qemu i386, it creates a big L1 table > for x86_64 or other 64-bit architectures, resulting in huge memory=20 > overhead. >=20 > The recent multilevel tables patches from Richard Henderson should fix=20 > the problem for HEAD (I haven't found time to look at them in details). >=20 > As this is not something we really want to backport, your patch makes > sense in stable-0.12. Anthony, do you want me to resend and rebase against 0.12-stable? --=20 Ryan Harper Software Engineer; Linux Technology Center IBM Corp., Austin, Tx ryanh@us.ibm.com