Patch "x86/Documentation: Update algo in init_size description of boot protocol" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    x86/Documentation: Update algo in init_size description of boot protocol

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     x86-documentation-update-algo-in-init_size-descripti.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 038243279bf6e41c6dce614262327a78fa6a5673
Author: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
Date:   Mon Nov 25 12:49:14 2024 +0200

    x86/Documentation: Update algo in init_size description of boot protocol
    
    [ Upstream commit be4ca6c53e66cb275cf0d71f32dac0c4606b9dc0 ]
    
    The init_size description of boot protocol has an example of the runtime
    start address for the compressed bzImage. For non-relocatable kernel
    it relies on the pref_address value (if not 0), but for relocatable case
    only pays respect to the load_addres and kernel_alignment, and it is
    inaccurate for the latter. Boot loader must consider the pref_address
    as the Linux kernel relocates to it before being decompressed as nicely
    described in this commit message a year ago:
    
      43b1d3e68ee7 ("kexec: Allocate kernel above bzImage's pref_address")
    
    Due to this documentation inaccuracy some of the bootloaders (*) made a
    mistake in the calculations and if kernel image is big enough, this may
    lead to unbootable configurations.
    
    *)
      In particular, kexec-tools missed that and resently got a couple of
      changes which will be part of v2.0.30 release. For the record,
      commit 43b1d3e68ee7 only fixed the kernel kexec implementation and
      also missed to update the init_size description.
    
    While at it, make an example C-like looking as it's done elsewhere in
    the document and fix indentation as presribed by the reStructuredText
    specifications, so the syntax highliting will work properly.
    
    Fixes: 43b1d3e68ee7 ("kexec: Allocate kernel above bzImage's pref_address")
    Fixes: d297366ba692 ("x86: document new bzImage fields")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
    Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
    Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
    Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20241125105005.1616154-1-andriy.shevchenko@xxxxxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/Documentation/arch/x86/boot.rst b/Documentation/arch/x86/boot.rst
index 4fd492cb49704..ad2d8ddad27fe 100644
--- a/Documentation/arch/x86/boot.rst
+++ b/Documentation/arch/x86/boot.rst
@@ -896,10 +896,19 @@ Offset/size:	0x260/4
 
   The kernel runtime start address is determined by the following algorithm::
 
-	if (relocatable_kernel)
-	runtime_start = align_up(load_address, kernel_alignment)
-	else
-	runtime_start = pref_address
+   	if (relocatable_kernel) {
+   		if (load_address < pref_address)
+   			load_address = pref_address;
+   		runtime_start = align_up(load_address, kernel_alignment);
+   	} else {
+   		runtime_start = pref_address;
+   	}
+
+Hence the necessary memory window location and size can be estimated by
+a boot loader as::
+
+   	memory_window_start = runtime_start;
+   	memory_window_size = init_size;
 
 ============	===============
 Field name:	handover_offset




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux