* 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).