uboot/lib/efi_selftest/efi_selftest_reset.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * efi_selftest_reset
   4 *
   5 * Copyright (c) 2020 Heinrich Schuchardt <xypron.glpk@gmx.de>
   6 *
   7 * This test checks the following service at boot time or runtime:
   8 * ResetSystem()
   9 */
  10
  11#include <efi_selftest.h>
  12
  13static struct efi_runtime_services *runtime;
  14
  15/*
  16 * Setup unit test.
  17 *
  18 * @handle:     handle of the loaded image
  19 * @systable:   system table
  20 * Return:      EFI_ST_SUCCESS for success
  21 */
  22static int setup(const efi_handle_t handle,
  23                 const struct efi_system_table *systable)
  24{
  25        runtime = systable->runtime;
  26        return EFI_ST_SUCCESS;
  27}
  28
  29/*
  30 * Execute unit test.
  31 *
  32 * Return:      EFI_ST_SUCCESS for success
  33 */
  34static int execute(void)
  35{
  36        u16 reset_data[] = u"Reset by selftest";
  37
  38        runtime->reset_system(EFI_RESET_COLD, EFI_SUCCESS,
  39                              sizeof(reset_data), reset_data);
  40        efi_st_error("Reset failed.\n");
  41        return EFI_ST_FAILURE;
  42}
  43
  44EFI_UNIT_TEST(reset) = {
  45        .name = "reset system",
  46        .phase = EFI_EXECUTE_BEFORE_BOOTTIME_EXIT,
  47        .setup = setup,
  48        .execute = execute,
  49        .on_request = true,
  50};
  51
  52EFI_UNIT_TEST(resetrt) = {
  53        .name = "reset system runtime",
  54        .phase = EFI_SETUP_BEFORE_BOOTTIME_EXIT,
  55        .setup = setup,
  56        .execute = execute,
  57        .on_request = true,
  58};
  59