From patchwork Sat Jul 6 19:46:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1128528 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="Bg2N/9oo"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45h2Ry6v9Xz9sN4 for ; Sun, 7 Jul 2019 05:52:30 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 783ACC21DD7; Sat, 6 Jul 2019 19:48:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id E5BF5C21E1A; Sat, 6 Jul 2019 19:47:10 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id A52D3C21C51; Sat, 6 Jul 2019 19:47:05 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lists.denx.de (Postfix) with ESMTPS id D9DF6C21C93 for ; Sat, 6 Jul 2019 19:47:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1562442423; bh=Ep2brcAUyvLHd1MjHXo3HehZTVRkk7ru9TGfYs9A4S8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=Bg2N/9ooj7Mz3LqCHE03tCiq9hq0Zk2oxOOTihwsoEKZREmF9ilWKE8NrKNlJcZK9 l5z0Lw427tC3vRPH1H5OgkQ8BQ1kFSNJeOcZr6uUNFiwecHJx0kTBb00G5vNTSxdOC kn16xBYRavJ1qg7OfrtmRrTVCYxIvGjQGUQ1vptY= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([84.118.159.3]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0LeiJ8-1iIIe126FK-00qU0N; Sat, 06 Jul 2019 21:47:03 +0200 From: Heinrich Schuchardt To: Alexander Graf , AKASHI Takahiro Date: Sat, 6 Jul 2019 21:46:28 +0200 Message-Id: <20190706194634.3349-8-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190706194634.3349-1-xypron.glpk@gmx.de> References: <20190706194634.3349-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:2oV1ApPVYJiFXRJFglQadX6jZ8yCIWWglav5mB0jeQv9GTiAwlJ psBY20L07C+wPjyVS8iV6TkrPv0n1qEhLeO6P7JCYTeDlsiVXJ9ezEn+BWwyKhPcoxxmzIY fpEotL5ND+UWAjgzCjL3me7EO+h/He++TIqgSTjsGJLge7zLcHVxdetdn4FXxbWOtyJn2zp 8QAXSg0P5DGVMaDQzENWw== X-UI-Out-Filterresults: notjunk:1; V03:K0:f9PpT4Tpao4=:UNfhC+n5pBtexpq75OPlRV TUN/rO0YCpukA3Jg7iDizP7l/OAvv5tZn2A41BE44x0glHGn6EQ6mM6c2SwPbl+/VAltjFK7g hpP/0Y5Qh0TkFobyMlHXIT2mIt+SuUBnO1DkiMua7pIfU+MySetbpUF95rYpthsqULMn72KOL f002AHD3oQnRzlTHt46x53IFCiZVEUT01kdiVo36jmrdgLj67XWm3MTTwchK813dS7w6AJJdA 5AkXdMFVlY4D0pnU5cMnZq+V/kC7DmxAakFR1Ditb+V3X6fsLZA+D309Ig7ZEABE0eZCmvAGW lslczQxX1uOq1l+fMnep6kSQkKkZOj1obqmUHg+0+WXIQJXvVZalsjYNOcnAEbOPvTcqgB91G rtDTyI22WUy5pLiEZ7PYJGvZ1mtIld110uWzMgzcvdMw98lfSK/hyJ8fBQsX+/7muqT1JSc/i kPt7QfYMIvlOkk4Vh9NYe9Cx2qgdvDVpZBJ9KqwAo9Pj//VxFzvhzUeyHs4tjGB18bNy7hiYp BrjIVDWZrTtUNRGRhpplzx1T5/cvH0m+ZhNE39ibpjCqPcqKs0qnmH7+uFltPQlZh+onUhXQO oMUIHer/lm1Kqmh4QUkcbIwuMpYZMoZ9euVp+rUbkDQqUxhDalV+ux+E+4Pb+i+wlcl+CDIiD iI1WXoGAh/EbKs8ZGBvzOJ/GtfoKM9VeLZ8zfTqsODV5aXE48HtkgJ5P47leekKxTnzLq4rhR iMQvMnf3Apw+OUvwc5iHZlvCftFVDZXv8k+6ipf/rUZLlvNByO7P1C15m1DX2TcRNAkmwPpkQ WwO+9nL/EWXc45Ppu6vme0cQet+4hbboZoQ04WXQZeT9Z9OumIuk/Ra4K6S4W5LovG0rwIjJz xX7TmDQw2cz/BoBhEvtwGVXZ2sVuaQgXa0g+dStrkSVkSfHKTzCRxo+GLssnIS35twibVmBDt 1h2670BW3FcWwuGn4cEy2q+S3iI3vwUoOIhJ74BY5B97sPx7UVt55+rTLvnJufbajZvGckBgf vGiiAw6Mp/ZD1OOkwuur25LXrH6BRCKqWKwvdDtHFxuTqk9z6U/C4z8Y+ViZFdc2fyHE1Q6EV ofBVmI3RDmU+Xc= Cc: u-boot@lists.denx.de, Heinrich Schuchardt Subject: [U-Boot] [PATCH v3 07/13] efi_selftest: test variable services at runtime X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Provide a unit test for the variable services at runtime. Currently we expect EFI_UNSUPPORTED to be returned as the runtime implementation is still missing. Signed-off-by: Heinrich Schuchardt --- v3 no change v2 rebase patch --- lib/efi_selftest/Makefile | 1 + .../efi_selftest_variables_runtime.c | 94 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 lib/efi_selftest/efi_selftest_variables_runtime.c -- 2.20.1 diff --git a/lib/efi_selftest/Makefile b/lib/efi_selftest/Makefile index 3bebd0f573..88678755cc 100644 --- a/lib/efi_selftest/Makefile +++ b/lib/efi_selftest/Makefile @@ -35,6 +35,7 @@ efi_selftest_textoutput.o \ efi_selftest_tpl.o \ efi_selftest_util.o \ efi_selftest_variables.o \ +efi_selftest_variables_runtime.o \ efi_selftest_watchdog.o obj-$(CONFIG_EFI_DEVICE_PATH_TO_TEXT) += efi_selftest_devicepath.o diff --git a/lib/efi_selftest/efi_selftest_variables_runtime.c b/lib/efi_selftest/efi_selftest_variables_runtime.c new file mode 100644 index 0000000000..b3b40ad2cf --- /dev/null +++ b/lib/efi_selftest/efi_selftest_variables_runtime.c @@ -0,0 +1,94 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * efi_selftest_variables_runtime + * + * Copyright (c) 2019 Heinrich Schuchardt + * + * This unit test checks the runtime services for variables after + * ExitBootServices(): + * GetVariable, GetNextVariableName, SetVariable, QueryVariableInfo. + */ + +#include + +#define EFI_ST_MAX_DATA_SIZE 16 +#define EFI_ST_MAX_VARNAME_SIZE 40 + +static struct efi_boot_services *boottime; +static struct efi_runtime_services *runtime; +static const efi_guid_t guid_vendor0 = + EFI_GUID(0x67029eb5, 0x0af2, 0xf6b1, + 0xda, 0x53, 0xfc, 0xb5, 0x66, 0xdd, 0x1c, 0xe6); + +/* + * Setup unit test. + * + * @handle handle of the loaded image + * @systable system table + */ +static int setup(const efi_handle_t img_handle, + const struct efi_system_table *systable) +{ + boottime = systable->boottime; + runtime = systable->runtime; + + return EFI_ST_SUCCESS; +} + +/** + * execute() - execute unit test + * + * As runtime support is not implmented expect EFI_UNSUPPORTED to be returned. + */ +static int execute(void) +{ + efi_status_t ret; + efi_uintn_t len; + u32 attr; + u8 v[16] = {0x5d, 0xd1, 0x5e, 0x51, 0x5a, 0x05, 0xc7, 0x0c, + 0x35, 0x4a, 0xae, 0x87, 0xa5, 0xdf, 0x0f, 0x65,}; + u8 data[EFI_ST_MAX_DATA_SIZE]; + u16 varname[EFI_ST_MAX_VARNAME_SIZE]; + efi_guid_t guid; + u64 max_storage, rem_storage, max_size; + + ret = runtime->query_variable_info(EFI_VARIABLE_BOOTSERVICE_ACCESS, + &max_storage, &rem_storage, + &max_size); + if (ret != EFI_UNSUPPORTED) { + efi_st_error("QueryVariableInfo failed\n"); + return EFI_ST_FAILURE; + } + + ret = runtime->set_variable(L"efi_st_var0", &guid_vendor0, + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_RUNTIME_ACCESS, + 3, v + 4); + if (ret != EFI_UNSUPPORTED) { + efi_st_error("SetVariable failed\n"); + return EFI_ST_FAILURE; + } + len = 3; + ret = runtime->get_variable(L"efi_st_var0", &guid_vendor0, + &attr, &len, data); + if (ret != EFI_UNSUPPORTED) { + efi_st_error("GetVariable failed\n"); + return EFI_ST_FAILURE; + } + memset(&guid, 0, 16); + *varname = 0; + ret = runtime->get_next_variable_name(&len, varname, &guid); + if (ret != EFI_UNSUPPORTED) { + efi_st_error("GetNextVariableName failed\n"); + return EFI_ST_FAILURE; + } + + return EFI_ST_SUCCESS; +} + +EFI_UNIT_TEST(variables_run) = { + .name = "variables at runtime", + .phase = EFI_SETUP_BEFORE_BOOTTIME_EXIT, + .setup = setup, + .execute = execute, +};