From nobody Mon Feb 9 05:59:20 2026 Received: from smtpbguseast1.qq.com (smtpbguseast1.qq.com [54.204.34.129]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14D422D59FA for ; Fri, 19 Dec 2025 09:34:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.204.34.129 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766136888; cv=none; b=JnTeZztEgloxktPdefaeu0ntHPKVwZbvDXe3vYWTGNOOtx7EnAR4/7uG4+r5m8XoN0bhra5iRoTEfufU5HoF60LywIZgoIrOOExR2Leavz4gg/w9jB6wrCmVEK4s2ukhGKrTEeLMGkHm3GzBDAGpfykFp3lBZkDauwx2QwBowqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766136888; c=relaxed/simple; bh=LaRRTR3qnGNCJtlHJ2Nw4G3FLsXu0jIpBsFrpTO2qvY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Q3N+ChlOSud1UVi6qHqxBGHTQb6A54AjogvrKrmh3icQJJPRU8RQMieDm5s4JzDifupiP4hienmX8EG5uYhvAYg9AbP9IdanTFTDsWzlgznQHzwGISv1SdhedrlRwTU+UeWrnD+H38/MI1bzpJpC2VwTWG9IFxAZD9uEakCVz70= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=uniontech.com; spf=pass smtp.mailfrom=uniontech.com; dkim=pass (1024-bit key) header.d=uniontech.com header.i=@uniontech.com header.b=EpDrLpB4; arc=none smtp.client-ip=54.204.34.129 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=uniontech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=uniontech.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=uniontech.com header.i=@uniontech.com header.b="EpDrLpB4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uniontech.com; s=onoh2408; t=1766136809; bh=WWn9WiYIbmVbreSUly6Wmiv5y6Py0BUHLhyaBm5H3ic=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=EpDrLpB4l//0Jr36ar0gPhc2EN9d59TMF8RVlSsx5xJDutibm3hY2c+gJcbnqlsaO 8fEIuM65coxmHtf1V3zOTGuCNWnczBKVZVq7gbErSqlf2pvgvQAAXHD0A4kKQP/CEh two3/pSvRBI96tnMquY8VfEFRDhM7VMi3vqhvHnI= X-QQ-mid: zesmtpsz5t1766136788t261ff1c4 X-QQ-Originating-IP: jf07Gpyl0qD+bKxLoVmk/7qgC6XNX6SupesXVPgyPi8= Received: from localhost.localdomain ( [123.114.60.34]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 19 Dec 2025 17:33:05 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 1 X-BIZMAIL-ID: 16359547072487399879 EX-QQ-RecipientCnt: 8 From: Qiang Ma To: akpm@linux-foundation.org, bhe@redhat.com, catalin.marinas@arm.com, will@kernel.org Cc: kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Qiang Ma Subject: [PATCH v2 2/4] kexec: add kexec flag to control debug printing Date: Fri, 19 Dec 2025 17:31:32 +0800 Message-Id: <20251219093134.2268620-3-maqianga@uniontech.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20251219093134.2268620-1-maqianga@uniontech.com> References: <20251219093134.2268620-1-maqianga@uniontech.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-QQ-SENDSIZE: 520 Feedback-ID: zesmtpsz:uniontech.com:qybglogicsvrsz:qybglogicsvrsz3b-0 X-QQ-XMAILINFO: My1XIh02ZBMDWl+6BS3GkG0UjUkGXJPoBumDkAGKi2aB9tsWOIfri/9X ze7Yi4xYcwxYUhrfJyBdZ07mWYQCOQmHgC0nwscZuiCMOWObDbNFLjcoKlEZTtCIjo/7Oos N2trCJgWHLZSfj+XshICiqyzW1E1LWS7FfzAQJovLjfvhFsWlYowcStq6AHdIDt9Mss6J7B gkmUh6E/kDgnbB8UFU6MhHKJsqJICzVzIBUC2LOB0y+FBqfLbMEIfwx9l9nWHx3vNKz1wsP 62SZuWspKjK0vZpfLGTF7QlKbeYmJdcZlJbwA49FgPvk15F5LR5/iCs3a4JbLz7vVf4FAb3 FdvSP8D2x50JyeME8rjCalhqGQoY4FCl9dvOgV6f2RMADoJwiIJ9I0t5VAm4Jms2ZG0fq7m T6tH+Ub2lL3XsrCkXH241yRKDce3U/rgoK4peUk50wWFoC8EgThJyFV4NImeti+m+yzQc2k k1OTnOkBMFTxav6BQ3h7axK3K6yEq0mMFWcmpHkkXZsHfuK2kMeWPziVDpA6fB/pt2k3C16 zP4HHP7fhDvjqSaie5CbLmWIw3amJSq023hOXy6/0CeHHta6XqV1lSKQHdtadz6arof86/z S9nOIG0bz7eeVgmD0mE30EFFQD3/deJL+Mqogt42vnTJwZ9SrpxXjniv25uqNYtXFQrI0Cm AEbEklP1Uu1qd8VaPucPlHy2yQ9/yRxX4mn3PSDT5QXroOOuE/VozzfX0XYmhOYI8CkTTIR cAwsiZCKOHvKatfctR3c90J5E3QnaZSOGZkFsLPIGnnO8JqWTzyWMUh19ewwdwmGFrzMEiE Y4ohizPaN4rUEd9jeuJgYfd33qOTIXGmktx2iai3GpkFiZZgvC96D2obvRf+2ISgg10W0XZ AsEC6eAKx5b6H6ccI3fIvTpUSNy5MU5ZCRP888J9QiaqZ7O+b0XYEu4LoHpD1cAQ6daSCco paYa8IRvq8XA5up7wkYfQXqHD1yK7tcGrUbumhRjLdw+nHjJetAssWmFZVpcGzQkV8u45LM R5vdzktkaFebJ/CzZHpiifa+w+W6a8N88Dql5ujXyJQ1SWt73cRLNBgpDrAcCi8f+QauWqu CnYJpXSsL+X5NWWb/3WVt5iGAo+CfDlIsplawEq99ky X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= X-QQ-RECHKSPAM: 0 Content-Type: text/plain; charset="utf-8" The commit cbc2fe9d9cb2 ("kexec_file: add kexec_file flag to control debug printing") added the kexec_file flag to control debug printing. However, for arm64, after commit 6f8c1da071a4 ("kexec_file, arm64: print out debugging message if required"), when using the kexec_load interface, the kexec_image_info function is called to print debug message, but it uses kexec_dprintk, which is only available under kexec_file, then when specifying 'kexec -d', kexec_load interface will print nothing. For riscv, commit eb7622d908a09 ("kexec_file, riscv: print out debugging message if required") remove kexec_image_info(), because the content has been printed out in generic code in kexec_file_load, but not in kexec_load. Therefore, in order to solve the two problems mentioned above, for this patchset, several things need to be done: 1. Enabling kexec_dprintk is available for kexec_load. 2. Add some debugging message of the deleted kexec_image_info to generic code. 3. Remove duplicate debugging prints for arm64 Since kexec_load and kexec_file_load are not triggered simultaneously, we can unify the debug flag of kexec and kexec_file as kexec_dbg_print. In this way, kexec_dprintk is available for kexec_load and kexec_file_load. The following are the key points of the specific changes: 1. rename kexec_file_dbg_print to kexec_dbg_print 2. Add KEXEC_DEBUG 3. Initialize kexec_dbg_print for kexec 4. Set the reset of kexec_dbg_print to kimage_free Signed-off-by: Qiang Ma --- include/linux/kexec.h | 9 +++++---- include/uapi/linux/kexec.h | 1 + kernel/kexec.c | 1 + kernel/kexec_core.c | 4 +++- kernel/kexec_file.c | 4 +--- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/include/linux/kexec.h b/include/linux/kexec.h index ff7e231b0485..23f10aec0b34 100644 --- a/include/linux/kexec.h +++ b/include/linux/kexec.h @@ -455,10 +455,11 @@ bool kexec_load_permitted(int kexec_image_type); =20 /* List of defined/legal kexec flags */ #ifndef CONFIG_KEXEC_JUMP -#define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_UPDATE_ELFCOREHDR | KEXEC_C= RASH_HOTPLUG_SUPPORT) +#define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_UPDATE_ELFCOREHDR | KEXEC_C= RASH_HOTPLUG_SUPPORT | \ + KEXEC_DEBUG) #else #define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_PRESERVE_CONTEXT | KEXEC_UP= DATE_ELFCOREHDR | \ - KEXEC_CRASH_HOTPLUG_SUPPORT) + KEXEC_CRASH_HOTPLUG_SUPPORT | KEXEC_DEBUG) #endif =20 /* List of defined/legal kexec file flags */ @@ -525,10 +526,10 @@ static inline int arch_kexec_post_alloc_pages(void *v= addr, unsigned int pages, g static inline void arch_kexec_pre_free_pages(void *vaddr, unsigned int pag= es) { } #endif =20 -extern bool kexec_file_dbg_print; +extern bool kexec_dbg_print; =20 #define kexec_dprintk(fmt, arg...) \ - do { if (kexec_file_dbg_print) pr_info(fmt, ##arg); } while (0) + do { if (kexec_dbg_print) pr_info(fmt, ##arg); } while (0) =20 extern void *kimage_map_segment(struct kimage *image, unsigned long addr, = unsigned long size); extern void kimage_unmap_segment(void *buffer); diff --git a/include/uapi/linux/kexec.h b/include/uapi/linux/kexec.h index 55749cb0b81d..819c600af125 100644 --- a/include/uapi/linux/kexec.h +++ b/include/uapi/linux/kexec.h @@ -14,6 +14,7 @@ #define KEXEC_PRESERVE_CONTEXT 0x00000002 #define KEXEC_UPDATE_ELFCOREHDR 0x00000004 #define KEXEC_CRASH_HOTPLUG_SUPPORT 0x00000008 +#define KEXEC_DEBUG 0x00000010 #define KEXEC_ARCH_MASK 0xffff0000 =20 /* diff --git a/kernel/kexec.c b/kernel/kexec.c index 9bb1f2b6b268..f6c58c767eb0 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c @@ -42,6 +42,7 @@ static int kimage_alloc_init(struct kimage **rimage, unsi= gned long entry, if (!image) return -ENOMEM; =20 + kexec_dbg_print =3D !!(flags & KEXEC_DEBUG); image->start =3D entry; image->nr_segments =3D nr_segments; memcpy(image->segment, segments, nr_segments * sizeof(*segments)); diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c index 0f92acdd354d..d7c2a2b79214 100644 --- a/kernel/kexec_core.c +++ b/kernel/kexec_core.c @@ -55,7 +55,7 @@ atomic_t __kexec_lock =3D ATOMIC_INIT(0); /* Flag to indicate we are going to kexec a new kernel */ bool kexec_in_progress =3D false; =20 -bool kexec_file_dbg_print; +bool kexec_dbg_print; =20 /* * When kexec transitions to the new kernel there is a one-to-one @@ -578,6 +578,8 @@ void kimage_free(struct kimage *image) kimage_entry_t *ptr, entry; kimage_entry_t ind =3D 0; =20 + kexec_dbg_print =3D false; + if (!image) return; =20 diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index eb62a9794242..3f1d6c4e8ff2 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -138,8 +138,6 @@ void kimage_file_post_load_cleanup(struct kimage *image) */ kfree(image->image_loader_data); image->image_loader_data =3D NULL; - - kexec_file_dbg_print =3D false; } =20 #ifdef CONFIG_KEXEC_SIG @@ -314,7 +312,7 @@ kimage_file_alloc_init(struct kimage **rimage, int kern= el_fd, if (!image) return -ENOMEM; =20 - kexec_file_dbg_print =3D !!(flags & KEXEC_FILE_DEBUG); + kexec_dbg_print =3D !!(flags & KEXEC_FILE_DEBUG); image->file_mode =3D 1; =20 #ifdef CONFIG_CRASH_DUMP --=20 2.20.1