From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41562) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vldbh-00074t-39 for qemu-devel@nongnu.org; Wed, 27 Nov 2013 06:48:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vldbb-00029n-4S for qemu-devel@nongnu.org; Wed, 27 Nov 2013 06:48:37 -0500 Received: from mx1.redhat.com ([209.132.183.28]:56028) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vldba-00029h-S5 for qemu-devel@nongnu.org; Wed, 27 Nov 2013 06:48:31 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rARBmTdq025373 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 27 Nov 2013 06:48:29 -0500 Message-ID: <5295DC0B.2000000@redhat.com> Date: Wed, 27 Nov 2013 12:48:27 +0100 From: Laszlo Ersek MIME-Version: 1.0 References: <1385482583-23122-1-git-send-email-kraxel@redhat.com> <52951398.3010206@redhat.com> <1385534761.13867.9.camel@nilsson.home.kraxel.org> In-Reply-To: <1385534761.13867.9.camel@nilsson.home.kraxel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] piix: fix 32bit pci hole List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gerd Hoffmann Cc: qemu-devel@nongnu.org On 11/27/13 07:46, Gerd Hoffmann wrote: > >>> + i440fx->pci_info.w32.begin = ram_size; > >> But this patch also obliterates the high bound, 0xe0000000, which can >> lead to: >> - w32.end - w32.begin <= 512M, or >> - a special case of the former, w32.end < w32.begin. > > ram_size is not the total amount of memory, it is low memory only. I tried to check for that when I sent the email, and I couldn't see where this is enforced. See: pc_init1() [hw/i386/pc_piix.c] i440fx_init() [hw/pci-host/piix.c] pc_init1() receives the full RAM size in "args->ram_size". It uses this value to compute "above_4g_mem_size" and "below_4g_mem_size", for example. pc_init1() passes "args->ram_size" unchanged to i440fx_init(), as 7th argument. The 7th parameter of i440fx_init() is called "ram_size". Therefore it will hold the whole RAM size. Thanks Laszlo