From patchwork Thu Sep 14 03:31:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baoquan He X-Patchwork-Id: 14016 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp725483vqi; Thu, 14 Sep 2023 18:02:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEkZhV1TEwFcutgIxE0aP2P0P09ux89ypreVNBhoM7vnaoVTVmnlcE7cKMa4fIT7/t1OJ9k X-Received: by 2002:a17:90b:46c5:b0:271:9237:a07f with SMTP id jx5-20020a17090b46c500b002719237a07fmr135198pjb.32.1694739767173; Thu, 14 Sep 2023 18:02:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694739767; cv=none; d=google.com; s=arc-20160816; b=KXUOBdiuDDTbnJ3pHqM6txte4lHudOlmL5DS96EK6OJS33fMq0CazL2ih0ukywrcYK he9Z7s/IYk6cEl4lBxDTB7SHi4XcJLhp1RoWqxZBnQiVeWqcaR+2IEeIqENRDp7n6JSP tw0itLZ39Q5eGFt2npy/K9hGzAWOxcUwd3JZkcmTjFYbJyIkmk+qZFrLmUpIyToJEGS5 vzuNUFge99ZMDUUBHiN9q/dSiYAszua+dUBiCnCeq3WAS2VmYbE/fxZbPKwxn2GZYOer 6JtINTEDsNgIgvaBKqocLn/oyfN1ZToW+rU1o2ZXMiv/IXxlW2WNzDn+UtJV6zxvt5gx n80Q== 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:dkim-signature; bh=hudU0FKKSfKGoT5NXgs2s+9GzsdTCr22QtjS8oAgCWE=; fh=MEj7E4phu0bfxfJQeKfSjdtfALcYFA7fSBdgsxijU1g=; b=mLZ0Et6Cr19HQVtfnZgVPUxDtNY+9dk0uzgoswQj2bt7p7YYUQ+brwvND9OS6XpDYm wKHj+1MA7pb4SE3GLTLrwgsb656GFPTSRjzvOLY5yyn3AfYNe9sLJhOgVHmSTxwR34Xq gS9eD4krLC0r4fpNukIT9aVgp2XLQYsHCg4mvkBHnfm8qcttWmn3njJzKZcj/HMnJbKO dJ/TJ2U2e/H8kbsgpV+QVRVrJnlXRXCd6zyw+PfNkeKri7PnVb0hJGDEoKnvTG5q3Cbk cZ3E/Lbq56dv8A9jK7+kOMz3l0Ijp6nHcZli4uoELGq2nA1WQC6ysKxsbThMi3n8TiOj U4qA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jKcJGG6u; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id r18-20020a17090aa09200b0025bec4468c2si2437550pjp.167.2023.09.14.18.02.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Sep 2023 18:02:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jKcJGG6u; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 7C65581BBA26; Wed, 13 Sep 2023 20:32:53 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234160AbjINDcq (ORCPT + 35 others); Wed, 13 Sep 2023 23:32:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229876AbjINDcq (ORCPT ); Wed, 13 Sep 2023 23:32:46 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 183331BDA for ; Wed, 13 Sep 2023 20:31:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1694662316; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hudU0FKKSfKGoT5NXgs2s+9GzsdTCr22QtjS8oAgCWE=; b=jKcJGG6u2F+3bvAtcRmyAyHpYT/6p111/i/sfAlkdefmi/N0BWqmDAQS23JRt8+5DoMeA4 AByq8N6cUdycVZDhJUJropJv36KsjL9BgC/QGNHPsvK4NZAfadoL0YS1mKi0AftpZA9gS5 ELB7vg/WbISXL5DCtNNRYtnsmO27VBk= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-80-_icoECdnMROGvFx-gn-GJA-1; Wed, 13 Sep 2023 23:31:50 -0400 X-MC-Unique: _icoECdnMROGvFx-gn-GJA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CC9EC857A9D; Thu, 14 Sep 2023 03:31:49 +0000 (UTC) Received: from MiWiFi-R3L-srv.redhat.com (unknown [10.72.112.51]) by smtp.corp.redhat.com (Postfix) with ESMTP id 98D0F10085C0; Thu, 14 Sep 2023 03:31:45 +0000 (UTC) From: Baoquan He To: linux-kernel@vger.kernel.org Cc: akpm@linux-foundation.org, thunder.leizhen@huawei.com, catalin.marinas@arm.com, chenjiahao16@huawei.com, kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, x86@kernel.org, Baoquan He Subject: [PATCH v3 0/9] kdump: use generic functions to simplify crashkernel reservation in arch Date: Thu, 14 Sep 2023 11:31:33 +0800 Message-ID: <20230914033142.676708-1-bhe@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 13 Sep 2023 20:32:53 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777063446134079860 X-GMAIL-MSGID: 1777063446134079860 In the current arm64, crashkernel=,high support has been finished after several rounds of posting and careful reviewing. The code in arm64 which parses crashkernel kernel parameters firstly, then reserve memory can be a good example for other ARCH to refer to. Whereas in x86_64, the code mixing crashkernel parameter parsing and memory reserving is twisted, and looks messy. Refactoring the code to make it more readable maintainable is necessary. Here, firstly abstract the crashkernel parameter parsing code into parse_crashkernel() to make it be able to parse crashkernel=,high|low. Then abstract the crashkernel memory reserving code into a generic function reserve_crashkernel_generic(). Finally, in ARCH which crashkernel=,high support is needed, a simple arch_reserve_crashkernel() can be added to call above two functions. This can remove the duplicated implmentation code in each ARCH, like arm64, x86_64 and riscv. I only did testing on x86_64 and arm64 for below cases, haven't tested riscv. If riscv people can help apply the patchset and give it a shot, it would be great. crashkernel=512M,high crashkernel=512M,high crashkernel=256M,low crashkernel=512M,high crashkernel=0M,low crashkernel=0M,high crashkernel=256M,low crashkernel=512M crashkernel=512M@0x4f000000 crashkernel=1G-4G:256M,4G-64G:320M,64G-:576M crashkernel=0M History: v2->v3: - Move crashk_res and crashk_low_res codes into crash_core.c, and add including in . These two fix compiling error reported by LKP when CONFIG_CRASH_CORE=on while CONFIG_KEXEC_CORE is unset. - Adjust the if-else and return logic in parse_crashkernel() according to Lei's suggestion. - Make riscv use the generic interface to simplify crahskernel reservation code too since crashkernel=,high support has been added into riscv. - Some minor changes suggested by Lei. v1->v2: - Change to add asm/crash_core.h into x86 and arm64 to contain those arch specific macro definitions for generic reservaton. This fixes the compiling error reported by LKP in v1. https://lore.kernel.org/all/202308272150.p3kRkMoF-lkp@intel.com/T/#u - Fix a log typo in patch 8, thanks to Samuel. - RFC->v1: https://lore.kernel.org/all/20230619055951.45620-1-bhe@redhat.com/T/#u [RFC PATCH 0/4] kdump: add generic functions to simplify crashkernel crashkernel in architecture Dave and Philipp commented the old parse_crashkernel_common() and parse_crashkernel_generic() are quite confusing. In this formal post, I made change to address the concern by unifying all crashkernel parsing into parse_crashkernel(). Baoquan He (9): crash_core.c: remove unnecessary parameter of function crash_core: change the prototype of function parse_crashkernel() crash_core: change parse_crashkernel() to support crashkernel=,high|low parsing crash_core: add generic function to do reservation crash_core: move crashk_*res definition into crash_core.c x86: kdump: use generic interface to simplify crashkernel reservation code arm64: kdump: use generic interface to simplify crashkernel reservation riscv: kdump: use generic interface to simplify crashkernel reservation crash_core.c: remove unneeded functions arch/arm/kernel/setup.c | 3 +- arch/arm64/Kconfig | 3 + arch/arm64/include/asm/crash_core.h | 10 ++ arch/arm64/mm/init.c | 140 ++------------------ arch/ia64/kernel/setup.c | 2 +- arch/loongarch/kernel/setup.c | 4 +- arch/mips/kernel/setup.c | 3 +- arch/powerpc/kernel/fadump.c | 2 +- arch/powerpc/kexec/core.c | 2 +- arch/powerpc/mm/nohash/kaslr_booke.c | 2 +- arch/riscv/Kconfig | 3 + arch/riscv/include/asm/crash_core.h | 11 ++ arch/riscv/include/asm/processor.h | 2 + arch/riscv/mm/init.c | 141 ++------------------ arch/s390/kernel/setup.c | 4 +- arch/sh/kernel/machine_kexec.c | 2 +- arch/x86/Kconfig | 3 + arch/x86/include/asm/crash_core.h | 34 +++++ arch/x86/kernel/setup.c | 143 +++------------------ include/linux/crash_core.h | 49 ++++++- include/linux/kexec.h | 4 - kernel/crash_core.c | 184 ++++++++++++++++++++++++--- kernel/kexec_core.c | 17 --- 23 files changed, 321 insertions(+), 447 deletions(-) create mode 100644 arch/arm64/include/asm/crash_core.h create mode 100644 arch/riscv/include/asm/crash_core.h create mode 100644 arch/x86/include/asm/crash_core.h