From nobody Mon Nov 17 01:24:52 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=1602238912; cv=none; d=zohomail.com; s=zohoarc; b=aTeCKyhAYjOnaZtUPL5EijLV10UGVxGKCF8etb7e6x/AoGQsmwE1UVMCTdUJ5Rl+DnEOW9sLuycl+hB1isqjRsYbb1JlMF7YU7MR+egs9GijPtyJjk0dvJ1FtpJCyDAY8W8wgNp/IpCZaHztB888tPg2c2LWsanPdZ1vG++GcoA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602238912; 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=01OlAHm1bVda2tTmK8gudRiBcWvpUjSJJb6cfH2x/7M=; b=cyvhfBohd2zM1LmzBqhgR+VCAun8PX17QNYVd9byI+2aNJk0uphIBJjYM97JEeWXno1IIF4GzdCl78ClQnwtt/oeSd1xIjl+WHiYdjPRAjEUK0wibXR7BRMy9Ga4D5LB64aYwW6OEWYOcSubk8Oh0YwWhi4KhnhJGQZF8G7WcIg= 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 1602238912791461.205663263974; Fri, 9 Oct 2020 03:21:52 -0700 (PDT) Received: from localhost ([::1]:46838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kQpX5-00070u-Bm for importer@patchew.org; Fri, 09 Oct 2020 06:21:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42974) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kQpVQ-0005AH-2f for qemu-devel@nongnu.org; Fri, 09 Oct 2020 06:20:08 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:38173) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kQpVM-0001m2-Oq for qemu-devel@nongnu.org; Fri, 09 Oct 2020 06:20:07 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 4C73wW4Qxrz9sTr; 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=1602238795; bh=t2a0wVw8BUpc8Oi6sR1W1FEskafg0a3eFZnFnRt8yNI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Y4DG8FQx90iWMr4j+FS+4wF2SIaQy76d1eboBQzQybht6gmhrfYDbSQq5gtNN/zjW H80wIAMIcAXDrT1m+Uk65UkQPReIini1FfAysaYeur8Go8MO+kjtQkxiufRECsSxg6 CpCTHo2EdnMU9Zxfy83/9cMMhDgc7kGSKaC9my+0= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 03/20] ppc: Add a return value to ppc_set_compat() and ppc_set_compat_all() Date: Fri, 9 Oct 2020 21:19:34 +1100 Message-Id: <20201009101951.1569252-4-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 As recommended in "qapi/error.h", indicate success / failure with a return value. Since ppc_set_compat() is called from a VMState handler, let's make it an int so that it propagates any negative errno returned by kvmppc_set_compat(). Do the same for ppc_set_compat_all() for consistency, even if it isn't called in a context where a negative errno is required on failure. This will allow to simplify error handling in the callers. Signed-off-by: Greg Kurz Message-Id: <20200914123505.612812-3-groug@kaod.org> Reviewed-by: Vladimir Sementsov-Ogievskiy Signed-off-by: David Gibson --- target/ppc/compat.c | 26 +++++++++++++++----------- target/ppc/cpu.h | 4 ++-- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/target/ppc/compat.c b/target/ppc/compat.c index 08aede88dc..e9bec5ffed 100644 --- a/target/ppc/compat.c +++ b/target/ppc/compat.c @@ -158,7 +158,7 @@ bool ppc_type_check_compat(const char *cputype, uint32_= t compat_pvr, return pcc_compat(pcc, compat_pvr, min_compat_pvr, max_compat_pvr); } =20 -void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr, Error **errp) +int ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr, Error **errp) { const CompatInfo *compat =3D compat_by_pvr(compat_pvr); CPUPPCState *env =3D &cpu->env; @@ -169,11 +169,11 @@ void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_= pvr, Error **errp) pcr =3D 0; } else if (!compat) { error_setg(errp, "Unknown compatibility PVR 0x%08"PRIx32, compat_p= vr); - return; + return -EINVAL; } else if (!ppc_check_compat(cpu, compat_pvr, 0, 0)) { error_setg(errp, "Compatibility PVR 0x%08"PRIx32" not valid for CP= U", compat_pvr); - return; + return -EINVAL; } else { pcr =3D compat->pcr; } @@ -185,17 +185,19 @@ void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_= pvr, Error **errp) if (ret < 0) { error_setg_errno(errp, -ret, "Unable to set CPU compatibility mode in KVM"= ); - return; + return ret; } } =20 cpu->compat_pvr =3D compat_pvr; env->spr[SPR_PCR] =3D pcr & pcc->pcr_mask; + return 0; } =20 typedef struct { uint32_t compat_pvr; - Error *err; + Error **errp; + int ret; } SetCompatState; =20 static void do_set_compat(CPUState *cs, run_on_cpu_data arg) @@ -203,26 +205,28 @@ static void do_set_compat(CPUState *cs, run_on_cpu_da= ta arg) PowerPCCPU *cpu =3D POWERPC_CPU(cs); SetCompatState *s =3D arg.host_ptr; =20 - ppc_set_compat(cpu, s->compat_pvr, &s->err); + s->ret =3D ppc_set_compat(cpu, s->compat_pvr, s->errp); } =20 -void ppc_set_compat_all(uint32_t compat_pvr, Error **errp) +int ppc_set_compat_all(uint32_t compat_pvr, Error **errp) { CPUState *cs; =20 CPU_FOREACH(cs) { SetCompatState s =3D { .compat_pvr =3D compat_pvr, - .err =3D NULL, + .errp =3D errp, + .ret =3D 0, }; =20 run_on_cpu(cs, do_set_compat, RUN_ON_CPU_HOST_PTR(&s)); =20 - if (s.err) { - error_propagate(errp, s.err); - return; + if (s.ret < 0) { + return s.ret; } } + + return 0; } =20 int ppc_compat_max_vthreads(PowerPCCPU *cpu) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 766e9c5c26..e8aa185d4f 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1352,10 +1352,10 @@ bool ppc_check_compat(PowerPCCPU *cpu, uint32_t com= pat_pvr, bool ppc_type_check_compat(const char *cputype, uint32_t compat_pvr, uint32_t min_compat_pvr, uint32_t max_compat_pv= r); =20 -void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr, Error **errp); +int ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr, Error **errp); =20 #if !defined(CONFIG_USER_ONLY) -void ppc_set_compat_all(uint32_t compat_pvr, Error **errp); +int ppc_set_compat_all(uint32_t compat_pvr, Error **errp); #endif int ppc_compat_max_vthreads(PowerPCCPU *cpu); void ppc_compat_add_property(Object *obj, const char *name, --=20 2.26.2