Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: src/platform/vboot_reference/vboot_firmware/include/load_kernel_fw.h

Issue 2327002: Initial LoadKernel() implementation. (Closed) Base URL: ssh://gitrw.chromium.org/chromiumos
Patch Set: Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. 3 * found in the LICENSE file.
4 * 4 *
5 * High-level firmware API for loading and verifying kernel. 5 * High-level firmware API for loading and verifying kernel.
6 * (Firmware Portion) 6 * (Firmware Portion)
7 */ 7 */
8 8
9 #ifndef VBOOT_REFERENCE_LOAD_KERNEL_FW_H_ 9 #ifndef VBOOT_REFERENCE_LOAD_KERNEL_FW_H_
10 #define VBOOT_REFERENCE_LOAD_KERNEL_FW_H_ 10 #define VBOOT_REFERENCE_LOAD_KERNEL_FW_H_
11 11
12 #include <stdint.h> 12 #include <stdint.h>
13 13
14 /* Interface provided by verified boot library to BDS */ 14 /* Interface provided by verified boot library to BDS */
15 15
16 /* Return codes for LoadKernel() */ 16 /* Return codes for LoadKernel() */
17 #define LOAD_KERNEL_SUCCESS 0 17 #define LOAD_KERNEL_SUCCESS 0
18 #define LOAD_KERNEL_NOT_FOUND 1 18 #define LOAD_KERNEL_NOT_FOUND 1
19 #define LOAD_KERNEL_INVALID 2 19 #define LOAD_KERNEL_INVALID 2
20 20
21 /* Boot modes for LoadKernel() */
22 #define BOOT_MODE_NORMAL 0
23 #define BOOT_MODE_DEVELOPER 1
24 #define BOOT_MODE_RECOVERY 2
25
21 typedef struct LoadKernelParams { 26 typedef struct LoadKernelParams {
22 /* Inputs to LoadKernel() */ 27 /* Inputs to LoadKernel() */
28 void *header_sign_key_blob; /* Key blob used to sign the kernel header */
23 uint64_t bytes_per_lba; /* Bytes per lba sector on current device */ 29 uint64_t bytes_per_lba; /* Bytes per lba sector on current device */
24 uint64_t ending_lba; /* Last addressable lba sector on current 30 uint64_t ending_lba; /* Last addressable lba sector on current
25 * device */ 31 * device */
26 void *kernel_buffer; /* Destination buffer for kernel 32 void *kernel_buffer; /* Destination buffer for kernel
27 * (normally at 0x100000) */ 33 * (normally at 0x100000) */
28 uint64_t kernel_buffer_size; /* Size of kernel buffer in bytes */ 34 uint64_t kernel_buffer_size; /* Size of kernel buffer in bytes */
29 uint8_t in_developer_mode; /* Did device boot in developer mode? 35 uint8_t boot_mode; /* Boot mode */
30 * 0 = normal or recovery mode
31 * 1 = developer mode */
32 36
33 /* Outputs from LoadKernel(); valid only if LoadKernel() returns 37 /* Outputs from LoadKernel(); valid only if LoadKernel() returns
34 * LOAD_KERNEL_SUCCESS */ 38 * LOAD_KERNEL_SUCCESS */
35 uint64_t partition_number; /* Partition number to boot on current device 39 uint64_t partition_number; /* Partition number to boot on current device
36 * (1...M) */ 40 * (1...M) */
37 void *bootloader_start; /* Start of bootloader image */ 41 void *bootloader_start; /* Start of bootloader image */
38 uint64_t bootloader_size; /* Size of bootloader image in bytes */ 42 uint64_t bootloader_size; /* Size of bootloader image in bytes */
39 } LoadKernelParams; 43 } LoadKernelParams;
40 44
41 uint64_t LoadKernel(LoadKernelParams* params); 45 int LoadKernel(LoadKernelParams* params);
42 /* Attempts to load the kernel from the current device. 46 /* Attempts to load the kernel from the current device.
43 * 47 *
44 * Returns LOAD_KERNEL_SUCCESS if successful, error code on failure. */ 48 * Returns LOAD_KERNEL_SUCCESS if successful, error code on failure. */
45 49
46 50
47 typedef struct KernelBootloaderOptions { 51 typedef struct KernelBootloaderOptions {
48 /* The bootloader is loaded using the EFI LoadImage() and StartImage() 52 /* The bootloader is loaded using the EFI LoadImage() and StartImage()
49 * calls. Pass this struct via loaded_image->load_options. */ 53 * calls. Pass this struct via loaded_image->load_options. */
50 uint64_t drive_number; /* Drive number of boot device (0...N) */ 54 uint64_t drive_number; /* Drive number of boot device (0...N) */
51 uint64_t partition_number; /* Partition number, as returned from 55 uint64_t partition_number; /* Partition number, as returned from
52 * LoadKernel() in 56 * LoadKernel() in
53 * LoadKernelParams.partition_number */ 57 * LoadKernelParams.partition_number */
54 uint64_t original_address; /* Absolute bootloader start adddress, 58 uint64_t original_address; /* Absolute bootloader start adddress,
55 * as returned from LoadKernel() in 59 * as returned from LoadKernel() in
56 * LoadKernelParams.bootloader_start */ 60 * LoadKernelParams.bootloader_start */
57 } KernelBootloaderOptions; 61 } KernelBootloaderOptions;
58 62
59 63
60 #endif /* VBOOT_REFERENCE_LOAD_KERNEL_FW_H_ */ 64 #endif /* VBOOT_REFERENCE_LOAD_KERNEL_FW_H_ */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698