From: Marco Stornelli <marco.stornelli@coritel.it>
To: Simon Kagstrom <simon.kagstrom@ericsson.com>
Cc: "linuxppc-embedded@ozlabs.org" <linuxppc-embedded@ozlabs.org>
Subject: Re: Kexec on arch powerpc, device trees
Date: Wed, 23 Jul 2008 13:59:52 +0200 [thread overview]
Message-ID: <48871D38.5030600@coritel.it> (raw)
In-Reply-To: <20080723114848.0e2d1a73@seasc0532.dyn.rnd.as.sw.ericsson.se>
Simon Kagstrom ha scritto:
> Hi!
>
> I'm looking a bit at adding kexec support for our mpc8347-based board
> running a 2.6.21 kernel. Since the board isn't a "PPC_MULTIPLATFORM"
> one, I did a quick patch to the Kconfig file to allow enabling Kexec
> for our own board. The patch below then adds the kexec machine
> callbacks for our board, and this is enough to build.
>
> I ran into two problems though: First, /proc/iomem did not contain any
> "System RAM", so the kexec userspace tool ended up without any usable
> memory regions and fails because of that. I thought this would be
> handled by the device tree support, where we have a node for the memory:
>
> memory {
> device_type = "memory";
> reg = <00000000 20000000>;
> };
>
> but apparently it isn't. Anyway, the add_ram_region_iomem() function
> adds a "System RAM" region for all "memory" nodes in the device tree.
>
>
> However, even after this kexec still fails:
>
> bash-3.1# /kexec -l /vmlinux
> Invalid memory segment 0xc0000000 - 0xc0304fff
>
> this time because the "System RAM" is really 0x00000000-0x20000000. If
> I use the --gamecube=1 option, kexec will load the kernel, but when
> trying to start it the board will just crash:
>
> bash-3.1# /kexec -e -d
> [ 1579.005719] Starting new kernel
> <end up in U-boot here>
>
> So some questions: Is the --gamecube=1 option really meant to be used
> without a gamecube and should the first version really fail? Is the
> "System RAM" usage correct? Are there any similar freescale-based
> boards which have kexec support?
>
> // Simon
>
> Index: linux-2.6.21-standard/arch/powerpc/platforms/83xx/cmxb.c
> ===================================================================
> --- linux-2.6.21-standard.orig/arch/powerpc/platforms/83xx/cmxb.c
> +++ linux-2.6.21-standard/arch/powerpc/platforms/83xx/cmxb.c
> @@ -23,6 +23,7 @@
> #include <linux/delay.h>
> #include <linux/seq_file.h>
> #include <linux/root_dev.h>
> +#include <linux/bootmem.h>
>
> #include <asm/system.h>
> #include <asm/atomic.h>
> @@ -35,6 +36,7 @@
> #include <asm/prom.h>
> #include <asm/udbg.h>
> #include <sysdev/fsl_soc.h>
> +#include <linux/kexec.h>
>
> #include "mpc83xx.h"
> #include "cmxb.h"
> @@ -44,6 +46,31 @@ unsigned long isa_io_base = 0;
> unsigned long isa_mem_base = 0;
> #endif
>
> +
> +static void add_ram_region_iomem(void)
> +{
> + struct device_node *np;
> + struct resource *res;
> + struct resource of_resource;
> +
> + for (np = NULL; (np = of_find_node_by_type(np, "memory")) != NULL;) {
> + if (of_address_to_resource(np, 0, &of_resource)) {
> + printk(KERN_ERR "Could not convert memory node to resource\n");
> + of_node_put(np);
> + return;
> + }
> + res = alloc_bootmem(sizeof(struct resource));
> +
> + res->name = "System RAM";
> + res->start = of_resource.start;
> + res->end = of_resource.end;
> + res->flags = of_resource.flags;
> + request_resource(&iomem_resource, res);
> + of_node_put(np);
> + }
> +}
> +
> +
> /* ************************************************************************
> *
> * Setup the architecture
> @@ -62,6 +89,7 @@ static void __init cmxb_setup_arch(void)
>
> ppc_md.pci_exclude_device = mpc83xx_exclude_device;
> #endif
> + add_ram_region_iomem();
> }
>
> static void __init cmxb_init_IRQ(void)
> @@ -100,4 +128,9 @@ define_machine(cmxb) {
> .time_init = mpc83xx_time_init,
> .calibrate_decr = generic_calibrate_decr,
> .progress = udbg_progress,
> +#ifdef CONFIG_KEXEC
> + .machine_kexec = default_machine_kexec,
> + .machine_kexec_prepare = default_machine_kexec_prepare,
> + .machine_crash_shutdown = default_machine_crash_shutdown,
> +#endif
> };
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>
Hi mate,
I think currently there's support for the kexec on 85xx.
Regards,
--
Marco Stornelli
Embedded Software Engineer
CoRiTeL - Consorzio di Ricerca sulle Telecomunicazioni
http://www.coritel.it
marco.stornelli@coritel.it
+39 06 72582838
prev parent reply other threads:[~2008-07-23 11:57 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-23 9:48 Kexec on arch powerpc, device trees Simon Kagstrom
2008-07-23 11:59 ` Marco Stornelli [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48871D38.5030600@coritel.it \
--to=marco.stornelli@coritel.it \
--cc=linuxppc-embedded@ozlabs.org \
--cc=simon.kagstrom@ericsson.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.