Index: src/platform/vboot_reference/include/kernel_image.h |
diff --git a/src/platform/vboot_reference/include/kernel_image.h b/src/platform/vboot_reference/include/kernel_image.h |
index c098c079ddb7a5c6ef36fe112cd88e3941e64313..6adf3f88927ed9290e799f54c26ec38b2cb34a70 100644 |
--- a/src/platform/vboot_reference/include/kernel_image.h |
+++ b/src/platform/vboot_reference/include/kernel_image.h |
@@ -17,6 +17,9 @@ |
#define KERNEL_MAGIC_SIZE 8 |
#define KERNEL_CMD_LINE_SIZE 4096 |
+#define DEV_MODE_ENABLED 1 |
+#define DEV_MODE_DISABLED 0 |
+ |
/* Kernel config file options according to the Chrome OS drive map design. */ |
typedef struct kconfig_options { |
uint32_t version[2]; /* Configuration file version. */ |
@@ -221,4 +224,44 @@ int AddKernelKeySignature(KernelImage* image, const char* firmware_key_file); |
int AddKernelSignature(KernelImage* image, |
const char* kernel_sigining_key_file); |
+/* Returns the logical version of a kernel blob which is calculated as |
+ * (kernel_key_version << 16 | kernel_version). */ |
+uint32_t GetLogicalKernelVersion(uint8_t* kernel_blob); |
+ |
+#define BOOT_KERNEL_A_CONTINUE 1 |
+#define BOOT_KERNEL_B_CONTINUE 2 |
+#define BOOT_KERNEL_RECOVERY_CONTINUE 3 |
+ |
+/* Contains information about the kernel paritition |
+ * gleaned from the GPT partition table. |
+ * |
+ * Based on the Chromium OS Drive Map design document by |
+ * rspangler@chromium.org. |
+ * |
+*/ |
+typedef struct kernel_entry { |
+ uint8_t* kernel_blob; /* Pointer to actual kernel. */ |
+ uint8_t boot_priority; /* 15 = highest, 1 = lowest, 0 = not bootable. */ |
+ uint8_t boot_tries_remaining; /* Used when boot_priority = 0. */ |
+ uint8_t boot_success_flag; /* Set to 1 on successful boot by AU. */ |
+} kernel_entry; |
+ |
+void PrintKernelEntry(kernel_entry* entry); |
+ |
+/* This function is the driver used by the RW firmware to |
+ * determine which copy of the kernel to boot from. It performs |
+ * the requisite priority and remaining tries checking for a specific |
+ * kernel partition, does rollback index checking, including updating |
+ * if required. |
+ * |
+ * Returns the code path to follow. It is one of: |
+ * BOOT_KERNEL_A_CONTINUE Boot from Kenrel A |
+ * BOOT_KERNEL_B_CONTINUE Boot from Kernel B |
+ * BOOT_KERNEL_RECOVERY_CONTINUE Jump to recovery mode |
+ */ |
+int VerifyKernelDriver_f(uint8_t* firmware_key_blob, |
+ kernel_entry* kernelA, |
+ kernel_entry* kernelB, |
+ int dev_mode); |
+ |
#endif /* VBOOT_REFERENCE_KERNEL_IMAGE_H_ */ |