lkml.org 
[lkml]   [2011]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRE: improper sparse warnings in linux kernel build?
On Friday, September 09, 2011 10:27 PM, Dan Carpenter wrote:
> On Fri, Sep 09, 2011 at 03:41:28PM -0700, H Hartley Sweeten wrote:
>> I'm not really sure what the DEFINE_PER_CPU macro expands to so I'm not
>> sure if the 'static' in front is actually getting used or if sparse is just
>> confused.
>>
>> Is this an actual problem in the linux kernel or is sparse just getting
>> tripped up by the DEFINE_PER_CPU macro?
>>
>
> I don't have a kernel git archive handy, but probably sparse is
> correct. Do a "make arch/x86/kernel/cpu/mcheck/mce_intel.i" and run
> sparse on the .i file to find the line number that complains.

Dan,

The DEFINE_PER_CPU line in that file gets expanded from:

static DEFINE_PER_CPU(mce_banks_t, mce_banks_owned);

To (line breaks added for readability):

static __attribute__((section(".discard"), unused)) char __pcpu_scope_mce_banks_owned;
extern __attribute__((section(".discard"), unused)) char __pcpu_unique_mce_banks_owned;
__attribute__((section(".discard"), unused)) char __pcpu_unique_mce_banks_owned;
__attribute__((section(".data..percpu" ""))) __attribute__((weak)) __typeof__(mce_banks_t) mce_banks_owned;


It looks like the static tag is getting correctly applied to the first variable,
__pcpu_scope_mce_banks_owned. The second one, __pcpu_unique_mce_banks_owned, is
getting tagged extern by the macro so the next __pcpu_unique_mce_banks_owned is ok.
The last variable, mce_banks_owned, seems to be the problem.

mce_banks_owned appears to be the only variable actually used in the file. I'm not
sure what the other three are used for.

I think the only way to fix this is by creating a new DEFINE_PER_CPU macro
(DEFINE_PER_CPU_STATIC or DEFINE_STATIC_PER_CPU?) that automatically adds the static
tags correctly.

Regards,
Hartley

\
 
 \ /
  Last update: 2011-09-19 19:51    [W:0.044 / U:0.496 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site