All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: gregkh@suse.de
Cc: stable@kernel.org, linux-kernel@vger.kernel.org, mingo@elte.hu
Subject: Fw: Re: [kernel] Re: kernel/rcutree.h:301: sorry, unimplemented: inlining failed in call to 'rcu_bootup_announce': function body not available
Date: Fri, 18 Dec 2009 12:08:39 -0800	[thread overview]
Message-ID: <20091218200839.GF6712@linux.vnet.ibm.com> (raw)

Hello, Greg,

Could you please consider the following commit for 2.6.32-stable?
It fixes a build error that some people are seeing.

							Thanx, Paul

dbe01350fa8ce0c11948ab7d6be71a4d901be151 rcu: Remove inline from forward-referenced functions

----- Forwarded message from "Mr. James W. Laferriere" <babydr@baby-dragons.com> -----

Date: Fri, 18 Dec 2009 10:05:46 -0900 (AKST)
From: "Mr. James W. Laferriere" <babydr@baby-dragons.com>
To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
cc: Américo Wang <xiyou.wangcong@gmail.com>,
	Linux Kernel Maillist <linux-kernel@vger.kernel.org>
Subject: Re: [kernel] Re: kernel/rcutree.h:301: sorry, unimplemented: inlining
	failed in call to 'rcu_bootup_announce': function body not available

	Hello Paul ,

On Fri, 18 Dec 2009, Paul E. McKenney wrote:
> On Fri, Dec 18, 2009 at 09:08:00AM -0900, Mr. James W. Laferriere wrote:
>> On Fri, 18 Dec 2009, Paul E. McKenney wrote:
>>> On Fri, Dec 18, 2009 at 08:07:51AM -0900, Mr. James W. Laferriere wrote:
>>>> On Fri, 18 Dec 2009, Paul E. McKenney wrote:
>>>>> On Fri, Dec 18, 2009 at 05:52:51PM +0800, Américo Wang wrote:
>>>>>> On Fri, Dec 18, 2009 at 1:45 PM, Mr. James W. Laferriere
>>>>>> <babydr@baby-dragons.com> wrote:
>>>>>>>        Hello All ,
>>>>>>>
>>>>>>>  gcc -Wp,-MD,kernel/.rcutree.o.d  -nostdinc -isystem
>>>>>>> /usr/lib/gcc/i486-slackware-linux/3.4.6/include -Iinclude
>>>>>>> -I/usr/src/linux-2.6.32.1/arch/x86/include -include
>>>>>>> include/linux/autoconf.h
>>>>>>> -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs
>>>>>>> -fno-strict-aliasing -fno-common 
>>>>>>> -Werror-implicit-function-declaration
>>>>>>> -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32
>>>>>>> -msoft-float
>>>>>>> -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2
>>>>>>> -fno-unit-at-a-time -march=i686 -ffreestanding -DCONFIG_AS_CFI=1 
>>>>>>> -pipe
>>>>>>> -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx
>>>>>>> -mno-sse2 -mno-3dnow -fno-omit-frame-pointer
>>>>>>> -fno-optimize-sibling-calls
>>>>>>> -g
>>>>>>> -Wdeclaration-after-statement   -D"KBUILD_STR(s)=#s"
>>>>>>> -D"KBUILD_BASENAME=KBUILD_STR(rcutree)"
>>>>>>>  -D"KBUILD_MODNAME=KBUILD_STR(rcutree)" -c -o kernel/rcutree.o
>>>>>>> kernel/rcutree.c
>>>>>>> kernel/rcutree.c: In function `__rcu_init':
>>>>>>> kernel/rcutree.h:301: sorry, unimplemented: inlining failed in call 
>>>>>>> to
>>>>>>> 'rcu_bootup_announce': function body not available
>>>>>>> kernel/rcutree.c:1740: sorry, unimplemented: called from here
>>>>>>> make[1]: *** [kernel/rcutree.o] Error 1
>>>>>>> make: *** [kernel] Error 2
>>>>>>>
>>>>>>>        There is no way ,  thru the 'make *config' methods to
>>>>>>> disable this
>>>>>>> broken stuff ,  So How may I get past this brokeness ?
>>>>>>>        And looking the posts for the 2.6.32-pre/rc the old rcu 
>>>>>>> has
>>>>>>> been
>>>>>>> trashed completely .  So I am not able to even try using that .
>>>>>>>
>>>>>>>        Would someone please shed some light on this .  I really
>>>>>>> need the
>>>>>>> updates for the Fusion/mpt driver & the changes in the /md/ tree as
>>>>>>> well
>>>>>>> .
>>>>>>
>>>>>> Hmm, I see the problem, but not sure how to fix it...
>>>>>>
>>>>>> Paul, why do we have #include "rcutree_plugin.h" at the bottom
>>>>>> of rcutree.c? This looks strange for me...
>>>>>>
>>>>>> How about moving it up? At least just move upper to rcu_init().
>>>>>
>>>>> Could you please apply commit 
>>>>> #dbe01350fa8ce0c11948ab7d6be71a4d901be151
>>>>> from Linus's git tree?  Corresponding diff attached.
>>>>>
>>>>> 							Thanx, Paul
>>>>>
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>> diff --git a/kernel/rcutree.h b/kernel/rcutree.h
>>>>> index c1891c3..ddb79ec 100644
>>>>> --- a/kernel/rcutree.h
>>>>> +++ b/kernel/rcutree.h
>>>>> @@ -301,7 +301,7 @@ DECLARE_PER_CPU(struct rcu_data, 
>>>>> rcu_preempt_data);
>>>>> #else /* #ifdef RCU_TREE_NONCORE */
>>>>>
>>>>> /* Forward declarations for rcutree_plugin.h */
>>>>> -static inline void rcu_bootup_announce(void);
>>>>> +static void rcu_bootup_announce(void);
>>>>> long rcu_batches_completed(void);
>>>>> static void rcu_preempt_note_context_switch(int cpu);
>>>>> static int rcu_preempted_readers(struct rcu_node *rnp);
>>>>> diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
>>>>> index ef2a58c..c03edf7 100644
>>>>> --- a/kernel/rcutree_plugin.h
>>>>> +++ b/kernel/rcutree_plugin.h
>>>>> @@ -33,7 +33,7 @@ DEFINE_PER_CPU(struct rcu_data, rcu_preempt_data);
>>>>> /*
>>>>>  * Tell them what RCU they are running.
>>>>>  */
>>>>> -static inline void rcu_bootup_announce(void)
>>>>> +static void rcu_bootup_announce(void)
>>>>> {
>>>>> 	printk(KERN_INFO
>>>>> 	       "Experimental preemptable hierarchical RCU 
>>>>> implementation.\n");
>>>>> @@ -481,7 +481,7 @@ void exit_rcu(void)
>>>>> /*
>>>>>  * Tell them what RCU they are running.
>>>>>  */
>>>>> -static inline void rcu_bootup_announce(void)
>>>>> +static void rcu_bootup_announce(void)
>>>>> {
>>>>> 	printk(KERN_INFO "Hierarchical RCU implementation.\n");
>>>>> }
>>>>
>>>> 	Thank you & Americo for responding .
>>>>
>>>> 	Patch applied & same error as far as I can tell .
>>>> 	did
>>>>
>>>> 	make mrproper
>>>> 	cp ../old.config .config	(same as in previous email)
>>>> 	make oldconfig
>>>> 	( time make V=1 KBUILD_VERBOSE=1 INSTALL_PATH=/boot clean all install
>>>> modules_install ) >../linux-2.6.32.1d.log 2>&1
>>>> 	error'd (See below) ...
>>>>
>>>> 	If there is any further info I can provide or something I can do to
>>>> 	provide ,  Please request it .
>>>
>>> Hmmm....  Yes.  Could you please execute the following command from
>>> the top-level directory of your patched kernel source tree?
>>>
>>> 	grep rcu_bootup_announce kernel/rcu*
>>>
>>> I would expect the following output:
>>>
>>> 	kernel/rcutree.c:       rcu_bootup_announce();
>>> 	kernel/rcutree.h:static void rcu_bootup_announce(void);
>>> 	kernel/rcutree_plugin.h:static void __init rcu_bootup_announce(void)
>>> 	kernel/rcutree_plugin.h:static void __init rcu_bootup_announce(void)
>>>
>>> 							Thanx, Paul
>>
>> 	This is with your patch applied on top of linux-2.6.32.1.tar.gz
>> 	no other patches or additions .
>>
>> 	OK ,  it looks like I wandered right by the first file ie:
>> 'kernel/rcutree.h' so I need to patch that as well .  Doing this by hand 
>> as
>> the offending system is not online and all I have is serial console 
>> access
>> presently .
>> 	But ,  the last two you've changed to 'void __init' instead of just 
>> 'void'
>> .
>> 	Do you want me to add those changes to the file 
>> 'kernel/rcutree_plugin.h'
>> as well ?
>
> We were starting from different places.  The important thing is to
> remove the "inline" declarations.
	Ok ,  That was the very reason for why I asked this question .

>> # grep rcu_bootup_announce kernel/rcu*
>> kernel/rcutree.c:       rcu_bootup_announce();
>> kernel/rcutree.h:static inline void rcu_bootup_announce(void);
>
> The above "inline" needs to go as well.  (Ah, as you noted above.)
> Strange -- this change -was- in the patch I sent.
	I also mentioned not seeing the first file in the patch so I had to go 
back & edit it also .

>> kernel/rcutree_plugin.h:static void rcu_bootup_announce(void)
>> kernel/rcutree_plugin.h:static void rcu_bootup_announce(void)
>
> Does removing all three "inline" directives fix your build?
>
> 							Thanx, Paul
	Yes ,  Removing the 'inline's from all three locations gets me past the 
rcu error issue .  But now I am into errors in the code that I was really 
interested in getting 2.6.32 for are now error'ng .  I'll place those 
errors onto the list & other authors in another email .

	Thank you ,  for your efforts & the success .  JimL
-- 
+------------------------------------------------------------------+
| James   W.   Laferriere | System    Techniques | Give me VMS     |
| Network&System Engineer | 3237     Holden Road |  Give me Linux  |
| babydr@baby-dragons.com | Fairbanks, AK. 99709 |   only  on  AXP |
+------------------------------------------------------------------+


----- End forwarded message -----

             reply	other threads:[~2009-12-18 20:09 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-18 20:08 Paul E. McKenney [this message]
2009-12-18 20:54 ` Fw: Re: [kernel] Re: kernel/rcutree.h:301: sorry, unimplemented: inlining failed in call to 'rcu_bootup_announce': function body not available Greg KH
2009-12-18 21:01   ` [stable] " Greg KH
2009-12-18 21:08   ` [kernel] " Mr. James W. Laferriere
2009-12-18 21:20     ` Greg KH
2009-12-18 21:55   ` Paul E. McKenney

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=20091218200839.GF6712@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=stable@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.