Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp3802081rwl; Mon, 27 Mar 2023 20:59:23 -0700 (PDT) X-Google-Smtp-Source: AKy350ZTergnYaP5zIOCA4Jr2fjrsuW0XiQWKeAc0H4Slt8JLANv97Cd3KVWXEI6AfeBaznSXk6p X-Received: by 2002:a17:907:d68f:b0:8c3:3439:24d9 with SMTP id wf15-20020a170907d68f00b008c3343924d9mr15315429ejc.24.1679975963174; Mon, 27 Mar 2023 20:59:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679975963; cv=none; d=google.com; s=arc-20160816; b=rzjThb32k0rkYDkfOiYDvr9AQqKdIG7liCYPm0OOrtCSsvnSg2qU7DtGAVYJa7/O/Z 8cgOl1Xm+pchjFyJ8XgohYXbjI2nOW5RNRZaxlU+nhRCSO2RmM1zwlG44LGh/Naaw/7g Fhq4ioN9cdXw6jEP5NbLwjAfNOwdoramK3pSGeLlfSNUqH1aywDmYXj7XpRzQmnGy7AN GYme3cHIWbVc0iiHmTUddaOdw4OKI+Zy6sRclQ1toEwwOnzruZT/k8ZVFbCa53jqeFMe h03K9Vw/AajOwaXv7F8fB5RosDu5wUGITny5J8Nqxb6FjT2Vz2CGEZqq94tfkTXiKShn Ou8Q== 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 :message-id:date:subject:cc:to:from; bh=aPnjARn6LVQunxpmr0xZf9aiqvx7Oxcn9i/eFB3EEDg=; b=CRoS/qxNIVLJC+nbyhJF4NvPnH7h5ZOuQDijveHQ0Ao8DBF9PmpeGJ9G/gaZHAPTnL QVJVjUTJ59lJS35/CBzOCl4iBJwCeCmrvqKWxlVGgmiWTY9JU7sQXC/Et4xL9d7TR9GN 1d4Nxq+TDXoV2DNzgLw9MmwxL0JJ2y8F19LOCSOVd6V1PNdhaFl0OmQFuIavcYkol6EH 18W8/axE1nAthImprG6Qo7lZNnbcphT1pQ9hF2V0ND7CHghdoPFtI1Zsy2gqnq8NDBWW 116UfOAKOhs7TIHyKhDEhAsN1iWyKWpBNpch3k5YNSUbzGnFOyRuHtNxUHSSj0wo6vpG 1r+Q== 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i9-20020a170906250900b008df684ab75dsi29395286ejb.595.2023.03.27.20.58.59; Mon, 27 Mar 2023 20:59:23 -0700 (PDT) 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 S232169AbjC1Dzy (ORCPT + 99 others); Mon, 27 Mar 2023 23:55:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232626AbjC1Dz0 (ORCPT ); Mon, 27 Mar 2023 23:55:26 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 740EF2D73; Mon, 27 Mar 2023 20:55:20 -0700 (PDT) Received: from dggpemm500016.china.huawei.com (unknown [172.30.72.57]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Plwkc19mWzKvtH; Tue, 28 Mar 2023 11:52:56 +0800 (CST) Received: from huawei.com (10.67.174.205) by dggpemm500016.china.huawei.com (7.185.36.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 11:55:18 +0800 From: Chen Jiahao To: , , , , , , , , , , , CC: , , , Subject: [PATCH -next v2 0/2] support allocating crashkernel above 4G explicitly on riscv Date: Tue, 28 Mar 2023 19:51:48 +0800 Message-ID: <20230328115150.2700016-1-chenjiahao16@huawei.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.67.174.205] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpemm500016.china.huawei.com (7.185.36.25) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-2.3 required=5.0 tests=DATE_IN_FUTURE_06_12, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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 On riscv, the current crash kernel allocation logic is trying to allocate within 32bit addressible memory region by default, if failed, try to allocate without 4G restriction. In need of saving DMA zone memory while allocating a relatively large crash kernel region, allocating the reserved memory top down in high memory, without overlapping the DMA zone, is a mature solution. Hence this patchset introduces the parameter option crashkernel=X,[high,low]. One can reserve the crash kernel from high memory above DMA zone range by explicitly passing "crashkernel=X,high"; or reserve a memory range below 4G with "crashkernel=X,low". Besides, there are few rules need to take notice: 1. "crashkernel=X,[high,low]" will be ignored if "crashkernel=size" is specified. 2. "crashkernel=X,low" is valid only when "crashkernel=X,high" is passed and there is enough memory to be allocated under 4G. 3. When allocating crashkernel above 4G and no "crashkernel=X,low" is specified, a 128M low memory will be allocated automatically for swiotlb bounce buffer. See Documentation/admin-guide/kernel-parameters.txt for more information. To verify loading the crashkernel, adapted kexec-tools is attached below: https://github.com/chenjh005/kexec-tools/tree/build-test-riscv-v2 Following test cases have been performed as expected: 1) crashkernel=256M //low=256M 2) crashkernel=1G //low=1G 3) crashkernel=4G //high=4G, low=128M(default) 4) crashkernel=4G crashkernel=256M,high //high=4G, low=128M(default), high is ignored 5) crashkernel=4G crashkernel=256M,low //high=4G, low=128M(default), low is ignored 6) crashkernel=4G,high //high=4G, low=128M(default) 7) crashkernel=256M,low //low=0M, invalid 8) crashkernel=4G,high crashkernel=256M,low //high=4G, low=256M 9) crashkernel=4G,high crashkernel=4G,low //high=0M, low=0M, invalid 10) crashkernel=512M@0xd0000000 //low=512M 11) crashkernel=1G@0xe0000000 //high=0M, low=0M, no enough low memory, failed Changes since [v2]: 1. Update the allocation logic to ensure the high crashkernel region is reserved strictly above dma32_phys_limit. 2. Clean up some minor format problems. Chen Jiahao (2): riscv: kdump: Implement crashkernel=X,[high,low] docs: kdump: Update the crashkernel description for riscv .../admin-guide/kernel-parameters.txt | 15 ++--- arch/riscv/kernel/setup.c | 5 ++ arch/riscv/mm/init.c | 63 +++++++++++++++++-- 3 files changed, 72 insertions(+), 11 deletions(-) -- 2.31.1