All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@redhat.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Mike Galbraith <efault@gmx.de>, Borislav Petkov <bp@alien8.de>,
	"Tobin C. Harding" <me@tobin.cc>,
	LKML <linux-kernel@vger.kernel.org>,
	Nicholas Mc Guire <der.herr@hofr.at>,
	x86@kernel.org, Dave Young <dyoung@redhat.com>,
	Baoquan He <bhe@redhat.com>
Subject: Re: kexec, x86/purgatory: Cleanup the unholy mess
Date: Fri, 10 Mar 2017 09:24:18 -0500	[thread overview]
Message-ID: <20170310142418.GA20954@redhat.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1703101457160.3681@nanos>

On Fri, Mar 10, 2017 at 02:57:38PM +0100, Thomas Gleixner wrote:
> On Fri, 10 Mar 2017, Mike Galbraith wrote:
> > On Fri, 2017-03-10 at 13:17 +0100, Thomas Gleixner wrote:
> > > The purgatory code defines global variables which are referenced via a
> > > symbol lookup in the kexec code (core and arch).
> > > 
> > > A recent commit addressing sparse warning made these static and thereby
> > > broke kexec file.
> > > 
> > > Why did this happen? Simply because the whole machinery is undocumented and
> > > lacks any form of forward declarations. The variable names are unspecific
> > > and lack a prefix, so adding forward declarations creates shadow variables
> > > in the core code. Aside of that the code relies on magic constants and
> > > duplicate struct definitions with no way to ensure that these things stay
> > > in sync.
> > > 
> > > Unbreak kexec and cleanup the mess by:
> > > 
> > >  - Adding proper forward declarations and document the usage
> > >  - Use the proper common defines instead of magic constants
> > >  - Add a purgatory_ prefix to have a proper name space
> > >  - Use ARRAY_SIZE() instead of a homebrewn reimplementation
> > > 
> > > Fixes: 72042a8c7b01 ("x86/purgatory: Make functions and variables static")
> > 
> > Well, almost fixes.
> > 
> > [   15.118820] kexec: symbol 'purgatory_sha_regions' in common section
> > [   15.119187] kexec-bzImage64: Loading purgatory failed
> 
> Bah. /me goes to investigate.

I think we probably will have to initialize these global variables in
purgatory itself and that puts them in .data section and relocation
works.

That's how the code was intially. I initialized value of
purgatory_sha256_digest in the code and then did "readelf -a purgatory.o"
and symbol section index changed from COM to 3.

13: 0000000000000000    32 OBJECT  GLOBAL DEFAULT    3
purgatory_sha256_digest

[ 3] .data             PROGBITS         0000000000000000  00000120
         0000000000000020  0000000000000000  WA       0     0     32

Thanks
Vivek

  reply	other threads:[~2017-03-10 14:24 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-10 12:17 kexec, x86/purgatory: Cleanup the unholy mess Thomas Gleixner
2017-03-10 13:47 ` Mike Galbraith
2017-03-10 13:57   ` Thomas Gleixner
2017-03-10 14:24     ` Vivek Goyal [this message]
2017-03-10 14:58       ` Thomas Gleixner
2017-03-10 15:05         ` Vivek Goyal
2017-03-10 14:31     ` Mike Galbraith
2017-03-10 14:56       ` Thomas Gleixner
2017-03-10 14:58         ` Mike Galbraith
2017-03-10 15:31           ` Thomas Gleixner
2017-03-10 18:13             ` Mike Galbraith
2017-03-10 20:13 ` [tip:x86/urgent] kexec, x86/purgatory: Unbreak it and clean it up tip-bot for Thomas Gleixner

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=20170310142418.GA20954@redhat.com \
    --to=vgoyal@redhat.com \
    --cc=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=der.herr@hofr.at \
    --cc=dyoung@redhat.com \
    --cc=efault@gmx.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=me@tobin.cc \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.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 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.