From nobody Tue Feb 10 20:28:37 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151235953920945.48433291574656; Sun, 3 Dec 2017 19:52:19 -0800 (PST) Received: from localhost ([::1]:41096 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eLhnh-0000OS-Je for importer@patchew.org; Sun, 03 Dec 2017 22:52:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eLhjq-0005Zp-2G for qemu-devel@nongnu.org; Sun, 03 Dec 2017 22:48:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eLhjl-0004LM-Sb for qemu-devel@nongnu.org; Sun, 03 Dec 2017 22:48:14 -0500 Received: from ozlabs.org ([103.22.144.67]:41235) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eLhjl-0004KI-90; Sun, 03 Dec 2017 22:48:09 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3yqrSQ2kwdz9s83; Mon, 4 Dec 2017 14:48:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1512359286; bh=vhdY7NkC/HfZAdGhoOHqNeEreFonYzVLpJvLXw9XUt0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=evb/SyIS+mHF6OpftBQJhLprd1MKvO+XdQykhS0F+w81/ifJuCfxyY43qRv1WBrux vc8BefF9wrDCxKSwM+sHIvXXkKcJonsSPIjYd4hHOO/I4rP3A263g6imLrFUhr5cYc Sn0YPXCCID38Hurwkp1pDPgQd14oEqKEjdr3J1mM= From: David Gibson To: peter.maydell@linaro.org Date: Mon, 4 Dec 2017 14:48:02 +1100 Message-Id: <20171204034802.7336-4-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171204034802.7336-1-david@gibson.dropbear.id.au> References: <20171204034802.7336-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 3/3] spapr: Include "pre-plugged" DIMMS in ram size calculation at reset X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org, David Gibson , qemu-ppc@nongnu.org, agraf@suse.de, groug@kaod.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" At guest reset time, we allocate a hash page table (HPT) for the guest based on the guest's RAM size. If dynamic HPT resizing is not available we use the maximum RAM size, if it is we use the current RAM size. But the "current RAM size" calculation is incorrect - we just use the "base" ram_size from the machine structure. This doesn't include any pluggable DIMMs that are already plugged at reset time. This means that if you try to start a 'pseries' machine with a DIMM specified on the command line that's much larger than the "base" RAM size, then the guest will get a woefully inadequate HPT. This can lead to a guest freeze during boot as it runs out of HPT space during initial MMU setup. Signed-off-by: David Gibson Reviewed-by: Greg Kurz Tested-by: Greg Kurz --- hw/ppc/spapr.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index a471de6cab..1ac7eb0f8c 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1386,7 +1386,10 @@ void spapr_setup_hpt_and_vrma(sPAPRMachineState *spa= pr) && !spapr_ovec_test(spapr->ov5_cas, OV5_HPT_RESIZE))) { hpt_shift =3D spapr_hpt_shift_for_ramsize(MACHINE(spapr)->maxram_s= ize); } else { - hpt_shift =3D spapr_hpt_shift_for_ramsize(MACHINE(spapr)->ram_size= ); + uint64_t current_ram_size; + + current_ram_size =3D MACHINE(spapr)->ram_size + get_plugged_memory= _size(); + hpt_shift =3D spapr_hpt_shift_for_ramsize(current_ram_size); } spapr_reallocate_hpt(spapr, hpt_shift, &error_fatal); =20 --=20 2.14.3