From nobody Mon Nov 17 01:24:53 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=1602239306; cv=none; d=zohomail.com; s=zohoarc; b=OmIA0IQpaDdBU3HZ1UFlwGESMafpj9vitiFL/1ZdG3lHhxHWVfVsO1wBzs+wd14zWR5PHB/XMGOzl6I6c66D+HG1+hWY1JEjyYXTBRHw/4J3R1ELGpaLz0HzSDglZl4wKoLRATelbOQyTvi551pXER3bzsN4FSe/y1gs592UPwE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602239306; 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=QQ0M4trb4auAqplfnfcjgFaCq06OAhaKXmHAIjfrzb0=; b=jvevj2njVhV7c34W5SLJPWPwwQKlEZEr0HhEalOLA2AJk0PRiQyAIZ7sTxLP0KJzH0YpevwCKIDAzS1PFABf1p/2pnP4BeodybnhWBeTuFFskFLLl+rob6bqfH8lYgZta6MjKMUrkyDWnCegJLU7sSlQXydTfYfOrEnHgLHY4yw= 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 1602239306214753.226560877086; Fri, 9 Oct 2020 03:28:26 -0700 (PDT) Received: from localhost ([::1]:35062 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kQpdQ-0005Q2-WA for importer@patchew.org; Fri, 09 Oct 2020 06:28:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43066) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kQpVV-0005FS-Ap for qemu-devel@nongnu.org; Fri, 09 Oct 2020 06:20:13 -0400 Received: from bilbo.ozlabs.org ([2401:3900:2:1::2]:36051 helo=ozlabs.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kQpVS-0001ml-6s for qemu-devel@nongnu.org; Fri, 09 Oct 2020 06:20:12 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 4C73wX246Dz9sVm; Fri, 9 Oct 2020 21:19:55 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1602238796; bh=uU2bvuuBHfIOdHxr5n2B5NhwOn/ignzorbQgCHxn99c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EXSIN0WS2z2Z2/hjZqACV/eE3QN6vqERn83JoGU5taLB85knvFGXzJuRt+Qb+elwG cM/rUnd/0Jo1kWAauBzRuTpntWPCPWptMEeONSbT8Yo8pfM+ZXwqF5NonONHjlRm+D mToLTDZT73DQ9F55ETI2F+cqxgV+ssvIvoF0uKCA= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 06/20] spapr: Get rid of cas_check_pvr() error reporting Date: Fri, 9 Oct 2020 21:19:37 +1100 Message-Id: <20201009101951.1569252-7-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201009101951.1569252-1-david@gibson.dropbear.id.au> References: <20201009101951.1569252-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-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. 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.25, 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: Vladimir Sementsov-Ogievskiy , dbarboza@redhat.com, qemu-devel@nongnu.org, groug@kaod.org, qemu-ppc@nonngu.org, David Gibson 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 The cas_check_pvr() function has two purposes: - finding the "best" logical PVR, ie. the most recent one supported by the guest for this CPU type - checking if the guest supports the real PVR of this CPU type, which is just an optional extra information to workaround the lack of support for "compat" mode in PR KVM This logic doesn't need error reporting, really. If we don't find a suitable logical PVR, we return the special value 0 which is definitely not a valid PVR. Let the caller decide on whether it should error out or not. This doesn't change the behavior. Signed-off-by: Greg Kurz Message-Id: <20200914123505.612812-6-groug@kaod.org> Reviewed-by: Vladimir Sementsov-Ogievskiy Signed-off-by: David Gibson --- hw/ppc/spapr_hcall.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index c2776b6a7d..885ea60778 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -1590,12 +1590,11 @@ static target_ulong h_signal_sys_reset(PowerPCCPU *= cpu, } } =20 -static uint32_t cas_check_pvr(SpaprMachineState *spapr, PowerPCCPU *cpu, - target_ulong *addr, bool *raw_mode_supported, - Error **errp) +/* Returns either a logical PVR or zero if none was found */ +static uint32_t cas_check_pvr(PowerPCCPU *cpu, uint32_t max_compat, + target_ulong *addr, bool *raw_mode_supported) { bool explicit_match =3D false; /* Matched the CPU's real PVR */ - uint32_t max_compat =3D spapr->max_compat_pvr; uint32_t best_compat =3D 0; int i; =20 @@ -1624,14 +1623,6 @@ static uint32_t cas_check_pvr(SpaprMachineState *spa= pr, PowerPCCPU *cpu, } } =20 - if ((best_compat =3D=3D 0) && (!explicit_match || max_compat)) { - /* We couldn't find a suitable compatibility mode, and either - * the guest doesn't support "raw" mode for this CPU, or raw - * mode is disabled because a maximum compat mode is set */ - error_setg(errp, "Couldn't negotiate a suitable PVR during CAS"); - return 0; - } - *raw_mode_supported =3D explicit_match; =20 /* Parsing finished */ @@ -1680,6 +1671,7 @@ target_ulong do_client_architecture_support(PowerPCCP= U *cpu, bool guest_xive; CPUState *cs; void *fdt; + uint32_t max_compat =3D spapr->max_compat_pvr; =20 /* CAS is supposed to be called early when only the boot vCPU is activ= e. */ CPU_FOREACH(cs) { @@ -1692,9 +1684,14 @@ target_ulong do_client_architecture_support(PowerPCC= PU *cpu, } } =20 - cas_pvr =3D cas_check_pvr(spapr, cpu, &vec, &raw_mode_supported, &loca= l_err); - if (local_err) { - error_report_err(local_err); + cas_pvr =3D cas_check_pvr(cpu, max_compat, &vec, &raw_mode_supported); + if (!cas_pvr && (!raw_mode_supported || max_compat)) { + /* + * We couldn't find a suitable compatibility mode, and either + * the guest doesn't support "raw" mode for this CPU, or "raw" + * mode is disabled because a maximum compat mode is set. + */ + error_report("Couldn't negotiate a suitable PVR during CAS"); return H_HARDWARE; } =20 --=20 2.26.2