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
fastboot@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/fastboot

Reply via email to