Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1474979 > unrolled thread

[tip:smp/hotplug 4/8] kernel/cpu.c:1252:3: error: unknown field 'startup' specified in initializer

Started bykbuild test robot <fengguang.wu@intel.com>
First post2016-09-02 11:50 +0200
Last post2016-09-02 14:20 +0200
Articles 3 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [tip:smp/hotplug 4/8] kernel/cpu.c:1252:3: error: unknown field  'startup' specified in initializer kbuild test robot <fengguang.wu@intel.com> - 2016-09-02 11:50 +0200
    Re: [tip:smp/hotplug 4/8] kernel/cpu.c:1252:3: error: unknown field  'startup' specified in initializer Sebastian Andrzej Siewior <bigeasy@linutronix.de> - 2016-09-02 13:00 +0200
      Re: [tip:smp/hotplug 4/8] kernel/cpu.c:1252:3: error: unknown field  'startup' specified in initializer Thomas Gleixner <tglx@linutronix.de> - 2016-09-02 14:20 +0200

#1474979 — [tip:smp/hotplug 4/8] kernel/cpu.c:1252:3: error: unknown field 'startup' specified in initializer

Fromkbuild test robot <fengguang.wu@intel.com>
Date2016-09-02 11:50 +0200
Subject[tip:smp/hotplug 4/8] kernel/cpu.c:1252:3: error: unknown field 'startup' specified in initializer
Message-ID<scTgJ-6aO-5@gated-at.bofh.it>

[Multipart message — attachments visible in raw view] — view raw

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git smp/hotplug
head:   6dc465457fac9a49462bebbb870beea5d536b7c2
commit: cf95baff0dd05eaaf445f75217a3363d4f83b449 [4/8] cpu/hotplug: Add multi instance support
config: openrisc-or1ksim_defconfig (attached as .config)
compiler: or32-linux-gcc (GCC) 4.5.1-or32-1.0rc1
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout cf95baff0dd05eaaf445f75217a3363d4f83b449
        # save the attached .config to linux build tree
        make.cross ARCH=openrisc 

All error/warnings (new ones prefixed by >>):

>> kernel/cpu.c:1252:3: error: unknown field 'startup' specified in initializer
>> kernel/cpu.c:1252:3: warning: missing braces around initializer
   kernel/cpu.c:1252:3: warning: (near initialization for 'cpuhp_bp_states[0].<anonymous>')
>> kernel/cpu.c:1253:3: error: unknown field 'teardown' specified in initializer
   kernel/cpu.c:1425:3: error: unknown field 'startup' specified in initializer
   kernel/cpu.c:1425:3: warning: missing braces around initializer
   kernel/cpu.c:1425:3: warning: (near initialization for 'cpuhp_ap_states[121].<anonymous>')
   kernel/cpu.c:1426:3: error: unknown field 'teardown' specified in initializer

vim +/startup +1252 kernel/cpu.c

68f4f1ec Max Krasnyansky 2008-05-29  1246  #endif /* CONFIG_SMP */
b8d317d1 Mike Travis     2008-07-24  1247  
cff7d378 Thomas Gleixner 2016-02-26  1248  /* Boot processor state steps */
cff7d378 Thomas Gleixner 2016-02-26  1249  static struct cpuhp_step cpuhp_bp_states[] = {
cff7d378 Thomas Gleixner 2016-02-26  1250  	[CPUHP_OFFLINE] = {
cff7d378 Thomas Gleixner 2016-02-26  1251  		.name			= "offline",
cff7d378 Thomas Gleixner 2016-02-26 @1252  		.startup		= NULL,
cff7d378 Thomas Gleixner 2016-02-26 @1253  		.teardown		= NULL,
cff7d378 Thomas Gleixner 2016-02-26  1254  	},
cff7d378 Thomas Gleixner 2016-02-26  1255  #ifdef CONFIG_SMP
cff7d378 Thomas Gleixner 2016-02-26  1256  	[CPUHP_CREATE_THREADS]= {

:::::: The code at line 1252 was first introduced by commit
:::::: cff7d378d3fdbb53db9b6e2578b14855f401cd41 cpu/hotplug: Convert to a state machine for the control processor

:::::: TO: Thomas Gleixner <tglx@linutronix.de>
:::::: CC: Thomas Gleixner <tglx@linutronix.de>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[toc] | [next] | [standalone]


#1475029

FromSebastian Andrzej Siewior <bigeasy@linutronix.de>
Date2016-09-02 13:00 +0200
Message-ID<scUmu-6SO-17@gated-at.bofh.it>
In reply to#1474979
On 2016-09-02 17:42:33 [+0800], kbuild test robot wrote:
> compiler: or32-linux-gcc (GCC) 4.5.1-or32-1.0rc1
> 
> >> kernel/cpu.c:1252:3: error: unknown field 'startup' specified in initializer
> >> kernel/cpu.c:1252:3: warning: missing braces around initializer
>    kernel/cpu.c:1252:3: warning: (near initialization for 'cpuhp_bp_states[0].<anonymous>')
> >> kernel/cpu.c:1253:3: error: unknown field 'teardown' specified in initializer
>    kernel/cpu.c:1425:3: error: unknown field 'startup' specified in initializer
>    kernel/cpu.c:1425:3: warning: missing braces around initializer
>    kernel/cpu.c:1425:3: warning: (near initialization for 'cpuhp_ap_states[121].<anonymous>')
>    kernel/cpu.c:1426:3: error: unknown field 'teardown' specified in initializer

This is a compiler issue. We have:
| struct cpuhp_step {
|         const char              *name;
|         union {
|                 int             (*startup)(unsigned int cpu);
|                 int             (*startup_multi)(unsigned int cpu,
|                                                  void *node);
|         };
…
| };
This unnamed union fields are valid as of ISO C11.
It seems that gcc 4.5 and earlier can't access ->startup. According to
[0] this is supported since gcc 4.6.

[0] https://gcc.gnu.org/wiki/C11Status

Sebastian

[toc] | [prev] | [next] | [standalone]


#1475090

FromThomas Gleixner <tglx@linutronix.de>
Date2016-09-02 14:20 +0200
Message-ID<scVBT-7O6-13@gated-at.bofh.it>
In reply to#1475029

[Multipart message — attachments visible in raw view] — view raw

On Fri, 2 Sep 2016, Sebastian Andrzej Siewior wrote:
> On 2016-09-02 17:42:33 [+0800], kbuild test robot wrote:
> > compiler: or32-linux-gcc (GCC) 4.5.1-or32-1.0rc1
> > 
> > >> kernel/cpu.c:1252:3: error: unknown field 'startup' specified in initializer
> > >> kernel/cpu.c:1252:3: warning: missing braces around initializer
> >    kernel/cpu.c:1252:3: warning: (near initialization for 'cpuhp_bp_states[0].<anonymous>')
> > >> kernel/cpu.c:1253:3: error: unknown field 'teardown' specified in initializer
> >    kernel/cpu.c:1425:3: error: unknown field 'startup' specified in initializer
> >    kernel/cpu.c:1425:3: warning: missing braces around initializer
> >    kernel/cpu.c:1425:3: warning: (near initialization for 'cpuhp_ap_states[121].<anonymous>')
> >    kernel/cpu.c:1426:3: error: unknown field 'teardown' specified in initializer
> 
> This is a compiler issue. We have:
> | struct cpuhp_step {
> |         const char              *name;
> |         union {
> |                 int             (*startup)(unsigned int cpu);
> |                 int             (*startup_multi)(unsigned int cpu,
> |                                                  void *node);
> |         };
> …
> | };
> This unnamed union fields are valid as of ISO C11.
> It seems that gcc 4.5 and earlier can't access ->startup. According to
> [0] this is supported since gcc 4.6.
> 
> [0] https://gcc.gnu.org/wiki/C11Status

And we have anon unions in other places as well. See
include/linux/spinlock_types.h

Thanks

	tglx

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web