On 12/20/06, Vivek Goyal <[EMAIL PROTECTED]> wrote:
> On Tue, Dec 19, 2006 at 06:04:16PM +0900, Magnus Damm wrote:
> >
> > I think we should let people continue to use whatever method they've
> > used so far and have an option to move over to relocatable kernels.
> > This without breaking the existing vmlinux loading soltution.
> >
>
> Hi Magnus,
>
> It turned out that changes are very small to support CONFIG_PHYSICAL_START.
> Can you please check if attached patch works for you. I am also doing more
> testing to make sure nothing else if broken.
Hi again Vivek!
Thanks for spending time on this. I kind of expected to be doing it
myself, but you solved it even before I could try to allocate time to
do it. =) And it works very well too, great work!
I've tested your patch on top of 2.6.20-rc1 using
kexec-tools-testing-20061214 and the kernel option
"[EMAIL PROTECTED]":
kexec kdump
vmlinux bzImage vmlinux bzImage
PHYS_START=16M, RELOCATABLE=N YES YES NO* NO**
PHYS_START=16M, RELOCATABLE=Y YES YES NO* YES
PHYS_START=32M, RELOCATABLE=N YES YES YES NO**
PHYS_START=32M, RELOCATABLE=Y YES YES YES YES
* PHYS_START mismatch, expected failure
** RELOCATABLE=n, expected failure
So it seems to work perfectly fine, at least from a kexec perspective. =)
Thanks!
/ magnus
> Signed-off-by: Vivek Goyal <[EMAIL PROTECTED]>
CC: Magnus Damm <[EMAIL PROTECTED]>
> ---
>
> arch/i386/Kconfig | 31 +++++++++++++++++++++++++++++++
> include/asm-i386/boot.h | 3 ++-
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> diff -puN
> arch/i386/boot/compressed/head.S~i386-restore-CONFIG_PHYSICAL_START-option
> arch/i386/boot/compressed/head.S
> diff -puN arch/i386/Kconfig~i386-restore-CONFIG_PHYSICAL_START-option
> arch/i386/Kconfig
> ---
> linux-2.6.19-rc1-reloc/arch/i386/Kconfig~i386-restore-CONFIG_PHYSICAL_START-option
> 2006-12-20 11:48:50.000000000 +0530
> +++ linux-2.6.19-rc1-reloc-root/arch/i386/Kconfig 2006-12-20
> 12:02:45.000000000 +0530
> @@ -777,6 +777,37 @@ config CRASH_DUMP
> PHYSICAL_START.
> For more details see Documentation/kdump/kdump.txt
>
> +config PHYSICAL_START
> + hex "Physical address where the kernel is loaded" if (EMBEDDED ||
> CRASH_DUMP)
> +
> + default "0x1000000" if CRASH_DUMP
> + default "0x100000"
> + help
> + This gives the physical address where the kernel is loaded.
> Normally
> + for regular kernels this value is 0x100000 (1MB). But in the case
> + of kexec on panic the fail safe kernel needs to run at a different
> + address than the panic-ed kernel. This option is used to set the
> load
> + address for kernels used to capture crash dump on being kexec'ed
> + after panic. The default value for crash dump kernels is
> + 0x1000000 (16MB). This can also be set based on the "X" value as
> + specified in the "[EMAIL PROTECTED]" command line boot parameter
> + passed to the panic-ed kernel. Typically this parameter is set as
> + [EMAIL PROTECTED] Please take a look at
> + Documentation/kdump/kdump.txt for more details about crash dumps.
> +
> + If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
> + bzImage will decompress itself to above physical address and
> + run from there. Otherwise, bzImage will run from its load address
> + and will ignore above physical address.
> +
> + In normal kdump cases one does not have to set/change this option
> + as bzImage can be used to load and run from a different address.
> + This option is mainly useful for the folks who don't want to use
> + a bzImage and want to use a vmlinux which has been compiled for
> + a non-1MB address.
> +
> + Don't change this unless you know what you are doing.
> +
> config RELOCATABLE
> bool "Build a relocatable kernel(EXPERIMENTAL)"
> depends on EXPERIMENTAL
> diff -puN
> arch/i386/kernel/vmlinux.lds.S~i386-restore-CONFIG_PHYSICAL_START-option
> arch/i386/kernel/vmlinux.lds.S
> diff -puN include/asm-i386/boot.h~i386-restore-CONFIG_PHYSICAL_START-option
> include/asm-i386/boot.h
> ---
> linux-2.6.19-rc1-reloc/include/asm-i386/boot.h~i386-restore-CONFIG_PHYSICAL_START-option
> 2006-12-20 12:11:17.000000000 +0530
> +++ linux-2.6.19-rc1-reloc-root/include/asm-i386/boot.h 2006-12-20
> 12:12:50.000000000 +0530
> @@ -13,7 +13,8 @@
> #define ASK_VGA 0xfffd /* ask for it at bootup */
>
> /* Physical address where kenrel should be loaded. */
> -#define LOAD_PHYSICAL_ADDR ((0x100000 + CONFIG_PHYSICAL_ALIGN - 1) \
> +#define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
> + + (CONFIG_PHYSICAL_ALIGN - 1)) \
> & ~(CONFIG_PHYSICAL_ALIGN - 1))
>
> #endif /* _LINUX_BOOT_H */
> _
>
_______________________________________________
fastboot mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/fastboot