From patchwork Tue Mar 26 10:45:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Storm, Christian" X-Patchwork-Id: 1065418 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::540; helo=mail-ed1-x540.google.com; envelope-from=swupdate+bncbdd6bwv65qpbbguf5dsakgqe2jmugra@googlegroups.com; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=siemens.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.b="Cnb/U74+"; dkim-atps=neutral Received: from mail-ed1-x540.google.com (mail-ed1-x540.google.com [IPv6:2a00:1450:4864:20::540]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 44T7780Qjqz9sSR for ; Tue, 26 Mar 2019 21:44:49 +1100 (AEDT) Received: by mail-ed1-x540.google.com with SMTP id 41sf3747311edq.0 for ; Tue, 26 Mar 2019 03:44:49 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1553597083; cv=pass; d=google.com; s=arc-20160816; b=Sh6Q72/OtHy2L4xuvnJ7d0BhhPMhvuQwz5h4FSAICQuZ5QCU1LlcTAwD1Tfp3w48yH 2Vo38dECaBWg7JNQrcrFZSfo1l2jduRjO2DTFg51rcQaLLFHQmXqSiW0oqNP+jI3NLyE XmpI0OTbwurm3DRa30T4TEc92s4ZgFTx4Xv5hmE3uJ73X7VY6VPz2Qun2nF+mp2q2SR4 5H3CO6OgR/O09JmrOBqKHmBzPmhPWL6rp+qfm09cggcN8/lWu0MQMuUHJsKi1tdleAbo /8JF4TyCHQdBJlu5N4s9VHINIRh39uAnz7Ya5ic4W8DGulQaVhP3yWkYul6OkWqP0Pj/ g6hg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:message-id:date :subject:cc:to:from:sender:dkim-signature; bh=Ufzm1N0UyH/nYGo9Lhjr9gdfykIwDFDJYzt3l9L1tE4=; b=RLjT72RHwGUc77GrgiWYdfuQQCSxQtOyokkzhLCpGrsxxHm4pDWqe9gUBScyRD91ry b/QVXLcB482jmHzJ9BjXrAezf1of+dKmGK5VDH2EXaSjazKaDcPSdTg930UrezlPKWdF ZwYVVki+Nt5uu8nIzD+61mIUkq1FAcxqIc8tim2YmrrDbl6F/X6VzuqeiRs9XphySlpH dplEVEDCSz+Fx0e9QRUP/StAwZDwlMU4VMNKHjXUVuuwcTVd77+Lu1EzdtX0mtDhDSPv ZA7SwpGbOHdtXcuyi9NaBmLsltyMFWAIE+g5u1CgN6E4/N5c3A560owI9rHtiHzB3saK QKkA== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=christian.storm@siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=Ufzm1N0UyH/nYGo9Lhjr9gdfykIwDFDJYzt3l9L1tE4=; b=Cnb/U74+s13lH2CHtJdACRCJek52y0OOxUZiHEZa1kGmA0CfK7pZRTqM/UpIl/YLPH UymI0opSKZ4ltp3/O2sz2Zwbbdede7b57s9XFTMQUz0Htsos9uv8DRXYNQVOedttFUzk n5ZgVlrmBjqdr7F1Tk99ItPDiAvrnnfnToaOetO0m9JANAJEpWOZQrYxPJ+WrArrLhku utoRPVHGa8Ne9NZiLu0bnxu2jYGYRdOX6OMW1fv6QSE0+andGTQZX7itqT1xLboYtu86 R1AWt02WSeFblRvhIpMWtct8FyXiwCPPdI0+ZrKwK7b+NBfRbknt5LZGa9W8YdG6uUYm +S8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:x-spam-checked-in-group:list-post :list-help:list-archive:list-subscribe:list-unsubscribe; bh=Ufzm1N0UyH/nYGo9Lhjr9gdfykIwDFDJYzt3l9L1tE4=; b=QSHdntkU9A60Ibo6Qm8nEXAZuZQ7taGvN3ppKGI5lVvkd8hgD3GZB7rW6vf9SidWOG E9shdx19qlWo0u7f59k8CkuRGuIUDr0v9DAr91E3Jnj86e8eCIfvjrojclCYFR4H5fI1 zR5tMgKsJo8c9LHsghJ6OXrxQJpP8bVaamki8cMPgjHQlIPDL0g56XGZSdWOBd9S1zlO B6n2JWCGWzqEMkOZp7pTD6NC4LP4o1jlfFvPhsj8tu8AovbeMo81t1wWLiJUnU9R+Y7B X714vpQZSd+e8smZnL+4guKQXijN4UUF3JTyyeueFBwFs5vlNIsIUsHBn8jSZNWE4oNH 2gRQ== Sender: swupdate@googlegroups.com X-Gm-Message-State: APjAAAWpyUjL7PTqTvTR91z5b2yeWXbAB4RA+Ibr/un08t9R364dzHbZ q2YL0EC//yR8W2XmOtqQgUg= X-Google-Smtp-Source: APXvYqxrGPypazf+7ox7CmP/7CFSn8HpD60iRw0vB8HMmnyzJ9PjlktexTx1V2D/sycqZ2EczgpzKA== X-Received: by 2002:a17:906:a42:: with SMTP id x2mr17358942ejf.126.1553597082958; Tue, 26 Mar 2019 03:44:42 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a17:906:18b2:: with SMTP id c18ls3589394ejf.1.gmail; Tue, 26 Mar 2019 03:44:42 -0700 (PDT) X-Received: by 2002:a17:906:ca1a:: with SMTP id jt26mr399083ejb.1.1553597082476; Tue, 26 Mar 2019 03:44:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553597082; cv=none; d=google.com; s=arc-20160816; b=Ue35CTiolXiOqq4DpI12FdFfwtH5XXNWVzECin2nSDbyyUAuCJYNKKq1OUnzOjGiil ygXHD18Tip90itoo8wOpmegApAjYg/gTUPKiOfXS3wwMNJ4hrfMe+x68dUE40hrTKfBr aw3mN9mEMPscxUikb7Aj2RVe4CzKfjBWOH+F3qOfGopvaST4P0PXS/h6/dLooU3NX1P5 u3h5MMJb1L+qvJOr3kALRssZ8BdGFTXXTzELiAtZdNnUhjFpB3p/zAUQq19JYPu07cDZ A/3egXbfw60EzetPLu42F7p75MODFVVI86wuk82+uB/cYHkW7ZmXmzBcgk5GIqgyTW5V PDVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from; bh=IryB/AsMe7WvUm8sG8y118MPonBOBT9f1B3KQ0H5wIg=; b=v+s86lDI4Z+G+y0zOxs7y2S32UL7NYa1fjIqR8H3zCPvxSUg2QyJgyopU+h/ZHxRfp FFA2kk8IeOsx1dsZgVgsDg6WN+9VVUY6UkDiVamQpMOoW95CT/hmVEtFjnYdxPurKK50 6iusYWpjTGMh9LkeOs2O+VY151wCYqbRU8MpMMwktIW1gXViw7qHoUSI0Zd/e46O+r0s GV6s7nodZ3QG/RwpR2KRwYVH3SAlkeQXJgxiusR/c57bVN4dzKmMA8vr0I5IAEaraI5j TkEAoQ/KrR3BYYxmZ/b9kRF/Z7YVTcwwfapUvGks9e4BrwJ2qA1cPrSi4PNOO52C994I tiTA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=christian.storm@siemens.com Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id jt16si553239ejb.0.2019.03.26.03.44.42 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Mar 2019 03:44:42 -0700 (PDT) Received-SPF: pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.28 as permitted sender) client-ip=192.35.17.28; Received: from mail1.siemens.de (mail1.siemens.de [139.23.33.14]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id x2QAifmN014064 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 26 Mar 2019 11:44:41 +0100 Received: from MD1ZFJVC.ad001.siemens.net ([139.25.69.156]) by mail1.siemens.de (8.15.2/8.15.2) with ESMTP id x2QAifmo007257; Tue, 26 Mar 2019 11:44:41 +0100 From: Christian Storm To: swupdate@googlegroups.com Cc: Christian Storm Subject: [swupdate] [PATCH] bootloader: make transaction marker configurable Date: Tue, 26 Mar 2019 11:45:55 +0100 Message-Id: <20190326104555.4710-1-christian.storm@siemens.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 X-Original-Sender: christian.storm@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=christian.storm@siemens.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Currently, SWUpdate sets the bootloader environment variable "recovery_status" to "in_progress" prior to an operation and either unsets or sets it to "failed" after the operation so that SWUpdate-external tools may use this information to take according measures. Make setting this bootloader environment variable configurable, defaulting to "yes". Signed-off-by: Christian Storm --- Kconfig | 11 +++++++++++ core/swupdate.c | 6 ++++++ corelib/stream_interface.c | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/Kconfig b/Kconfig index 302166e..c1404c5 100644 --- a/Kconfig +++ b/Kconfig @@ -102,6 +102,17 @@ config SCRIPTS in the image. For security reason, this option can be switched off. +config BOOTLOADER_TRANSACTION_MARKER + bool "enable bootloader transaction marker" + default y + help + Enabling this option sets the bootloader environment + variable "recovery_status" to "in_progress" prior to + an operation and either unsets or sets it to "failed" + after the operation. + SWUpdate-external tools (e.g., bootloader scripts) + may use this information to take according measures. + config HW_COMPATIBILITY bool "check for hardware / software compatibility" default n diff --git a/core/swupdate.c b/core/swupdate.c index 476358b..e9a211a 100644 --- a/core/swupdate.c +++ b/core/swupdate.c @@ -369,7 +369,9 @@ static int install_from_file(char *fname, int check) /* * Set "recovery_status" as begin of the transaction" */ +#ifdef CONFIG_BOOTLOADER_TRANSACTION_MARKER bootloader_env_set(BOOTVAR_TRANSACTION, "in_progress"); +#endif ret = install_images(&swcfg, fdsw, 1); @@ -382,7 +384,9 @@ static int install_from_file(char *fname, int check) return EXIT_FAILURE; } +#ifdef CONFIG_BOOTLOADER_TRANSACTION_MARKER bootloader_env_unset(BOOTVAR_TRANSACTION); +#endif fprintf(stdout, "Software updated successfully\n"); fprintf(stdout, "Please reboot the device to start the new software\n"); @@ -969,7 +973,9 @@ int main(int argc, char **argv) result = install_from_file(fname, opt_c); switch (result) { case EXIT_FAILURE: +#ifdef CONFIG_BOOTLOADER_TRANSACTION_MARKER bootloader_env_set(BOOTVAR_TRANSACTION, "failed"); +#endif break; case EXIT_SUCCESS: notify(SUCCESS, 0, INFOLEVEL, NULL); diff --git a/corelib/stream_interface.c b/corelib/stream_interface.c index 1261958..d7774bb 100644 --- a/corelib/stream_interface.c +++ b/corelib/stream_interface.c @@ -237,7 +237,9 @@ static int extract_files(int fd, struct swupdate_cfg *software) * just once */ if (!installed_directly) { +#ifdef CONFIG_BOOTLOADER_TRANSACTION_MARKER bootloader_env_set(BOOTVAR_TRANSACTION, "in_progress"); +#endif installed_directly = true; } @@ -393,12 +395,16 @@ void *network_initializer(void *data) * must be successful. Set we have * initiated an update */ +#ifdef CONFIG_BOOTLOADER_TRANSACTION_MARKER bootloader_env_set(BOOTVAR_TRANSACTION, "in_progress"); +#endif notify(RUN, RECOVERY_NO_ERROR, INFOLEVEL, "Installation in progress"); ret = install_images(software, 0, 0); if (ret != 0) { +#ifdef CONFIG_BOOTLOADER_TRANSACTION_MARKER bootloader_env_set(BOOTVAR_TRANSACTION, "failed"); +#endif notify(FAILURE, RECOVERY_ERROR, ERRORLEVEL, "Installation failed !"); inst.last_install = FAILURE; @@ -407,7 +413,9 @@ void *network_initializer(void *data) * Clear the recovery variable to indicate to bootloader * that it is not required to start recovery again */ +#ifdef CONFIG_BOOTLOADER_TRANSACTION_MARKER bootloader_env_unset(BOOTVAR_TRANSACTION); +#endif notify(SUCCESS, RECOVERY_NO_ERROR, INFOLEVEL, "SWUPDATE successful !"); inst.last_install = SUCCESS; }