mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-24 18:25:10 +00:00
This is necessary to pass additional information about whether firmware A or B is being run. This change also passes the GBB directly into LoadFirmware() and LoadKernel().
Change-Id: I976c11c82c3d665a4feb88226e919f16c2440f60 BUG=chrome-os-partner:1657 TEST=manual - see below make && make runtests Then test verifying a test image in both dev mode (-b1, no key specified) and recovery mode (key specified) build/utility/load_kernel_test -b1 ~/b/USB_images/0.11.224.0-alex/chromiumos_test_image.bin build/utility/load_kernel_test ~/b/USB_images/0.11.224.0-alex/chromiumos_test_image.bin tests/devkeys/recovery_key.vbpubk And make sure the firmware with this change actually boots to USB and SSD. NOTE: u-boot-next needs to change to work with this change. will attempt a follow-up CL with that change Review URL: http://codereview.chromium.org/6626045
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2010-2011 The Chromium OS Authors. All rights reserved.
|
||||
/* Copyright (c) 2011 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.
|
||||
*
|
||||
@@ -131,6 +131,49 @@ typedef struct VbKernelPreambleHeader {
|
||||
|
||||
#define EXPECTED_VBKERNELPREAMBLEHEADER_SIZE 96
|
||||
|
||||
/* Minimum and recommended size of shared_data_blob in bytes. */
|
||||
#define VB_SHARED_DATA_MIN_SIZE 3072
|
||||
#define VB_SHARED_DATA_REC_SIZE 16384
|
||||
|
||||
/* Data shared between LoadFirmware(), LoadKernel(), and OS.
|
||||
*
|
||||
* The boot process is:
|
||||
* 1) Caller allocates buffer, at least VB_SHARED_DATA_MIN bytes, ideally
|
||||
* VB_SHARED_DATA_REC_SIZE bytes.
|
||||
* 2) If non-recovery boot, this is passed to LoadFirmware(), which
|
||||
* initializes the buffer, adding this header and some data.
|
||||
* 3) Buffer is passed to LoadKernel(). If this is a recovery boot,
|
||||
* LoadKernel() initializes the buffer, adding this header. Regardless
|
||||
* of boot type, LoadKernel() adds some data to the buffer.
|
||||
* 4) Caller makes data available to the OS in a platform-dependent manner.
|
||||
* For example, via ACPI or ATAGs. */
|
||||
typedef struct VbSharedDataHeader {
|
||||
/* Fields present in version 1 */
|
||||
uint32_t struct_version; /* Version of this structure */
|
||||
uint64_t struct_size; /* Size of this structure in bytes */
|
||||
uint64_t data_size; /* Size of shared data buffer in bytes */
|
||||
uint64_t data_used; /* Amount of shared data used so far */
|
||||
|
||||
VbPublicKey kernel_subkey; /* Kernel subkey, from firmware */
|
||||
uint64_t kernel_subkey_data_offset; /* Offset of kernel subkey data from
|
||||
* start of this struct */
|
||||
uint64_t kernel_subkey_data_size; /* Offset of kernel subkey data */
|
||||
|
||||
uint64_t flags; /* Flags */
|
||||
|
||||
/* After read-only firmware which uses version 1 is released, any additional
|
||||
* fields must be added below, and the struct version must be increased.
|
||||
* Before reading/writing those fields, make sure that the struct being
|
||||
* accessed is at least version 2.
|
||||
*
|
||||
* It's always ok for an older firmware to access a newer struct, since all
|
||||
* the fields it knows about are present. Newer firmware needs to use
|
||||
* reasonable defaults when accessing older structs. */
|
||||
|
||||
} __attribute__((packed)) VbSharedDataHeader;
|
||||
|
||||
#define VB_SHARED_DATA_VERSION 1 /* Version for struct_version */
|
||||
|
||||
__pragma(pack(pop)) /* Support packing for MSVC. */
|
||||
|
||||
#endif /* VBOOT_REFERENCE_VBOOT_STRUCT_H_ */
|
||||
|
||||
Reference in New Issue
Block a user