From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::22f; helo=mail-wm0-x22f.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x22f.google.com (mail-wm0-x22f.google.com [IPv6:2a00:1450:400c:c09::22f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 24BFB21217973 for ; Tue, 12 Jun 2018 04:23:38 -0700 (PDT) Received: by mail-wm0-x22f.google.com with SMTP id e16-v6so19894893wmd.0 for ; Tue, 12 Jun 2018 04:23:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Stm2acX9qh4MQfaImdjYghbtDsBG3KO7q9Fu4ANawX0=; b=Aq7aEvsPpVR9+6UAuMCP1QDR+saBw51Ciz7Ow97bVlBjcJywcfDNGMYUjF8cYZ+Mrd Uw5hxQPSAKGu84Hj08yMXa+OTew9T8H2sK6pIJ96rrHLUYrlfxdPqBAsSzwKNniYFdi8 Ui0xFFXr0huDGaXBGqnxJGwAbReNJEFIEh8qA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Stm2acX9qh4MQfaImdjYghbtDsBG3KO7q9Fu4ANawX0=; b=NhTdNsoBayIvuTFHLfJadeYvKR/shgJWcRVfLq76Va0z11SdFsXW8iGZ4Ulwg5Faob v9KUBi93u51chI1xjyrOnRy4JV6tMbj+HYoJYpBi7nuy16h8ZQy9mKDhC15Ok3jXRuIw /NaffJV0G3TzLhZFcojBsHLMWB84Hfi+k3G/wlGsruHlUkt9xaM7esukMGpClF3nCujE zDLiRyVqASGHwnuVikBZQG3STTxtWbUVWsJ2KTSYilHMahxqOE2uXf2OBotIEhpDXqy+ VQL/KIjCFD9KkG8GApabW9op/J/nbccmoSaQmA8Uu3eD1iGfUBGWl3avoI/JVnBbJHoR KwNg== X-Gm-Message-State: APt69E2ZolCz2GIrMGl61T2rjRslmB1Cq3jMLbfk3aWxoCOZikEQdcl7 N8hAvirafGhg7mJfUn/AJQqj3Fqw3SI= X-Google-Smtp-Source: ADUXVKJ0tD7yfY1m9iYXjQPCG1DeLKDTon5/77Zc+ulPDfmAJpkhpgPLF5yvk6m0I++0sT9baR04oA== X-Received: by 2002:a1c:7153:: with SMTP id m80-v6mr1759509wmc.7.1528802616372; Tue, 12 Jun 2018 04:23:36 -0700 (PDT) Received: from dogfood.home ([2a01:cb1d:112:6f00:3c84:18ae:27f2:d03]) by smtp.gmail.com with ESMTPSA id o16-v6sm1177202wrp.8.2018.06.12.04.23.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Jun 2018 04:23:35 -0700 (PDT) From: Ard Biesheuvel To: edk2-devel@lists.01.org Cc: leif.lindholm@linaro.org, star.zeng@intel.com, jiewen.yao@intel.com, michael.d.kinney@intel.com, Ard Biesheuvel Date: Tue, 12 Jun 2018 13:23:27 +0200 Message-Id: <20180612112329.664-3-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180612112329.664-1-ard.biesheuvel@linaro.org> References: <20180612112329.664-1-ard.biesheuvel@linaro.org> Subject: [PATCH v3 2/4] MdeModulePkg/DxeCapsuleLibFmp: pass progress callback only if it works X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jun 2018 11:23:38 -0000 If the first call to UpdateImageProgress() fails, there is no point in passing a pointer to it to Fmp->SetImage(), since it is highly unlikely to succeed on any subsequent calls. This permits the FMP implementation to fall back to an alternate means of providing feedback to the user, e.g., via the console. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c index f0226eafa576..ab41df0eb0a4 100644 --- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c +++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c @@ -841,6 +841,7 @@ SetFmpImageData ( UINT8 *Image; VOID *VendorCode; CHAR16 *AbortReason; + EFI_FIRMWARE_MANAGEMENT_UPDATE_IMAGE_PROGRESS ProgressCallback; Status = gBS->HandleProtocol( Handle, @@ -892,7 +893,11 @@ SetFmpImageData ( // // Before calling SetImage(), reset the progress bar to 0% // - UpdateImageProgress (0); + ProgressCallback = UpdateImageProgress; + Status = UpdateImageProgress (0); + if (EFI_ERROR (Status)) { + ProgressCallback = NULL; + } Status = Fmp->SetImage( Fmp, @@ -900,13 +905,15 @@ SetFmpImageData ( Image, // Image ImageHeader->UpdateImageSize, // ImageSize VendorCode, // VendorCode - UpdateImageProgress, // Progress + ProgressCallback, // Progress &AbortReason // AbortReason ); // // Set the progress bar to 100% after returning from SetImage() // - UpdateImageProgress (100); + if (ProgressCallback != NULL) { + UpdateImageProgress (100); + } DEBUG((DEBUG_INFO, "Fmp->SetImage - %r\n", Status)); if (AbortReason != NULL) { -- 2.17.1