summaryrefslogtreecommitdiff
path: root/firmware/lib/vboot_api_kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/vboot_api_kernel.c')
-rw-r--r--firmware/lib/vboot_api_kernel.c123
1 files changed, 0 insertions, 123 deletions
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
deleted file mode 100644
index 0fdc2d33..00000000
--- a/firmware/lib/vboot_api_kernel.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * High-level firmware wrapper API - entry points for kernel selection
- */
-
-#include "2api.h"
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2rsa.h"
-#include "2secdata.h"
-#include "2sysincludes.h"
-#include "load_kernel_fw.h"
-#include "vboot_api.h"
-#include "vboot_struct.h"
-
-static int is_valid_disk(VbDiskInfo *info, uint32_t disk_flags)
-{
- return info->bytes_per_lba >= 512 &&
- (info->bytes_per_lba & (info->bytes_per_lba - 1)) == 0 &&
- info->lba_count >= 16 &&
- (info->flags & disk_flags & VB_DISK_FLAG_SELECT_MASK) &&
- ((info->flags & VB_DISK_FLAG_SELECT_MASK) &
- ((info->flags & VB_DISK_FLAG_SELECT_MASK) - 1)) == 0;
-}
-
-static vb2_error_t VbTryLoadKernelImpl(struct vb2_context *ctx,
- uint32_t disk_flags, int minios,
- uint32_t minios_flags,
- VbSelectAndLoadKernelParams *kparams)
-{
- vb2_error_t rv = VB2_ERROR_LK_NO_DISK_FOUND;
- VbDiskInfo* disk_info = NULL;
- uint32_t disk_count = 0;
- uint32_t i;
- vb2_error_t new_rv;
-
- VB2_ASSERT(kparams);
- kparams->disk_handle = NULL;
-
- /* Find disks */
- if (VB2_SUCCESS != VbExDiskGetInfo(&disk_info, &disk_count, disk_flags))
- disk_count = 0;
-
- /* Loop over disks */
- for (i = 0; i < disk_count; i++) {
- VB2_DEBUG("trying disk %d\n", (int)i);
-
- if (!is_valid_disk(&disk_info[i], disk_flags)) {
- VB2_DEBUG(" skipping: bytes_per_lba=%" PRIu64
- " lba_count=%" PRIu64 " flags=%#x\n",
- disk_info[i].bytes_per_lba,
- disk_info[i].lba_count,
- disk_info[i].flags);
- continue;
- }
- kparams->disk_handle = disk_info[i].handle;
-
- if (minios) {
- new_rv = LoadMiniOsKernel(ctx, kparams,
- &disk_info[i], minios_flags);
- VB2_DEBUG("LoadMiniOsKernel() = %#x\n", new_rv);
- } else {
- new_rv = LoadKernel(ctx, kparams, &disk_info[i]);
- VB2_DEBUG("LoadKernel() = %#x\n", new_rv);
- }
-
- /* Stop now if we found a kernel. */
- if (VB2_SUCCESS == new_rv) {
- VbExDiskFreeInfo(disk_info, disk_info[i].handle);
- return VB2_SUCCESS;
- }
-
- /* Don't update error if we already have a more specific one. */
- if (VB2_ERROR_LK_INVALID_KERNEL_FOUND != rv)
- rv = new_rv;
- }
-
- /* If we drop out of the loop, we didn't find any usable kernel. */
- if (!(ctx->flags & VB2_CONTEXT_RECOVERY_MODE) &&
- !(ctx->flags & VB2_CONTEXT_DEVELOPER_MODE)) {
- switch (rv) {
- case VB2_ERROR_LK_INVALID_KERNEL_FOUND:
- vb2api_fail(ctx, VB2_RECOVERY_RW_INVALID_OS, rv);
- break;
- case VB2_ERROR_LK_NO_KERNEL_FOUND:
- vb2api_fail(ctx, VB2_RECOVERY_RW_NO_KERNEL, rv);
- break;
- case VB2_ERROR_LK_NO_DISK_FOUND:
- vb2api_fail(ctx, VB2_RECOVERY_RW_NO_DISK, rv);
- break;
- default:
- vb2api_fail(ctx, VB2_RECOVERY_LK_UNSPECIFIED, rv);
- break;
- }
- }
-
- /* If we didn't find any good kernels, don't return a disk handle. */
- VbExDiskFreeInfo(disk_info, NULL);
-
- return rv;
-}
-
-test_mockable
-vb2_error_t VbTryLoadKernel(struct vb2_context *ctx, uint32_t disk_flags,
- VbSelectAndLoadKernelParams *kparams)
-{
- ctx->flags &= ~VB2_CONTEXT_DISABLE_TPM;
- return VbTryLoadKernelImpl(ctx, disk_flags, 0, 0, kparams);
-}
-
-test_mockable
-vb2_error_t VbTryLoadMiniOsKernel(struct vb2_context *ctx,
- uint32_t minios_flags,
- VbSelectAndLoadKernelParams *kparams)
-{
- VB2_TRY(VbTryLoadKernelImpl(ctx, VB_DISK_FLAG_FIXED, 1, minios_flags,
- kparams));
- ctx->flags |= VB2_CONTEXT_DISABLE_TPM;
- return VB2_SUCCESS;
-}