All of lore.kernel.org
 help / color / mirror / Atom feed
From: Don Zickus <dzickus@redhat.com>
To: Li Zhong <zhong@linux.vnet.ibm.com>
Cc: Jan Beulich <JBeulich@suse.com>,
	x86@kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] x86,nmi: Fix section mismatch warnings on 32-bit
Date: Thu, 7 Jun 2012 08:48:00 -0400	[thread overview]
Message-ID: <20120607124800.GH32472@redhat.com> (raw)
In-Reply-To: <1339055005.18639.11.camel@ThinkPad-T420>

On Thu, Jun 07, 2012 at 03:43:25PM +0800, Li Zhong wrote:
> On Wed, 2012-06-06 at 10:03 -0400, Don Zickus wrote:
> > On Wed, Jun 06, 2012 at 12:14:33PM +0100, Jan Beulich wrote:
> > > > I didn't think it would be compiler dependent as I do not know what
> > > > compiler the reporter was using.  I used a RHEL-6 4.4.4 compiler (which
> > > > you probably don't have :^) ).
> > > 
> > > Indeed, somehow I failed to see the obvious - it's commit
> > > 72b3fb24713755cf9740b403e95aa67ceedf3509 that causes
> > > these problems. Instantiating static data like this just doesn't
> > > play with any of the pointers passed being into .init.*.
> > > 
> > > I'd suggest either open coding register_nmi_handler() (with
> > > the static data put into __initdata), or further abstracting it
> > > by allowing an optional fifth argument (specifying the section
> > > annotation if needed).
> > 
> > Ah.  Thanks for figuring that out!!  I will post a patch opencoding it.
> > 
> 
> Hi Don, 
> 
> How about the following patch, adding an optional fifth argument as Jan
> mentioned? We don't need change other users of register_nmi_handler(). 

Ah, ok.  I forgot about the variable args syntax.  That works too.  I give
a quick test.

Thanks,
Don

> 
> Thanks, 
> Zhong
> 
> Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
> ---
> diff --git a/arch/x86/include/asm/nmi.h b/arch/x86/include/asm/nmi.h
> index 0e3793b..c0fa356 100644
> --- a/arch/x86/include/asm/nmi.h
> +++ b/arch/x86/include/asm/nmi.h
> @@ -44,14 +44,14 @@ struct nmiaction {
>  	const char		*name;
>  };
>  
> -#define register_nmi_handler(t, fn, fg, n)		\
> +#define register_nmi_handler(t, fn, fg, n, init...)	\
>  ({							\
> -	static struct nmiaction fn##_na = {		\
> +	static struct nmiaction init fn##_na = {	\
>  		.handler = (fn),			\
>  		.name = (n),				\
>  		.flags = (fg),				\
>  	};						\
> -	__register_nmi_handler((t), &fn##_na);	\
> +	__register_nmi_handler((t), &fn##_na);		\
>  })
>  
>  int __register_nmi_handler(unsigned int, struct nmiaction *);
> diff --git a/arch/x86/kernel/nmi_selftest.c
> b/arch/x86/kernel/nmi_selftest.c
> index e31bf8d..6d9582e 100644
> --- a/arch/x86/kernel/nmi_selftest.c
> +++ b/arch/x86/kernel/nmi_selftest.c
> @@ -42,7 +42,8 @@ static int __init nmi_unk_cb(unsigned int val, struct
> pt_regs *regs)
>  static void __init init_nmi_testsuite(void)
>  {
>  	/* trap all the unknown NMIs we may generate */
> -	register_nmi_handler(NMI_UNKNOWN, nmi_unk_cb, 0, "nmi_selftest_unk");
> +	register_nmi_handler(NMI_UNKNOWN, nmi_unk_cb, 0, "nmi_selftest_unk",
> +			__initdata);
>  }
>  
>  static void __init cleanup_nmi_testsuite(void)
> @@ -65,7 +66,7 @@ static void __init test_nmi_ipi(struct cpumask *mask)
>  	unsigned long timeout;
>  
>  	if (register_nmi_handler(NMI_LOCAL, test_nmi_ipi_callback,
> -				 NMI_FLAG_FIRST, "nmi_selftest")) {
> +				 NMI_FLAG_FIRST, "nmi_selftest", __initdata)) {
>  		nmi_fail = FAILURE;
>  		return;
>  	}
> 
> 

  reply	other threads:[~2012-06-07 12:48 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-04 19:56 [PATCH] x86,nmi: Fix section mismatch warnings on 32-bit Don Zickus
2012-06-05  8:12 ` Jan Beulich
2012-06-05 14:47   ` Don Zickus
2012-06-05 15:42     ` Jan Beulich
2012-06-05 18:35       ` Don Zickus
2012-06-06 11:14         ` Jan Beulich
2012-06-06 14:03           ` Don Zickus
2012-06-06 15:45             ` Ingo Molnar
2012-06-06 18:28               ` Don Zickus
2012-06-07  7:43             ` Li Zhong
2012-06-07 12:48               ` Don Zickus [this message]
2012-06-08 20:51                 ` Don Zickus
2012-06-11  1:36                   ` Zhong Li
2012-06-11  8:19                   ` Ingo Molnar
2012-06-05 16:13     ` Sam Ravnborg
2012-06-05 16:18       ` Jan Beulich
2012-06-05 17:22         ` Sam Ravnborg
2012-06-08  2:06           ` Don Zickus
2012-06-08  5:40             ` Sam Ravnborg
  -- strict thread matches above, loose matches on Subject: below --
2012-06-06 14:05 Don Zickus
2012-06-06 21:22 ` Witold Baryluk

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=20120607124800.GH32472@redhat.com \
    --to=dzickus@redhat.com \
    --cc=JBeulich@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=x86@kernel.org \
    --cc=zhong@linux.vnet.ibm.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.