aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/Kconfig
diff options
context:
space:
mode:
authorVivek Goyal <vgoyal@in.ibm.com>2006-12-06 20:14:04 -0500
committerAndi Kleen <andi@basil.nowhere.org>2006-12-06 20:14:04 -0500
commite69f202d0a1419219198566e1c22218a5c71a9a6 (patch)
tree16bb59505500797e1ea7e09ee9c3b495ce65b76a /arch/i386/Kconfig
parent6a044b3a0a1829ef19bb29548ffe553f48e8d80c (diff)
[PATCH] i386: Implement CONFIG_PHYSICAL_ALIGN
o Now CONFIG_PHYSICAL_START is being replaced with CONFIG_PHYSICAL_ALIGN. Hardcoding the kernel physical start value creates a problem in relocatable kernel context due to boot loader limitations. For ex, if somebody compiles a relocatable kernel to be run from address 4MB, but this kernel will run from location 1MB as grub loads the kernel at physical address 1MB. Kernel thinks that I am a relocatable kernel and I should run from the address I have been loaded at. So somebody wanting to run kernel from 4MB alignment location (for improved performance regions) can't do that. o Hence, Eric proposed that probably CONFIG_PHYSICAL_ALIGN will make more sense in relocatable kernel context. At run time kernel will move itself to a physical addr location which meets user specified alignment restrictions. Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/i386/Kconfig')
-rw-r--r--arch/i386/Kconfig33
1 files changed, 18 insertions, 15 deletions
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index d588ca874bb4..fd2fa7a7ec52 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -785,23 +785,26 @@ config RELOCATABLE
785 must live at a different physical address than the primary 785 must live at a different physical address than the primary
786 kernel. 786 kernel.
787 787
788config PHYSICAL_START 788config PHYSICAL_ALIGN
789 hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP) 789 hex "Alignment value to which kernel should be aligned"
790
791 default "0x1000000" if CRASH_DUMP
792 default "0x100000" 790 default "0x100000"
791 range 0x2000 0x400000
793 help 792 help
794 This gives the physical address where the kernel is loaded. Normally 793 This value puts the alignment restrictions on physical address
795 for regular kernels this value is 0x100000 (1MB). But in the case 794 where kernel is loaded and run from. Kernel is compiled for an
796 of kexec on panic the fail safe kernel needs to run at a different 795 address which meets above alignment restriction.
797 address than the panic-ed kernel. This option is used to set the load 796
798 address for kernels used to capture crash dump on being kexec'ed 797 If bootloader loads the kernel at a non-aligned address and
799 after panic. The default value for crash dump kernels is 798 CONFIG_RELOCATABLE is set, kernel will move itself to nearest
800 0x1000000 (16MB). This can also be set based on the "X" value as 799 address aligned to above value and run from there.
801 specified in the "crashkernel=YM@XM" command line boot parameter 800
802 passed to the panic-ed kernel. Typically this parameter is set as 801 If bootloader loads the kernel at a non-aligned address and
803 crashkernel=64M@16M. Please take a look at 802 CONFIG_RELOCATABLE is not set, kernel will ignore the run time
804 Documentation/kdump/kdump.txt for more details about crash dumps. 803 load address and decompress itself to the address it has been
804 compiled for and run from there. The address for which kernel is
805 compiled already meets above alignment restrictions. Hence the
806 end result is that kernel runs from a physical address meeting
807 above alignment restrictions.
805 808
806 Don't change this unless you know what you are doing. 809 Don't change this unless you know what you are doing.
807 810