All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH,RFC] - make /proc/vmcore accesable on x86_64
@ 2010-10-19 15:06 Jiri Olsa
  2010-10-22  8:54 ` Simon Horman
  0 siblings, 1 reply; 5+ messages in thread
From: Jiri Olsa @ 2010-10-19 15:06 UTC (permalink / raw)
  To: kexec; +Cc: horms

hi,

I was playing around with preserve context feature on x86_64
and was not able to get the /proc/vmcore in the kexec-ed
kernel until I aplied attached patch.

I'm not at all sure this is right fix ;) but it seems
that /proc/vmcore is not loaded since the machine field in the
elf header is wrong.


If the x86_64 arch returns 0 (KEXEC_ARCH_DEFAULT) then following
condition in load_crashdump_segments function will fill 386 as the
machine for the vmcore elf header..

...

        if ((info->kexec_flags & KEXEC_ARCH_MASK) == KEXEC_ARCH_X86_64)
        {
                elf_info.machine = EM_X86_64;
        } else {
                elf_info.machine       = EM_386;
                elf_info.lowmem_limit  = X86_MAXMEM;
                elf_info.get_note_info = get_crash_notes;
        }
...

ending with kexec-ed kernel failing check for the machine,
and disabling vmcore interface...


I'm guessing that the reason is the load_crashdump_segments function
being shared among 32 and 64 bits.. but again, not sure ;)


My goal is to share data within the host and kexec-ed kernel,
so I'd like to use the /proc/vmcore for that.. any other
ideas are welcome :)


thanks,
jirka
---
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
index 06e5ae9..40f989a 100644
--- a/kexec/arch/i386/crashdump-x86.c
+++ b/kexec/arch/i386/crashdump-x86.c
@@ -691,6 +691,8 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
 	struct memory_range *mem_range, *memmap_p;
 	struct crash_elf_info elf_info;
 
+	memset(&elf_info, 0x0, sizeof(elf_info));
+
 	/* Constant parts of the elf_info */
 	elf_info.data             = ELFDATA2LSB;
 	elf_info.backup_src_start = BACKUP_SRC_START;
diff --git a/kexec/arch/x86_64/kexec-x86_64.c b/kexec/arch/x86_64/kexec-x86_64.c
index 3092643..c34fd92 100644
--- a/kexec/arch/x86_64/kexec-x86_64.c
+++ b/kexec/arch/x86_64/kexec-x86_64.c
@@ -134,10 +134,7 @@ int arch_process_options(int argc, char **argv)
 }
 
 const struct arch_map_entry arches[] = {
-	/* For compatibility with older patches
-	 * use KEXEC_ARCH_DEFAULT instead of KEXEC_ARCH_X86_64 here.
-	 */
-	{ "x86_64", KEXEC_ARCH_DEFAULT },
+	{ "x86_64", KEXEC_ARCH_X86_64 },
 	{ NULL, 0 },
 };
 

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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH,RFC] - make /proc/vmcore accesable on x86_64
  2010-10-19 15:06 [PATCH,RFC] - make /proc/vmcore accesable on x86_64 Jiri Olsa
@ 2010-10-22  8:54 ` Simon Horman
  2010-10-28 12:16   ` Simon Horman
  0 siblings, 1 reply; 5+ messages in thread
From: Simon Horman @ 2010-10-22  8:54 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: kexec

On Tue, Oct 19, 2010 at 05:06:30PM +0200, Jiri Olsa wrote:
> hi,
> 
> I was playing around with preserve context feature on x86_64
> and was not able to get the /proc/vmcore in the kexec-ed
> kernel until I aplied attached patch.
> 
> I'm not at all sure this is right fix ;) but it seems
> that /proc/vmcore is not loaded since the machine field in the
> elf header is wrong.
> 
> 
> If the x86_64 arch returns 0 (KEXEC_ARCH_DEFAULT) then following
> condition in load_crashdump_segments function will fill 386 as the
> machine for the vmcore elf header..
> 
> ...
> 
>         if ((info->kexec_flags & KEXEC_ARCH_MASK) == KEXEC_ARCH_X86_64)
>         {
>                 elf_info.machine = EM_X86_64;
>         } else {
>                 elf_info.machine       = EM_386;
>                 elf_info.lowmem_limit  = X86_MAXMEM;
>                 elf_info.get_note_info = get_crash_notes;
>         }
> ...
> 
> ending with kexec-ed kernel failing check for the machine,
> and disabling vmcore interface...
> 
> 
> I'm guessing that the reason is the load_crashdump_segments function
> being shared among 32 and 64 bits.. but again, not sure ;)
> 
> 
> My goal is to share data within the host and kexec-ed kernel,
> so I'd like to use the /proc/vmcore for that.. any other
> ideas are welcome :)

This approach seems reasonable to me.
I'll push it if a I don't hear any objections
in the near future.

> 
> 
> thanks,
> jirka
> ---
> diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
> index 06e5ae9..40f989a 100644
> --- a/kexec/arch/i386/crashdump-x86.c
> +++ b/kexec/arch/i386/crashdump-x86.c
> @@ -691,6 +691,8 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
>  	struct memory_range *mem_range, *memmap_p;
>  	struct crash_elf_info elf_info;
>  
> +	memset(&elf_info, 0x0, sizeof(elf_info));
> +
>  	/* Constant parts of the elf_info */
>  	elf_info.data             = ELFDATA2LSB;
>  	elf_info.backup_src_start = BACKUP_SRC_START;
> diff --git a/kexec/arch/x86_64/kexec-x86_64.c b/kexec/arch/x86_64/kexec-x86_64.c
> index 3092643..c34fd92 100644
> --- a/kexec/arch/x86_64/kexec-x86_64.c
> +++ b/kexec/arch/x86_64/kexec-x86_64.c
> @@ -134,10 +134,7 @@ int arch_process_options(int argc, char **argv)
>  }
>  
>  const struct arch_map_entry arches[] = {
> -	/* For compatibility with older patches
> -	 * use KEXEC_ARCH_DEFAULT instead of KEXEC_ARCH_X86_64 here.
> -	 */
> -	{ "x86_64", KEXEC_ARCH_DEFAULT },
> +	{ "x86_64", KEXEC_ARCH_X86_64 },
>  	{ NULL, 0 },
>  };
>  
> 

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH,RFC] - make /proc/vmcore accesable on x86_64
  2010-10-22  8:54 ` Simon Horman
@ 2010-10-28 12:16   ` Simon Horman
  2010-10-29  7:54     ` [PATCH] " Jiri Olsa
  0 siblings, 1 reply; 5+ messages in thread
From: Simon Horman @ 2010-10-28 12:16 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: kexec

On Fri, Oct 22, 2010 at 10:54:12AM +0200, Simon Horman wrote:
> On Tue, Oct 19, 2010 at 05:06:30PM +0200, Jiri Olsa wrote:
> > hi,
> > 
> > I was playing around with preserve context feature on x86_64
> > and was not able to get the /proc/vmcore in the kexec-ed
> > kernel until I aplied attached patch.
> > 
> > I'm not at all sure this is right fix ;) but it seems
> > that /proc/vmcore is not loaded since the machine field in the
> > elf header is wrong.
> > 
> > 
> > If the x86_64 arch returns 0 (KEXEC_ARCH_DEFAULT) then following
> > condition in load_crashdump_segments function will fill 386 as the
> > machine for the vmcore elf header..
> > 
> > ...
> > 
> >         if ((info->kexec_flags & KEXEC_ARCH_MASK) == KEXEC_ARCH_X86_64)
> >         {
> >                 elf_info.machine = EM_X86_64;
> >         } else {
> >                 elf_info.machine       = EM_386;
> >                 elf_info.lowmem_limit  = X86_MAXMEM;
> >                 elf_info.get_note_info = get_crash_notes;
> >         }
> > ...
> > 
> > ending with kexec-ed kernel failing check for the machine,
> > and disabling vmcore interface...
> > 
> > 
> > I'm guessing that the reason is the load_crashdump_segments function
> > being shared among 32 and 64 bits.. but again, not sure ;)
> > 
> > 
> > My goal is to share data within the host and kexec-ed kernel,
> > so I'd like to use the /proc/vmcore for that.. any other
> > ideas are welcome :)
> 
> This approach seems reasonable to me.
> I'll push it if a I don't hear any objections
> in the near future.

Hi Jiru,

could you please submit this as a formal patch with a signed-off-by line?

> > thanks,
> > jirka
> > ---
> > diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
> > index 06e5ae9..40f989a 100644
> > --- a/kexec/arch/i386/crashdump-x86.c
> > +++ b/kexec/arch/i386/crashdump-x86.c
> > @@ -691,6 +691,8 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
> >  	struct memory_range *mem_range, *memmap_p;
> >  	struct crash_elf_info elf_info;
> >  
> > +	memset(&elf_info, 0x0, sizeof(elf_info));
> > +
> >  	/* Constant parts of the elf_info */
> >  	elf_info.data             = ELFDATA2LSB;
> >  	elf_info.backup_src_start = BACKUP_SRC_START;
> > diff --git a/kexec/arch/x86_64/kexec-x86_64.c b/kexec/arch/x86_64/kexec-x86_64.c
> > index 3092643..c34fd92 100644
> > --- a/kexec/arch/x86_64/kexec-x86_64.c
> > +++ b/kexec/arch/x86_64/kexec-x86_64.c
> > @@ -134,10 +134,7 @@ int arch_process_options(int argc, char **argv)
> >  }
> >  
> >  const struct arch_map_entry arches[] = {
> > -	/* For compatibility with older patches
> > -	 * use KEXEC_ARCH_DEFAULT instead of KEXEC_ARCH_X86_64 here.
> > -	 */
> > -	{ "x86_64", KEXEC_ARCH_DEFAULT },
> > +	{ "x86_64", KEXEC_ARCH_X86_64 },
> >  	{ NULL, 0 },
> >  };
> >  
> > 
> 
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
> 

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] - make /proc/vmcore accesable on x86_64
  2010-10-28 12:16   ` Simon Horman
@ 2010-10-29  7:54     ` Jiri Olsa
  2010-10-31  1:16       ` Simon Horman
  0 siblings, 1 reply; 5+ messages in thread
From: Jiri Olsa @ 2010-10-29  7:54 UTC (permalink / raw)
  To: Simon Horman; +Cc: kexec

On Thu, Oct 28, 2010 at 09:16:27PM +0900, Simon Horman wrote:
> On Fri, Oct 22, 2010 at 10:54:12AM +0200, Simon Horman wrote:
> > On Tue, Oct 19, 2010 at 05:06:30PM +0200, Jiri Olsa wrote:

SNIP

> > > My goal is to share data within the host and kexec-ed kernel,
> > > so I'd like to use the /proc/vmcore for that.. any other
> > > ideas are welcome :)
> > 
> > This approach seems reasonable to me.
> > I'll push it if a I don't hear any objections
> > in the near future.
> 
> Hi Jiru,
> 
> could you please submit this as a formal patch with a signed-off-by line?
sure, it's attached

thanks,
jirka
---

hi,

I was playing around with preserve context feature on x86_64
and was not able to get the /proc/vmcore in the kexec-ed
kernel until I aplied attached patch.

If the x86_64 arch returns 0 (KEXEC_ARCH_DEFAULT) then following
condition in load_crashdump_segments function will fill 386 as the
machine for the vmcore elf header..

...

        if ((info->kexec_flags & KEXEC_ARCH_MASK) == KEXEC_ARCH_X86_64)
        {
                elf_info.machine = EM_X86_64;
        } else {
                elf_info.machine       = EM_386;
                elf_info.lowmem_limit  = X86_MAXMEM;
                elf_info.get_note_info = get_crash_notes;
        }
...

ending with kexec-ed kernel failing check for the machine,
and disabling vmcore interface.

wbr,
jirka


Signed-off-by: Jiri Olsa <jolsa@redhat.com>
---
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
index 06e5ae9..40f989a 100644
--- a/kexec/arch/i386/crashdump-x86.c
+++ b/kexec/arch/i386/crashdump-x86.c
@@ -691,6 +691,8 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
 	struct memory_range *mem_range, *memmap_p;
 	struct crash_elf_info elf_info;
 
+	memset(&elf_info, 0x0, sizeof(elf_info));
+
 	/* Constant parts of the elf_info */
 	elf_info.data             = ELFDATA2LSB;
 	elf_info.backup_src_start = BACKUP_SRC_START;
diff --git a/kexec/arch/x86_64/kexec-x86_64.c b/kexec/arch/x86_64/kexec-x86_64.c
index 3092643..c34fd92 100644
--- a/kexec/arch/x86_64/kexec-x86_64.c
+++ b/kexec/arch/x86_64/kexec-x86_64.c
@@ -134,10 +134,7 @@ int arch_process_options(int argc, char **argv)
 }
 
 const struct arch_map_entry arches[] = {
-	/* For compatibility with older patches
-	 * use KEXEC_ARCH_DEFAULT instead of KEXEC_ARCH_X86_64 here.
-	 */
-	{ "x86_64", KEXEC_ARCH_DEFAULT },
+	{ "x86_64", KEXEC_ARCH_X86_64 },
 	{ NULL, 0 },
 };
 

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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] - make /proc/vmcore accesable on x86_64
  2010-10-29  7:54     ` [PATCH] " Jiri Olsa
@ 2010-10-31  1:16       ` Simon Horman
  0 siblings, 0 replies; 5+ messages in thread
From: Simon Horman @ 2010-10-31  1:16 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: kexec

On Fri, Oct 29, 2010 at 09:54:25AM +0200, Jiri Olsa wrote:
> On Thu, Oct 28, 2010 at 09:16:27PM +0900, Simon Horman wrote:
> > On Fri, Oct 22, 2010 at 10:54:12AM +0200, Simon Horman wrote:
> > > On Tue, Oct 19, 2010 at 05:06:30PM +0200, Jiri Olsa wrote:
> 
> SNIP
> 
> > > > My goal is to share data within the host and kexec-ed kernel,
> > > > so I'd like to use the /proc/vmcore for that.. any other
> > > > ideas are welcome :)
> > > 
> > > This approach seems reasonable to me.
> > > I'll push it if a I don't hear any objections
> > > in the near future.
> > 
> > Hi Jiru,
> > 
> > could you please submit this as a formal patch with a signed-off-by line?
>
> sure, it's attached

Thanks, applied.

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-10-31  1:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-19 15:06 [PATCH,RFC] - make /proc/vmcore accesable on x86_64 Jiri Olsa
2010-10-22  8:54 ` Simon Horman
2010-10-28 12:16   ` Simon Horman
2010-10-29  7:54     ` [PATCH] " Jiri Olsa
2010-10-31  1:16       ` Simon Horman

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.