Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp981111ybt; Wed, 17 Jun 2020 19:50:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtkWcrHQ3Vel60S7MA3uaXeGHYZjHWhnT7Kkv/BnoF3R/zPNtY7yeMnvFEsIG89CzPjakZ X-Received: by 2002:a50:9fcd:: with SMTP id c71mr2047545edf.283.1592448617604; Wed, 17 Jun 2020 19:50:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592448617; cv=none; d=google.com; s=arc-20160816; b=CGs66qIRaPNlT9ekrCUVVFz84OhHaefXvBt1g2rRQ5/xDH06ruEVD3gmKLWsVCjgk6 i6qxPwB/9TJXNkP94llgKNjUzpYn4C87gSii+uSWwQPQDqlcR5X/J0fsHt5VUjrUW9ii WAlC3xaBzQ+T3qH2IGyVDqiDnUunen6pHOhPqYFtxcOomvf12thhWMqblJJc6QzaKUfY 2xHOKxqM3V0iCPER+HGkf3EN60ZzR4NxljS7kt+3a/aahRNuGcERxvuQbkFlRl1Uq2/c OwWB7hw4xTIiEx5xWah10/F7LYXJpQWb/JcRMTSF4of3Mb2mYZbQ+B4dcoC1KCaJOary 4YbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Y5d8KBXP+DHMSsbxQ9gptmMh17jySAvN25jw4n8Z25U=; b=VoiY3Ue+gVMpUfH2jXComoWpGdvw/sb2DU6HWMWv7JDYr/dYFzoGkjs6bCjlzp9QhY 98WH4yDHS3Zqiyjud63osiOsrzHntEA7sxvqujJCuHseQQcJ86qIB7B1T1hHXanp/WqR 4h6Kbk10q0f9c3iIQIPipuF51atPtSs1NTkI0Ghonllj8SgyoLMXEQItlWZKRaGIQtBc hEk+w5thZvzWoL0WHTFut3J0AP5ANrcCvQDfhlG/HwG7QUPdyczfVLjYjlm8IMxGg1Vm z22h7DaF786ls2RGaNri+vPcx0O3O82oQN24qkfHEGOOiMdYESbMR3iKhQ4Fygzt1A+j 4mKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SU6twZ20; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f13si901699ejr.6.2020.06.17.19.49.55; Wed, 17 Jun 2020 19:50:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SU6twZ20; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728389AbgFRBKG (ORCPT + 99 others); Wed, 17 Jun 2020 21:10:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:36840 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728353AbgFRBKA (ORCPT ); Wed, 17 Jun 2020 21:10:00 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 95E8121D7B; Thu, 18 Jun 2020 01:09:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592442599; bh=VJzaoxoKeF198IG1//NwSmmQ60SybCGGZhxLajDECV0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SU6twZ204jAf9EgOktPU+BISYzMll3te/oVa+xwHk/s5UJxc/JLidt7wyTs77icKS EDN/piwTUdcgLXOYQE+BcWGWDWbohsVIrBTUhlCxGgeudtc6LNqsgkTmOUjOaJPbUT itmfmUJsKrn1mc5JlyqvNMD6XX5ZvFQFPGoTfJng= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Pingfan Liu , Hari Bathini , Michael Ellerman , Sasha Levin , linuxppc-dev@lists.ozlabs.org Subject: [PATCH AUTOSEL 5.7 086/388] powerpc/crashkernel: Take "mem=" option into account Date: Wed, 17 Jun 2020 21:03:03 -0400 Message-Id: <20200618010805.600873-86-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200618010805.600873-1-sashal@kernel.org> References: <20200618010805.600873-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pingfan Liu [ Upstream commit be5470e0c285a68dc3afdea965032f5ddc8269d7 ] 'mem=" option is an easy way to put high pressure on memory during some test. Hence after applying the memory limit, instead of total mem, the actual usable memory should be considered when reserving mem for crashkernel. Otherwise the boot up may experience OOM issue. E.g. it would reserve 4G prior to the change and 512M afterward, if passing crashkernel="2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G", and mem=5G on a 256G machine. This issue is powerpc specific because it puts higher priority on fadump and kdump reservation than on "mem=". Referring the following code: if (fadump_reserve_mem() == 0) reserve_crashkernel(); ... /* Ensure that total memory size is page-aligned. */ limit = ALIGN(memory_limit ?: memblock_phys_mem_size(), PAGE_SIZE); memblock_enforce_memory_limit(limit); While on other arches, the effect of "mem=" takes a higher priority and pass through memblock_phys_mem_size() before calling reserve_crashkernel(). Signed-off-by: Pingfan Liu Reviewed-by: Hari Bathini Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/1585749644-4148-1-git-send-email-kernelfans@gmail.com Signed-off-by: Sasha Levin --- arch/powerpc/kexec/core.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kexec/core.c b/arch/powerpc/kexec/core.c index 078fe3d76feb..56da5eb2b923 100644 --- a/arch/powerpc/kexec/core.c +++ b/arch/powerpc/kexec/core.c @@ -115,11 +115,12 @@ void machine_kexec(struct kimage *image) void __init reserve_crashkernel(void) { - unsigned long long crash_size, crash_base; + unsigned long long crash_size, crash_base, total_mem_sz; int ret; + total_mem_sz = memory_limit ? memory_limit : memblock_phys_mem_size(); /* use common parsing */ - ret = parse_crashkernel(boot_command_line, memblock_phys_mem_size(), + ret = parse_crashkernel(boot_command_line, total_mem_sz, &crash_size, &crash_base); if (ret == 0 && crash_size > 0) { crashk_res.start = crash_base; @@ -178,6 +179,7 @@ void __init reserve_crashkernel(void) /* Crash kernel trumps memory limit */ if (memory_limit && memory_limit <= crashk_res.end) { memory_limit = crashk_res.end + 1; + total_mem_sz = memory_limit; printk("Adjusted memory limit for crashkernel, now 0x%llx\n", memory_limit); } @@ -186,7 +188,7 @@ void __init reserve_crashkernel(void) "for crashkernel (System RAM: %ldMB)\n", (unsigned long)(crash_size >> 20), (unsigned long)(crashk_res.start >> 20), - (unsigned long)(memblock_phys_mem_size() >> 20)); + (unsigned long)(total_mem_sz >> 20)); if (!memblock_is_region_memory(crashk_res.start, crash_size) || memblock_reserve(crashk_res.start, crash_size)) { -- 2.25.1