LKML Archive mirror
 help / color / mirror / Atom feed
* Suspicious compilation warning
@ 2010-04-19 23:27 Marcelo Jimenez
  2010-04-20 22:51 ` Andrew Morton
  0 siblings, 1 reply; 10+ messages in thread
From: Marcelo Jimenez @ 2010-04-19 23:27 UTC (permalink / raw
  To: linux-arm-kernel, Andrew Morton, KOSAKI Motohiro,
	Christoph Lameter, Mel Gorman, Minchan Kim, H. Peter Anvin,
	Yinghai Lu, Stephen Rothwell, linux-kernel, linux-mm

Hi,

I get this warning while compiling for ARM/SA1100:

mm/sparse.c: In function '__section_nr':
mm/sparse.c:135: warning: 'root' is used uninitialized in this function

With a small patch in fs/proc/meminfo.c, I find that NR_SECTION_ROOTS
is zero, which certainly explains the warning.

# cat /proc/meminfo
NR_SECTION_ROOTS=0
NR_MEM_SECTIONS=32
SECTIONS_PER_ROOT=512
SECTIONS_SHIFT=5
MAX_PHYSMEM_BITS=32
SECTION_SIZE_BITS=27
MemTotal:          28848 kB
MemFree:           15516 kB
Buffers:             112 kB
Cached:             2312 kB
SwapCached:            0 kB
Active:              984 kB
Inactive:           1628 kB
Active(anon):        188 kB
Inactive(anon):        0 kB
Active(file):        796 kB
Inactive(file):     1628 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                24 kB
Writeback:             0 kB
AnonPages:           208 kB
Mapped:              292 kB
Shmem:                 0 kB
Slab:               1472 kB
SReclaimable:        744 kB
SUnreclaim:          728 kB
KernelStack:         200 kB
PageTables:           32 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       14424 kB
Committed_AS:        772 kB
VmallocTotal:     614400 kB
VmallocUsed:       33316 kB
VmallocChunk:     573436 kB

Regards,
Marcelo.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-04-19 23:27 Suspicious compilation warning Marcelo Jimenez
@ 2010-04-20 22:51 ` Andrew Morton
  2010-04-20 23:07   ` Russell King - ARM Linux
  2010-05-10 15:40   ` Mel Gorman
  0 siblings, 2 replies; 10+ messages in thread
From: Andrew Morton @ 2010-04-20 22:51 UTC (permalink / raw
  To: Marcelo Jimenez
  Cc: linux-arm-kernel, KOSAKI Motohiro, Christoph Lameter, Mel Gorman,
	Minchan Kim, H. Peter Anvin, Yinghai Lu, Stephen Rothwell,
	linux-kernel, linux-mm

On Mon, 19 Apr 2010 20:27:43 -0300
Marcelo Jimenez <mroberto@cpti.cetuc.puc-rio.br> wrote:

> I get this warning while compiling for ARM/SA1100:
> 
> mm/sparse.c: In function '__section_nr':
> mm/sparse.c:135: warning: 'root' is used uninitialized in this function
> 
> With a small patch in fs/proc/meminfo.c, I find that NR_SECTION_ROOTS
> is zero, which certainly explains the warning.
> 
> # cat /proc/meminfo
> NR_SECTION_ROOTS=0
> NR_MEM_SECTIONS=32
> SECTIONS_PER_ROOT=512
> SECTIONS_SHIFT=5
> MAX_PHYSMEM_BITS=32

hm, who owns sparsemem nowadays? Nobody identifiable.

Does it make physical sense to have SECTIONS_PER_ROOT > NR_MEM_SECTIONS?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-04-20 22:51 ` Andrew Morton
@ 2010-04-20 23:07   ` Russell King - ARM Linux
  2010-05-04 17:35     ` Marcelo Jimenez
  2010-05-05 10:06     ` Sergei Shtylyov
  2010-05-10 15:40   ` Mel Gorman
  1 sibling, 2 replies; 10+ messages in thread
From: Russell King - ARM Linux @ 2010-04-20 23:07 UTC (permalink / raw
  To: Andrew Morton
  Cc: Marcelo Jimenez, Stephen Rothwell, Christoph Lameter, Mel Gorman,
	linux-kernel, linux-mm, Minchan Kim, KOSAKI Motohiro,
	H. Peter Anvin, Yinghai Lu, linux-arm-kernel

On Tue, Apr 20, 2010 at 03:51:22PM -0700, Andrew Morton wrote:
> On Mon, 19 Apr 2010 20:27:43 -0300
> Marcelo Jimenez <mroberto@cpti.cetuc.puc-rio.br> wrote:
> 
> > I get this warning while compiling for ARM/SA1100:
> > 
> > mm/sparse.c: In function '__section_nr':
> > mm/sparse.c:135: warning: 'root' is used uninitialized in this function
> > 
> > With a small patch in fs/proc/meminfo.c, I find that NR_SECTION_ROOTS
> > is zero, which certainly explains the warning.
> > 
> > # cat /proc/meminfo
> > NR_SECTION_ROOTS=0
> > NR_MEM_SECTIONS=32
> > SECTIONS_PER_ROOT=512
> > SECTIONS_SHIFT=5
> > MAX_PHYSMEM_BITS=32
> 
> hm, who owns sparsemem nowadays? Nobody identifiable.
> 
> Does it make physical sense to have SECTIONS_PER_ROOT > NR_MEM_SECTIONS?

Well, it'll be about this number on everything using sparsemem extreme:

#define SECTIONS_PER_ROOT       (PAGE_SIZE / sizeof (struct mem_section))

and with only 32 sections, this is going to give a NR_SECTION_ROOTS value
of zero.  I think the calculation of NR_SECTIONS_ROOTS is wrong.

#define NR_SECTION_ROOTS        (NR_MEM_SECTIONS / SECTIONS_PER_ROOT)

Clearly if we have 1 mem section, we want to have one section root, so
I think this division should round up any fractional part, thusly:

#define NR_SECTION_ROOTS        ((NR_MEM_SECTIONS + SECTIONS_PER_ROOT - 1) / SECTIONS_PER_ROOT)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-04-20 23:07   ` Russell King - ARM Linux
@ 2010-05-04 17:35     ` Marcelo Jimenez
  2010-05-04 17:45       ` Russell King - ARM Linux
  2010-05-05 10:06     ` Sergei Shtylyov
  1 sibling, 1 reply; 10+ messages in thread
From: Marcelo Jimenez @ 2010-05-04 17:35 UTC (permalink / raw
  To: Russell King - ARM Linux
  Cc: Andrew Morton, Stephen Rothwell, Christoph Lameter, Mel Gorman,
	linux-kernel, linux-mm, Minchan Kim, KOSAKI Motohiro,
	H. Peter Anvin, Yinghai Lu, linux-arm-kernel

Hi,

On Tue, Apr 20, 2010 at 20:07, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
>
> Well, it'll be about this number on everything using sparsemem extreme:
>
> #define SECTIONS_PER_ROOT       (PAGE_SIZE / sizeof (struct mem_section))
>
> and with only 32 sections, this is going to give a NR_SECTION_ROOTS value
> of zero.  I think the calculation of NR_SECTIONS_ROOTS is wrong.
>
> #define NR_SECTION_ROOTS        (NR_MEM_SECTIONS / SECTIONS_PER_ROOT)
>
> Clearly if we have 1 mem section, we want to have one section root, so
> I think this division should round up any fractional part, thusly:
>
> #define NR_SECTION_ROOTS        ((NR_MEM_SECTIONS + SECTIONS_PER_ROOT - 1) / SECTIONS_PER_ROOT)

Seems correct to me, Is there any idea when this gets committed?

Regards,
Marcelo.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-05-04 17:35     ` Marcelo Jimenez
@ 2010-05-04 17:45       ` Russell King - ARM Linux
  2010-05-04 18:16         ` Marcelo Jimenez
  0 siblings, 1 reply; 10+ messages in thread
From: Russell King - ARM Linux @ 2010-05-04 17:45 UTC (permalink / raw
  To: Marcelo Jimenez
  Cc: Andrew Morton, Stephen Rothwell, Christoph Lameter, Mel Gorman,
	linux-kernel, linux-mm, Minchan Kim, KOSAKI Motohiro,
	H. Peter Anvin, Yinghai Lu, linux-arm-kernel

On Tue, May 04, 2010 at 02:35:50PM -0300, Marcelo Jimenez wrote:
> Hi,
> 
> On Tue, Apr 20, 2010 at 20:07, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
> >
> > Well, it'll be about this number on everything using sparsemem extreme:
> >
> > #define SECTIONS_PER_ROOT       (PAGE_SIZE / sizeof (struct mem_section))
> >
> > and with only 32 sections, this is going to give a NR_SECTION_ROOTS value
> > of zero.  I think the calculation of NR_SECTIONS_ROOTS is wrong.
> >
> > #define NR_SECTION_ROOTS        (NR_MEM_SECTIONS / SECTIONS_PER_ROOT)
> >
> > Clearly if we have 1 mem section, we want to have one section root, so
> > I think this division should round up any fractional part, thusly:
> >
> > #define NR_SECTION_ROOTS        ((NR_MEM_SECTIONS + SECTIONS_PER_ROOT - 1) / SECTIONS_PER_ROOT)
> 
> Seems correct to me, Is there any idea when this gets committed?

What should be asked is whether it has been tested - if not, can we find
someone who can test and validate the change?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-05-04 17:45       ` Russell King - ARM Linux
@ 2010-05-04 18:16         ` Marcelo Jimenez
  0 siblings, 0 replies; 10+ messages in thread
From: Marcelo Jimenez @ 2010-05-04 18:16 UTC (permalink / raw
  To: Russell King - ARM Linux
  Cc: Andrew Morton, Stephen Rothwell, Christoph Lameter, Mel Gorman,
	linux-kernel, linux-mm, Minchan Kim, KOSAKI Motohiro,
	H. Peter Anvin, Yinghai Lu, linux-arm-kernel

On Tue, May 4, 2010 at 14:45, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
>
> What should be asked is whether it has been tested - if not, can we find
> someone who can test and validate the change?

I can test it, but I need help to figure out the test itself. I am
porting the kernel 2.6 to nanoengine and my resources in that
environment are still rather limited, not to mention I have not
finished the PCI port, so I still have no network.

On the other hand, the current situation is clearly broken and your
solution can hardly be worse than having NR_SECTION_ROOTS == 0.

Regards,
Marcelo.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-04-20 23:07   ` Russell King - ARM Linux
  2010-05-04 17:35     ` Marcelo Jimenez
@ 2010-05-05 10:06     ` Sergei Shtylyov
  2010-05-06  1:24       ` Kyungmin Park
  1 sibling, 1 reply; 10+ messages in thread
From: Sergei Shtylyov @ 2010-05-05 10:06 UTC (permalink / raw
  To: Russell King - ARM Linux
  Cc: Andrew Morton, Stephen Rothwell, Marcelo Jimenez,
	Christoph Lameter, Mel Gorman, linux-kernel, linux-mm,
	Minchan Kim, KOSAKI Motohiro, H. Peter Anvin, Yinghai Lu,
	linux-arm-kernel

Hello.

Russell King - ARM Linux wrote:

>>> I get this warning while compiling for ARM/SA1100:
>>>
>>> mm/sparse.c: In function '__section_nr':
>>> mm/sparse.c:135: warning: 'root' is used uninitialized in this function
>>>
>>> With a small patch in fs/proc/meminfo.c, I find that NR_SECTION_ROOTS
>>> is zero, which certainly explains the warning.
>>>
>>> # cat /proc/meminfo
>>> NR_SECTION_ROOTS=0
>>> NR_MEM_SECTIONS=32
>>> SECTIONS_PER_ROOT=512
>>> SECTIONS_SHIFT=5
>>> MAX_PHYSMEM_BITS=32
>>>       
>> hm, who owns sparsemem nowadays? Nobody identifiable.
>>
>> Does it make physical sense to have SECTIONS_PER_ROOT > NR_MEM_SECTIONS?
>>     
>
> Well, it'll be about this number on everything using sparsemem extreme:
>
> #define SECTIONS_PER_ROOT       (PAGE_SIZE / sizeof (struct mem_section))
>
> and with only 32 sections, this is going to give a NR_SECTION_ROOTS value
> of zero.  I think the calculation of NR_SECTIONS_ROOTS is wrong.
>
> #define NR_SECTION_ROOTS        (NR_MEM_SECTIONS / SECTIONS_PER_ROOT)
>
> Clearly if we have 1 mem section, we want to have one section root, so
> I think this division should round up any fractional part, thusly:
>
> #define NR_SECTION_ROOTS        ((NR_MEM_SECTIONS + SECTIONS_PER_ROOT - 1) / SECTIONS_PER_ROOT)
>   

   There's DIV_ROUND_UP() macro for this kind of calculation.

WBR, Sergei


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-05-05 10:06     ` Sergei Shtylyov
@ 2010-05-06  1:24       ` Kyungmin Park
  2010-05-06 13:24         ` Marcelo Jimenez
  0 siblings, 1 reply; 10+ messages in thread
From: Kyungmin Park @ 2010-05-06  1:24 UTC (permalink / raw
  To: Sergei Shtylyov
  Cc: Russell King - ARM Linux, Stephen Rothwell, Marcelo Jimenez,
	Christoph Lameter, Mel Gorman, linux-kernel, linux-mm,
	Minchan Kim, KOSAKI Motohiro, H. Peter Anvin, Andrew Morton,
	Yinghai Lu, linux-arm-kernel

On Wed, May 5, 2010 at 7:06 PM, Sergei Shtylyov <sshtylyov@mvista.com> wrote:
> Hello.
>
> Russell King - ARM Linux wrote:
>
>>>> I get this warning while compiling for ARM/SA1100:
>>>>
>>>> mm/sparse.c: In function '__section_nr':
>>>> mm/sparse.c:135: warning: 'root' is used uninitialized in this function
>>>>
>>>> With a small patch in fs/proc/meminfo.c, I find that NR_SECTION_ROOTS
>>>> is zero, which certainly explains the warning.
>>>>
>>>> # cat /proc/meminfo
>>>> NR_SECTION_ROOTS=0
>>>> NR_MEM_SECTIONS=32
>>>> SECTIONS_PER_ROOT=512
>>>> SECTIONS_SHIFT=5
>>>> MAX_PHYSMEM_BITS=32
>>>>
>>>
>>> hm, who owns sparsemem nowadays? Nobody identifiable.
>>>
>>> Does it make physical sense to have SECTIONS_PER_ROOT > NR_MEM_SECTIONS?
>>>
>>
>> Well, it'll be about this number on everything using sparsemem extreme:
>>
>> #define SECTIONS_PER_ROOT       (PAGE_SIZE / sizeof (struct mem_section))
>>
>> and with only 32 sections, this is going to give a NR_SECTION_ROOTS value
>> of zero.  I think the calculation of NR_SECTIONS_ROOTS is wrong.
>>
>> #define NR_SECTION_ROOTS        (NR_MEM_SECTIONS / SECTIONS_PER_ROOT)
>>
>> Clearly if we have 1 mem section, we want to have one section root, so
>> I think this division should round up any fractional part, thusly:
>>
>> #define NR_SECTION_ROOTS        ((NR_MEM_SECTIONS + SECTIONS_PER_ROOT - 1)
>> / SECTIONS_PER_ROOT)
>>
>
>  There's DIV_ROUND_UP() macro for this kind of calculation.

Hi,

It tested with my board and working.
Just curious. If NR_SECTION_ROOTS is zero and uninitialized then
what's problem? Since we boot and working without patch.

Thank you,
Kyungmin Park

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-05-06  1:24       ` Kyungmin Park
@ 2010-05-06 13:24         ` Marcelo Jimenez
  0 siblings, 0 replies; 10+ messages in thread
From: Marcelo Jimenez @ 2010-05-06 13:24 UTC (permalink / raw
  To: Kyungmin Park
  Cc: Sergei Shtylyov, Russell King - ARM Linux, Stephen Rothwell,
	Christoph Lameter, Mel Gorman, linux-kernel, linux-mm,
	Minchan Kim, KOSAKI Motohiro, H. Peter Anvin, Andrew Morton,
	Yinghai Lu, linux-arm-kernel

Hi Kyungmin,

On Wed, May 5, 2010 at 22:24, Kyungmin Park <kmpark@infradead.org> wrote:
>
> Hi,
>
> It tested with my board and working.
> Just curious. If NR_SECTION_ROOTS is zero and uninitialized then
> what's problem? Since we boot and working without patch.

The original compiler error message was:

mm/sparse.c: In function '__section_nr':
mm/sparse.c:135: warning: 'root' is used uninitialized in this function

Leaving a variable to be used uninitialized is the issue here.

> Thank you,
> Kyungmin Park

Regards,
Marcelo.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Suspicious compilation warning
  2010-04-20 22:51 ` Andrew Morton
  2010-04-20 23:07   ` Russell King - ARM Linux
@ 2010-05-10 15:40   ` Mel Gorman
  1 sibling, 0 replies; 10+ messages in thread
From: Mel Gorman @ 2010-05-10 15:40 UTC (permalink / raw
  To: Andrew Morton
  Cc: Marcelo Jimenez, linux-arm-kernel, KOSAKI Motohiro,
	Christoph Lameter, Minchan Kim, H. Peter Anvin, Yinghai Lu,
	Stephen Rothwell, apw, linux-kernel, linux-mm

On Tue, Apr 20, 2010 at 03:51:22PM -0700, Andrew Morton wrote:
> On Mon, 19 Apr 2010 20:27:43 -0300
> Marcelo Jimenez <mroberto@cpti.cetuc.puc-rio.br> wrote:
> 
> > I get this warning while compiling for ARM/SA1100:
> > 
> > mm/sparse.c: In function '__section_nr':
> > mm/sparse.c:135: warning: 'root' is used uninitialized in this function
> > 
> > With a small patch in fs/proc/meminfo.c, I find that NR_SECTION_ROOTS
> > is zero, which certainly explains the warning.
> > 
> > # cat /proc/meminfo
> > NR_SECTION_ROOTS=0
> > NR_MEM_SECTIONS=32
> > SECTIONS_PER_ROOT=512
> > SECTIONS_SHIFT=5
> > MAX_PHYSMEM_BITS=32
> 
> hm, who owns sparsemem nowadays? Nobody identifiable.
> 

The closest entity to a SPARSEMEM owner was Andy Whitcroft but I don't
believe he is active in mainline at the moment. I used to know SPARSEMEM to
some extent but my memory is limited at the best of times.

> Does it make physical sense to have SECTIONS_PER_ROOT > NR_MEM_SECTIONS?
> 

Yes. NR_MEM_SECTIONS depends on MAX_PHYSMEM_BITS but SECTIONS_PER_ROOT is based
on PAGE_SIZE. If MAX_PHYSMEM_BITS is particularly small due to architectural
limitations, it's perfectly possible there are fewer sections that can be
active (NR_MEM_SECTIONS) than is possible to fit within one root. While
not physicaly impossible, it was probably not expected.

Using DIV_ROUND_UP on SECTIONS_PER_ROOT to ensure NR_MEM_SECTIONS is
aligned to SECTIONS_PER_ROOT should be a fix for this.

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-05-10 15:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-19 23:27 Suspicious compilation warning Marcelo Jimenez
2010-04-20 22:51 ` Andrew Morton
2010-04-20 23:07   ` Russell King - ARM Linux
2010-05-04 17:35     ` Marcelo Jimenez
2010-05-04 17:45       ` Russell King - ARM Linux
2010-05-04 18:16         ` Marcelo Jimenez
2010-05-05 10:06     ` Sergei Shtylyov
2010-05-06  1:24       ` Kyungmin Park
2010-05-06 13:24         ` Marcelo Jimenez
2010-05-10 15:40   ` Mel Gorman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).