All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cliff Wickman <cpw@sgi.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: Bernhard Walle <bwalle@suse.de>,
	Kexec Mailing List <kexec@lists.infradead.org>
Subject: Re: kexec -p loads
Date: Wed, 27 Aug 2008 13:34:13 -0500	[thread overview]
Message-ID: <20080827183413.GA22700@sgi.com> (raw)
In-Reply-To: <20080827153622.GD3694@redhat.com>


On Wed, Aug 27, 2008 at 11:36:22AM -0400, Vivek Goyal wrote:
> On Wed, Aug 27, 2008 at 05:30:35PM +0200, Bernhard Walle wrote:
> > * Vivek Goyal [2008-08-27 11:28]:
> > > > > 
> > > > > > 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.
> > > > 
> > > > Relocatability in ELF image never worked on x86_64 because of GDB but
> > > > (so the binary was marked as ET_EXEC instead of ET_DYN).
> > > > 
> > > > You have to use bzImage for kdump in any case.
> > > 
> > > True that vmlinux is not relocatable. But one can always compile the
> > > vmlinux for a fixed physical address (Address in reserved region) and then
> > > use it?  In this case his vmlinux seems to have been compiled for physical
> > > address 16MB. Which should be usable if there is a reserved memory region
> > > at 16MB.
> > 
> > Of course, that's true. I just thought when Cliff uses the same kernel
> > for "kexec -l" and "kexec -p", then it's the "normal" kernel. But I
> > didn't calculate the numbers.
> > 
> > 
> 
> Its litle tricky. I think one can always do both "kexec -l" and "kexec -p"
> on a vmlinux which has been built for kdump (for reserved region).
> 
> But one can not do "kexec -p" on normal kernel vmlinux.
> 
> So I am assuming that Cliff is running into first case. But he can tell
> us more. 
> 
> Cliff, is it same vmlinux which you use for first kernel or a different
> vmlinux compiled for dump capture.

Sorry for the lag.  I was working on the problem and not watching my mail.

I'm using two different kernels.
The kdump vmlinux is compiled with
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x1000000

I'm using  kexec-tools-1.101

Here's the head of iomem:
cleopatra1:/tmp/cpw # cat /proc/iomem
00000000-0009bbff : System RAM
0009bc00-0009ffff : reserved
000d0000-000d7fff : reserved
000e4000-000fffff : reserved
00100000-cff5ffff : System RAM
  00200000-005c6448 : Kernel code
  005c6449-007da867 : Kernel data
  0088d000-0094b447 : Kernel bss
  01000000-04ffffff : Crash kernel
cff60000-cff68fff : ACPI Tables
cff69000-cff7ffff : ACPI Non-volatile Storage
cff80000-cfffffff : reserved
d0000000-d7ffffff : PCI Bus 0000:08
  d0000000-d7ffffff : 0000:08:01.0

I do have Bernhard's patch applied:

--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -444,6 +444,12 @@ void __init setup_arch(char **cmdline_p)
        contig_initmem_init(0, end_pfn);
 #endif

+       /*
+        * dma32_reserve_bootmem() allocates bootmem which may conflict
+        * with the crashkernel command line, so do that before
+        */
+       reserve_crashkernel();
+
        dma32_reserve_bootmem();

 #ifdef CONFIG_ACPI_SLEEP
@@ -484,7 +490,6 @@ void __init setup_arch(char **cmdline_p)
                }
        }
 #endif
-       reserve_crashkernel();

        reserve_ibft_region();



I'll try some printf's in  mem-max and mem-min inside locate_hole() as
you suggested.

-Cliff
-- 
Cliff Wickman
Silicon Graphics, Inc.
cpw@sgi.com
(651) 683-3824

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  reply	other threads:[~2008-08-27 18:34 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 ` kexec -p loads Vivek Goyal
2008-08-27 13:43   ` 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 [this message]
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=20080827183413.GA22700@sgi.com \
    --to=cpw@sgi.com \
    --cc=bwalle@suse.de \
    --cc=kexec@lists.infradead.org \
    --cc=vgoyal@redhat.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.