diff options
Diffstat (limited to 'firmware/include/load_kernel_fw.h')
-rw-r--r-- | firmware/include/load_kernel_fw.h | 117 |
1 files changed, 68 insertions, 49 deletions
diff --git a/firmware/include/load_kernel_fw.h b/firmware/include/load_kernel_fw.h index 0040e56d..7e8d6960 100644 --- a/firmware/include/load_kernel_fw.h +++ b/firmware/include/load_kernel_fw.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved. +/* 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. * @@ -20,63 +20,82 @@ #define BOOT_FLAG_DEVELOPER UINT64_C(0x01) /* In recovery mode */ #define BOOT_FLAG_RECOVERY UINT64_C(0x02) -/* Skip check of kernel buffer address. Since body load address check is - * omitted; this flag is deprecated and not used anywhere in the codebase. */ -#define BOOT_FLAG_SKIP_ADDR_CHECK UINT64_C(0x04) typedef struct LoadKernelParams { - /* Inputs to LoadKernel() */ - void* shared_data_blob; /* Buffer for data shared between - * LoadFirmware() and LoadKernel(). Pass the - * same buffer which was passed to - * LoadFirmware(). */ - uint64_t shared_data_size; /* Size of shared data blob buffer, in bytes. - * On output, this will contain the actual - * data size placed into the buffer. */ - void* gbb_data; /* Pointer to GBB data */ - uint64_t gbb_size; /* Size of GBB data in bytes */ + /* Inputs to LoadKernel() */ + /* + * Buffer for data shared between LoadFirmware() and LoadKernel(). + * Pass the same buffer which was passed to LoadFirmware(). + */ + void *shared_data_blob; + /* + * Size of shared data blob buffer, in bytes. On output, this will + * contain the actual data size placed into the buffer. + */ + uint64_t shared_data_size; + /* Pointer to GBB data */ + void *gbb_data; + /* Size of GBB data in bytes */ + uint64_t gbb_size; + /* Disk handle for current device */ + VbExDiskHandle_t disk_handle; + /* Bytes per lba sector on current device */ + uint64_t bytes_per_lba; + /* Last addressable lba sector on current device */ + uint64_t ending_lba; + /* Destination buffer for kernel (normally at 0x100000) */ + void *kernel_buffer; + /* Size of kernel buffer in bytes */ + uint64_t kernel_buffer_size; + /* Boot flags */ + uint64_t boot_flags; + /* + * Context for NV storage. Caller is responsible for calling + * VbNvSetup() and VbNvTeardown() on the context. + */ + VbNvContext *nv_context; - VbExDiskHandle_t disk_handle; /* Disk handle for current device */ - uint64_t bytes_per_lba; /* Bytes per lba sector on current device */ - uint64_t ending_lba; /* Last addressable lba sector on current - * device */ - - void* kernel_buffer; /* Destination buffer for kernel - * (normally at 0x100000) */ - uint64_t kernel_buffer_size; /* Size of kernel buffer in bytes */ - uint64_t boot_flags; /* Boot flags */ - VbNvContext* nv_context; /* Context for NV storage. Caller is - * responsible for calling VbNvSetup() and - * VbNvTeardown() on the context. */ - - /* Outputs from LoadKernel(); valid only if LoadKernel() returns - * LOAD_KERNEL_SUCCESS */ - uint64_t partition_number; /* Partition number to boot on current device - * (1...M) */ - uint64_t bootloader_address; /* Address of bootloader image in RAM */ - uint64_t bootloader_size; /* Size of bootloader image in bytes */ - uint8_t partition_guid[16]; /* UniquePartitionGuid for boot partition */ + /* + * Outputs from LoadKernel(); valid only if LoadKernel() returns + * LOAD_KERNEL_SUCCESS + */ + /* Partition number to boot on current device (1...M) */ + uint64_t partition_number; + /* Address of bootloader image in RAM */ + uint64_t bootloader_address; + /* Size of bootloader image in bytes */ + uint64_t bootloader_size; + /* UniquePartitionGuid for boot partition */ + uint8_t partition_guid[16]; } LoadKernelParams; -VbError_t LoadKernel(LoadKernelParams* params); -/* Attempts to load the kernel from the current device. +/** + * Attempt to load the kernel from the current device. * * Returns VBERROR_SUCCESS if successful. If unsuccessful, sets a recovery - * reason via VbNvStorage and returns an error code. */ - + * reason via VbNvStorage and returns an error code. + */ +VbError_t LoadKernel(LoadKernelParams *params); +/* + * The bootloader is loaded using the EFI LoadImage() and StartImage() calls. + * Pass this struct via loaded_image->load_options. + */ typedef struct KernelBootloaderOptions { - /* The bootloader is loaded using the EFI LoadImage() and StartImage() - * calls. Pass this struct via loaded_image->load_options. */ - uint64_t drive_number; /* Drive number of boot device (0...N) */ - uint64_t partition_number; /* Partition number, as returned from - * LoadKernel() in - * LoadKernelParams.partition_number */ - uint64_t original_address; /* Absolute bootloader start adddress, - * as returned from LoadKernel() in - * LoadKernelParams.bootloader_start */ - uint8_t partition_guid[16]; /* UniquePartitionGuid for boot partition */ + /* Drive number of boot device (0...N) */ + uint64_t drive_number; + /* + * Partition number, as returned from LoadKernel() in + * LoadKernelParams.partition_number + */ + uint64_t partition_number; + /* + * Absolute bootloader start adddress, as returned from LoadKernel() in + * LoadKernelParams.bootloader_start + */ + uint64_t original_address; + /* UniquePartitionGuid for boot partition */ + uint8_t partition_guid[16]; } KernelBootloaderOptions; - #endif /* VBOOT_REFERENCE_LOAD_KERNEL_FW_H_ */ |