diff mbox

powerpc/mm: Check gigantic page range correctly inside memblock

Message ID 20170703073130.27258-1-khandual@linux.vnet.ibm.com (mailing list archive)
State Superseded
Headers show

Commit Message

Anshuman Khandual July 3, 2017, 7:31 a.m. UTC
The gigantic page range received from platform actually extends
upto (block_size * expeted_pages) starting at any given address
instead of just a single 16GB page.

Fixes: 4792adbac9eb ("powerpc: Don't use a 16G page if beyond mem= limits")
Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>
---
Though in actual experiments never seen multiple gigantic pages (16GB)
starting at the same address. But again its very much possible looking
at the device tree property interfaces and depending upon what PowerVM
provides.

 arch/powerpc/mm/hash_utils_64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Aneesh Kumar K.V July 5, 2017, 4:33 a.m. UTC | #1
On Monday 03 July 2017 01:01 PM, Anshuman Khandual wrote:
> The gigantic page range received from platform actually extends
> upto (block_size * expeted_pages) starting at any given address
> instead of just a single 16GB page.
> 
> Fixes: 4792adbac9eb ("powerpc: Don't use a 16G page if beyond mem= limits")
> Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>
> ---
> Though in actual experiments never seen multiple gigantic pages (16GB)
> starting at the same address. But again its very much possible looking
> at the device tree property interfaces and depending upon what PowerVM
> provides.
> 
>   arch/powerpc/mm/hash_utils_64.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
> index f2095ce..a3f1e7d 100644
> --- a/arch/powerpc/mm/hash_utils_64.c
> +++ b/arch/powerpc/mm/hash_utils_64.c
> @@ -507,7 +507,7 @@ static int __init htab_dt_scan_hugepage_blocks(unsigned long node,
>   	printk(KERN_INFO "Huge page(16GB) memory: "
>   			"addr = 0x%lX size = 0x%lX pages = %d\n",
>   			phys_addr, block_size, expected_pages);
> -	if (phys_addr + (16 * GB) <= memblock_end_of_DRAM()) {
> +	if (phys_addr + block_size * expected_pages <= memblock_end_of_DRAM()) {
>   		memblock_reserve(phys_addr, block_size * expected_pages);
>   		add_gpage(phys_addr, block_size, expected_pages);
>   	}
> 

This was already posted by another person.

https://lkml.kernel.org/r/20170112090906.17864-1-rui.teng@linux.vnet.ibm.com


-aneesh
diff mbox

Patch

diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index f2095ce..a3f1e7d 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -507,7 +507,7 @@  static int __init htab_dt_scan_hugepage_blocks(unsigned long node,
 	printk(KERN_INFO "Huge page(16GB) memory: "
 			"addr = 0x%lX size = 0x%lX pages = %d\n",
 			phys_addr, block_size, expected_pages);
-	if (phys_addr + (16 * GB) <= memblock_end_of_DRAM()) {
+	if (phys_addr + block_size * expected_pages <= memblock_end_of_DRAM()) {
 		memblock_reserve(phys_addr, block_size * expected_pages);
 		add_gpage(phys_addr, block_size, expected_pages);
 	}