From nobody Tue Nov 18 06:00:54 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1607922538; cv=none; d=zohomail.com; s=zohoarc; b=M5agkyYP8KGJYlW9okmU4Uv6a3pcEreF1oXI7LPAmxaKqVm73g9QzSZYFOu9E6oPcCgI4JheGF1x4rscwKGFFhfSn8a8wC4pKAWdlu9RXWlwhar6s26FKU+J2zUsguSL6PgGe8FrR3jWFcoVJOLDRZgFK90PWc/XsXw80Da/S7o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607922538; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=gpV0m/iP3PJZeS/SyTFjbn0L7QvjEbkY5/zQjodgyHI=; b=WgqtDxI6NdfUNbO/2S6602lqEujyeq0mfgvtjgaBMAg9a9/0VthjFc8bTivxe6Oe/i+ovElpJah974WIT60YTEZAHwUG5DC1SIl2yFew/2hXfezdu1In/Lsl44JNBLK9uowH1jPJY7uIbO1f5c8bHLtRwPwgLHnX+mGpAecFc0o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607922538223291.18397578046404; Sun, 13 Dec 2020 21:08:58 -0800 (PST) Received: from localhost ([::1]:40094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kog6T-0001SE-1J for importer@patchew.org; Mon, 14 Dec 2020 00:08:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39396) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kofwV-0005H3-TV; Sun, 13 Dec 2020 23:58:40 -0500 Received: from ozlabs.org ([2401:3900:2:1::2]:50009) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kofwT-0004sC-R0; Sun, 13 Dec 2020 23:58:39 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 4CvTfs1vcfz9sWX; Mon, 14 Dec 2020 15:58:13 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1607921893; bh=chEF8D4+gY4i8ttVlD0cjDG3WMAwgoRw30EJwDdJF4I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d22h08e/lYnTAQ1FvZS2NsrLZLl1mR9K6jzACMvFbNe4Z+iWsjKCu/l/u9i96XYbY zUTeam3CtecycxPo1dDLNv/nT7N4AL8q1mTJMC/6cJHMonRx6w6glGzm1JixHQ3F+9 vNWAj1AO+pLGGnKRbtEEbPsY6lj2PeJh5MDwM7YY= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 18/30] spapr: Abort if ppc_set_compat() fails for hot-plugged CPUs Date: Mon, 14 Dec 2020 15:57:55 +1100 Message-Id: <20201214045807.41003-19-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201214045807.41003-1-david@gibson.dropbear.id.au> References: <20201214045807.41003-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2401:3900:2:1::2; envelope-from=dgibson@ozlabs.org; helo=ozlabs.org X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: David Gibson , qemu-ppc@nongnu.org, qemu-devel@nongnu.org, 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) Content-Type: text/plain; charset="utf-8" From: Greg Kurz When a CPU is hot-plugged, we set its compat mode to match the boot CPU, which was either set by machine reset or by CAS. This is currently handled in the plug handler after the core got realized. Potential errors of ppc_set_compat() are propagated to the hot-plug logic. Handling errors this late in the hot-plug sequence is generally frown upon. Ideally, we should do sanity checks in a pre-plug handler and pass &error_abort to ppc_set_compat() in the plug handler. We can filter out some error cases of ppc_set_compat() by calling ppc_check_compat() at pre-plug. But ppc_set_compat() also sets the compat register in KVM, and KVM doesn't provide any API that would allow to check valid compat mode settings beforehand. However, at this point we know that the compat mode was already successfully set for the boot CPU. Since this all boils down to setting a register with the very same value that was valid for the boot CPU, it should definitely not fail for hot-plugged CPUS. Pass &error_abort to ppc_set_compat(). Signed-off-by: Greg Kurz Message-Id: <20201201113728.885700-3-groug@kaod.org> Signed-off-by: David Gibson --- hw/ppc/spapr.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 5fbae8adda..99139a692c 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3784,15 +3784,13 @@ static void spapr_core_plug(HotplugHandler *hotplug= _dev, DeviceState *dev, =20 /* * Set compatibility mode to match the boot CPU, which was either set - * by the machine reset code or by CAS. + * by the machine reset code or by CAS. This really shouldn't fail at + * this point. */ if (hotplugged) { for (i =3D 0; i < cc->nr_threads; i++) { - if (ppc_set_compat(core->threads[i], - POWERPC_CPU(first_cpu)->compat_pvr, - errp) < 0) { - return; - } + ppc_set_compat(core->threads[i], POWERPC_CPU(first_cpu)->compa= t_pvr, + &error_abort); } } =20 --=20 2.29.2