diff options
| author | Maxime Ripard <maxime.ripard@free-electrons.com> | 2013-04-08 21:36:54 +0200 | 
|---|---|---|
| committer | Maxime Ripard <maxime.ripard@free-electrons.com> | 2013-04-08 21:36:54 +0200 | 
| commit | 0b824f8dad9fdfc7c1bf9c1d3ac744075eb73ec6 (patch) | |
| tree | 7559859702f2fa02f6a4db64cf10f6c2e3f80c21 /arch/x86/include/asm/bootparam_utils.h | |
| parent | 6dbe51c251a327e012439c4772097a13df43c5b8 (diff) | |
| parent | 3d5a96582303e28c48699f3faaf920ef7d43e6f2 (diff) | |
| download | olio-linux-3.10-0b824f8dad9fdfc7c1bf9c1d3ac744075eb73ec6.tar.xz olio-linux-3.10-0b824f8dad9fdfc7c1bf9c1d3ac744075eb73ec6.zip  | |
Merge remote-tracking branch 'arm-soc/clksrc/cleanup' into sunxi/core-for-3.10
Diffstat (limited to 'arch/x86/include/asm/bootparam_utils.h')
| -rw-r--r-- | arch/x86/include/asm/bootparam_utils.h | 20 | 
1 files changed, 18 insertions, 2 deletions
diff --git a/arch/x86/include/asm/bootparam_utils.h b/arch/x86/include/asm/bootparam_utils.h index 5b5e9cb774b..653668d140f 100644 --- a/arch/x86/include/asm/bootparam_utils.h +++ b/arch/x86/include/asm/bootparam_utils.h @@ -14,13 +14,29 @@   * analysis of kexec-tools; if other broken bootloaders initialize a   * different set of fields we will need to figure out how to disambiguate.   * + * Note: efi_info is commonly left uninitialized, but that field has a + * private magic, so it is better to leave it unchanged.   */  static void sanitize_boot_params(struct boot_params *boot_params)  { +	/*  +	 * IMPORTANT NOTE TO BOOTLOADER AUTHORS: do not simply clear +	 * this field.  The purpose of this field is to guarantee +	 * compliance with the x86 boot spec located in +	 * Documentation/x86/boot.txt .  That spec says that the +	 * *whole* structure should be cleared, after which only the +	 * portion defined by struct setup_header (boot_params->hdr) +	 * should be copied in. +	 * +	 * If you're having an issue because the sentinel is set, you +	 * need to change the whole structure to be cleared, not this +	 * (or any other) individual field, or you will soon have +	 * problems again. +	 */  	if (boot_params->sentinel) { -		/*fields in boot_params are not valid, clear them */ +		/* fields in boot_params are left uninitialized, clear them */  		memset(&boot_params->olpc_ofw_header, 0, -		       (char *)&boot_params->alt_mem_k - +		       (char *)&boot_params->efi_info -  			(char *)&boot_params->olpc_ofw_header);  		memset(&boot_params->kbd_status, 0,  		       (char *)&boot_params->hdr -  |