Loading Documentation/i386/IO-APIC.txt→Documentation/x86/i386/IO-APIC.txt +0 −0 File moved. View file Documentation/i386/boot.txt→Documentation/x86/i386/boot.txt +46 −33 Original line number Diff line number Diff line THE LINUX/I386 BOOT PROTOCOL ---------------------------- THE LINUX/x86 BOOT PROTOCOL --------------------------- H. Peter Anvin <hpa@zytor.com> Last update 2007-05-23 On the i386 platform, the Linux kernel uses a rather complicated boot On the x86 platform, the Linux kernel uses a rather complicated boot convention. This has evolved partially due to historical aspects, as well as the desire in the early days to have the kernel itself be a bootable image, the complicated PC memory model and due to changed expectations in the PC industry caused by the effective demise of real-mode DOS as a mainstream operating system. Currently, the following versions of the Linux/i386 boot protocol exist. Currently, the following versions of the Linux/x86 boot protocol exist. Old kernels: zImage/Image support only. Some very early kernels may not even support a command line. Loading Loading @@ -372,10 +369,17 @@ Protocol: 2.00+ - If 0, the protected-mode code is loaded at 0x10000. - If 1, the protected-mode code is loaded at 0x100000. Bit 5 (write): QUIET_FLAG - If 0, print early messages. - If 1, suppress early messages. This requests to the kernel (decompressor and early kernel) to not write early messages that require accessing the display hardware directly. Bit 6 (write): KEEP_SEGMENTS Protocol: 2.07+ - if 0, reload the segment registers in the 32bit entry point. - if 1, do not reload the segment registers in the 32bit entry point. - If 0, reload the segment registers in the 32bit entry point. - If 1, do not reload the segment registers in the 32bit entry point. Assume that %cs %ds %ss %es are all set to flat segments with a base of 0 (or the equivalent for their environment). Loading Loading @@ -504,7 +508,7 @@ Protocol: 2.06+ maximum size was 255. Field name: hardware_subarch Type: write Type: write (optional, defaults to x86/PC) Offset/size: 0x23c/4 Protocol: 2.07+ Loading @@ -520,11 +524,13 @@ Protocol: 2.07+ 0x00000002 Xen Field name: hardware_subarch_data Type: write Type: write (subarch-dependent) Offset/size: 0x240/8 Protocol: 2.07+ A pointer to data that is specific to hardware subarch This field is currently unused for the default x86/PC environment, do not modify. Field name: payload_offset Type: read Loading @@ -545,6 +551,34 @@ Protocol: 2.08+ The length of the payload. Field name: setup_data Type: write (special) 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. This list may be modified at a number of points during the bootup process. Therefore, when modifying this list one should always make sure to consider the case where the linked list already contains entries. **** THE IMAGE CHECKSUM From boot protocol version 2.08 onwards the CRC-32 is calculated over Loading @@ -553,6 +587,7 @@ initial remainder of 0xffffffff. The checksum is appended to the file; therefore the CRC of the file up to the limit specified in the syssize field of the header is always 0. **** THE KERNEL COMMAND LINE The kernel command line has become an important way for the boot Loading Loading @@ -584,28 +619,6 @@ 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 Loading Documentation/i386/usb-legacy-support.txt→Documentation/x86/i386/usb-legacy-support.txt +0 −0 File moved. View file Documentation/i386/zero-page.txt→Documentation/x86/i386/zero-page.txt +0 −0 File moved. View file Documentation/x86_64/00-INDEX→Documentation/x86/x86_64/00-INDEX +0 −0 File moved. View file Loading
Documentation/i386/boot.txt→Documentation/x86/i386/boot.txt +46 −33 Original line number Diff line number Diff line THE LINUX/I386 BOOT PROTOCOL ---------------------------- THE LINUX/x86 BOOT PROTOCOL --------------------------- H. Peter Anvin <hpa@zytor.com> Last update 2007-05-23 On the i386 platform, the Linux kernel uses a rather complicated boot On the x86 platform, the Linux kernel uses a rather complicated boot convention. This has evolved partially due to historical aspects, as well as the desire in the early days to have the kernel itself be a bootable image, the complicated PC memory model and due to changed expectations in the PC industry caused by the effective demise of real-mode DOS as a mainstream operating system. Currently, the following versions of the Linux/i386 boot protocol exist. Currently, the following versions of the Linux/x86 boot protocol exist. Old kernels: zImage/Image support only. Some very early kernels may not even support a command line. Loading Loading @@ -372,10 +369,17 @@ Protocol: 2.00+ - If 0, the protected-mode code is loaded at 0x10000. - If 1, the protected-mode code is loaded at 0x100000. Bit 5 (write): QUIET_FLAG - If 0, print early messages. - If 1, suppress early messages. This requests to the kernel (decompressor and early kernel) to not write early messages that require accessing the display hardware directly. Bit 6 (write): KEEP_SEGMENTS Protocol: 2.07+ - if 0, reload the segment registers in the 32bit entry point. - if 1, do not reload the segment registers in the 32bit entry point. - If 0, reload the segment registers in the 32bit entry point. - If 1, do not reload the segment registers in the 32bit entry point. Assume that %cs %ds %ss %es are all set to flat segments with a base of 0 (or the equivalent for their environment). Loading Loading @@ -504,7 +508,7 @@ Protocol: 2.06+ maximum size was 255. Field name: hardware_subarch Type: write Type: write (optional, defaults to x86/PC) Offset/size: 0x23c/4 Protocol: 2.07+ Loading @@ -520,11 +524,13 @@ Protocol: 2.07+ 0x00000002 Xen Field name: hardware_subarch_data Type: write Type: write (subarch-dependent) Offset/size: 0x240/8 Protocol: 2.07+ A pointer to data that is specific to hardware subarch This field is currently unused for the default x86/PC environment, do not modify. Field name: payload_offset Type: read Loading @@ -545,6 +551,34 @@ Protocol: 2.08+ The length of the payload. Field name: setup_data Type: write (special) 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. This list may be modified at a number of points during the bootup process. Therefore, when modifying this list one should always make sure to consider the case where the linked list already contains entries. **** THE IMAGE CHECKSUM From boot protocol version 2.08 onwards the CRC-32 is calculated over Loading @@ -553,6 +587,7 @@ initial remainder of 0xffffffff. The checksum is appended to the file; therefore the CRC of the file up to the limit specified in the syssize field of the header is always 0. **** THE KERNEL COMMAND LINE The kernel command line has become an important way for the boot Loading Loading @@ -584,28 +619,6 @@ 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 Loading
Documentation/i386/usb-legacy-support.txt→Documentation/x86/i386/usb-legacy-support.txt +0 −0 File moved. View file