diff options
author | H. Peter Anvin <hpa@zytor.com> | 2009-05-11 18:56:08 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-05-11 20:44:39 -0400 |
commit | 37ba7ab5e33cebc25c68fffe33e9f21e7c2014e8 (patch) | |
tree | 006ba60fcd29b8fdee844ee6d90b85104a254d0d /arch/x86/include/asm/boot.h | |
parent | 99aa45595f45603526513d5e29fc00f8afbf3913 (diff) |
x86, boot: make kernel_alignment adjustable; new bzImage fields
Make the kernel_alignment field adjustable; this allows us to set it
to a large value (intended to be 16 MB to avoid ZONE_DMA contention,
memory holes and other weirdness) while a smart bootloader can still
force a loading at a lesser alignment if absolutely necessary.
Also export pref_address (preferred loading address, corresponding to
the link-time address) and init_size, the total amount of linear
memory the kernel will require during initialization.
[ Impact: allows better kernel placement, gives bootloader more info ]
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/include/asm/boot.h')
-rw-r--r-- | arch/x86/include/asm/boot.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/x86/include/asm/boot.h b/arch/x86/include/asm/boot.h index 6ba23dd9fc92..418e632d4a80 100644 --- a/arch/x86/include/asm/boot.h +++ b/arch/x86/include/asm/boot.h | |||
@@ -8,11 +8,26 @@ | |||
8 | 8 | ||
9 | #ifdef __KERNEL__ | 9 | #ifdef __KERNEL__ |
10 | 10 | ||
11 | #include <asm/page_types.h> | ||
12 | |||
11 | /* Physical address where kernel should be loaded. */ | 13 | /* Physical address where kernel should be loaded. */ |
12 | #define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \ | 14 | #define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \ |
13 | + (CONFIG_PHYSICAL_ALIGN - 1)) \ | 15 | + (CONFIG_PHYSICAL_ALIGN - 1)) \ |
14 | & ~(CONFIG_PHYSICAL_ALIGN - 1)) | 16 | & ~(CONFIG_PHYSICAL_ALIGN - 1)) |
15 | 17 | ||
18 | /* Minimum kernel alignment, as a power of two */ | ||
19 | #ifdef CONFIG_x86_64 | ||
20 | #define MIN_KERNEL_ALIGN_LG2 PMD_SHIFT | ||
21 | #else | ||
22 | #define MIN_KERNEL_ALIGN_LG2 (PAGE_SHIFT+1) | ||
23 | #endif | ||
24 | #define MIN_KERNEL_ALIGN (_AC(1, UL) << MIN_KERNEL_ALIGN_LG2) | ||
25 | |||
26 | #if (CONFIG_PHYSICAL_ALIGN & (CONFIG_PHYSICAL_ALIGN-1)) || \ | ||
27 | (CONFIG_PHYSICAL_ALIGN < (_AC(1, UL) << MIN_KERNEL_ALIGN_LG2)) | ||
28 | #error "Invalid value for CONFIG_PHYSICAL_ALIGN" | ||
29 | #endif | ||
30 | |||
16 | #ifdef CONFIG_KERNEL_BZIP2 | 31 | #ifdef CONFIG_KERNEL_BZIP2 |
17 | #define BOOT_HEAP_SIZE 0x400000 | 32 | #define BOOT_HEAP_SIZE 0x400000 |
18 | #else /* !CONFIG_KERNEL_BZIP2 */ | 33 | #else /* !CONFIG_KERNEL_BZIP2 */ |