All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Whitcroft <apw@shadowen.org>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] silence unused pgdat warning from alloc_bootmem_node and friends
Date: Thu, 23 Nov 2006 09:16:03 +0000	[thread overview]
Message-ID: <456566D3.2000107@shadowen.org> (raw)
In-Reply-To: <20061122132414.1db3c22f.akpm@osdl.org>

Andrew Morton wrote:
> On Wed, 22 Nov 2006 14:38:51 +0000
> Andy Whitcroft <apw@shadowen.org> wrote:
> 
>> silence unused pgdat warning from alloc_bootmem_node and friends
>>
>> x86 NUMA systems only define bootmem for node 0.  alloc_bootmem_node()
>> and friends therefore ignore the passed pgdat and use NODE_DATA(0)
>> in all cases.  This leads to the following warnings as we are not
>> using the passed parameter:
>>
>>   .../mm/page_alloc.c: In function 'zone_wait_table_init':
>>   .../mm/page_alloc.c:2259: warning: unused variable 'pgdat'
>>
>> One option would be to define all variables used with these macros
>> __attribute__ ((unused)), but this would leave us exposed should
>> these become genuinely unused.
>>
>> The key here is that we _are_ using the value, we ignore it but that
>> is a deliberate action.  This patch adds a nested local variable
>> within the alloc_bootmem_node helper to which the pgdat parameter is
>> assigned making it 'used'.  The nested local is marked __attribute__
>> ((unused)) to silence this same warning for it.
>>
>> Against 2.6.19-rc5-mm2.
>>
>> Signed-off-by: Andy Whitcroft <apw@shadowen.org>
>> ---
>> diff --git a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h
>> index 61b0733..3503ad6 100644
>> --- a/include/asm-i386/mmzone.h
>> +++ b/include/asm-i386/mmzone.h
>> @@ -120,13 +120,26 @@ static inline int pfn_valid(int pfn)
>>  	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
>>  #define alloc_bootmem_low_pages(x) \
>>  	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0)
>> -#define alloc_bootmem_node(ignore, x) \
>> -	__alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
>> -#define alloc_bootmem_pages_node(ignore, x) \
>> -	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
>> -#define alloc_bootmem_low_pages_node(ignore, x) \
>> -	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0)
>> -
>> +#define alloc_bootmem_node(pgdat, x)					\
>> +({									\
>> +	struct pglist_data  __attribute__ ((unused))			\
>> +				*__alloc_bootmem_node__pgdat = (pgdat);	\
>> +	__alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES,	\
>> +						__pa(MAX_DMA_ADDRESS));	\
>> +})
>> +#define alloc_bootmem_pages_node(pgdat, x)				\
>> +({									\
>> +	struct pglist_data  __attribute__ ((unused))			\
>> +				*__alloc_bootmem_node__pgdat = (pgdat);	\
>> +	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE,		\
>> +						__pa(MAX_DMA_ADDRESS))	\
>> +})
>> +#define alloc_bootmem_low_pages_node(pgdat, x)				\
>> +({									\
>> +	struct pglist_data  __attribute__ ((unused))			\
>> +				*__alloc_bootmem_node__pgdat = (pgdat);	\
>> +	__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0);		\
>> +})
>>  #endif /* CONFIG_NEED_MULTIPLE_NODES */
>>  
> 
> Can these be switched to functions, or do they actually need to be macros?

I did first attempt to make them inline functions, that leads us to some
new dependancies such as on MAX_DMA_ADDRESS.  I must admit to backing
off at that point, the dependancy problems between mmzone.h and mm.h
caused huge amounts of problems for me in the past and I was shy of
playng with them again.

I'll take a look see if thats the only one or if it is indeed still
endemic.  I know some of the issues were fixed with additional headers.

-apw

      reply	other threads:[~2006-11-23  9:16 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-22 14:38 [PATCH] silence unused pgdat warning from alloc_bootmem_node and friends Andy Whitcroft
2006-11-22 21:24 ` Andrew Morton
2006-11-23  9:16   ` Andy Whitcroft [this message]

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=456566D3.2000107@shadowen.org \
    --to=apw@shadowen.org \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.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.