[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <ADE657CA350FB648AAC2C43247A983F001F39DAED50B@AUSP01VMBX24.collaborationhost.net>
Date: Mon, 19 Sep 2011 12:49:48 -0500
From: H Hartley Sweeten <hartleys@...ionengravers.com>
To: Dan Carpenter <error27@...il.com>
CC: "linux-sparse@...r.kernel.org" <linux-sparse@...r.kernel.org>,
Linux Kernel <linux-kernel@...r.kernel.org>
Subject: RE: 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--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists