Subject: Re: [PATCH] Do not inline putprops function

From: "M. Mohan Kumar" <[email-masked]>
Date: Wed, 17 Jun 2009 19:56:52 +0530

On Wed, Jun 17, 2009 at 10:05:14AM -0400, Neil Horman wrote:
> On Wed, Jun 17, 2009 at 07:04:35PM +0530, M. Mohan Kumar wrote:
> > On Wed, Jun 17, 2009 at 09:04:13AM -0400, Neil Horman wrote:
> > > On Wed, Jun 17, 2009 at 10:26:35PM +1000, Michael Ellerman wrote:
> > > > 
> > > > What compiler version are you using? Does the behaviour change if you
> > > > use a newer/older compiler? It sounds to me like there's some deeper bug
> > > > and your patch is just papering over it.
> > > > 
> > 
> > I tried with gcc 4.3.2. Let me try with a recent version and update.
> > 
> > > Agreed, this doesn't make any sense. Try changing the compiler version to see if
> > > the problem goes away or stops.  It might also be worthwhile to dump the
> > > contents of the device tree at the start and end of the kexec process.  If the
> > > changing of how a function is inlined is causing a hang, its likely changing how
> > > the putprops function is writing information to the device tree.  Understanding
> > > what that change is will likely provide clues to how the code has changed.
> > 
> > Neil, there was no code change in fs2dt.c
> > 
> Sure there was, by modifying the code to tell it to not inline the putprops
> function, you changed how the complier optimizes that code block.  There may not
> be any source level code change, but the assembly is certainly different, and it
> must be so in a way thats causing a hang.  The putpops function changes the
> contents of the ppc64 device-tree, so if this is a compiler bug, and its causing
> a hang, I imagine we'll see some manifestation in a change in the device tree
> contents.

As I mentioned in the patch description, when I retained the variable dt_len
and dt_len = dt assignment, kexec/kdump kernel would work. But even if I
comment the "dt_len = dt" assignment kernel would hang. If you need I can
send objdump of fs2dt.o with and without this assignment.

Regards,
M. Mohan Kumar.