| From b8b2b9e6c97a3b2abcf840381922d13319210d9b Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 14 Oct 2021 13:38:17 +0200 |
| Subject: s390/setup: avoid using memblock_enforce_memory_limit |
| |
| From: Vasily Gorbik <gor@linux.ibm.com> |
| |
| [ Upstream commit 5dbc4cb4667457b0c53bcd7bff11500b3c362975 ] |
| |
| There is a difference in how architectures treat "mem=" option. For some |
| that is an amount of online memory, for s390 and x86 this is the limiting |
| max address. Some memblock api like memblock_enforce_memory_limit() |
| take limit argument and explicitly treat it as the size of online memory, |
| and use __find_max_addr to convert it to an actual max address. Current |
| s390 usage: |
| |
| memblock_enforce_memory_limit(memblock_end_of_DRAM()); |
| |
| yields different results depending on presence of memory holes (offline |
| memory blocks in between online memory). If there are no memory holes |
| limit == max_addr in memblock_enforce_memory_limit() and it does trim |
| online memory and reserved memory regions. With memory holes present it |
| actually does nothing. |
| |
| Since we already use memblock_remove() explicitly to trim online memory |
| regions to potential limit (think mem=, kdump, addressing limits, etc.) |
| drop the usage of memblock_enforce_memory_limit() altogether. Trimming |
| reserved regions should not be required, since we now use |
| memblock_set_current_limit() to limit allocations and any explicit memory |
| reservations above the limit is an actual problem we should not hide. |
| |
| Reviewed-by: Heiko Carstens <hca@linux.ibm.com> |
| Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> |
| Signed-off-by: Heiko Carstens <hca@linux.ibm.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/s390/kernel/setup.c | 3 --- |
| 1 file changed, 3 deletions(-) |
| |
| diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c |
| index fdc5e76e1f6b0..a765b4936c10c 100644 |
| --- a/arch/s390/kernel/setup.c |
| +++ b/arch/s390/kernel/setup.c |
| @@ -687,9 +687,6 @@ static void __init setup_memory(void) |
| storage_key_init_range(reg->base, reg->base + reg->size); |
| } |
| psw_set_key(PAGE_DEFAULT_KEY); |
| - |
| - /* Only cosmetics */ |
| - memblock_enforce_memory_limit(memblock_end_of_DRAM()); |
| } |
| |
| /* |
| -- |
| 2.33.0 |
| |