]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
bootstd: cros: Add docs for the kernel layout
authorSimon Glass <sjg@chromium.org>
Sun, 30 Jul 2023 17:16:54 +0000 (11:16 -0600)
committerSimon Glass <sjg@chromium.org>
Fri, 11 Aug 2023 00:34:54 +0000 (18:34 -0600)
Provide brief documentation about the ChromiumOS kernel layout.

Signed-off-by: Simon Glass <sjg@chromium.org>
boot/bootmeth_cros.c

index 3b9e75540aa8462de403be8b2cb2ed5402e082c5..a551d43701d83fe03edf13900e32344e73908cfe 100644 (file)
 #include <linux/sizes.h>
 #include "bootmeth_cros.h"
 
+/*
+ * Layout of the ChromeOS kernel
+ *
+ * Partitions 2 and 4 contain kernels
+ *
+ * Contents are:
+ *
+ * Offset      Contents
+ *   0         struct vb2_keyblock
+ *   m         struct vb2_kernel_preamble
+ *   m + n     kernel buffer
+ *
+ * m is keyblock->keyblock_size
+ * n is preamble->preamble_size
+ *
+ * The kernel buffer itself consists of various parts:
+ *
+ * Offset      Contents
+ *   m + n     kernel image (Flat vmlinux binary or FIT)
+ *   b - 8KB   Command line text
+ *   b - 4KB   X86 setup block (struct boot_params, extends for about 16KB)
+ *   b          X86 bootloader (continuation of setup block)
+ *   b + 16KB  X86 setup block (copy, used for hold data pointed to)
+ *
+ * b is m + n + preamble->bootloader_address - preamble->body_load_address
+ *
+ * Useful metadata extends from b - 8KB through to b + 32 KB
+ */
+
 enum {
        PROBE_SIZE      = SZ_4K,        /* initial bytes read from partition */