From: Vivek Goyal <vgoyal@redhat.com>
To: Cliff Wickman <cpw@sgi.com>
Cc: Kexec Mailing List <kexec@lists.infradead.org>
Subject: Re: kexec -p loads
Date: Wed, 27 Aug 2008 09:39:15 -0400 [thread overview]
Message-ID: <20080827133915.GA3694@redhat.com> (raw)
In-Reply-To: <E1KY6n1-00014H-Qi@eag09.americas.sgi.com>
On Tue, Aug 26, 2008 at 05:13:27PM -0500, Cliff Wickman wrote:
>
> Hi Vivek,
>
> I'm having trouble getting a system kernel to load a kdump kernel.
>
> These are 2.6.26.2 kernels on an x86_64.
> The kdump kernel has no modules.
> The kdump kernel area is reserved as 64M@16M.
>
> This is the way I try to load it:
>
> /usr/local/sbin/kexec -p /boot/vmlinux-cpwcomm --args-linux --append="root=/dev/sda3 1 irqpoll maxcpus=1 reset_devices"
>
> This works with -l. But with -p the kernel objects to the 2 lowest
> segments, at 0x1000 and 0xa000 which I presume are the startup code
> and arguments.
>
CCing to kexec mailing list.
Few questions.
- What version of kexec-tools are you using?
- Can you please provide output of /proc/iomem. (With crash kernel memory
reserved).
- Looks like you have compiled your kernel for physical address 16MB?
(CONFIG_PHYSICAL_START=0x1000000)
- Can you also try loading relocatable bzImage, instead of vmlinux and see
what happens.
> I have this debugging output from my kexec:
>
> cpw: elf_x86_64_load returning entry:0x1550
> cpw: after call to file_type[i].load: nr_segments:6 entry:0x1550
> kexec_load: entry = 0x1550 flags = 1
> nr_segments = 6
> segment[0].buf = 0x5237a0
> segment[0].bufsz = 7100
> segment[0].mem = 0x1000
> segment[0].memsz = 9000
>
> segment[1].buf = 0x52aaf0
> segment[1].bufsz = 1000
> segment[1].mem = 0xa000
> segment[1].memsz = 1000
>
I think above two segments are not being loaded at right place. Looks like
kexec-tools decided to load first one at physical address 0x1000 and other at
physical address 0xa000. For crash kernel this is not right. It should
come out of reserved memory area and that's why you are encountering the
error.
For crash kernels, kexec-tools sets the value of mem-min and mem-max in
such a manner that it is with-in reserved memory area so that any memory
allocation in locate_hole() is done with-in reserved area and not outside
it.
In your case looks like something went wrong. Either memory area was not
reserved properly or value of mem-min, mem-max was not set properly etc.
Can you please paste the output of /proc/iomem and also do some
kexec-tools debugging. Especially value of mem-max and mem-min inside
locate_hole() function.
Thanks
Vivek
> segment[2].buf = 0x7f9bd8461010
> segment[2].bufsz = 224668
> segment[2].mem = 0x1000000
> segment[2].memsz = 225000
>
> segment[3].buf = 0x7f9bd8686010
> segment[3].bufsz = 75508
> segment[3].mem = 0x1225000
> segment[3].memsz = 76000
>
> segment[4].buf = 0x7f9bd8761010
> segment[4].bufsz = c08
> segment[4].mem = 0x129b000
> segment[4].memsz = 1000
>
> segment[5].buf = 0x7f9bd87fd010
> segment[5].bufsz = 30004
> segment[5].mem = 0x129c000
> segment[5].memsz = c2000
> kexec_load failed: Cannot assign requested address
>
>
> And I have some debugging in the system kernel:
>
> cleopatra1:/tmp/cpw # dmesg | tail
>
> cpw: -p, call kimage_crash_alloc
> cpw: kimage_crash_alloc bad entry point 0x1550:0x1000000 0x1550:0x4ffffff
> cpw: kimage_crash_alloc segment 0: 0x1000-0x9fff
> cpw: kimage_crash_alloc pta EADDRNOTAVAIL 0x1000:0x1000000 0x9fff:0x4ffffff
> cpw: kimage_crash_alloc segment 1: 0xa000-0xafff
> cpw: kimage_crash_alloc pta EADDRNOTAVAIL 0xa000:0x1000000 0xafff:0x4ffffff
> cpw: kimage_crash_alloc segment 2: 0x1000000-0x1224fff
> cpw: kimage_crash_alloc segment 3: 0x1225000-0x129afff
> cpw: kimage_crash_alloc segment 4: 0x129b000-0x129bfff
> cpw: kimage_crash_alloc segment 5: 0x129c000-0x135dfff
>
> The code that insists that the entry point must be within 64M@16M, and
> that every segment must also be in that range, seems to be old code.
>
> I don't understand.
> Is kexec generating bad segments? Or am I mis-using something?
> Can you tell from the above?
>
> Thanks.
> -Cliff
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next parent reply other threads:[~2008-08-27 13:39 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <E1KY6n1-00014H-Qi@eag09.americas.sgi.com>
2008-08-27 13:39 ` Vivek Goyal [this message]
2008-08-27 13:43 ` kexec -p loads Bernhard Walle
2008-08-27 15:28 ` Vivek Goyal
2008-08-27 15:30 ` Bernhard Walle
2008-08-27 15:36 ` Vivek Goyal
2008-08-27 18:34 ` Cliff Wickman
2008-08-27 19:01 ` Vivek Goyal
2008-08-27 19:23 ` Cliff Wickman
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=20080827133915.GA3694@redhat.com \
--to=vgoyal@redhat.com \
--cc=cpw@sgi.com \
--cc=kexec@lists.infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox