x86, boot: Document for linked list of struct setup_data
authorHuang, Ying <ying.huang@intel.com>
Fri, 28 Mar 2008 02:49:50 +0000 (10:49 +0800)
committerIngo Molnar <mingo@elte.hu>
Sat, 26 Apr 2008 19:34:42 +0000 (21:34 +0200)
Documentation for linked list of struct setup_data.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Documentation/i386/boot.txt

index 2eb1610..0fac346 100644 (file)
@@ -42,6 +42,8 @@ Protocol 2.05:        (Kernel 2.6.20) Make protected mode kernel relocatable.
 Protocol 2.06: (Kernel 2.6.22) Added a field that contains the size of
                the boot command line
 
+Protocol 2.09: (kernel 2.6.26) Added a field of 64-bit physical
+               pointer to single linked list of struct setup_data.
 
 **** MEMORY LAYOUT
 
@@ -172,6 +174,8 @@ Offset      Proto   Name            Meaning
 0240/8 2.07+   hardware_subarch_data Subarchitecture-specific data
 0248/4 2.08+   payload_offset  Offset of kernel payload
 024C/4 2.08+   payload_length  Length of kernel payload
+0250/8 2.09+   setup_data      64-bit physical pointer to linked list
+                               of struct setup_data
 
 (1) For backwards compatibility, if the setup_sects field contains 0, the
     real value is 4.
@@ -572,6 +576,28 @@ command line is entered using the following protocol:
        covered by setup_move_size, so you may need to adjust this
        field.
 
+Field name:    setup_data
+Type:          write (obligatory)
+Offset/size:   0x250/8
+Protocol:      2.09+
+
+  The 64-bit physical pointer to NULL terminated single linked list of
+  struct setup_data. This is used to define a more extensible boot
+  parameters passing mechanism. The definition of struct setup_data is
+  as follow:
+
+  struct setup_data {
+         u64 next;
+         u32 type;
+         u32 len;
+         u8  data[0];
+  };
+
+  Where, the next is a 64-bit physical pointer to the next node of
+  linked list, the next field of the last node is 0; the type is used
+  to identify the contents of data; the len is the length of data
+  field; the data holds the real payload.
+
 
 **** MEMORY LAYOUT OF THE REAL-MODE CODE