From patchwork Wed Nov 16 12:10:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhen Lei X-Patchwork-Id: 21010 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp108457wru; Wed, 16 Nov 2022 04:21:47 -0800 (PST) X-Google-Smtp-Source: AA0mqf4i4kVJUq9eEtjqxxHf6kbIIpACijuhiccIg+TeohrvPGzAJAFxt6fvMBObk8FEJ1tZ32qd X-Received: by 2002:a17:906:4acb:b0:781:d0c1:4434 with SMTP id u11-20020a1709064acb00b00781d0c14434mr17508572ejt.756.1668601307062; Wed, 16 Nov 2022 04:21:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668601307; cv=none; d=google.com; s=arc-20160816; b=ytAgQQPe0sRjoWIpMvVb1rGkA6u2DyIlHYUI3a4jISISC4HBk9bUp57HGdIFW2d017 0ckZ0hXK6JQrM6LH/uiaqk7FPWJAayr+sh1kDITWMr3zC1/Rz8Mgsh8pZvvytJUmeArz V2wIYhh7+W6LfmVR2DyUfr/Jna7BunMAq8c3urgyK2/5bgbjj8Xa2ZpHQn0WvQWocJry +1ewn3+Y7LEocc3cgWDvsw68lOajqKo+1s1cwE2kkHnwQNmqRh60/UHSFch6drhTYkbi 7dtKzH5saSPJfz43++qMd0HEUGknFb58IpiTAqatoE0lDurOXOSVg7uAvkRW6vixYZUU n6rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=mQUgXk+OBjM35NyTZA39n+l2sGE2MXfrx1qs+RYoBLw=; b=mwZVZ/vQAWdq5Y9BOTRvlyYxxbJOCEVvTUgfvjwQgubE64R9wHYk7U0pNnmZUQB6pA dSSIB1NH2AyOOYhZzcXeSeHQyvorBxGXSn6O4dEEmq00E4fFoYuXDXoZlo+JpQAQPbrb WSuIVyUgBu/U8fMRO/frk8ptSTbM1IpO5YT3VGipBPIc/BCWmx2t7jyHzIeKFttayaEB F/1gsjAfXwqCR8uI91tZVumvv64+k3G19JSPe2JK/9I9VU2HS/MQnmqi4vRyV+RKdmzp ECdpFWb6GXsKfzzzzDrwb2EWCjEsTfCIcvZQo3LwumFnuFTXzXaifku/1Mtb/rQNm18n RSAA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g5-20020a50d0c5000000b00448d387c327si13147686edf.181.2022.11.16.04.21.21; Wed, 16 Nov 2022 04:21:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232615AbiKPMRi (ORCPT + 99 others); Wed, 16 Nov 2022 07:17:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231421AbiKPMQa (ORCPT ); Wed, 16 Nov 2022 07:16:30 -0500 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C700913D1E; Wed, 16 Nov 2022 04:10:58 -0800 (PST) Received: from dggpemm500022.china.huawei.com (unknown [172.30.72.55]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4NC21Z2bk1zHvsF; Wed, 16 Nov 2022 20:10:26 +0800 (CST) Received: from dggpemm500006.china.huawei.com (7.185.36.236) by dggpemm500022.china.huawei.com (7.185.36.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 16 Nov 2022 20:10:57 +0800 Received: from thunder-town.china.huawei.com (10.174.178.55) by dggpemm500006.china.huawei.com (7.185.36.236) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 16 Nov 2022 20:10:56 +0800 From: Zhen Lei To: Dave Young , Baoquan He , Vivek Goyal , , , Catalin Marinas , Will Deacon , , Jonathan Corbet , CC: Zhen Lei , "Eric W . Biederman" , Randy Dunlap , Feng Zhou , Kefeng Wang , "Chen Zhou" , John Donnelly , Dave Kleikamp Subject: [PATCH v4 1/2] arm64: kdump: Provide default size when crashkernel=Y,low is not specified Date: Wed, 16 Nov 2022 20:10:43 +0800 Message-ID: <20221116121044.1690-2-thunder.leizhen@huawei.com> X-Mailer: git-send-email 2.37.3.windows.1 In-Reply-To: <20221116121044.1690-1-thunder.leizhen@huawei.com> References: <20221116121044.1690-1-thunder.leizhen@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.174.178.55] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpemm500006.china.huawei.com (7.185.36.236) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749655284050261060?= X-GMAIL-MSGID: =?utf-8?q?1749655284050261060?= Try to allocate at least 128 MiB low memory automatically for the case that crashkernel=,high is explicitly specified, while crashkenrel=,low is omitted. This allows users to focus more on the high memory requirements of their business rather than the low memory requirements of the crash kernel booting. Signed-off-by: Zhen Lei Acked-by: Baoquan He Reviewed-by: Catalin Marinas --- Documentation/admin-guide/kernel-parameters.txt | 13 +++++-------- arch/arm64/mm/init.c | 8 ++++++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 7dea58f4a69cc8c..a7b7147447b8bf8 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -862,26 +862,23 @@ available. It will be ignored if crashkernel=X is specified. crashkernel=size[KMG],low - [KNL, X86-64] range under 4G. When crashkernel=X,high + [KNL, X86-64, ARM64] range under 4G. When crashkernel=X,high is passed, kernel could allocate physical memory region above 4G, that cause second kernel crash on system that require some amount of low memory, e.g. swiotlb requires at least 64M+32K low memory, also enough extra low memory is needed to make sure DMA buffers for 32-bit devices won't run out. Kernel would try to allocate - at least 256M below 4G automatically. + default size of memory below 4G automatically. The default + size is platform dependent. + --> x86: max(swiotlb_size_or_default() + 8MiB, 256MiB) + --> arm64: 128MiB This one lets the user specify own low range under 4G for second kernel instead. 0: to disable low allocation. It will be ignored when crashkernel=X,high is not used or memory reserved is below 4G. - [KNL, ARM64] range in low memory. - This one lets the user specify a low range in the - DMA zone for the crash dump kernel. - It will be ignored when crashkernel=X,high is not used - or memory reserved is located in the DMA zones. - cryptomgr.notests [KNL] Disable crypto self-tests diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 4b4651ee47f271a..ba7227179822d10 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -96,6 +96,8 @@ phys_addr_t __ro_after_init arm64_dma_phys_limit = PHYS_MASK + 1; #define CRASH_ADDR_LOW_MAX arm64_dma_phys_limit #define CRASH_ADDR_HIGH_MAX (PHYS_MASK + 1) +#define DEFAULT_CRASH_KERNEL_LOW_SIZE (128UL << 20) + static int __init reserve_crashkernel_low(unsigned long long low_size) { unsigned long long low_base; @@ -147,7 +149,9 @@ static void __init reserve_crashkernel(void) * is not allowed. */ ret = parse_crashkernel_low(cmdline, 0, &crash_low_size, &crash_base); - if (ret && (ret != -ENOENT)) + if (ret == -ENOENT) + crash_low_size = DEFAULT_CRASH_KERNEL_LOW_SIZE; + else if (ret) return; crash_max = CRASH_ADDR_HIGH_MAX; @@ -170,7 +174,7 @@ static void __init reserve_crashkernel(void) return; } - if ((crash_base >= CRASH_ADDR_LOW_MAX) && + if ((crash_base > CRASH_ADDR_LOW_MAX - crash_low_size) && crash_low_size && reserve_crashkernel_low(crash_low_size)) { memblock_phys_free(crash_base, crash_size); return; From patchwork Wed Nov 16 12:10:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhen Lei X-Patchwork-Id: 21009 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp108439wru; Wed, 16 Nov 2022 04:21:44 -0800 (PST) X-Google-Smtp-Source: AA0mqf7V5JFjVZgQBJWFZK9vs324j9mZLKF5GMEaAFRr5snBf5ZykfuifiKTagoTbVG9vgHEzTRd X-Received: by 2002:aa7:ca50:0:b0:461:9d22:348d with SMTP id j16-20020aa7ca50000000b004619d22348dmr18206141edt.76.1668601304575; Wed, 16 Nov 2022 04:21:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668601304; cv=none; d=google.com; s=arc-20160816; b=QGYMNvBaw/v8rq4xWKUvy/4Z5htpMK21wY5X98UBOqiWw4mJ6CRRhnJ6WH4svNtfJ7 t80nQAJ3dfWXkSoFeu6rrNxPOvWGexTe7Vub9iLbE3ukAjvLL1Kc11LX+TIGVsFCGAio FEO3F6aAn4rTElBY17wAassi0wHRz/0bKe7/gkxekV8FfqEFXYoc92CEdgD0ufcaNnqY i9rcpH32BJHHJnwc1IHjdw4sH4uFGCVfLIGHWhfA+cNhkg36HMSClv5F/jlkTrRzk3ff IwW29RieHwGlsq/lCRMxcXvHKfu7QPACzDyoy6WcX7lIacLg3eDPD95PdKbqIa/EkHma wADA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=04c7m+6BKiPdxIHCLywvReCNvsPX3tMl8QFiMeghMhY=; b=fPYhXWC7weOw5RuYOd569abs5d8Nvje9qa/x1OQZmZB6ffAwgNUh3nzb/TYxY7OO9N 52I00R/3/fFF7GHjqWsO7E150TVxWmPDdhgdjKWBZCG8+EulFRruKZLJ6qz8JReyA8RY WIYHwXLGsdmfP9vS+LEWoIPMx7qtihuMokZ26isxmu1xQKfYDMYad3pa5pOu624iz4LY vFRawYwAWtdio0N5oyaxvgwLZiCo8E4hM5zBE2wDDRhQ0+zUzCIHIIgs5mH4O9Rz5rTW CGpsV4TZk703XuULnur2rYRMXRj0COpBWNASuivQDzE6HAgqer8MkKOTyqSoTZqhiAJH SpVg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ji3-20020a170907980300b007ae7d12bef1si14770882ejc.909.2022.11.16.04.21.18; Wed, 16 Nov 2022 04:21:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233299AbiKPMRp (ORCPT + 99 others); Wed, 16 Nov 2022 07:17:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60992 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233201AbiKPMQa (ORCPT ); Wed, 16 Nov 2022 07:16:30 -0500 Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BD898192A0; Wed, 16 Nov 2022 04:10:59 -0800 (PST) Received: from dggpemm500023.china.huawei.com (unknown [172.30.72.55]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4NC21m3JKWz15Mh0; Wed, 16 Nov 2022 20:10:36 +0800 (CST) Received: from dggpemm500006.china.huawei.com (7.185.36.236) by dggpemm500023.china.huawei.com (7.185.36.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 16 Nov 2022 20:10:58 +0800 Received: from thunder-town.china.huawei.com (10.174.178.55) by dggpemm500006.china.huawei.com (7.185.36.236) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 16 Nov 2022 20:10:57 +0800 From: Zhen Lei To: Dave Young , Baoquan He , Vivek Goyal , , , Catalin Marinas , Will Deacon , , Jonathan Corbet , CC: Zhen Lei , "Eric W . Biederman" , Randy Dunlap , Feng Zhou , Kefeng Wang , "Chen Zhou" , John Donnelly , Dave Kleikamp Subject: [PATCH v4 2/2] arm64: kdump: Support crashkernel=X fall back to reserve region above DMA zones Date: Wed, 16 Nov 2022 20:10:44 +0800 Message-ID: <20221116121044.1690-3-thunder.leizhen@huawei.com> X-Mailer: git-send-email 2.37.3.windows.1 In-Reply-To: <20221116121044.1690-1-thunder.leizhen@huawei.com> References: <20221116121044.1690-1-thunder.leizhen@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.174.178.55] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpemm500006.china.huawei.com (7.185.36.236) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749655281147066385?= X-GMAIL-MSGID: =?utf-8?q?1749655281147066385?= For crashkernel=X without '@offset', select a region within DMA zones first, and fall back to reserve region above DMA zones. This allows users to use the same configuration on multiple platforms. Signed-off-by: Zhen Lei Acked-by: Baoquan He Reviewed-by: Catalin Marinas --- Documentation/admin-guide/kernel-parameters.txt | 2 +- arch/arm64/mm/init.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index a7b7147447b8bf8..ef6d922ed26b9dc 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -842,7 +842,7 @@ memory region [offset, offset + size] for that kernel image. If '@offset' is omitted, then a suitable offset is selected automatically. - [KNL, X86-64] Select a region under 4G first, and + [KNL, X86-64, ARM64] Select a region under 4G first, and fall back to reserve region above 4G when '@offset' hasn't been specified. See Documentation/admin-guide/kdump/kdump.rst for further details. diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index ba7227179822d10..58a0bb2c17f18cf 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -132,6 +132,7 @@ static void __init reserve_crashkernel(void) unsigned long long crash_max = CRASH_ADDR_LOW_MAX; char *cmdline = boot_command_line; int ret; + bool fixed_base = false; if (!IS_ENABLED(CONFIG_KEXEC_CORE)) return; @@ -163,12 +164,26 @@ static void __init reserve_crashkernel(void) crash_size = PAGE_ALIGN(crash_size); /* User specifies base address explicitly. */ - if (crash_base) + if (crash_base) { + fixed_base = true; crash_max = crash_base + crash_size; + } +retry: crash_base = memblock_phys_alloc_range(crash_size, CRASH_ALIGN, crash_base, crash_max); if (!crash_base) { + /* + * If the first attempt was for low memory, fall back to + * high memory, the minimum required low memory will be + * reserved later. + */ + if (!fixed_base && (crash_max == CRASH_ADDR_LOW_MAX)) { + crash_max = CRASH_ADDR_HIGH_MAX; + crash_low_size = DEFAULT_CRASH_KERNEL_LOW_SIZE; + goto retry; + } + pr_warn("cannot allocate crashkernel (size:0x%llx)\n", crash_size); return;