From nobody Mon Nov 25 04:59:05 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1718980388; cv=none; d=zohomail.com; s=zohoarc; b=lWubmgik7JNmt1Qcd3hXXe5IjB8U89ZZxPfCpf8d3zubx4CUyHhSeMQohehRb9UTW1V3DC7SsdwSHQfkFyqPoM5xCxMYe4JsRE7b1uaDcKy02tAreWVMqazJSodjrCn2kU1723NLd86FottvmhqN9TJ1tKGPP08e8k3q0lB8JVU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1718980388; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1T+OYuIFZEIYf+KDlnxJ7EzdpiZS5G5Az45HeXIogtg=; b=ng8GbLdx0M/HCe9pizq4pXSXkB/Oqo4JXCIhMLnIW5un7tCkeJrzRuivv1FTydsT20B5ov0a5jkYlwZLOqvJZ72iSPHnO0QoDup0VTTonrgHleguS4hs5KH//XqtXCmae6zI3sEyt8OEkqqYkNvDUtuUSKBYCo9v+dKjTwzQCrY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 171898038833023.01336404234189; Fri, 21 Jun 2024 07:33:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sKfH3-0001CE-Cl; Fri, 21 Jun 2024 10:29:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sKfH0-0001Ac-S3 for qemu-devel@nongnu.org; Fri, 21 Jun 2024 10:29:55 -0400 Received: from smtp-out2.suse.de ([2a07:de40:b251:101:10:150:64:2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sKfGy-0005gE-QN for qemu-devel@nongnu.org; Fri, 21 Jun 2024 10:29:54 -0400 Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 9EAA61FB82; Fri, 21 Jun 2024 14:29:51 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id E2A2413ACD; Fri, 21 Jun 2024 14:29:50 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 4JhRNV6OdWbwKQAAD6G6ig (envelope-from ); Fri, 21 Jun 2024 14:29:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1718980191; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1T+OYuIFZEIYf+KDlnxJ7EzdpiZS5G5Az45HeXIogtg=; b=g7/Aj1kgAnd88pr/QfflrOyDby0nxz4SgisK0frcUodk2KzdDM6kazLWtVu5i7dlYStrbb nbXJjCl56S9wOnHpOYdnuIh1Kzw8Lj8rGyLF3Q9lfG2wTh4Dem+COb+gMNR1poDVGM809d vPbGnYFbFh/XbpgCurQdzLxSjkWliRE= Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1718980191; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1T+OYuIFZEIYf+KDlnxJ7EzdpiZS5G5Az45HeXIogtg=; b=g7/Aj1kgAnd88pr/QfflrOyDby0nxz4SgisK0frcUodk2KzdDM6kazLWtVu5i7dlYStrbb nbXJjCl56S9wOnHpOYdnuIh1Kzw8Lj8rGyLF3Q9lfG2wTh4Dem+COb+gMNR1poDVGM809d vPbGnYFbFh/XbpgCurQdzLxSjkWliRE= From: Roy Hopkins To: qemu-devel@nongnu.org Cc: Roy Hopkins , Paolo Bonzini , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Stefano Garzarella , Marcelo Tosatti , "Michael S . Tsirkin" , Cornelia Huck , Marcel Apfelbaum , Sergio Lopez , Eduardo Habkost , Alistair Francis , Peter Xu , David Hildenbrand , Igor Mammedov , Tom Lendacky , Michael Roth , Ani Sinha , =?UTF-8?q?J=C3=B6rg=20Roedel?= Subject: [PATCH v3 06/15] sev: Update launch_update_data functions to use Error handling Date: Fri, 21 Jun 2024 15:29:09 +0100 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -1.30 X-Spamd-Result: default: False [-1.30 / 50.00]; BAYES_HAM(-3.00)[100.00%]; SUSPICIOUS_RECIPS(1.50)[]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; TAGGED_RCPT(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:email]; RCPT_COUNT_TWELVE(0.00)[19]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; FREEMAIL_CC(0.00)[suse.com,redhat.com,gmail.com,habkost.net,alistair23.me,amd.com]; FROM_HAS_DN(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_TLS_ALL(0.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; R_RATELIMIT(0.00)[to_ip_from(RLm8d31jk6dhzwhww9bgqrb1jt)]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; FREEMAIL_ENVRCPT(0.00)[gmail.com] 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=2a07:de40:b251:101:10:150:64:2; envelope-from=roy.hopkins@suse.com; helo=smtp-out2.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1718980389592100004 Content-Type: text/plain; charset="utf-8" The class function and implementations for updating launch data return a code in case of error. In some cases an error message is generated and in other cases, just the error return value is used. This small refactor adds an 'Error **errp' parameter to all functions which consistently set an error condition if a non-zero value is returned. Signed-off-by: Roy Hopkins --- target/i386/sev.c | 67 +++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/target/i386/sev.c b/target/i386/sev.c index 30b83f1d77..1900c3d9b4 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -121,7 +121,8 @@ struct SevCommonStateClass { Error **errp); int (*launch_start)(SevCommonState *sev_common); void (*launch_finish)(SevCommonState *sev_common); - int (*launch_update_data)(SevCommonState *sev_common, hwaddr gpa, uint= 8_t *ptr, uint64_t len); + int (*launch_update_data)(SevCommonState *sev_common, hwaddr gpa, + uint8_t *ptr, uint64_t len, Error **errp); int (*kvm_init)(ConfidentialGuestSupport *cgs, Error **errp); }; =20 @@ -942,14 +943,17 @@ out: return ret; } =20 -static int -sev_launch_update_data(SevCommonState *sev_common, hwaddr gpa, uint8_t *ad= dr, uint64_t len) +static int sev_launch_update_data(SevCommonState *sev_common, hwaddr gpa, + uint8_t *addr, uint64_t len, Error **err= p) { int ret, fw_error; struct kvm_sev_launch_update_data update; =20 if (!addr || !len) { - return 1; + error_setg(errp, + "%s: Invalid parameters provided for updating launch da= ta.", + __func__); + return -1; } =20 update.uaddr =3D (uintptr_t)addr; @@ -958,8 +962,8 @@ sev_launch_update_data(SevCommonState *sev_common, hwad= dr gpa, uint8_t *addr, ui ret =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_LAUNCH_UPDATE_DATA, &update, &fw_error); if (ret) { - error_report("%s: LAUNCH_UPDATE ret=3D%d fw_error=3D%d '%s'", - __func__, ret, fw_error, fw_error_to_str(fw_error)); + error_setg(errp, "%s: LAUNCH_UPDATE ret=3D%d fw_error=3D%d '%s'", = __func__, + ret, fw_error, fw_error_to_str(fw_error)); } =20 return ret; @@ -1087,9 +1091,8 @@ sev_launch_finish(SevCommonState *sev_common) migrate_add_blocker(&sev_mig_blocker, &error_fatal); } =20 -static int -snp_launch_update_data(uint64_t gpa, void *hva, - uint32_t len, int type) +static int snp_launch_update_data(uint64_t gpa, void *hva, uint32_t len, + int type, Error **errp) { SevLaunchUpdateData *data; =20 @@ -1104,13 +1107,12 @@ snp_launch_update_data(uint64_t gpa, void *hva, return 0; } =20 -static int -sev_snp_launch_update_data(SevCommonState *sev_common, hwaddr gpa, - uint8_t *ptr, uint64_t len) +static int sev_snp_launch_update_data(SevCommonState *sev_common, hwaddr g= pa, + uint8_t *ptr, uint64_t len, Error **= errp) { - int ret =3D snp_launch_update_data(gpa, ptr, len, - KVM_SEV_SNP_PAGE_TYPE_NORMAL); - return ret; + int ret =3D snp_launch_update_data(gpa, ptr, len, + KVM_SEV_SNP_PAGE_TYPE_NORMAL, errp); + return ret; } =20 static int @@ -1162,8 +1164,8 @@ sev_snp_cpuid_info_fill(SnpCpuidInfo *snp_cpuid_info, return 0; } =20 -static int -snp_launch_update_cpuid(uint32_t cpuid_addr, void *hva, uint32_t cpuid_len) +static int snp_launch_update_cpuid(uint32_t cpuid_addr, void *hva, + uint32_t cpuid_len, Error **errp) { KvmCpuidInfo kvm_cpuid_info =3D {0}; SnpCpuidInfo snp_cpuid_info; @@ -1180,26 +1182,26 @@ snp_launch_update_cpuid(uint32_t cpuid_addr, void *= hva, uint32_t cpuid_len) } while (ret =3D=3D -E2BIG); =20 if (ret) { - error_report("SEV-SNP: unable to query CPUID values for CPU: '%s'", - strerror(-ret)); - return 1; + error_setg(errp, "SEV-SNP: unable to query CPUID values for CPU: '= %s'", + strerror(-ret)); + return -1; } =20 ret =3D sev_snp_cpuid_info_fill(&snp_cpuid_info, &kvm_cpuid_info); if (ret) { - error_report("SEV-SNP: failed to generate CPUID table information"= ); - return 1; + error_setg(errp, "SEV-SNP: failed to generate CPUID table informat= ion"); + return -1; } =20 memcpy(hva, &snp_cpuid_info, sizeof(snp_cpuid_info)); =20 return snp_launch_update_data(cpuid_addr, hva, cpuid_len, - KVM_SEV_SNP_PAGE_TYPE_CPUID); + KVM_SEV_SNP_PAGE_TYPE_CPUID, errp); } =20 -static int -snp_launch_update_kernel_hashes(SevSnpGuestState *sev_snp, uint32_t addr, - void *hva, uint32_t len) +static int snp_launch_update_kernel_hashes(SevSnpGuestState *sev_snp, + uint32_t addr, void *hva, + uint32_t len, Error **errp) { int type =3D KVM_SEV_SNP_PAGE_TYPE_ZERO; if (sev_snp->parent_obj.kernel_hashes) { @@ -1211,7 +1213,7 @@ snp_launch_update_kernel_hashes(SevSnpGuestState *sev= _snp, uint32_t addr, sizeof(*sev_snp->kernel_hashes_data)); type =3D KVM_SEV_SNP_PAGE_TYPE_NORMAL; } - return snp_launch_update_data(addr, hva, len, type); + return snp_launch_update_data(addr, hva, len, type, errp); } =20 static int @@ -1249,12 +1251,14 @@ snp_populate_metadata_pages(SevSnpGuestState *sev_s= np, } =20 if (type =3D=3D KVM_SEV_SNP_PAGE_TYPE_CPUID) { - ret =3D snp_launch_update_cpuid(desc->base, hva, desc->len); + ret =3D snp_launch_update_cpuid(desc->base, hva, desc->len, + &error_fatal); } else if (desc->type =3D=3D SEV_DESC_TYPE_SNP_KERNEL_HASHES) { ret =3D snp_launch_update_kernel_hashes(sev_snp, desc->base, h= va, - desc->len); + desc->len, &error_fatal); } else { - ret =3D snp_launch_update_data(desc->base, hva, desc->len, typ= e); + ret =3D snp_launch_update_data(desc->base, hva, desc->len, typ= e, + &error_fatal); } =20 if (ret) { @@ -1541,9 +1545,8 @@ sev_encrypt_flash(hwaddr gpa, uint8_t *ptr, uint64_t = len, Error **errp) if (sev_check_state(sev_common, SEV_STATE_LAUNCH_UPDATE)) { int ret; =20 - ret =3D klass->launch_update_data(sev_common, gpa, ptr, len); + ret =3D klass->launch_update_data(sev_common, gpa, ptr, len, errp); if (ret < 0) { - error_setg(errp, "SEV: Failed to encrypt pflash rom"); return ret; } } --=20 2.43.0