From patchwork Tue Apr 22 11:31:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugen Hristev X-Patchwork-Id: 883207 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 517DE27BF9E for ; Tue, 22 Apr 2025 11:32:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321536; cv=none; b=HU6A0SYLwNaYLFyFTp+Q0Nlf69QPvyqlD9COl0VtUnFe+yMYmVRSFCl3MORNUUXT0TQfBszCXwYDIg4PEssOri0hF8mGiqrMw11VeAi8gtrHj7LMyfsORTQBbWfLI8I92KS6z72dHBKO8MTBpijLwYrRe8eFqzdXiCXT9asuSaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321536; c=relaxed/simple; bh=97uK62zmD2sWyzkTZ44MvQTZD69HqLC6hR2+rP9VfTk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NW+LtiTk6JCfChfAOB2Eb6bRJIcefKs6X7CEdL/21aVlFXQXxdFFbdtd5AQcLzXoBasNAVdz4+zeqJ43UAQfBp9p9SgNb8q2Rkr7nzRQ7RaMYnAfMLrVZAp88oPGKUAJAiartT7+LH4aeMyC53x/fiC3IhG4U76ongKbpVLIO4w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=NTEcpbuz; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="NTEcpbuz" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3913958ebf2so4499265f8f.3 for ; Tue, 22 Apr 2025 04:32:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321532; x=1745926332; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SCwux+a4Q8sCXgF1emBYGhkcA+99fK1/4YdDu/kkdcA=; b=NTEcpbuz6UtTebR0zP9xWoG3jP3pcZP1zE0vJtRD9dL1MztRe/nOx0ZWlkxW41mxHx NbvBnzxLg6U5JH+4RLH3HQJZi39pdY/l4KFJ2bXbsm3Iq3lcIuYhwA1LMo5DQAgQnUsf jWgjUQvJBUO1HTElL6QSJ/3VZm9/+hUT9UJcGUis8IGPx+gity9TYuzcUzo5Em9MpuxR 5cwHpd/h4MS0h+WruCQtfpfdnqK5r/FX5GCOQMBHsdkXy5G4cH7x53a8XRUxpmS2B6GP ooui4sSAHbzhN8Yq/5+TAHn5QegMD9Q/WDonPSWRSmC/LiIJ/GYiIdW4JAFPCDMBgpXi kEOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321532; x=1745926332; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SCwux+a4Q8sCXgF1emBYGhkcA+99fK1/4YdDu/kkdcA=; b=eMir/TF5tWMU/9QB2wfgp270B5geeI40u+kRwr9kiJBi3yuT43LWCUlYZ7fVm43KE5 Zy/aatGu14AxtSKyjwiKPJCbHPNojWdl/k3o7CFgzPnwQ8rzjT7qqr/sMLz2G5O0F34D YlEwl9RUodqydqU6U8xeqFDMTRUQ5uoOy7Ft17m2oA+mN5xYbaE3y/MlmPsimnfNUuWT 4zxdJSw88xE+L3QWoMl23Fl9fICzVA+eE0QKYh/g045jvkd5V7aQ3urWtBWwSA09oC8S uTFYIZmQkh6+F3pw3Z3dctBF7wfvsYAhOjPP1dQqrFi2BVml8bUtSvdxNDlNO1epHmLL C4Gg== X-Forwarded-Encrypted: i=1; AJvYcCW5+ITXyIBV7FpEcjQUnlvc9dBmUfAxmJLoGbnwe3yD8bQJz1iwUenUWj3Xhu81TXMoJo+p4t6tYXACesr2@vger.kernel.org X-Gm-Message-State: AOJu0YxUGOTrvJJSsRCQrENzlcftPu2wR9iFtxtjNH77AUgTC2YcG+Kd xjYZtwZws5wbA/8oEdF0QIidr7SmOE0nYvHvwkn0so4vOd83bLx5zv0dRcu4tBk= X-Gm-Gg: ASbGnct3wUZy+96bTY7n3FKAbmfVIpM/5vrtBUCd60BQzqHAclfsS3GylGwX4QLK6nP r51LC0aMtrk2mygrsQJqBa1moHRzr/HRN5C9mRZ7W+x+Nwv/YSIFtafikR5NDIqBRJY7STkQKAC 6p2bYoJhbA8vN0Z+q1PwTZpK+bZRnFUTTUT1Cx7/aAoMwHOHIVzzDLfFhqKEqrtmHqWXjXOCSSr 6NC88XlFoI6oPnZsA7NtIQoYfHapPUQj8pLJIceYzDVt2S+H4V85oi/sJ7znq9+HB62XhcXsrk/ pIbekPj9OIOsHuowvtEzM4fIhS9dMDaeDah7TaONsIp+2TLYxb4d3wQwsR9WqJ4= X-Google-Smtp-Source: AGHT+IGMfuXrs6yBJwUzUPD9ezVigzRz4yUbqmU88PCa4ZD+NBPSxQaWYDkLyhCxy4qvd1m4zcFnzQ== X-Received: by 2002:a05:6000:1862:b0:38d:d0ca:fbad with SMTP id ffacd0b85a97d-39efba3c803mr11877512f8f.14.1745321532510; Tue, 22 Apr 2025 04:32:12 -0700 (PDT) Received: from eugen-station.. ([2a02:2f0a:131e:0:1820:da87:73b1:d80c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39efa49312fsm14907887f8f.70.2025.04.22.04.32.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:12 -0700 (PDT) From: Eugen Hristev To: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, andersson@kernel.org Cc: linux-doc@vger.kernel.org, corbet@lwn.net, tglx@linutronix.de, mingo@redhat.com, rostedt@goodmis.org, john.ogness@linutronix.de, senozhatsky@chromium.org, pmladek@suse.com, peterz@infradead.org, mojha@qti.qualcomm.com, linux-arm-kernel@lists.infradead.org, vincent.guittot@linaro.org, konradybcio@kernel.org, dietmar.eggemann@arm.com, juri.lelli@redhat.com, eugen.hristev@linaro.org Subject: [RFC][PATCH 02/14] kmemdump: introduce kmemdump Date: Tue, 22 Apr 2025 14:31:44 +0300 Message-ID: <20250422113156.575971-3-eugen.hristev@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250422113156.575971-1-eugen.hristev@linaro.org> References: <20250422113156.575971-1-eugen.hristev@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Kmemdump mechanism allows any driver to mark a specific memory area for later dumping purpose, depending on the functionality of the attached backend. The backend would interface any hardware mechanism that will allow dumping to complete regardless of the state of the kernel (running, frozen, crashed, or any particular state). Signed-off-by: Eugen Hristev --- drivers/Kconfig | 2 + drivers/Makefile | 2 + drivers/debug/Kconfig | 16 ++++ drivers/debug/Makefile | 3 + drivers/debug/kmemdump.c | 185 +++++++++++++++++++++++++++++++++++++++ include/linux/kmemdump.h | 52 +++++++++++ 6 files changed, 260 insertions(+) create mode 100644 drivers/debug/Kconfig create mode 100644 drivers/debug/Makefile create mode 100644 drivers/debug/kmemdump.c create mode 100644 include/linux/kmemdump.h diff --git a/drivers/Kconfig b/drivers/Kconfig index 7bdad836fc62..ef56588f559e 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -245,4 +245,6 @@ source "drivers/cdx/Kconfig" source "drivers/dpll/Kconfig" +source "drivers/debug/Kconfig" + endmenu diff --git a/drivers/Makefile b/drivers/Makefile index 45d1c3e630f7..cf544a405007 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -195,3 +195,5 @@ obj-$(CONFIG_CDX_BUS) += cdx/ obj-$(CONFIG_DPLL) += dpll/ obj-$(CONFIG_S390) += s390/ + +obj-y += debug/ diff --git a/drivers/debug/Kconfig b/drivers/debug/Kconfig new file mode 100644 index 000000000000..22348608d187 --- /dev/null +++ b/drivers/debug/Kconfig @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-2.0 +menu "Generic Driver Debug Options" + +config DRIVER_KMEMDUMP + bool "Allow drivers to register memory for dumping" + help + Kmemdump mechanism allows any driver to mark a specific memory area + for later dumping purpose, depending on the functionality + of the attached backend. The backend would interface any hardware + mechanism that will allow dumping to complete regardless of the + state of the kernel (running, frozen, crashed, or any particular + state). + + Note that modules using this feature must be rebuilt if option + changes. +endmenu diff --git a/drivers/debug/Makefile b/drivers/debug/Makefile new file mode 100644 index 000000000000..cc14dea250e3 --- /dev/null +++ b/drivers/debug/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-$(CONFIG_DRIVER_KMEMDUMP) += kmemdump.o diff --git a/drivers/debug/kmemdump.c b/drivers/debug/kmemdump.c new file mode 100644 index 000000000000..a685c0863e25 --- /dev/null +++ b/drivers/debug/kmemdump.c @@ -0,0 +1,185 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include + +#define MAX_ZONES 512 + +static struct kmemdump_backend *backend; +static DEFINE_IDR(kmemdump_idr); +static DEFINE_MUTEX(kmemdump_lock); +static LIST_HEAD(kmemdump_list); + +/** + * kmemdump_register() - Register region into kmemdump. + * @handle: string of maximum 8 chars that identifies this region + * @zone: pointer to the zone of memory + * @size: region size + * + * Return: On success, it returns an allocated unique id that can be used + * at a later point to identify the region. On failure, it returns + * negative error value. + */ +int kmemdump_register(char *handle, void *zone, size_t size) +{ + struct kmemdump_zone *z = kzalloc(sizeof(*z), GFP_KERNEL); + int id; + + if (!z) + return -ENOMEM; + + mutex_lock(&kmemdump_lock); + + id = idr_alloc_cyclic(&kmemdump_idr, z, 0, MAX_ZONES, GFP_KERNEL); + if (id < 0) { + mutex_unlock(&kmemdump_lock); + return id; + } + + if (!backend) + pr_debug("kmemdump backend not available yet, waiting...\n"); + + z->zone = zone; + z->size = size; + z->id = id; + + if (handle) + strscpy(z->handle, handle, 8); + + if (backend) { + int ret; + + ret = backend->register_region(id, handle, zone, size); + if (ret) { + mutex_unlock(&kmemdump_lock); + return ret; + } + z->registered = true; + } + + mutex_unlock(&kmemdump_lock); + return id; +} +EXPORT_SYMBOL_GPL(kmemdump_register); + +/** + * kmemdump_unregister() - Unregister region from kmemdump. + * @id: unique id that was returned when this region was successfully + * registered initially. + * + * Return: None + */ +void kmemdump_unregister(int id) +{ + struct kmemdump_zone *z; + + mutex_lock(&kmemdump_lock); + + z = idr_find(&kmemdump_idr, id); + if (!z) + return; + if (z->registered && backend) + backend->unregister_region(z->id); + + idr_remove(&kmemdump_idr, id); + kfree(z); + + mutex_unlock(&kmemdump_lock); +} +EXPORT_SYMBOL_GPL(kmemdump_unregister); + +static int kmemdump_register_fn(int id, void *p, void *data) +{ + struct kmemdump_zone *z = p; + int ret; + + if (z->registered) + return 0; + + ret = backend->register_region(z->id, z->handle, z->zone, z->size); + if (ret) + return ret; + z->registered = true; + + return 0; +} + +/** + * kmemdump_register_backend() - Register a backend into kmemdump. + * Only one backend is supported at a time. + * @be: Pointer to a driver allocated backend. This backend must have + * two callbacks for registering and deregistering a zone from the + * backend. + * + * Return: On success, it returns 0, negative error value otherwise. + */ +int kmemdump_register_backend(struct kmemdump_backend *be) +{ + mutex_lock(&kmemdump_lock); + + if (backend) + return -EALREADY; + + if (!be || !be->register_region || !be->unregister_region) + return -EINVAL; + + backend = be; + pr_info("kmemdump backend %s registered successfully.\n", + backend->name); + + /* Try to call the backend for all previously requested zones */ + idr_for_each(&kmemdump_idr, kmemdump_register_fn, NULL); + + mutex_unlock(&kmemdump_lock); + + return 0; +} +EXPORT_SYMBOL_GPL(kmemdump_register_backend); + +static int kmemdump_unregister_fn(int id, void *p, void *data) +{ + int ret; + struct kmemdump_zone *z = p; + + if (!z->registered) + return 0; + + ret = backend->unregister_region(z->id); + if (ret) + return ret; + z->registered = false; + + return 0; +} + +/** + * kmemdump_register_backend() - Unregister the backend from kmemdump. + * Only one backend is supported at a time. + * Before deregistering, this will call the backend to unregister all the + * previously registered zones. + * @be: Pointer to a driver allocated backend. This backend must match + * the initially registered backend. + * + * Return: None + */ +void kmemdump_unregister_backend(struct kmemdump_backend *be) +{ + mutex_lock(&kmemdump_lock); + + if (backend != be) { + mutex_unlock(&kmemdump_lock); + return; + } + + /* Try to call the backend for all previously requested zones */ + idr_for_each(&kmemdump_idr, kmemdump_unregister_fn, NULL); + + backend = NULL; + pr_info("kmemdump backend %s removed successfully.\n", be->name); + + mutex_unlock(&kmemdump_lock); +} +EXPORT_SYMBOL_GPL(kmemdump_unregister_backend); diff --git a/include/linux/kmemdump.h b/include/linux/kmemdump.h new file mode 100644 index 000000000000..b55b15c295ac --- /dev/null +++ b/include/linux/kmemdump.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef _KMEMDUMP_H +#define _KMEMDUMP_H + +#define KMEMDUMP_ZONE_MAX_HANDLE 8 +/** + * struct kmemdump_zone - region mark zone information + * @id: unique id for this zone + * @zone: pointer to the memory area for this zone + * @size: size of the memory area of this zone + * @registered: bool indicating whether this zone is registered into the + * backend or not. + * @handle: a string representing this region + */ +struct kmemdump_zone { + int id; + void *zone; + size_t size; + bool registered; + char handle[KMEMDUMP_ZONE_MAX_HANDLE]; +}; + +#define KMEMDUMP_BACKEND_MAX_NAME 128 +/** + * struct kmemdump_backend - region mark backend information + * @name: the name of the backend + * @register_region: callback to register region in the backend + * @unregister_region: callback to unregister region in the backend + */ +struct kmemdump_backend { + char name[KMEMDUMP_BACKEND_MAX_NAME]; + int (*register_region)(unsigned int id, char *, void *, size_t); + int (*unregister_region)(unsigned int id); +}; + +#ifdef CONFIG_DRIVER_KMEMDUMP +int kmemdump_register(char *handle, void *zone, size_t size); +void kmemdump_unregister(int id); +#else +static inline int kmemdump_register(char *handle, void *area, size_t size) +{ + return 0; +} + +static inline void kmemdump_unregister(int id) +{ +} +#endif + +int kmemdump_register_backend(struct kmemdump_backend *backend); +void kmemdump_unregister_backend(struct kmemdump_backend *backend); +#endif From patchwork Tue Apr 22 11:31:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugen Hristev X-Patchwork-Id: 883206 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93BA827CB22 for ; Tue, 22 Apr 2025 11:32:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321540; cv=none; b=T6lHKAc3+juIZ+oRj/4AOWKsShN5INFyogbiZEwyzKVpiKAf4QjximRt/7GHi1TZSfWaLb1qEzlcWwdRz6S5gcFBiisnFn9Jhf6520+lthRL/dRDyjyDAdjZqnOd/NDioTEVzw7locKpQ3AURAsNWzNNDz9GKkn1AUEhUIDZUbA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321540; c=relaxed/simple; bh=6Ex4TDV2zsYu1F8S7MzsO2fAsL/9qH/bHusCYK0VeV8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RPLHCpRl+UIvTasdco204f8Q0kdptFmRehSCIVjASTwIZFhjyPPvQ3OxNWE14je5sjjdamjojDV42Dp7t0qqVCrXguxCptZlgsz6/q5phAyNbRr5e0XrSEPrmsSAojurFR8x27rLuQt+1afU72OaUO6Ogeyvp2f4O622g8LAjTI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=YDqvVgVw; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="YDqvVgVw" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-39c0dfad22aso3535170f8f.2 for ; Tue, 22 Apr 2025 04:32:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321536; x=1745926336; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OdGiljQFkRF0Dbr2acCgX0s9x3K0UlpkYw5viR3VBTU=; b=YDqvVgVw/Dleryy20k5uU6BSRNuUwsC+OcGiu/jiGzAVKqE4WS/veIsAN+xi23/DFG J8Q6myPs9EmBgkabyi6bltBiU1jelBDnn2ORpENjgLm2iIxKD35igd9NWjbZhnjmY6UG YX62IKZ58TWFfFdyvjSfLblKKtfPkYLg4i0LYuCkbpqAWKZ1vIqassupGBbEfnubamBC PQzwn0Zi/dSyls3c/PZmwWInViKcadEp7uSDWbz0gc2sp+egC1K0qc5FXJjfRe7CPCwT ksSFu7OrC8K5H2GaEOQpIWEGfU0A77u6icbZ8VPywf22dCvDv9RGAzm1Z/Daa0NU+0ZG 7uDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321536; x=1745926336; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OdGiljQFkRF0Dbr2acCgX0s9x3K0UlpkYw5viR3VBTU=; b=kXPdB32cPyWNBPxcxWqMIxB5qhXIZtkBOfulW8bXyHiSAjaCrcDV/HguTFrqZPjBpp LiH+VL0pKKtJFx8i+uC3uGkFiLs1kTcWcrrDClq3KAU6de+Sxy7Fxk7WM7MztOTjpORr yye4JPGiCgxtxlFiEvKnYg2gs5xIwzbxeo+Fgt9gkfW1ryrNUQFyMdi3h9bf9M/AzOVm Z1q7/VjKutAdFssz2r/X9iJmhdZDK0QqUjkw++9OMI0/ZXMoPgVM7Et008oyecJ4WbOI klMRHJbb3btCcOTYeqpvXUOBSWxPaobOenwxO7DKj2I/gQMj6ftW7vqtngtQBz/tqNjY wNIg== X-Forwarded-Encrypted: i=1; AJvYcCVPsbu+2at3kqUB3MBoPscMoh2wOyvRA2oEbGF3yiY7QZia9EfvFRRQ/awvnQ8vRsGMd/3owMOh6/oBfKbp@vger.kernel.org X-Gm-Message-State: AOJu0Yw4OadZw/XlyHJOBjY5AobqBZAHpqFt46/KroGn4+pruZZ+4RRz GbPiQeBvN+YkEKOJiYJzfZDzJKoVt+gWo0PxoDbQqkjpIJRaBdN1AfzKc4RsNQM= X-Gm-Gg: ASbGnctOOT6QZtUnvOop3RdHX0RwL0w8DTKvbL1Usn14SLUbavUgJmJ7t57G5t/A0yG YaaLgbR8oUOugVnZ2EIzxGVchaSNkVB/XH3mBemQGTS84B6S7R8CaPOvn2ruJn4OPnTacnQ33uf iwVwhcZfmrXqHsVqU1p5zv4glK4TKIQYgVZ7hgqHS5abORY2nZaJKuZaZhxatf53uGf0zeMAGfq VmrRxUw/XOmdGSpo4mmqFlgi/olBObyQnNkZLnTb2ysW5HydUX4juiXHYDMvp+jThSDpPKQRwQc gWA9dRZJYuIonEYZVQijxn8q6F6ToHC3OswnCPh6P7tHp+84VEUb X-Google-Smtp-Source: AGHT+IG0T8nDsUkbBz1LgLUHc4nOz1k/hW6xtvig54WUQh6HRN014aiXPO5h8JbbZcarpvLjXHIJ/g== X-Received: by 2002:a05:6000:4012:b0:390:f9d0:5e3 with SMTP id ffacd0b85a97d-39efba37dbfmr12326916f8f.1.1745321535721; Tue, 22 Apr 2025 04:32:15 -0700 (PDT) Received: from eugen-station.. ([2a02:2f0a:131e:0:1820:da87:73b1:d80c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39efa49312fsm14907887f8f.70.2025.04.22.04.32.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:15 -0700 (PDT) From: Eugen Hristev To: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, andersson@kernel.org Cc: linux-doc@vger.kernel.org, corbet@lwn.net, tglx@linutronix.de, mingo@redhat.com, rostedt@goodmis.org, john.ogness@linutronix.de, senozhatsky@chromium.org, pmladek@suse.com, peterz@infradead.org, mojha@qti.qualcomm.com, linux-arm-kernel@lists.infradead.org, vincent.guittot@linaro.org, konradybcio@kernel.org, dietmar.eggemann@arm.com, juri.lelli@redhat.com, eugen.hristev@linaro.org Subject: [RFC][PATCH 04/14] soc: qcom: smem: add minidump device Date: Tue, 22 Apr 2025 14:31:46 +0300 Message-ID: <20250422113156.575971-5-eugen.hristev@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250422113156.575971-1-eugen.hristev@linaro.org> References: <20250422113156.575971-1-eugen.hristev@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Add a minidump platform device. Signed-off-by: Eugen Hristev --- drivers/soc/qcom/smem.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/soc/qcom/smem.c b/drivers/soc/qcom/smem.c index 592819701809..985147b563f8 100644 --- a/drivers/soc/qcom/smem.c +++ b/drivers/soc/qcom/smem.c @@ -270,6 +270,7 @@ struct smem_region { * @partitions: list of partitions of current processor/host * @item_count: max accepted item number * @socinfo: platform device pointer + * @mdinfo: minidump device pointer * @num_regions: number of @regions * @regions: list of the memory regions defining the shared memory */ @@ -280,6 +281,7 @@ struct qcom_smem { u32 item_count; struct platform_device *socinfo; + struct platform_device *mdinfo; struct smem_ptable *ptable; struct smem_partition global_partition; struct smem_partition partitions[SMEM_HOST_COUNT]; @@ -1236,12 +1238,20 @@ static int qcom_smem_probe(struct platform_device *pdev) if (IS_ERR(smem->socinfo)) dev_dbg(&pdev->dev, "failed to register socinfo device\n"); + smem->mdinfo = platform_device_register_data(&pdev->dev, "qcom-md", + PLATFORM_DEVID_AUTO, NULL, + 0); + if (IS_ERR(smem->mdinfo)) + dev_err(&pdev->dev, "failed to register platform md device\n"); + return 0; } static void qcom_smem_remove(struct platform_device *pdev) { platform_device_unregister(__smem->socinfo); + if (!IS_ERR(__smem->mdinfo)) + platform_device_unregister(__smem->mdinfo); hwspin_lock_free(__smem->hwlock); __smem = NULL; From patchwork Tue Apr 22 11:31:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugen Hristev X-Patchwork-Id: 883205 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D790427CCE6 for ; Tue, 22 Apr 2025 11:32:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321543; cv=none; b=E8IKAerzIIwO3CQ2I4slzxSHpETB/6tFq5y+slUESySDnOcaj491EZdABTgmpbqxoK8NJ4Bp7jCOGUBA8PhsK5YZCYPtHfevvHj7UJXsdqv6AldakB0mJetc98u8BmudJ24txSmS/Kz+0AwDuVOhpNEFdMD0upPxW45pU7zoM3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321543; c=relaxed/simple; bh=HudZRsiLgZVjTqUtaHw4OpgjFsS0qdRoQeHRlSVb9is=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qTqF/AxYnQrLv+vCI3yCW20hv/yCM13AVWhL7yBMrexbGyAFqxfFFxm03L7jPITWNcS4ASeI+mkr7ixpd7X/ngTEDBlXI/cKL1S739lBE/Yym/ZtH1NuB9Th05tz5ARvUnz5Y9OAILTGkvk29t/T+Rt8ChSXmZyR/469vZfFtuA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=KQ6hDzDC; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="KQ6hDzDC" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-3913b539aabso3028146f8f.2 for ; Tue, 22 Apr 2025 04:32:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321539; x=1745926339; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2JePmWDemaaU5/98Dg7tD07BeND+UgHEMeNRUmp9DPI=; b=KQ6hDzDCJPV2SI4KlvaADMSQ9/lEaPNkSRFK1qRayd7eYwfQPyxYG4/G4VWMZ8xtpH AbeDQBKykjpKp2XVdjKUZ0Iwq3hmSHJCVL1efbcrOaJAyW6JKYaM6LTyGPOsZTMVKrLs yT9uaImwlCrAt075sM5a9iudY/ChkrLS7JzBZLUXvyVgYlJvTJ5gdb5LlfV/v9tM1kBh 9ZlskRhYNjh/E2THPWuuEdDQudace6sEfmqJ2SALyImn07IddjHb4PPf+1O6a8qji0OB 284+/FIplmkU8XwIgZEMyFbRxnaANJ3IrV3jfJyxxJsmacJMa5ggeTQcGaC3SPHHyqNp Ox9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321539; x=1745926339; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2JePmWDemaaU5/98Dg7tD07BeND+UgHEMeNRUmp9DPI=; b=SLK0HKTC+Rw2X/rXghRvac0naW4ZCe50oQvUm6ZXpmtUdDtccq4YwNRVRUGBTE5dep snQwcAHpBQrz+UWGXqRNRYx1YQJ9trQhChSHNJxlnNOVQwQgOLXTi2YqOBZMKVJHJ+JJ RzUx6ggGFkmDi9ig4EsOvxNgryCaMG+9m+j5H8Q7hasajdErg8J7X9m39gjmlrBAEFL9 MYfE+09YtiGG37g79vECK+ZfiFfRPVFBGk3w8GK15oxRbobwGhmDGt+tyh/A4GMn6+Cg 43SOJlqoaz3KakKr8EU8Nz9Z/l4tRfAdsYXMhtwGWovQHZwiL8xBPmgGISvr3R8HxYA9 0pKg== X-Forwarded-Encrypted: i=1; AJvYcCVakkL41CkO7OhA289tgf47D5w4bJZ1Y/bv0AOoOrqoWoK873ariFW+LaQ2URjcRPySt5Cd4a7dOHooJ499@vger.kernel.org X-Gm-Message-State: AOJu0YwHTexrMk3k/O7/3UPjy+K23eFsF6SpwXJxg1e3jYWPwWZKVicz IpJKHg5lMOyj9UUI6ZPATUCa9R0R/UrLlOpYl+oSmXGVWkPdXLIuBDswiE/eAzg= X-Gm-Gg: ASbGncuhgRasKUoU33eFzojNuT4FBcCtVJ/UXgfhjyAbFvsg8RcxZGbaGFDjcczK62W e/GoWiHjhj3KPMwkQk56xn7qj89YIivRh1dpnWVYpO4HM5YlUd2zZVChzGe+x485iVVM2OKzkKK j1mLFjAmCcov/yGqfTSFBbSbD+qlSuwXVxtsobF8E5WmV10V6RuuYk7XUo70M2n7GJA7QtwMCJJ zsE3pfVZKYTn4aHdPiheMyLMeH/ufxoaoJWbnKU1YjxW1o0/pjt1LOtF8n3HA20vNzFfRojZgeF L2T3UhXegOkKYZ4wuKBIEFGlUcyOaC2DkeyjGu76lW0AEFgLMO/A X-Google-Smtp-Source: AGHT+IGVKtM5eljGkCrzTpD2ovzaQ8f+au6jsqSHcIImWj4PNZP1imBC1ZW1MG0yi5By14S+t9g+3w== X-Received: by 2002:a05:6000:228a:b0:39d:6f2b:e74d with SMTP id ffacd0b85a97d-39efbae02a8mr13054124f8f.39.1745321538982; Tue, 22 Apr 2025 04:32:18 -0700 (PDT) Received: from eugen-station.. ([2a02:2f0a:131e:0:1820:da87:73b1:d80c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39efa49312fsm14907887f8f.70.2025.04.22.04.32.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:18 -0700 (PDT) From: Eugen Hristev To: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, andersson@kernel.org Cc: linux-doc@vger.kernel.org, corbet@lwn.net, tglx@linutronix.de, mingo@redhat.com, rostedt@goodmis.org, john.ogness@linutronix.de, senozhatsky@chromium.org, pmladek@suse.com, peterz@infradead.org, mojha@qti.qualcomm.com, linux-arm-kernel@lists.infradead.org, vincent.guittot@linaro.org, konradybcio@kernel.org, dietmar.eggemann@arm.com, juri.lelli@redhat.com, eugen.hristev@linaro.org, Mukesh Ojha Subject: [RFC][PATCH 06/14] kmemdump: add coreimage ELF layer Date: Tue, 22 Apr 2025 14:31:48 +0300 Message-ID: <20250422113156.575971-7-eugen.hristev@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250422113156.575971-1-eugen.hristev@linaro.org> References: <20250422113156.575971-1-eugen.hristev@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Implement kmemdumping into an ELF coreimage. Signed-off-by: Eugen Hristev Co-developed-by: Mukesh Ojha Signed-off-by: Mukesh Ojha --- drivers/debug/Kconfig | 10 + drivers/debug/Makefile | 1 + drivers/debug/kmemdump.c | 12 ++ drivers/debug/kmemdump_coreimage.c | 285 +++++++++++++++++++++++++++++ include/linux/kmemdump.h | 25 +++ 5 files changed, 333 insertions(+) create mode 100644 drivers/debug/kmemdump_coreimage.c diff --git a/drivers/debug/Kconfig b/drivers/debug/Kconfig index 72a906487e02..cd73f299e5cd 100644 --- a/drivers/debug/Kconfig +++ b/drivers/debug/Kconfig @@ -14,6 +14,16 @@ config DRIVER_KMEMDUMP Note that modules using this feature must be rebuilt if option changes. +config DRIVER_KMEMDUMP_COREIMAGE + depends on DRIVER_KMEMDUMP + bool "Assemble memory regions into a coredump readable with debuggers" + help + Enabling this will assemble all the memory regions into a + core ELF file. The first region will include program headers for + all the regions, together with vmcoreinfo and specific coredump + structures. The coredump file can then be loaded into GDB or crash + tool and further inspected. + config QCOM_MD_KMEMDUMP_BACKEND tristate "Qualcomm Minidump kmemdump backend driver" depends on ARCH_QCOM || COMPILE_TEST diff --git a/drivers/debug/Makefile b/drivers/debug/Makefile index d8a9db29cd15..95ecc315b376 100644 --- a/drivers/debug/Makefile +++ b/drivers/debug/Makefile @@ -1,4 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_DRIVER_KMEMDUMP) += kmemdump.o +obj-$(CONFIG_DRIVER_KMEMDUMP_COREIMAGE) += kmemdump_coreimage.o obj-$(CONFIG_QCOM_MD_KMEMDUMP_BACKEND) += qcom_md.o diff --git a/drivers/debug/kmemdump.c b/drivers/debug/kmemdump.c index a685c0863e25..be96b39a136a 100644 --- a/drivers/debug/kmemdump.c +++ b/drivers/debug/kmemdump.c @@ -58,6 +58,7 @@ int kmemdump_register(char *handle, void *zone, size_t size) return ret; } z->registered = true; + update_elfheader(z); } mutex_unlock(&kmemdump_lock); @@ -84,6 +85,7 @@ void kmemdump_unregister(int id) if (z->registered && backend) backend->unregister_region(z->id); + clear_elfheader(z); idr_remove(&kmemdump_idr, id); kfree(z); @@ -103,6 +105,7 @@ static int kmemdump_register_fn(int id, void *p, void *data) if (ret) return ret; z->registered = true; + update_elfheader(z); return 0; } @@ -130,6 +133,14 @@ int kmemdump_register_backend(struct kmemdump_backend *be) pr_info("kmemdump backend %s registered successfully.\n", backend->name); + init_elfheader(backend); + + mutex_unlock(&kmemdump_lock); + + register_coreinfo(); + + mutex_lock(&kmemdump_lock); + /* Try to call the backend for all previously requested zones */ idr_for_each(&kmemdump_idr, kmemdump_register_fn, NULL); @@ -151,6 +162,7 @@ static int kmemdump_unregister_fn(int id, void *p, void *data) if (ret) return ret; z->registered = false; + clear_elfheader(z); return 0; } diff --git a/drivers/debug/kmemdump_coreimage.c b/drivers/debug/kmemdump_coreimage.c new file mode 100644 index 000000000000..59630adf5dd2 --- /dev/null +++ b/drivers/debug/kmemdump_coreimage.c @@ -0,0 +1,285 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include +#include +#include +#include +#include +#include + +#define CORE_STR "CORE" +#define KMEMDUMP_ELF_ID 0 + +#define MAX_NUM_ENTRIES 201 + +/** + * struct kmemdump_elfhdr - Kmemdump table elf header + * @ehdr: elf main header + * @phdr: Program header + * @elf_offset: Section offset in elf + */ +struct kmemdump_elfhdr { + struct elfhdr *ehdr; + struct elf_phdr *phdr; + size_t elf_offset; +} elf; + +extern char kernel_config_data; + +/** + * register_coreinfo() - Register vital kernel information into the coreimage + * + * Return: None + */ +void register_coreinfo(void) +{ + /* + * Right before kernel_config_data there is a marker string, + * capture it as well. + * Debug tools don't care about config size, they just try 64K and + * if it's not enough, double it. + */ + kmemdump_register("config", (void *)&kernel_config_data - 8, + 128 * 1024); + kmemdump_register("utsn", (void *)&init_uts_ns, + sizeof(init_uts_ns)); + kmemdump_register("banner", (void *)&linux_banner, + strlen(linux_banner)); + kmemdump_register("percpu", (void *)&__per_cpu_offset, + sizeof(__per_cpu_offset)); + kmemdump_register("init_mm", (void *)&init_mm, + sizeof(init_mm)); + kmemdump_register("mmpgd", (void *)init_mm.pgd, + sizeof(*init_mm.pgd)); + kmemdump_register("highmem", (void *)&high_memory, + sizeof(&high_memory)); + kmemdump_register("memsect", (void *)*mem_section, + sizeof(struct mem_section) * NR_SECTION_ROOTS); + kmemdump_register("memsect", (void *)&mem_section, + sizeof(&mem_section)); + kmemdump_register("totalram", (void *)&_totalram_pages, + sizeof(_totalram_pages)); + kmemdump_register("node_states", (void *)&node_states, + sizeof(node_states)); + kmemdump_register("nr_threads", (void *)&nr_threads, + sizeof(nr_threads)); + kmemdump_register("cpu_po", (void *)cpu_possible_mask, + sizeof(cpumask_t)); + kmemdump_register("cpu_pr", (void *)cpu_present_mask, + sizeof(cpumask_t)); + kmemdump_register("cpu_on", (void *)cpu_online_mask, + sizeof(cpumask_t)); + kmemdump_register("jiffies", (void *)&jiffies_64, + sizeof(jiffies_64)); +} + +static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx) +{ + struct elf_phdr *ephdr = (struct elf_phdr *)((size_t)ehdr + ehdr->e_phoff); + + return &ephdr[idx]; +} + +/** + * clear_elfheader() - Remove the program header for a specific memory zone + * @z: pointer to the kmemdump zone + * + * Return: On success, it returns 0, errno otherwise + */ +int clear_elfheader(const struct kmemdump_zone *z) +{ + struct elfhdr *ehdr = elf.ehdr; + struct elf_phdr *phdr; + struct elf_phdr *tmp_phdr; + unsigned int phidx; + unsigned int i; + + for (i = 0; i < ehdr->e_phnum; i++) { + phdr = elf_phdr_entry_addr(ehdr, i); + if (phdr->p_paddr == virt_to_phys(z->zone) && + phdr->p_memsz == ALIGN(z->size, 4)) + break; + } + + if (i == ehdr->e_phnum) { + pr_err("Cannot find program header entry in elf\n"); + return -EINVAL; + } + + phidx = i; + + /* Clear program header */ + tmp_phdr = elf_phdr_entry_addr(ehdr, phidx); + for (i = phidx; i < ehdr->e_phnum - 1; i++) { + tmp_phdr = elf_phdr_entry_addr(ehdr, i + 1); + phdr = elf_phdr_entry_addr(ehdr, i); + memcpy(phdr, tmp_phdr, sizeof(*phdr)); + phdr->p_offset = phdr->p_offset - ALIGN(z->size, 4); + } + memset(tmp_phdr, 0, sizeof(*tmp_phdr)); + ehdr->e_phnum--; + + elf.elf_offset -= ALIGN(z->size, 4); + + return 0; +} + +/** + * update_elfheader() - Add the program header for a specific memory zone + * @z: pointer to the kmemdump zone + * + * Return: None + */ +void update_elfheader(const struct kmemdump_zone *z) +{ + struct elfhdr *ehdr = elf.ehdr; + struct elf_phdr *phdr; + + phdr = elf_phdr_entry_addr(ehdr, ehdr->e_phnum++); + + phdr->p_type = PT_LOAD; + phdr->p_offset = elf.elf_offset; + phdr->p_vaddr = (elf_addr_t)z->zone; + phdr->p_paddr = (elf_addr_t)virt_to_phys(z->zone); + phdr->p_filesz = phdr->p_memsz = ALIGN(z->size, 4); + phdr->p_flags = PF_R | PF_W; + + elf.elf_offset += ALIGN(z->size, 4); +} + +static void append_kcore_note(char *notes, size_t *i, const char *name, + unsigned int type, const void *desc, + size_t descsz) +{ + struct elf_note *note = (struct elf_note *)¬es[*i]; + + note->n_namesz = strlen(name) + 1; + note->n_descsz = descsz; + note->n_type = type; + *i += sizeof(*note); + memcpy(¬es[*i], name, note->n_namesz); + *i = ALIGN(*i + note->n_namesz, 4); + memcpy(¬es[*i], desc, descsz); + *i = ALIGN(*i + descsz, 4); +} + +static void append_kcore_note_nodesc(char *notes, size_t *i, const char *name, + unsigned int type, size_t descsz) +{ + struct elf_note *note = (struct elf_note *)¬es[*i]; + + note->n_namesz = strlen(name) + 1; + note->n_descsz = descsz; + note->n_type = type; + *i += sizeof(*note); + memcpy(¬es[*i], name, note->n_namesz); + *i = ALIGN(*i + note->n_namesz, 4); +} + +/** + * init_elfheader() - Prepare coreinfo elf header + * This function prepares the elf header for the coredump image. + * Initially there is a single program header for the elf NOTE. + * The note contains the usual core dump information, and the + * vmcoreinfo. + * @z: pointer to the kmemdump zone + * + * Return: 0 on success, errno otherwise + */ +int init_elfheader(struct kmemdump_backend *be) +{ + struct elfhdr *ehdr; + struct elf_phdr *phdr; + void *notes; + unsigned int elfh_size; + unsigned int phdr_off; + size_t note_len, i = 0; + + struct elf_prstatus prstatus = {}; + struct elf_prpsinfo prpsinfo = { + .pr_sname = 'R', + .pr_fname = "vmlinux", + }; + + /* + * Header buffer contains: + * ELF header, Note entry with PR status, PR ps info, and vmcoreinfo + * MAX_NUM_ENTRIES Program headers, + */ + elfh_size = sizeof(*ehdr); + elfh_size += sizeof(struct elf_prstatus); + elfh_size += sizeof(struct elf_prpsinfo); + elfh_size += sizeof(VMCOREINFO_NOTE_NAME); + elfh_size += ALIGN(vmcoreinfo_size, 4); + elfh_size += (sizeof(*phdr)) * (MAX_NUM_ENTRIES); + + elfh_size = ALIGN(elfh_size, 4); + + elf.ehdr = kzalloc(elfh_size, GFP_KERNEL); + if (!elf.ehdr) + return -ENOMEM; + + ehdr = elf.ehdr; + /* Assign Program headers offset, it's right after the elf header. */ + elf.phdr = phdr = (struct elf_phdr *)(ehdr + 1); + phdr_off = sizeof(*ehdr); + + memcpy(ehdr->e_ident, ELFMAG, SELFMAG); + ehdr->e_ident[EI_CLASS] = ELF_CLASS; + ehdr->e_ident[EI_DATA] = ELF_DATA; + ehdr->e_ident[EI_VERSION] = EV_CURRENT; + ehdr->e_ident[EI_OSABI] = ELF_OSABI; + ehdr->e_type = ET_CORE; + ehdr->e_machine = ELF_ARCH; + ehdr->e_version = EV_CURRENT; + ehdr->e_ehsize = sizeof(*ehdr); + ehdr->e_phentsize = sizeof(*phdr); + + elf.elf_offset = elfh_size; + + notes = (void *)(((char *)elf.ehdr) + elf.elf_offset); + + /* we have a single program header now */ + ehdr->e_phnum = 1; + + /* Length of the note is made of : + * 3 elf notes structs (prstatus, prpsinfo, vmcoreinfo) + * 3 notes names (2 core strings, 1 vmcoreinfo name) + * sizeof each note + */ + note_len = (3 * sizeof(struct elf_note) + + 2 * ALIGN(sizeof(CORE_STR), 4) + + VMCOREINFO_NOTE_NAME_BYTES + + ALIGN(sizeof(struct elf_prstatus), 4) + + ALIGN(sizeof(struct elf_prpsinfo), 4) + + ALIGN(vmcoreinfo_size, 4)); + + phdr->p_type = PT_NOTE; + phdr->p_offset = elf.elf_offset; + phdr->p_filesz = note_len; + + /* advance elf offset */ + elf.elf_offset += note_len; + + strscpy(prpsinfo.pr_psargs, saved_command_line, + sizeof(prpsinfo.pr_psargs)); + + append_kcore_note(notes, &i, CORE_STR, NT_PRSTATUS, &prstatus, + sizeof(prstatus)); + append_kcore_note(notes, &i, CORE_STR, NT_PRPSINFO, &prpsinfo, + sizeof(prpsinfo)); + append_kcore_note_nodesc(notes, &i, VMCOREINFO_NOTE_NAME, 0, + ALIGN(vmcoreinfo_size, 4)); + + ehdr->e_phoff = phdr_off; + + /* This is the first kmemdump region, the ELF header */ + be->register_region(KMEMDUMP_ELF_ID, "ELF", elf.ehdr, + elfh_size + note_len - ALIGN(vmcoreinfo_size, 4)); + + /* The second region is the vmcoreinfo, which goes right after */ + be->register_region(KMEMDUMP_ELF_ID, "vmcoreinfo", vmcoreinfo_data, + ALIGN(vmcoreinfo_size, 4)); + + return 0; +} diff --git a/include/linux/kmemdump.h b/include/linux/kmemdump.h index b55b15c295ac..13aabd72d17a 100644 --- a/include/linux/kmemdump.h +++ b/include/linux/kmemdump.h @@ -49,4 +49,29 @@ static inline void kmemdump_unregister(int id) int kmemdump_register_backend(struct kmemdump_backend *backend); void kmemdump_unregister_backend(struct kmemdump_backend *backend); + +#ifdef CONFIG_DRIVER_KMEMDUMP_COREIMAGE +int init_elfheader(struct kmemdump_backend *be); +void update_elfheader(const struct kmemdump_zone *z); +int clear_elfheader(const struct kmemdump_zone *z); +void register_coreinfo(void); +#else +static inline int init_elfheader(struct kmemdump_backend *be) +{ + return 0; +} + +static inline void update_elfheader(const struct kmemdump_zone *z) +{ +} + +static inline int clear_elfheader(const struct kmemdump_zone *z) +{ + return 0; +} + +static inline void register_coreinfo(void) +{ +} +#endif #endif From patchwork Tue Apr 22 11:31:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugen Hristev X-Patchwork-Id: 883204 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3A3127CCE6 for ; Tue, 22 Apr 2025 11:32:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321545; cv=none; b=lAUBDF6Dime0eQnFZbh6oDvZhembaRW49VPEGtPCEPo0NPpgLQhaOGw0qejxnIPxpYMfzTK79mzTYsk2hViCRdSBE2tIitn4x2vEAVK5QCzwpA7pbBdt+7TOntBt+5BznFawowBzaiqpe+GWmlGq8DQRD01OlCfJI8whWjaVHVc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321545; c=relaxed/simple; bh=wGYGREPgrxi6WuzAXr5LbOApUa1Ex4cOowBsxUMIXVk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EFUq8PfGRXnuzF2PBjqF6iIScpxpJmZUbFyVP2jP4ZGm9WC0UW1SpEbt4ugW3dpXsEtQ4FsZlFOQCme3Dvt33ZbwIdypYAwRczJt/uONrMzNO2/rO2kH2pVu5OOxzU2xo25sKGk2+tX7SfxMUrMNDD2Xnce1NkOaDbt8tzOLfTo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=IamtvFXD; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="IamtvFXD" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-43edb40f357so37460615e9.0 for ; Tue, 22 Apr 2025 04:32:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321542; x=1745926342; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0DfqYDfj9raOo/s9JE1ASnrO01HBkLknRT/HL1x4c2o=; b=IamtvFXD+wdFthUWDRSiliOjHGYC9PqLspv1fhcZRRAKqJK0k8LBjTQFzAphR+ACBz ghvZ/VMaWs860Quxp9rJ788LLoTyCZPufq1d8GnnTjt12rkB4IVKOTtxCZjObU3BBHM6 XsuW013G09Tcmtd+nLAEgApcDnr9QyYV0DvQKZhL5eSjS+g5iEwbwI3d9mqOPVgED3aj o4BoGoilravyQDy4tE6TWWwXdOPgiks6LajKBypxz8kPxZAA+w7NMJd5lRwuYdsjShgS 4Ue+cf+8Ye3nrnBzfICjvxz1gdJ5u5Z7yU6xb5+tP952NzBlgWDihigpbaeVUjizQuWu 0KAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321542; x=1745926342; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0DfqYDfj9raOo/s9JE1ASnrO01HBkLknRT/HL1x4c2o=; b=A60UC9mifpCeMyrT1xoGmWYoSziCL0dDn3hBKVxYc/0LlqRSF01HesWigwUqGoiHSb 1dui6s1gjGNPtsvqD3VtzItk2mJg1+K3djTEhAT8QZURMb2wVTJtzBLWgn2navoGmffj BcZvMz4xIftfdoPViocz/SFebyyJeELvQ66sl/xRlGG9WHOOs61I/uMP5sF2brBW5Gk2 35sNqqtx9zEladVSuqFMW9XHOxECz8HUm0zUFntVO/99iojiV5Rlx/XmlXQ4GLsWXktc vrbJLZNzl2MEc5+L5Ctkconk6hPtZW8VF9VslbKzikRysfHEinW67YMXPs8WaxTnpkjp sZYg== X-Forwarded-Encrypted: i=1; AJvYcCXkFSxOvKLI1Eg62bD80hBWNcbx4TGmVb9LvQYit3AJ8BNTgq1YObKmDlmdxxw6HUyLTqhnhoInCDcWbrw/@vger.kernel.org X-Gm-Message-State: AOJu0Yy+UuBNPqmfU4s0tCQYX7D2NsBAedpXGzp90rCxylIcQDPU/3Gz aJ45fetv2urAlYZ2AO8HMQYMqMYaFh8m9oI5l6HJGNNK9/Cppldl0EdONu8pSJA= X-Gm-Gg: ASbGncsV5soWxSSuSiN7te5kIk/4XgWlwhuGT8U/2rvwXfvwvN+bp/XJ5ATAqIpvHbQ XrzksSIdrqJLEEHfbatDr2Taw2VmsYrcbQ/bTr7dmEjjSnoznbDgIc1ihPuPYlgoGWEfWyHAX+u YI6TEHjMSYyYZfDuFoRR+xz61HhzTe5AfavM1EfXbvS1FUCzVE7NkK+FlsqJ/ozF5wD4oKBQp9U 9UCRdyci31lXfolRJQPUjUCCLbHjEaGrRybv8Ha3wJhBDXUGdK99L27DYmk34DfoNprPayfZTw2 Z60k88r3DYwBHYqw4zWtDW7BfYN8NWyAdw1Xev2xuloqulflu//K X-Google-Smtp-Source: AGHT+IHQ0JeqIGFr8hzfLBxr8juIP8XPWd5UgKDKwG2qIdIH6DudpvZkIFykrGXg9swWfTEAHGdAgw== X-Received: by 2002:a05:600c:1c8f:b0:43d:fa58:700e with SMTP id 5b1f17b1804b1-4406ac21897mr105942885e9.33.1745321542268; Tue, 22 Apr 2025 04:32:22 -0700 (PDT) Received: from eugen-station.. ([2a02:2f0a:131e:0:1820:da87:73b1:d80c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39efa49312fsm14907887f8f.70.2025.04.22.04.32.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:21 -0700 (PDT) From: Eugen Hristev To: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, andersson@kernel.org Cc: linux-doc@vger.kernel.org, corbet@lwn.net, tglx@linutronix.de, mingo@redhat.com, rostedt@goodmis.org, john.ogness@linutronix.de, senozhatsky@chromium.org, pmladek@suse.com, peterz@infradead.org, mojha@qti.qualcomm.com, linux-arm-kernel@lists.infradead.org, vincent.guittot@linaro.org, konradybcio@kernel.org, dietmar.eggemann@arm.com, juri.lelli@redhat.com, eugen.hristev@linaro.org Subject: [RFC][PATCH 08/14] kmemdump: coreimage: add kmsg registration Date: Tue, 22 Apr 2025 14:31:50 +0300 Message-ID: <20250422113156.575971-9-eugen.hristev@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250422113156.575971-1-eugen.hristev@linaro.org> References: <20250422113156.575971-1-eugen.hristev@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Register log buffer into kmemdump coreimage Signed-off-by: Eugen Hristev --- drivers/debug/kmemdump_coreimage.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/debug/kmemdump_coreimage.c b/drivers/debug/kmemdump_coreimage.c index 59630adf5dd2..077b65cae4cb 100644 --- a/drivers/debug/kmemdump_coreimage.c +++ b/drivers/debug/kmemdump_coreimage.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -71,6 +72,8 @@ void register_coreinfo(void) sizeof(cpumask_t)); kmemdump_register("jiffies", (void *)&jiffies_64, sizeof(jiffies_64)); + + kmsg_kmemdump_register(); } static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx) From patchwork Tue Apr 22 11:31:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugen Hristev X-Patchwork-Id: 883203 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0053227F4CE for ; Tue, 22 Apr 2025 11:32:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321548; cv=none; b=gLQWWLVYr1Ug2cMQSGcnlqZyopD6z1PROg4gl87Q3dtbYRX+fefBHMMqg/3KlVS9bqtXYHjpnfaxBZqifHzQsHn2BUieiPXpe847YYz1f8oS/smf903ec7Lr1KxTudROsmAfDAoGCKVk/tF0+BdDbM6C+/cYIxEkpOOP7tb5v1g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321548; c=relaxed/simple; bh=nz/fuTVSmlRp4LlYNxLUGp/0GbnwwjWJRrmA/wS6Qkw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OwqewP4VcFLSvwL62eXQ1GsmJPl87jI6AHyuavTk+LU4yczwMb6KlsM3XFV8Zk5CAiC3CW8pcljprtJg0ahEVO7irrBDC+JGun/rULNKGoInMScbltb94fRkNrPTdp9ABF6++VVTFH9t7BGz/XLEtkpmElj2tp92s7RsVgV/dCE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=quvFyP4o; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="quvFyP4o" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-43d0359b1fcso32411295e9.0 for ; Tue, 22 Apr 2025 04:32:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321545; x=1745926345; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=64ebY0cPXav0ihOCjI5v6o2sTgtjyxjpauAoewNWoww=; b=quvFyP4oblm1iehPppf3p12pziVnJlKC+FL6aV7tOQfvnu+iC3LG2rC8Sat51qHagp r3yvY1hRZm797Ccy1jHqHJiIv7CIFUCBvDRE3/J4aVoxwSPdLibDd4m/h4IZp/KHBxZL D/pFtkzdYtZlvtoQ7gtWN+6a8nMMmAD3LnyAfbr6uEn5bIPpRW0eV3WkvpwqCuZlq1BF NXhorWp+z4AyxABmWVzztaZP+zb+HHruI39hVTpTLRadeW2TQVFn9TWHBZBsoDj33xc6 DgXyaxgArUvOc/C5BZ5ROAoGR+StTxHy8P8XXXPmWSHJUyQVedyROrdFb/tbbrceRNHY /3aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321545; x=1745926345; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=64ebY0cPXav0ihOCjI5v6o2sTgtjyxjpauAoewNWoww=; b=rIiKyi9GaByfTB30CAqnptQepMvkdt9n0qfL2IiOq7sfasd7LYZqnSvH7rhaqWd+5C beWmiLfXluIAw2jtd/lC11R8mV90F3LNnJ6Mc0VbPr4rIsBVfp82oXv+37hiIhb6Smno pdof9P1xNCviDHfMt8A+Y1Xw4X+bCmOlg5wFPhoWCG/WFYTwPSSTsrJt4rnijNVc8FJm /S80PBfPHOv1H0TBoeazd2ljH8Qg/bvdkyZnAWhNWB3POrkZb6okScJY4Hm0c16m/DGj ZfpG2PwE1zh4HWx7+AbtkigpmTcM7ZE7LhFpOWERWkj8pmRUfrRW39B9Kw8uUpTJTcHD I6WQ== X-Forwarded-Encrypted: i=1; AJvYcCWttspUkiykIAHBxID9NRMlwyGP5ej5RdORjIE3t0kG5TeZodlopkEbEmVOthH0Pfh+Yi0rEYFAurpKo9OF@vger.kernel.org X-Gm-Message-State: AOJu0YwKJ0EQsty7zGWk2Un43vIS4DuoommkibnBxiPvpZU574xYoKFg DaD3m839ZssojBGPPNuvciWOlOpa1A+EVgQWDKklODhbiIj9am7KMTKdTnmPxnpX9c/iwzXL/sG v X-Gm-Gg: ASbGnct3QVXhrRS8+ExMS9igywdmRf/wLwBRDQFcABToMd9HjtC7bplUxTxqFY2mPPU TzDXPOahR9zdSLWXHzAB7ajT3fGyAP35NRNpGDinvZiPf+3DRUIdXuvNlPU/qxEXxB7yc6EpEV9 Q7P+NpEvgjr3isWZueecCFgD9WOA9WT5DiZgLI9zGXRPcZr6CGrTP7wiEGUz0dEpd2Vpa7+jNiB w2o1skTC6QXdeR8HXlgHL9Ng1thINIffDpqHkUk2xWiH3U4SrYaQq2tHAomEIRxi8rAwLr8X3Nb xQjXChB78tWPgaTLeHbbYmckDqD9xcEkf4O5E1zhEKUU4JAaLPrg X-Google-Smtp-Source: AGHT+IEyDv+QP1EWTmSMHRE/uIeHGYYUBcOw1Q2Wl1sMO2LldMVdHnU9NCNTqj9cN7+ATDWFNxMd8Q== X-Received: by 2002:a05:600c:4c96:b0:43d:fa5f:7d04 with SMTP id 5b1f17b1804b1-440697e1215mr95282895e9.16.1745321545291; Tue, 22 Apr 2025 04:32:25 -0700 (PDT) Received: from eugen-station.. ([2a02:2f0a:131e:0:1820:da87:73b1:d80c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39efa49312fsm14907887f8f.70.2025.04.22.04.32.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:24 -0700 (PDT) From: Eugen Hristev To: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, andersson@kernel.org Cc: linux-doc@vger.kernel.org, corbet@lwn.net, tglx@linutronix.de, mingo@redhat.com, rostedt@goodmis.org, john.ogness@linutronix.de, senozhatsky@chromium.org, pmladek@suse.com, peterz@infradead.org, mojha@qti.qualcomm.com, linux-arm-kernel@lists.infradead.org, vincent.guittot@linaro.org, konradybcio@kernel.org, dietmar.eggemann@arm.com, juri.lelli@redhat.com, eugen.hristev@linaro.org Subject: [RFC][PATCH 10/14] kmemdump: coreimage: add irq registration Date: Tue, 22 Apr 2025 14:31:52 +0300 Message-ID: <20250422113156.575971-11-eugen.hristev@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250422113156.575971-1-eugen.hristev@linaro.org> References: <20250422113156.575971-1-eugen.hristev@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Register irq info into kmemdump Signed-off-by: Eugen Hristev --- drivers/debug/kmemdump_coreimage.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/debug/kmemdump_coreimage.c b/drivers/debug/kmemdump_coreimage.c index 077b65cae4cb..2144edcc6157 100644 --- a/drivers/debug/kmemdump_coreimage.c +++ b/drivers/debug/kmemdump_coreimage.c @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -74,6 +75,7 @@ void register_coreinfo(void) sizeof(jiffies_64)); kmsg_kmemdump_register(); + irq_kmemdump_register(); } static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx) From patchwork Tue Apr 22 11:31:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugen Hristev X-Patchwork-Id: 883202 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A537280CCD for ; Tue, 22 Apr 2025 11:32:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321552; cv=none; b=SVB/NYHEtLkpVay7AQBlj2NOXkAkyrZX0Sr4nH2eCDHPS7ZmtOSFXq9bWcvcv9ZB9FFwWOE712/mOt62g6er6RyR2h2NgfYSgymN2l7iauKMh7ypxD5gryC4gjNOtBvk9gkW2i0JohrDj/a2wDk4g/0HDL5sBo59S7/YYBfLmI0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321552; c=relaxed/simple; bh=ZFDuP50cM3MaZ7k24hjB0hKAUp2z1/JdcCExNP+BxkE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h68sK779L4/GvYm3VbtiN/3uAxdz0VOrqdKClPsFpgaWO9I/PFJSv5qBPMYuMjAc2Hsv/K/BdYsfFk5oP2BIVnyKtwG2VuFE2v838k/QN35ExJqvqSFNuoMyDodPnpbXENHAgbKkSe31lK+0OD2ctFVR7rqcFPFGVWCwXZ5roNI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=mlPpLfVC; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="mlPpLfVC" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-39c1ee0fd43so4565350f8f.0 for ; Tue, 22 Apr 2025 04:32:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321548; x=1745926348; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NWRwjTKda8Cr+xTaLfEjNwhn6lD2r3hsck/mBkqRC78=; b=mlPpLfVCiSlJjJ57uNkNvxe1RSlCRtZ3r1wXGH8e8b5QSUtIWkZsm6cruZ9pY+ZenM dBDL6VLPhizQxaqxNMi5rkOVpuizigdsm9YyIKM8adB9tELEz9M2/E2oPZAaaWKTnuXO qmC+QLStMbC2JuCvk6nRiJcXalao3i47qxlH0YIkGj3NnhhVlJsq5tdQj6mH0KPnIJPj dtU7B0dvfYkCrvOVW85SKnFukUBDg4bSqtxN4cwTJp9CGvZp5gAzjK/hPU7dI7WyZnxU d2ry5zadgGRGbZTI+DVHEde/VzbnkvM/La/YDvktVsQszqR1+coYS06wlrSSyPe21htK IWJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321548; x=1745926348; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NWRwjTKda8Cr+xTaLfEjNwhn6lD2r3hsck/mBkqRC78=; b=gS2VDT5asb3o3pACAuzzfNaJarn0g/XaNX6UZGDTsDLw++yE06DqPvZ2l2eQEQV13k 17tSHHG+z668UnMJTNmMCcxGzHV8Dxct80p5TXG/zobkDIpDGBZX9olaF00E7sXSazhv SEBcldNHeYphRSnWFs6LFOkQ05ZyA5Q+mu6PfFmkwE7p8nznJtIih64JF2axTzMJ0a6K JLAzZfl1i/GU7F3ZQ31oTAcqEkhtgmKSbkrOEfJ4+x5+X5lFz3xT0aKktwKv2hCjp3fI z6cRqajgv5Y06PtxVTnQyY+vp3zfVwBEaORRNVa0uhL3izWjz+48xy4Vu2vr3NHzG3T3 bryA== X-Forwarded-Encrypted: i=1; AJvYcCUxUJDlHy4vqNGzHS0Z8Rym8svUN58FaDG1sPlGqLvHiCpLJgO7v0OtK9nVwp1cEa6rUunqTFwSdVUgn9x9@vger.kernel.org X-Gm-Message-State: AOJu0Yyd50KyTYzhbO9VTusbQMnRPV4+/A5O6pAV2S720koKE1y39+S8 VpcBU0lYtswB9H8/0E/nwTSFrxudf5CPOi4vErI3kRb1NwGXtsgTkVHGJFlfZdM= X-Gm-Gg: ASbGncsF27lYKXaiprH4irEuAKLKdEubdxEtUgMVwdBFNO81Fy+i1PqNYkQAdbizDvf LnA4m7RkQSPbPNITz7Hhz7k5KRYGubkqJnmQZC6tm90h0WB20kxsuusm7j/VgIAwqdqcNjHaiZC Gssj5ofoz41fYIzTF8vZuCAQIODSdf2BKyYgEHSWRt5VT6u/91O/8NxSASGC4jcfZgSmKYLHDjs mMfdxazTXzR+43HjH6KnGD36BTpMYqMCSAfCVDgxgAVRGOjgraQeG/jgw+SGhHL0qPQaFln10u5 aIe4ZvaoxTG9//hfjGJqSoZWrsNBbOsOdifwU3Lc+AsO81+LGCpE X-Google-Smtp-Source: AGHT+IEEw44a5vK2IjFWiYA0X0j2siN1vTRb5HOMU7dDGydhv1gxPnFyAxYzd0KC7UUWKC3HvgVANQ== X-Received: by 2002:a05:6000:4304:b0:39d:724f:a8c1 with SMTP id ffacd0b85a97d-39efbb020a9mr11656442f8f.47.1745321548490; Tue, 22 Apr 2025 04:32:28 -0700 (PDT) Received: from eugen-station.. ([2a02:2f0a:131e:0:1820:da87:73b1:d80c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39efa49312fsm14907887f8f.70.2025.04.22.04.32.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:28 -0700 (PDT) From: Eugen Hristev To: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, andersson@kernel.org Cc: linux-doc@vger.kernel.org, corbet@lwn.net, tglx@linutronix.de, mingo@redhat.com, rostedt@goodmis.org, john.ogness@linutronix.de, senozhatsky@chromium.org, pmladek@suse.com, peterz@infradead.org, mojha@qti.qualcomm.com, linux-arm-kernel@lists.infradead.org, vincent.guittot@linaro.org, konradybcio@kernel.org, dietmar.eggemann@arm.com, juri.lelli@redhat.com, eugen.hristev@linaro.org Subject: [RFC][PATCH 12/14] kmemdump: coreimage: add panic registration Date: Tue, 22 Apr 2025 14:31:54 +0300 Message-ID: <20250422113156.575971-13-eugen.hristev@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250422113156.575971-1-eugen.hristev@linaro.org> References: <20250422113156.575971-1-eugen.hristev@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Call panic registration for the core image. Signed-off-by: Eugen Hristev --- drivers/debug/kmemdump_coreimage.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/debug/kmemdump_coreimage.c b/drivers/debug/kmemdump_coreimage.c index 2144edcc6157..7f3b089b5739 100644 --- a/drivers/debug/kmemdump_coreimage.c +++ b/drivers/debug/kmemdump_coreimage.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -76,6 +77,7 @@ void register_coreinfo(void) kmsg_kmemdump_register(); irq_kmemdump_register(); + panic_kmemdump_register(); } static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx) From patchwork Tue Apr 22 11:31:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugen Hristev X-Patchwork-Id: 883201 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 552B5281364 for ; Tue, 22 Apr 2025 11:32:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321555; cv=none; b=bt3m8Fa79c1WMTUZ5jt5KLIjUBVn7yBqRJl0cSUEXbHwyPn4QCEYzfcDpD2uw7KCDyP9Qg/SUih0jq3RTidzFbxIx7Ee4I2EcKWGmUS32q25+QoF2ivsLOPx9aJXDzWrcK/PQ4W2WmsY8YZkXTiWOhwFgj+XQJsz/Plj/eKbpFU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321555; c=relaxed/simple; bh=gQDPkvVC9lqTB+MV6UQ/E8pyhNViS1oHACaHEDpFvWc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=smW96iKRvUkTFBiBaYDCNozayGihd/pUoQFDnPUycU4pGGTrUh6dFRYww0IFdm8xTI1ckkQgYuCPLcu5XpdgiA2vwtHvfUh1ktvLd1O05LjG1G5GewQrSIc8HWE0MMos3bpKxFuEZfWAb5/Idp3hIWVXEfnrJzw6RqDgRCGeIdI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=npo8pfQ/; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="npo8pfQ/" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-43edecbfb46so37409715e9.0 for ; Tue, 22 Apr 2025 04:32:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321552; x=1745926352; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=23OVpoYPLggoCGZU9vcl/htrC1VpcPls14v+en9CHkc=; b=npo8pfQ/zHqEXqoElK8IzGujkMjXdAmaiWGEv/J7NlandjQOd7d5ToEPPENGkVjh6z R1NC9RREg2iHvJ6BlYuQQLTULaGvldmtura/n+IFky0hGqbrjlrIMUo/96iGsHenMYNO 16vM45CRoxVHlM57mT3u+ILTxtoQRIWYAs6vlFzRMDe/cR4ny3haR1HL5XSSsNEcqGI4 zdp43GlzNqmDtijqQ6/nwIm6f+aNjcsrpUJ5lWS9c6nBqqcaV33JDySqUJ3bQQPXCGWN TtIZHW69Q3ZNVSbn5we0Z9rFLQXgk7ETbmXADQ9MkqYfcQXvFmr1MUs9MZSuqXCvkLfd C8pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321552; x=1745926352; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=23OVpoYPLggoCGZU9vcl/htrC1VpcPls14v+en9CHkc=; b=rk9l+so2OQHHPy0J5CNApkwwGHUutqf0WebuYfBlo20VyMsptacNKW8i3y2x61GJpe MqQkVvHyyKf3yXGy4bVYpG4nY1uZ+V0h10tMPJbTZbjBgK3uRo3Mna2KnfrV5GXe/YRV Kr5QcxqBkA5A24Txo0iwcUCrf/o/g6s6nxlCOtCQsx75QU+vcHpZi5nlN/cVrGKG8IBy kvvI/qy5yuG/kcog0GCF6gh3m8pXXg93J9wpAluDItnPo7BLU9SfCc9NKHAAjUZnjDAZ mGwZER0r9bKzRPtHXDkdN2i6GD+VAygKihk1iXzL0zCluB0uzAcqE23s0gI9AdtpLuTR GKmg== X-Forwarded-Encrypted: i=1; AJvYcCXZ8ezumpMXj5IrBGPITyWL4Bd5hZVDaAXmy9/63WL1CJ5GU1tuZLS8sccWhK5aPpdYPzmpodwKr7z1lOeX@vger.kernel.org X-Gm-Message-State: AOJu0YyeDft5XN3xpipjg06i8K2R4wrbXNdGW7OnDv3btp6yk1WFA8Pv MpcanUgmRClJbB+72yI62mM09GfNEjeTy8eFLfMnI9Y1FbuWyeyuWcDH21Y0sYY= X-Gm-Gg: ASbGnctD/D4MmV5C9v7KN7oN9vsU2HgFzafiok9YkFVdvKt+m1JmkbtesVWSIMNiwDZ WlJ0Yq0HrioXvX9CxoFuvMd7hk6nw04hq5WzV/XMPu4agVzBC+t2JMSqO7b80C62QKli8y6K2Vk ogcqG5z30JTSz2ArApWPZ5Zz4WEUNRE/EjxNcyv+YOz8yR+I5Qo8htZI+hjwUZcTC0gKXIJJEjj rhgMpUVmKUE7/coXNGVuwkYCFLU7CHgjKCjA8JkpP9fn9T7HBG5ydeMa/ZyMtE8j+T2sTopR8XX g9mOgSNC5zYGNZUMvqrla9Dw+3wpMZI4veAD8U8+/m4TpkGfSdw2 X-Google-Smtp-Source: AGHT+IEtVC5/hLkXP7uFg7Zmm5Mq0Mlz2uLSiQFUOQWsm32IsnbnTjBX5PadrzYjNG2TCCeAvltguQ== X-Received: by 2002:a05:600c:1ca8:b0:440:6a79:6df0 with SMTP id 5b1f17b1804b1-4406abf94afmr91474835e9.22.1745321551609; Tue, 22 Apr 2025 04:32:31 -0700 (PDT) Received: from eugen-station.. ([2a02:2f0a:131e:0:1820:da87:73b1:d80c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39efa49312fsm14907887f8f.70.2025.04.22.04.32.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:31 -0700 (PDT) From: Eugen Hristev To: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, andersson@kernel.org Cc: linux-doc@vger.kernel.org, corbet@lwn.net, tglx@linutronix.de, mingo@redhat.com, rostedt@goodmis.org, john.ogness@linutronix.de, senozhatsky@chromium.org, pmladek@suse.com, peterz@infradead.org, mojha@qti.qualcomm.com, linux-arm-kernel@lists.infradead.org, vincent.guittot@linaro.org, konradybcio@kernel.org, dietmar.eggemann@arm.com, juri.lelli@redhat.com, eugen.hristev@linaro.org Subject: [RFC][PATCH 14/14] kmemdump: coreimage: add sched registration Date: Tue, 22 Apr 2025 14:31:56 +0300 Message-ID: <20250422113156.575971-15-eugen.hristev@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250422113156.575971-1-eugen.hristev@linaro.org> References: <20250422113156.575971-1-eugen.hristev@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Register sched info into kmemdump coreimage Signed-off-by: Eugen Hristev --- drivers/debug/kmemdump_coreimage.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/debug/kmemdump_coreimage.c b/drivers/debug/kmemdump_coreimage.c index 7f3b089b5739..2be396ca0495 100644 --- a/drivers/debug/kmemdump_coreimage.c +++ b/drivers/debug/kmemdump_coreimage.c @@ -78,6 +78,7 @@ void register_coreinfo(void) kmsg_kmemdump_register(); irq_kmemdump_register(); panic_kmemdump_register(); + sched_kmemdump_register(); } static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx)