linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2] x86/mm: Fix zone ranges boot printout
@ 2014-12-09  3:27 Xishi Qiu
  2014-12-09 22:50 ` Andrew Morton
  0 siblings, 1 reply; 3+ messages in thread
From: Xishi Qiu @ 2014-12-09  3:27 UTC (permalink / raw)
  To: Ingo Molnar, dave, Rik van Riel, H. Peter Anvin, Thomas Gleixner,
	Andrew Morton
  Cc: linux-tip-commits, LKML, Linux MM, Xishi Qiu

Changelog:
V2:
	-fix building warnings of min(...).

This is the usual physical memory layout boot printout:
...
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0xc3fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x00099fff]
[    0.000000]   node   0: [mem 0x00100000-0xbf78ffff]
[    0.000000]   node   0: [mem 0x100000000-0x63fffffff]
[    0.000000]   node   1: [mem 0x640000000-0xc3fffffff]
...

This is the log when we set "mem=2G" on the boot cmdline:
...
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]  // should be 0x7fffffff, right?
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x00099fff]
[    0.000000]   node   0: [mem 0x00100000-0x7fffffff]
...

This patch fixes the printout, the following log shows the right ranges:
...
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0x7fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x00099fff]
[    0.000000]   node   0: [mem 0x00100000-0x7fffffff]
...

Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
---
 arch/x86/mm/init.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index 66dba36..963945d 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -674,10 +674,12 @@ void __init zone_sizes_init(void)
 	memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
 
 #ifdef CONFIG_ZONE_DMA
-	max_zone_pfns[ZONE_DMA]		= MAX_DMA_PFN;
+	max_zone_pfns[ZONE_DMA]		= min_t(unsigned long,
+						max_low_pfn, MAX_DMA_PFN);
 #endif
 #ifdef CONFIG_ZONE_DMA32
-	max_zone_pfns[ZONE_DMA32]	= MAX_DMA32_PFN;
+	max_zone_pfns[ZONE_DMA32]	= min_t(unsigned long,
+						max_low_pfn, MAX_DMA32_PFN);
 #endif
 	max_zone_pfns[ZONE_NORMAL]	= max_low_pfn;
 #ifdef CONFIG_HIGHMEM
-- 
2.0.0


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [PATCH V2] x86/mm: Fix zone ranges boot printout
  2014-12-09  3:27 [PATCH V2] x86/mm: Fix zone ranges boot printout Xishi Qiu
@ 2014-12-09 22:50 ` Andrew Morton
  2014-12-10  1:40   ` Xishi Qiu
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2014-12-09 22:50 UTC (permalink / raw)
  To: Xishi Qiu
  Cc: Ingo Molnar, dave, Rik van Riel, H. Peter Anvin, Thomas Gleixner,
	linux-tip-commits, LKML, Linux MM

On Tue, 9 Dec 2014 11:27:20 +0800 Xishi Qiu <qiuxishi@huawei.com> wrote:

> Changelog:
> V2:
> 	-fix building warnings of min(...).
>
> ...
>
> --- a/arch/x86/mm/init.c
> +++ b/arch/x86/mm/init.c
> @@ -674,10 +674,12 @@ void __init zone_sizes_init(void)
>  	memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
>  
>  #ifdef CONFIG_ZONE_DMA
> -	max_zone_pfns[ZONE_DMA]		= MAX_DMA_PFN;
> +	max_zone_pfns[ZONE_DMA]		= min_t(unsigned long,
> +						max_low_pfn, MAX_DMA_PFN);

MAX_DMA_PFN has type int.

>  #endif
>  #ifdef CONFIG_ZONE_DMA32
> -	max_zone_pfns[ZONE_DMA32]	= MAX_DMA32_PFN;
> +	max_zone_pfns[ZONE_DMA32]	= min_t(unsigned long,
> +						max_low_pfn, MAX_DMA32_PFN);

MAX_DMA32_PFN has type UL (I think?) so there's no need for min_t here.

>  #endif
>  	max_zone_pfns[ZONE_NORMAL]	= max_low_pfn;
>  #ifdef CONFIG_HIGHMEM


Let's try to get the types correct, rather than hacking around fixing
up fallout from earlier incorrect type choices?

What is the type of a pfn?  Unsigned long, generally, when we bother
thinking about it.

So how about we make MAX_DMA_PFN have type UL?  I assume that fixes the
warning?

If we do this, we should also be able to undo the min_t hackery in
arch/x86/kernel/e820.c:memblock_find_dma_reserve().

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [PATCH V2] x86/mm: Fix zone ranges boot printout
  2014-12-09 22:50 ` Andrew Morton
@ 2014-12-10  1:40   ` Xishi Qiu
  0 siblings, 0 replies; 3+ messages in thread
From: Xishi Qiu @ 2014-12-10  1:40 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ingo Molnar, dave, Rik van Riel, H. Peter Anvin, Thomas Gleixner,
	linux-tip-commits, LKML, Linux MM

On 2014/12/10 6:50, Andrew Morton wrote:

> On Tue, 9 Dec 2014 11:27:20 +0800 Xishi Qiu <qiuxishi@huawei.com> wrote:
> 
>> Changelog:
>> V2:
>> 	-fix building warnings of min(...).
>>
>> ...
>>
>> --- a/arch/x86/mm/init.c
>> +++ b/arch/x86/mm/init.c
>> @@ -674,10 +674,12 @@ void __init zone_sizes_init(void)
>>  	memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
>>  
>>  #ifdef CONFIG_ZONE_DMA
>> -	max_zone_pfns[ZONE_DMA]		= MAX_DMA_PFN;
>> +	max_zone_pfns[ZONE_DMA]		= min_t(unsigned long,
>> +						max_low_pfn, MAX_DMA_PFN);
> 
> MAX_DMA_PFN has type int.
> 
>>  #endif
>>  #ifdef CONFIG_ZONE_DMA32
>> -	max_zone_pfns[ZONE_DMA32]	= MAX_DMA32_PFN;
>> +	max_zone_pfns[ZONE_DMA32]	= min_t(unsigned long,
>> +						max_low_pfn, MAX_DMA32_PFN);
> 
> MAX_DMA32_PFN has type UL (I think?) so there's no need for min_t here.
> 
>>  #endif
>>  	max_zone_pfns[ZONE_NORMAL]	= max_low_pfn;
>>  #ifdef CONFIG_HIGHMEM
> 
> 
> Let's try to get the types correct, rather than hacking around fixing
> up fallout from earlier incorrect type choices?
> 
> What is the type of a pfn?  Unsigned long, generally, when we bother
> thinking about it.
> 
> So how about we make MAX_DMA_PFN have type UL?  I assume that fixes the
> warning?
> 
> If we do this, we should also be able to undo the min_t hackery in
> arch/x86/kernel/e820.c:memblock_find_dma_reserve().
> 

Hi Andrew,

Thanks for your suggestion, I'll resend V3.

Thanks,
Xishi Qiu

> 
> .
> 



--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

end of thread, other threads:[~2014-12-10  1:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-09  3:27 [PATCH V2] x86/mm: Fix zone ranges boot printout Xishi Qiu
2014-12-09 22:50 ` Andrew Morton
2014-12-10  1:40   ` Xishi Qiu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox