From nobody Sun Feb 8 13:45:23 2026 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 8A00F27BF88 for ; Tue, 22 Apr 2025 11:32:12 +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=1745321534; cv=none; b=pr1eQYRnb+m+wqtGcHeCJTcuGKGtaSp+v1Tjxbn0QViLfQUfTcKlh5aGU9twAuxB9XDS/joW7/HtKPoYS/JlsxegS/stmN1HmhZoifFYP9gbasjqTfZHaEhn6AwavRFo8ETP/Bk7tojmoXPdhW2V3ljMiyO87+8DswCuD6PVe+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321534; c=relaxed/simple; bh=77SsVYWuM/VKw745eTt7XZiY8OVqpjtPtbXZoluNZCk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nOEvx6/Se07q18hVwSJxE03SFrP5rL/U7AxHM4J1/VxynabxLfHRB3c9bFg1HQ2UZDiJ/vESjf/wCAgOhhLn89S4fCP08qGXtLrtlkc4RMCcDaFMuukvsfvuBDCm3rVAESD52+9bPSWWO9ws21QWEpxCknMxGmNL31B02bHCiUY= 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=ChoNHSAN; 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="ChoNHSAN" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-39c1efc457bso3052394f8f.2 for ; Tue, 22 Apr 2025 04:32:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321531; x=1745926331; 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=qz8AL0iQ82MjjwyNSE/OrISLUcyy+9C9mt1QGnHDFhA=; b=ChoNHSANGbbOdrD0qv4fFnCCatR00mkWLDvRVz61Btj/D6dFWmsHPAoPGJZCJSRINy MnFebIkRnX1Yx00Ea6ZbguWpkgkNiAYGrTdfx8O1K2OC7L4P4P6z5UeFGuLGDjH/5uDr W9QTtWPECajqrxZB02T4ISgJWBaHDhgPqOKSk/Tssh1S6CWmIrWJEcMAh0R1PxLzLcfF Pz9wgNT/Sg/78BMbNB5KbiBfYoEkChUKY5zVFyqTkqCTCK35Qas1M2MwT4JTpBgRMMtg aBioSp0LuuoXA9ZRcjrDUSjXtldc95HJ73FEkTJxDg7oE4ocHNLziuC95U4oGkcmKnA1 qzCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321531; x=1745926331; 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=qz8AL0iQ82MjjwyNSE/OrISLUcyy+9C9mt1QGnHDFhA=; b=bGmaywZvtMSKGKqYC4VW3rQQoTYIJowtC23gkizd0wZrKx+0KQuRB84d/qjiDb8JIy 8KgOhJAxKNADW2eRO/zi2P4Dx1gaH82a+TYIblhEjOOahbZ9VWaYX3dl8ErrMNzD+IlK Gea46uFa8Syc7HS4/dx1IcH5/dPg9KI3pxZoY1MkFfQZ+LNnHyK2Qgecct1+AeXO0G71 F+LALl7jx35EduUp0bMPk7MsXP0/L0/mNkfSjjlgNdHQkii6rAEfRhK4R4QOPircFPek gFy6xn0jY15mqspAkuPExQMIFy+C5Sd6K3aVy7HYQCrY0csFT8iV9wRMMexEsRDIn4z1 pljA== X-Gm-Message-State: AOJu0YyqNwpiru4RCdX/HGMaNhWWdjmy7OCBY4wROhSH4X4GtOH0S53i 3/DjDKeqKBAd1OChAEE8mjmfHMMFqM34B49xFfnqW8ivWbjzFC9iAREUDrkXH14FOKgCGadryFS c X-Gm-Gg: ASbGncsR3nHMq7PRRPCkGNMS5x+NAH0y+TdTG+4lckntFVWqE3IfF5jpeEie5ZXrQ7s pfi2Hk3Q03hv6DBY9q9YbzM9r8IjTV+ocNHQv0vf4kBvQdbk4AaTBNYkewCiAD6urK0Tle/pt0B 1Le1kv8z7uhccNJmtkba0M+H5hcnRPwGxpJaAIWLxX2xQ4bghjBYljzW1wZJt80N8xB/4DdViao 133QtwIxp0fYlUu/qvpQVRr8NN6gQARvc700b1fSyPBYUecMcH7MWsYAnXLU77+p69RSqQkLRUl RXzC6+YtKWo9NNPP0TS13leMSpBhir1HacqFxPF1cseuU0wb0Kgx X-Google-Smtp-Source: AGHT+IEfV3YGUN5j4yhdrrLJhy7BVF6BU0L6gVQPX9+sNcrdsbtuBIIBqNRd2hGHUQsMP3+8iBWGbA== X-Received: by 2002:a05:6000:2403:b0:39c:1f04:a646 with SMTP id ffacd0b85a97d-39efba45f64mr11816104f8f.13.1745321530764; Tue, 22 Apr 2025 04:32:10 -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.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:10 -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 01/14] Documentation: add kmemdump Date: Tue, 22 Apr 2025 14:31:43 +0300 Message-ID: <20250422113156.575971-2-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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Eugen Hristev --- Documentation/debug/index.rst | 17 +++++++ Documentation/debug/kmemdump.rst | 77 ++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 Documentation/debug/index.rst create mode 100644 Documentation/debug/kmemdump.rst diff --git a/Documentation/debug/index.rst b/Documentation/debug/index.rst new file mode 100644 index 000000000000..9a9365c62f02 --- /dev/null +++ b/Documentation/debug/index.rst @@ -0,0 +1,17 @@ +.. SPDX-License-Identifier: GPL-2.0 + +=3D=3D=3D +kmemdump +=3D=3D=3D + +.. toctree:: + :maxdepth: 1 + + kmemdump + +.. only:: subproject and html + + Indices + =3D=3D=3D=3D=3D=3D=3D + + * :ref:`genindex` diff --git a/Documentation/debug/kmemdump.rst b/Documentation/debug/kmemdum= p.rst new file mode 100644 index 000000000000..dfee755a1be1 --- /dev/null +++ b/Documentation/debug/kmemdump.rst @@ -0,0 +1,77 @@ +.. SPDX-License-Identifier: GPL-2.0 + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D +kmemdump +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D + +This document provides information about the kmemdump feature. + +Overview +=3D=3D=3D=3D=3D=3D=3D=3D + +kmemdump is a mechanism that allows any driver or producer to register a +chunk of memory into kmemdump, to be used at a later time for a specific +purpose like debugging or memory dumping. + +kmemdump allows a backend to be connected, this backend interfaces a +specific hardware that can debug or dump the memory registered into +kmemdump. + +kmemdump Internals +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +API +---- + +A memory region is being registered with a call to `kmemdump_register` whi= ch +takes as parameters the name of the region, a pointer to the virtual memory +start address and the size. If successful, this call returns an unique ID = for +the allocated zone. + +The region would be registered with a call to `kmemdump_unregister` which +takes the id as a parameter. + +Backend +------- + +Backend is represented by a `struct kmemdump_backend` which has to be fill= ed +in by the backend driver. Further, this struct is being passed to kmemdump +with a `backend_register` call. `backend_unregister` will remove the backe= nd +from kmemdump. + +Once a backend is being registered, all previously registered regions are +being sent to the backend for registration. + +When the backend is being removed, all regions are being first deregistered +from the backend. + +kmemdump will request the backend to register a region with `register_regi= on` +call, and deregister a region with `unregister_region` call. These two +functions are mandatory to be provided by a backend at registration time. + +Data structures +--------------- + +`struct kmemdump_backend` represents the kmemdump backend and it has two +function pointers, one called `register_region` and the other +`unregister_region`. + +Each region is being stored into a cyclic array of unique ids called +`kmemdump_idr`. + +kmemdump Initialization +------------------ + +After system boots, kmemdump will be ready to accept region registration +from producer drivers. However, the backend may not be registered yet. +These regions are being added to the internal list and pending backend +initialization. Once the backend is up and running, all the regions are +registered into the backend. If, for example, the backend becomes unavaila= ble +and is removed, all the regions are unregistered and kmemdump waits for +another backend to become available. + +backend functionality +----------------- + +kmemdump backend can keep it's own list of regions and use the specific +hardware available to dump the memory regions or use them for debugging. --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 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 4DBA427BF99 for ; Tue, 22 Apr 2025 11:32:14 +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=1745321536; cv=none; b=hjL3UdtxhMJhcuhP1xaEzminOtLg69k9zwFsRKSZXcL8wRRwtwNfgM0v5QXa/66aoTKG4AlInsv6lBCY6vkopGhmSXWwOP2HuPBW1YVteNPta3pebwrxjBlnVPTTQic+wNLrcP8Z3h7o3shf11txP779jfxGaQylASy+fDhfzho= 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.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="NTEcpbuz" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-39141ffa9fcso2324434f8f.0 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=opBvGLTMdRdZz6pbhepx5d2mnl2GKz862b/vRrJSQxduYj1y+UeW4VIR4s2WG7OqCz VwSr6sP5UhT2g0uYonN9HMIKVUqF6lmyigO2J53cVTwk2wTq5kAcTqZTqVU2a+yPJjqf vv47G9qH4x6RG9oPKO9XEB/JnPxMJjAvUnhv/+5Gj7ngEyykWnfWa3AMtzv1e+5n6EFK xsYCVf1IDGQCmON2h2GFUTwOP47tVUkPYyOygIXSP1A5cJH8TfgbSK6mdu+UBYG+C6aD Aw58m51lr5fUgNho56E2ajrZoGlu+Ro/rn0WLnUziN+rz23uhyDSrl4D3eveN8ktAUXU MSfQ== X-Gm-Message-State: AOJu0YyW9jPzMm5OYqhvzxkGU9E1Xew01jSx2/orWcfWgAUS9ttaYlsO btVSLCZWXokAYfCCvQerNmri9wCuCPViL9AeUGrSxOLASoCgryXNMK2ShXVw70iu/JdMStlf5uV P X-Gm-Gg: ASbGncvcL/xhNypYMO96oAVLOGwUxP2lHNHJBSawE2ZKAHyUE4akBTOY7bC0Kf02UsX EhH/15RH+a4m+VOHfiP4Fg82pBkRdcCRIgFl4KT18042grmRRNFHjPB5cxs8js8fZCkCCqykeub 745ccO7ZqeXI9lxIAO+41dQktrm7WuCVp7zwPeZfmqneIGrjb8lOJB65dHGoVtq+fYiWeJdbxrI KSrY6HGCzuYkhecdxGe/fv2WJiKqlCrrqPNMl8pSqAoj58iJV+K2YpRuEjlabIWi68wG7AzwhQ2 E9GxEdQpboEq4H8STfdSm+BAEc/3ePI9NJPtBFW1l6DMXklZEloyTao87Vb6Oiw= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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" =20 source "drivers/dpll/Kconfig" =20 +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) +=3D cdx/ obj-$(CONFIG_DPLL) +=3D dpll/ =20 obj-$(CONFIG_S390) +=3D s390/ + +obj-y +=3D 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) +=3D 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 =3D kzalloc(sizeof(*z), GFP_KERNEL); + int id; + + if (!z) + return -ENOMEM; + + mutex_lock(&kmemdump_lock); + + id =3D 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 =3D zone; + z->size =3D size; + z->id =3D id; + + if (handle) + strscpy(z->handle, handle, 8); + + if (backend) { + int ret; + + ret =3D backend->register_region(id, handle, zone, size); + if (ret) { + mutex_unlock(&kmemdump_lock); + return ret; + } + z->registered =3D 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 =3D 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 =3D p; + int ret; + + if (z->registered) + return 0; + + ret =3D backend->register_region(z->id, z->handle, z->zone, z->size); + if (ret) + return ret; + z->registered =3D 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 =3D 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 =3D p; + + if (!z->registered) + return 0; + + ret =3D backend->unregister_region(z->id); + if (ret) + return ret; + z->registered =3D 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 !=3D 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 =3D 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 --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 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 1460527C87C for ; Tue, 22 Apr 2025 11:32:15 +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=1745321538; cv=none; b=NeVn9/OBo3s/OSBy2lZghz7X3bGOPcekiw6GTVXlmaQcI8l2WOkXDCvSZyfU+smUXJX/vd2PlqdYNCfWQ3xIi7xIukqkM/dgt2Xu0+b4RfD4OPHEmM7YZbLWqbtAZxU5LI/ItR/l3+OLBmMYqeyoFwkTp8NDS7PufRxHTJsRu3o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321538; c=relaxed/simple; bh=8jKxWe5l8OVfIf1ihdLZzhT0WCdG5pJVK0j+lvnJR90=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hQJYJCyf856oHlSrWWkbccfXsG4cddHPu+MyX8hxUEebyBL9o7iDtjDKRHcGxAdWQxK23COFugLZIVAPHtkIMexwf0+lbYmJW7gwVJdcK/VXlv5GtfnZIKZ7tlpzMMS0a5rEZb9Dw+aorg64sClN3aTKBzgVq0rpHoFOh2EZ1W8= 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=VSfRPAG1; 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="VSfRPAG1" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-39ac9aea656so6341667f8f.3 for ; Tue, 22 Apr 2025 04:32:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321534; x=1745926334; 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=d6pSddhbiOlXQZYR80BvFSHp85nzfE1i19ocFXdQkwE=; b=VSfRPAG1MhhqvLBB7FZy3A/t/dp7abKAZNfvn7r21JubkCuRS07ToGFYeT4DtoIm9J ccNcrATmD0gVPCSQ8kdx4PTUzpEtVNgKa0JOkyzq0Th6//ipTxdLHgqbhRnnDvJY15ah TVcYjGUPgWrzEY4VvbiuFB2y+UJF99gE3tqHr99Wk4b0VrcqVSTd0wNlu9NRBnUvOH3h IkC88MK/l2K9TsIA7IjbrSo5sIAZw6Vc5qwzAY0psdwosa3LvzjOjiDA11GXtCvGplBT H8TWSsOJMzBd94sf8QkcIhe9KpsPrn1RHkq25f07MvoaL5MBQDcVNDXsGMsDKZetQdyS Dl8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321534; x=1745926334; 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=d6pSddhbiOlXQZYR80BvFSHp85nzfE1i19ocFXdQkwE=; b=O+Uf7u6STgX4MvtNL7d0qAX3JqKlOKiHFLt2cFHbsGlkwJjZ9uBBtjsH5bA6lZ73J9 b2LNLacbzpyeoghvR3RxxHGl0xbL+UFqW7v13inVR/+OgLOI6U0E8w8V5Ys+vGbm5xRQ Lf/+0dSrGCZ0YaBaryNf8RLC89FczzklOqQq1kBcq4n2Gut6LtF8sMwCL51a0khv1W5G pR78r22xI7n23dErtX55PSs0kGblHJmrw2TnahcpCulDPZw1la7lVp8G0ojUwnnn5EhL 3iNhJTVbASMRqH3+pFkbIYAtzl/orgEKerxm2F30kMpJQ1dPx6hLg3Hzuk1a6xoIQHiG 72HA== X-Gm-Message-State: AOJu0YxmZ9YJdWGHooE4gWvAGCivHtXcPFyF+7CvfgH5yFafoactGTNL x7F897cNLlYlfDjOz9TEGu9XRIKOh/G5MkufATbPk6doPkjhM1HnextQGe3Smlk8Ood0cmgcurX B X-Gm-Gg: ASbGncshaxNivQHyABy7oS2xAbse+VKLEcI4wzVvf5zzX/WY67LmHx5blUFjsKm7p9F 173GpLIOnc9DnmbKtL3cB084j/TD1uXg9UyjeK6qZdmewqPLxGHN3WU0SRuqRxq1SKOxgR7aGue cEBvvCWL7zXBnWi1JU1Yqi4bEsoq3bEL/3K7/XTaiuKcEOae1mq1/7+TI5CSbs5qRGMaJ1QUPP/ LRCZDlUYAfnwaTxRCqVyeTtORTwZMFOuCbJpkxHX49nr935Q0s5fRHKXoGaAjaQy4i5S8QVGPOM KrO+rJx0PpuuLfdRZzxNTpKah/41YuTI2meGCWZMGtZVx49Pw+cn X-Google-Smtp-Source: AGHT+IH8BH2AMctcLQnSIe88Oq6tqGkueAiadNbece/cNfBYdRbZoMYjxa1qtqbDc5QTg+2ZudqOeg== X-Received: by 2002:a5d:584e:0:b0:391:41c9:7a87 with SMTP id ffacd0b85a97d-39efbaf5562mr12324995f8f.51.1745321534238; Tue, 22 Apr 2025 04:32:14 -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.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:13 -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 03/14] kmemdump: introduce qcom-md backend driver Date: Tue, 22 Apr 2025 14:31:45 +0300 Message-ID: <20250422113156.575971-4-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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Qualcomm Minidump is a backend driver for kmemdump. Regions are being registered into the shared memory on Qualcomm platforms and into the table of contents. Further, the firmware can read the table of contents and dump the memory accordingly. Signed-off-by: Eugen Hristev Co-developed-by: Mukesh Ojha Signed-off-by: Mukesh Ojha --- drivers/debug/Kconfig | 13 ++ drivers/debug/Makefile | 1 + drivers/debug/qcom_md.c | 467 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 481 insertions(+) create mode 100644 drivers/debug/qcom_md.c diff --git a/drivers/debug/Kconfig b/drivers/debug/Kconfig index 22348608d187..72a906487e02 100644 --- a/drivers/debug/Kconfig +++ b/drivers/debug/Kconfig @@ -13,4 +13,17 @@ config DRIVER_KMEMDUMP =20 Note that modules using this feature must be rebuilt if option changes. + +config QCOM_MD_KMEMDUMP_BACKEND + tristate "Qualcomm Minidump kmemdump backend driver" + depends on ARCH_QCOM || COMPILE_TEST + depends on DRIVER_KMEMDUMP + help + Say y here to enable the Qualcomm Minidump kmemdump backend + driver. + With this backend, the registered regions are being linked + into the minidump table of contents. Further on, the firmware + will be able to read the table of contents and extract the + memory regions on case-by-case basis. + endmenu diff --git a/drivers/debug/Makefile b/drivers/debug/Makefile index cc14dea250e3..d8a9db29cd15 100644 --- a/drivers/debug/Makefile +++ b/drivers/debug/Makefile @@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 =20 obj-$(CONFIG_DRIVER_KMEMDUMP) +=3D kmemdump.o +obj-$(CONFIG_QCOM_MD_KMEMDUMP_BACKEND) +=3D qcom_md.o diff --git a/drivers/debug/qcom_md.c b/drivers/debug/qcom_md.c new file mode 100644 index 000000000000..1aff28e18230 --- /dev/null +++ b/drivers/debug/qcom_md.c @@ -0,0 +1,467 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * In some of the Old Qualcomm devices, boot firmware statically allocates= 300 + * as total number of supported region (including all co-processors) in + * minidump table out of which linux was using 201. In future, this limita= tion + * from boot firmware might get removed by allocating the region dynamical= ly. + * So, keep it compatible with older devices, we can keep the current limi= t for + * Linux to 201. + */ +#define MAX_NUM_ENTRIES 201 + +#define MAX_NUM_OF_SS 10 +#define MAX_REGION_NAME_LENGTH 16 +#define SBL_MINIDUMP_SMEM_ID 602 +#define MINIDUMP_REGION_VALID ('V' << 24 | 'A' << 16 | 'L' << 8 | 'I' <= < 0) +#define MINIDUMP_SS_ENCR_DONE ('D' << 24 | 'O' << 16 | 'N' << 8 | 'E' <= < 0) +#define MINIDUMP_SS_ENABLED ('E' << 24 | 'N' << 16 | 'B' << 8 | 'L' << = 0) + +#define MINIDUMP_SS_ENCR_NOTREQ (0 << 24 | 0 << 16 | 'N' << 8 | 'R' << = 0) + +#define MINIDUMP_APSS_DESC 0 + +/** + * struct minidump - Minidump driver data information + * @apss_data: APSS driver data + * @md_lock: Lock to protect access to APSS minidump table + */ +struct minidump { + struct device *dev; + struct minidump_ss_data *apss_data; + struct mutex md_lock; +}; + +/** + * struct minidump_region - Minidump region + * @name : Name of the region to be dumped + * @seq_num: : Use to differentiate regions with same name. + * @valid : This entry to be dumped (if set to 1) + * @address : Physical address of region to be dumped + * @size : Size of the region + */ +struct minidump_region { + char name[MAX_REGION_NAME_LENGTH]; + __le32 seq_num; + __le32 valid; + __le64 address; + __le64 size; +}; + +/** + * struct minidump_subsystem - Subsystem's SMEM Table of content + * @status : Subsystem toc init status + * @enabled : if set to 1, this region would be copied during coredump + * @encryption_status: Encryption status for this subsystem + * @encryption_required : Decides to encrypt the subsystem regions or not + * @region_count : Number of regions added in this subsystem toc + * @regions_baseptr : regions base pointer of the subsystem + */ +struct minidump_subsystem { + __le32 status; + __le32 enabled; + __le32 encryption_status; + __le32 encryption_required; + __le32 region_count; + __le64 regions_baseptr; +}; + +/** + * struct minidump_global_toc - Global Table of Content + * @status : Global Minidump init status + * @md_revision : Minidump revision + * @enabled : Minidump enable status + * @subsystems : Array of subsystems toc + */ +struct minidump_global_toc { + __le32 status; + __le32 md_revision; + __le32 enabled; + struct minidump_subsystem subsystems[MAX_NUM_OF_SS]; +}; + +/** + * struct minidump_ss_data - Minidump subsystem private data + * @md_ss_toc: Application Subsystem TOC pointer + * @md_regions: Application Subsystem region base pointer + */ +struct minidump_ss_data { + struct minidump_subsystem *md_ss_toc; + struct minidump_region *md_regions; +}; + +#define MINIDUMP_MAX_NAME_LENGTH 12 +/** + * struct qcom_minidump_region - Minidump region information + * + * @name: Minidump region name + * @virt_addr: Virtual address of the entry. + * @phys_addr: Physical address of the entry to dump. + * @size: Number of bytes to dump from @address location, + * and it should be 4 byte aligned. + */ +struct qcom_minidump_region { + char name[MINIDUMP_MAX_NAME_LENGTH]; + void *virt_addr; + phys_addr_t phys_addr; + size_t size; + unsigned int id; +}; + +static LIST_HEAD(apss_md_rlist); + +/** + * struct md_region_list - Minidump region list struct + * + * @md_region: associated minidump region + * @list: list head entry + */ +struct md_region_list { + struct qcom_minidump_region md_region; + struct list_head list; +}; + +static struct minidump *md; + +/** + * qcom_md_add_region() - Register region in APSS Minidump table. + * @region: minidump region. + * + * Return: None + */ +static void qcom_md_add_region(const struct qcom_minidump_region *region) +{ + struct minidump_subsystem *mdss_toc =3D md->apss_data->md_ss_toc; + struct minidump_region *mdr; + unsigned int region_cnt; + + region_cnt =3D le32_to_cpu(mdss_toc->region_count); + mdr =3D &md->apss_data->md_regions[region_cnt]; + strscpy(mdr->name, region->name, sizeof(mdr->name)); + mdr->address =3D cpu_to_le64(region->phys_addr); + mdr->size =3D cpu_to_le64(region->size); + mdr->valid =3D cpu_to_le32(MINIDUMP_REGION_VALID); + region_cnt++; + mdss_toc->region_count =3D cpu_to_le32(region_cnt); +} + +/** + * qcom_md_get_region_index() - Lookup minidump region by name + * @mdss_data: minidump subsystem data + * @region: minidump region. + * + * Return: On success, it returns the region index, on failure, returns + * negative error value + */ +static int qcom_md_get_region_index(struct minidump_ss_data *mdss_data, + const struct qcom_minidump_region *region) +{ + struct minidump_subsystem *mdss_toc =3D mdss_data->md_ss_toc; + struct minidump_region *mdr; + unsigned int i; + unsigned int count; + + count =3D le32_to_cpu(mdss_toc->region_count); + for (i =3D 0; i < count; i++) { + mdr =3D &mdss_data->md_regions[i]; + if (!strcmp(mdr->name, region->name)) + return i; + } + + return -ENOENT; +} + +/** + * qcom_md_region_unregister() - Unregister region from APSS Minidump tabl= e. + * @region: minidump region. + * + * Return: On success, it returns 0 and negative error value on failure. + */ +static int qcom_md_region_unregister(const struct qcom_minidump_region *re= gion) +{ + struct minidump_ss_data *mdss_data =3D md->apss_data; + struct minidump_subsystem *mdss_toc =3D mdss_data->md_ss_toc; + struct minidump_region *mdr; + unsigned int region_cnt; + unsigned int idx; + int ret; + + ret =3D qcom_md_get_region_index(mdss_data, region); + if (ret < 0) { + dev_err(md->dev, "%s region is not present\n", region->name); + return ret; + } + + idx =3D ret; + mdr =3D &mdss_data->md_regions[0]; + region_cnt =3D le32_to_cpu(mdss_toc->region_count); + /* + * Left shift all the regions exist after this removed region + * index by 1 to fill the gap and zero out the last region + * present at the end. + */ + memmove(&mdr[idx], &mdr[idx + 1], (region_cnt - idx - 1) * sizeof(*mdr)); + memset(&mdr[region_cnt - 1], 0, sizeof(*mdr)); + region_cnt--; + mdss_toc->region_count =3D cpu_to_le32(region_cnt); + + return 0; +} + +/** + * qcom_md_region_register() - Register region in APSS Minidump table. + * @region: minidump region. + * + * Return: On success, it returns 0 and negative error value on failure. + */ +static int qcom_md_region_register(const struct qcom_minidump_region *regi= on) +{ + struct minidump_ss_data *mdss_data =3D md->apss_data; + struct minidump_subsystem *mdss_toc =3D mdss_data->md_ss_toc; + unsigned int num_region; + int ret; + + ret =3D qcom_md_get_region_index(mdss_data, region); + if (ret >=3D 0) { + dev_info(md->dev, "%s region is already registered\n", region->name); + return -EEXIST; + } + + /* Check if there is a room for a new entry */ + num_region =3D le32_to_cpu(mdss_toc->region_count); + if (num_region >=3D MAX_NUM_ENTRIES) { + dev_err(md->dev, "maximum region limit %u reached\n", num_region); + return -ENOSPC; + } + + qcom_md_add_region(region); + + return 0; +} + +/** + * qcom_minidump_valid_region() - Checks if region is valid + * @region: minidump region. + * + * Return: true if region is valid, false otherwise. + */ +static bool qcom_minidump_valid_region(const struct qcom_minidump_region *= region) +{ + return region && + strnlen(region->name, MINIDUMP_MAX_NAME_LENGTH) < MINIDUMP_MAX_NAME_LENG= TH && + region->virt_addr && + region->size && + IS_ALIGNED(region->size, 4); +} + +/** + * qcom_minidump_region_register() - Register region in APSS Minidump tabl= e. + * @region: minidump region. + * + * Return: On success, it returns 0 and negative error value on failure. + */ +static int qcom_minidump_region_register(const struct qcom_minidump_region= *region) +{ + int ret; + + if (!qcom_minidump_valid_region(region)) + return -EINVAL; + + mutex_lock(&md->md_lock); + ret =3D qcom_md_region_register(region); + + mutex_unlock(&md->md_lock); + return ret; +} + +/** + * qcom_minidump_region_unregister() - Unregister region from APSS Minidum= p table. + * @region: minidump region. + * + * Return: On success, it returns 0 and negative error value on failure. + */ +static int qcom_minidump_region_unregister(const struct qcom_minidump_regi= on *region) +{ + int ret; + + if (!qcom_minidump_valid_region(region)) + return -EINVAL; + + mutex_lock(&md->md_lock); + ret =3D qcom_md_region_unregister(region); + + mutex_unlock(&md->md_lock); + return ret; +} + +/** + * qcom_apss_md_table_init() - Initialize the minidump table + * @mdss_toc: minidump subsystem table of contents + * + * Return: On success, it returns 0 and negative error value on failure. + */ +static int qcom_apss_md_table_init(struct minidump_subsystem *mdss_toc) +{ + struct minidump_ss_data *mdss_data; + + mdss_data =3D devm_kzalloc(md->dev, sizeof(*mdss_data), GFP_KERNEL); + if (!mdss_data) + return -ENOMEM; + + mdss_data->md_ss_toc =3D mdss_toc; + mdss_data->md_regions =3D devm_kcalloc(md->dev, MAX_NUM_ENTRIES, + sizeof(*mdss_data->md_regions), + GFP_KERNEL); + if (!mdss_data->md_regions) + return -ENOMEM; + + mdss_toc =3D mdss_data->md_ss_toc; + mdss_toc->regions_baseptr =3D cpu_to_le64(virt_to_phys(mdss_data->md_regi= ons)); + mdss_toc->enabled =3D cpu_to_le32(MINIDUMP_SS_ENABLED); + mdss_toc->status =3D cpu_to_le32(1); + mdss_toc->region_count =3D cpu_to_le32(0); + + /* Tell bootloader not to encrypt the regions of this subsystem */ + mdss_toc->encryption_status =3D cpu_to_le32(MINIDUMP_SS_ENCR_DONE); + mdss_toc->encryption_required =3D cpu_to_le32(MINIDUMP_SS_ENCR_NOTREQ); + + md->apss_data =3D mdss_data; + + return 0; +} + +/** + * register_md_region() - Register a new minidump region + * @id: unique id to identify the region + * @name: name of the region + * @vaddr: virtual memory address of the region start + * @size: size of the region + * + * Return: On success, it returns 0 and negative error value on failure. + */ +static int register_md_region(unsigned int id, char *name, void *vaddr, + size_t size) +{ + struct qcom_minidump_region *md_region; + int ret; + + struct md_region_list *mdr_list =3D + kzalloc(sizeof(*mdr_list), GFP_KERNEL); + if (!mdr_list) + return -ENOMEM; + md_region =3D &mdr_list->md_region; + + scnprintf(md_region->name, sizeof(md_region->name), "K%d%.8s", id, name); + md_region->virt_addr =3D vaddr; + md_region->phys_addr =3D virt_to_phys(vaddr); + md_region->size =3D ALIGN(size, 4); + md_region->id =3D id; + + ret =3D qcom_minidump_region_register(md_region); + if (ret < 0) { + pr_err("failed to register region in minidump %d %s: err: %d\n", + id, name, ret); + return ret; + } + + list_add(&mdr_list->list, &apss_md_rlist); + return 0; +} + +/** + * unregister_md_region() - Unregister a previously registered minidump re= gion + * @id: unique id to identify the region + * + * Return: On success, it returns 0 and negative error value on failure. + */ +static int unregister_md_region(unsigned int id) +{ + int ret =3D -ENOENT; + struct md_region_list *mdr_list; + struct md_region_list *tmp; + + list_for_each_entry_safe(mdr_list, tmp, &apss_md_rlist, list) { + struct qcom_minidump_region *region; + + region =3D &mdr_list->md_region; + if (region->id =3D=3D id) { + ret =3D qcom_minidump_region_unregister(region); + list_del(&mdr_list->list); + return ret; + } + } + + pr_err("failed to unregister region from minidump %d\n", ret); + + return ret; +} + +static struct kmemdump_backend qcom_md_backend =3D { + .name =3D "qcom_md", + .register_region =3D register_md_region, + .unregister_region =3D unregister_md_region, +}; + +static int qcom_md_probe(struct platform_device *pdev) +{ + struct minidump_global_toc *mdgtoc; + size_t size; + int ret; + + md =3D devm_kzalloc(&pdev->dev, sizeof(*md), GFP_KERNEL); + + md->dev =3D &pdev->dev; + + mdgtoc =3D qcom_smem_get(QCOM_SMEM_HOST_ANY, SBL_MINIDUMP_SMEM_ID, &size); + if (IS_ERR(mdgtoc)) { + ret =3D PTR_ERR(mdgtoc); + dev_err(md->dev, "Couldn't find minidump smem item %d\n", ret); + } + + if (size < sizeof(*mdgtoc) || !mdgtoc->status) { + dev_err(md->dev, "minidump table is not initialized %d\n", ret); + return -ENAVAIL; + } + + mutex_init(&md->md_lock); + + ret =3D qcom_apss_md_table_init(&mdgtoc->subsystems[MINIDUMP_APSS_DESC]); + if (ret) { + dev_err(md->dev, "apss minidump initialization failed %d\n", ret); + return ret; + } + + return kmemdump_register_backend(&qcom_md_backend); +} + +static void qcom_md_remove(struct platform_device *pdev) +{ + kmemdump_unregister_backend(&qcom_md_backend); +} + +static struct platform_driver qcom_md_driver =3D { + .probe =3D qcom_md_probe, + .remove =3D qcom_md_remove, + .driver =3D { + .name =3D "qcom-md", + }, +}; + +module_platform_driver(qcom_md_driver); + +MODULE_AUTHOR("Eugen Hristev "); +MODULE_AUTHOR("Mukesh Ojha "); +MODULE_DESCRIPTION("Qualcomm kmemdump minidump backend driver"); +MODULE_LICENSE("GPL"); --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 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 A5EEE27CB29 for ; Tue, 22 Apr 2025 11:32:17 +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=1745321539; cv=none; b=jShqi/7vMFGFRKjK4YhA382OKfsKBnyH4zVEdtcwjrPOvVBM4ZSTSWx2j+ZiHaRfTo4Ay/pNNsUkNammsveXHsEzBDzIoxy+pAbphEb2h/TkQ0aksJ1hVhPN0SM5pYwfOM9Pw200BuDvj++l2jt5kA6eKhCj8vVw0Pp1KpJ84Q0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321539; c=relaxed/simple; bh=6Ex4TDV2zsYu1F8S7MzsO2fAsL/9qH/bHusCYK0VeV8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Dk8CZkxzFaczj0sbffE2Qp4tHrRpk6AReIPVDN7Q70SZ0s++NdsKwOkhgyX3RVvgQRTe+mgTX7+2DWUlIIzlw/VNoIk5ndFobtGJJyVfxNxAzS+jjceKrHEzNYQQin6CisIrFnqMkkngzDDTg/QzqiAdC06xzP1lIvBEhwTOnhg= 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.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="YDqvVgVw" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-39ee651e419so2804780f8f.3 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=DZJfoIh1kyZKVlBGIZKGcrlr3M2aoMeRPl736AkUCJLUI5OZx/jOyQw7BeTxhVioqb 2PpfcVxjME0aphHtoinuieoD9vDbpQ/ZCZ4JvIT4+WoNSLmairoetvQ3K4BbJdRyKTLk 00aKIRfvQgZboWQ4j+yNCaT8tVmDBMaTUu97qcdOLLN+XfwH1lrEQrHCo3lD4HZVt1IR ivrV07+Y58ql0llO8UXuwXj5jHhw2eu6WfkSwqY6CJNwY4JF0GdOG8HEjPJboNDAQGym XYao3LVOBymYn/iCTdbEnnr5VelasTseO8EKx9sV+Bzi33Sss3hAcgHXEk54ULK6JbIu YaCw== X-Gm-Message-State: AOJu0Yx7dPBC9KEUDtoThBaF60D7m8PfZxArXdTCvox8m+rQmBAVYz3N /P89/0z4C5D9FDBQ04fswy9u+9mfQGx7DEX671zY0z7P+3+znMHw65bbBTQDYUs48aqF4Uy1gkD X X-Gm-Gg: ASbGnct4F9RebOLfSoV2JltK//CInNzGJVSKU7mIHgLVb+NcZpUPTIOFLlQIZ1dHqHe ujgPgCxdm3siowq64WnB5wxSP955A+PBnkhx3PdC8VpPaSPTGa9QJGDveHxFMAKjO44QsPHr0V5 MMDW/zP+j/Yrm9gUHIAr8nRygsXPbtTPkubmA5UkAHWIPwmoDRXhPOzpyEszV0lbuKhqhX6WasI ly3yHRji9OULFv6Mzn84668/iKyHnbraXjZPVgFoEDo0XFK17su4NDEjrMIPQjJDNmlwCteJ0GR dQb2MNVTi2y2CCSGD1f0Q8rONoCHtHINeS45GOPc+FbZtKtum0mS 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 { =20 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"); =20 + smem->mdinfo =3D 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; } =20 static void qcom_smem_remove(struct platform_device *pdev) { platform_device_unregister(__smem->socinfo); + if (!IS_ERR(__smem->mdinfo)) + platform_device_unregister(__smem->mdinfo); =20 hwspin_lock_free(__smem->hwlock); __smem =3D NULL; --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 395F327CCC5 for ; Tue, 22 Apr 2025 11:32:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321541; cv=none; b=jOCNWt60wG3RkRQnyz1VAv8dOVUzpdyGsDbc19W4XTfZBndetu5iJ8JnaR9ePNqr1T5rnqsUav0QkvMfUaaDRUawj3TpuBx4Xhc+DGDZojMAxDbWUUo8yReJHgoslLSODQmxUH0LPKMXoYQPoBubyPVY+9GUI4pMovgGmHd3m3w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321541; c=relaxed/simple; bh=pBi1MUo8cyhJVlwqE0as22e2neYDMnkEOd5dFu8AL0U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L8BrjhJnOnub6UGfLRTJMYL0/8JweGfKGtbtYniNh0se+jVuUd5EzRh3jHdjFoI6T/YUiPjw33ve9h4h8uT0+iwzegWojX4JBrtbFjFIbGxRvtsXg52kV1fhBxVKQjZogeEUCiImxfcVM8bYTbKoQYCJ5ZLY4UCd8Mpw2qEmDVc= 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=KYPl6CiW; arc=none smtp.client-ip=209.85.221.52 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="KYPl6CiW" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-39ee623fe64so4370139f8f.1 for ; Tue, 22 Apr 2025 04:32:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321537; x=1745926337; 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=jy9n9cFpVQUkUpiWIEsm4sdpu3oKdgg9Qw5HeontsNc=; b=KYPl6CiWNaoCBimlWWGfgTjsi76msswKk699gf2ZPm42O+rozUPrSO+49drweDDGHn X9KXjPBPmL4eewNa2tTeuuNnEToxiSvFR5Y4tiEN8sbNfZilc6B8lyEzA23iCYNPoIp9 KQQcHXBcq3nM4042JgS0AtFjyBU1c55z3l8AH1qzPUXV4ha6rdKY3UMETJF0uuP304QG L9QBOoJWWUbb8X4c5zz7Bbbltum1D2Z5q1VgloYhv53O+vnKZFMPFxJcY9kd10jN1Uen wx+eGM1HtyRcNo53C42tZ6InADhlwgDVW3R3WBAWvbWlb5PnN85al+ttdhZo+3ggmvwo +1XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321537; x=1745926337; 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=jy9n9cFpVQUkUpiWIEsm4sdpu3oKdgg9Qw5HeontsNc=; b=ACFwpopHue9GUAEHX2E+biqklKZMsPldRAULRhNwah6tSNTz486y9dQaZfVE1gAmDs RFDsxyI0D3IPrJZi8l3rFEEdcNjWVelGUypVibbcckT1ygcddV5ng1aWHxAUXuVKlHUp ubJW7Evz5p2TU5bqd+S46k6GhGOkYPux05Bp15WgrkqBs0Cfv5Oql/CrjDSyaTPdVlAU KSWSmK4huNyTJYRVjC78Ds5Tq1l2a1xbCZ+kYrqB2kRU8Ys7JDqWNP/mLKw8qPDWJSw0 FzA4S0ArXkUv3JdXBpcFxR86zskqcbzFyHGHKcre9zcrFEGDrytlyBBnjvTzQrlRa7PP QFfA== X-Gm-Message-State: AOJu0YzTFjdLNyMeJZe6cN39LmiGuniMMtZC5uVZpfYqkLbkm2sjWHG9 8VkPdXoxxxpPrXCHz2Ml0MgMD+4vKlq72aXw9KrE/v3goBkHIoDtTbJojJ5wHSq5FNPg1eJLJJt h X-Gm-Gg: ASbGncsxAETZLI+bpAxj2lSfUnvV3/BV8RiZugKRdNiGvpGPe0xTnh5sgD6FUQLpO2k Yh9heC4kuVJfHVru/H7dHipawI7bsLrI3Eq74v3cBFLij5Dfr6Z5AgvUY1wjsYw56FozjNiZBKl i4PbLlmNBKi36Ak4Sg8xjHFWjjmIBLLL/HN8HdwHVWqPhcYaiYLAeweq/r+u2cqhzKiPs+/9I4J fyTsDjSDa/b1VMtXkzlH8Zr5pC/JItt7yXPx5nVbxgfT9JQYwSQonh6hqwxO+dM/CtlJOeDEx3H ya+PKNvKmp1ZAjuoNt1u8HzyyV3z0uLgJyvD+v1Ix5tMnEBB5PnScrAwKhF6fLE= X-Google-Smtp-Source: AGHT+IENApvlIOcfQcL0LZP5BuyV0lmfNKeMfWGxAbuT+pNZSoLQJuZ1V8if61aOzV5wetgPKLvcAw== X-Received: by 2002:a05:6000:2510:b0:390:f9a5:bd79 with SMTP id ffacd0b85a97d-39efba5a86fmr12045598f8f.26.1745321537318; Tue, 22 Apr 2025 04:32:17 -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.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:16 -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 05/14] Documentation: kmemdump: add section for coreimage ELF Date: Tue, 22 Apr 2025 14:31:47 +0300 Message-ID: <20250422113156.575971-6-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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add section describing the utility of coreimage ELF generation for kmemdump. Signed-off-by: Eugen Hristev --- Documentation/debug/kmemdump.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/debug/kmemdump.rst b/Documentation/debug/kmemdum= p.rst index dfee755a1be1..b67dc166905a 100644 --- a/Documentation/debug/kmemdump.rst +++ b/Documentation/debug/kmemdump.rst @@ -17,6 +17,12 @@ kmemdump allows a backend to be connected, this backend = interfaces a specific hardware that can debug or dump the memory registered into kmemdump. =20 +kmemdump can also prepare specific regions of the kernel that can be +put together to form a minimal core image file. To achieve this, the first +region is an ELF header with program headers for each region, and specific +ELF NOTE section with vmcoreinfo. To enable this feature, use +`CONFIG_DRIVER_KMEMDUMP_COREIMAGE`. + kmemdump Internals =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 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 CBD6627CCE2 for ; Tue, 22 Apr 2025 11:32:20 +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=1745321543; cv=none; b=K0EPOAbMqQJr51iFEER9dSTRnOrF01GwuFLIDyMlbb6E/hhSFrfXzEgy5V+A0EbpsuhMFemotLN/KpUg1YUfa3NW9NFc5RIy/rqXAkjqHq/wSwP6LCtCzCPtOou0b0TCm86L0/YesxlnVeQDbfuN0sjuGfG3H5FxYNKFKKWDolw= 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.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="KQ6hDzDC" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-3995ff6b066so2657839f8f.3 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=TnTh6/st7HzvSTBtFKxglQxzN+lRTCSMp+qW6MgKXttl7zfJ+8GNhgbpBv4VB7wy1s AuyBNGCsDCDNt87W0xYuL0PUsUWLSM19CHLueYfT1D6HQN6sbWT98FLGMNfbKIicIapF MgGuyhiHGWCwVdEa6rNGHv41RNUQd3Un93d0Lr8vaAFObrZ2mx1/K2TG587RcmPUP/aL 7HTm/tHsbzLGwWbAVkrYiMHXOwX5WIm2aMT7mdw2h+/H2X6r7zLhYkKc55WrnQmagj7c eIPBtXiTgpj2dSsIuM9oBBc2rKwQyA4rcudpe6ltQ2huwbftjayB9/hpimplyoYijHTQ ac2g== X-Gm-Message-State: AOJu0YyvXVa/Kgu3eShfS5mu8V3oRfK7Fj6icQ6EZdVaC3C0dVmlk/+5 /eXP1e/wTGmQTxcSDE4pA9nLCxQztdQU/4Soq24YG0luEXylGo4Hqk9dHcM2tQ+3aMdRzDWyxxe w X-Gm-Gg: ASbGncsQKBqsyldFySCEWcyVHRuxr4HQMGI1QGlukiRhwtjhzPhLBY5uAbZmNa52mGu q3ByFytgUzicEdeNYhynRoSJ2fW8XHCj4dysTrItteTNw27yoi3SQK7dcrHFF30imHLPuT2Vl8r 8RkNKlw3rfKNIXGxmy6bFTmrA9Y0BY0IFVuud8GyC8cG39KzpkeeS62kGr39EXD70aGK/0kR8/A KJxg3zOt1fWMgxjlHH9Kyo6/IJOSWt/0mmGKGM+tLZ72PZF2ogv9+4I1hmMysXJ/PsfUhnivCRx 9f3Rb0paJvfzNU6oxlcR9rcYH7WRvIfWoGnlTK4M/Uss0XaqKvCO 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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. =20 +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 =20 obj-$(CONFIG_DRIVER_KMEMDUMP) +=3D kmemdump.o +obj-$(CONFIG_DRIVER_KMEMDUMP_COREIMAGE) +=3D kmemdump_coreimage.o obj-$(CONFIG_QCOM_MD_KMEMDUMP_BACKEND) +=3D 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 si= ze) return ret; } z->registered =3D true; + update_elfheader(z); } =20 mutex_unlock(&kmemdump_lock); @@ -84,6 +85,7 @@ void kmemdump_unregister(int id) if (z->registered && backend) backend->unregister_region(z->id); =20 + clear_elfheader(z); idr_remove(&kmemdump_idr, id); kfree(z); =20 @@ -103,6 +105,7 @@ static int kmemdump_register_fn(int id, void *p, void *= data) if (ret) return ret; z->registered =3D true; + update_elfheader(z); =20 return 0; } @@ -130,6 +133,14 @@ int kmemdump_register_backend(struct kmemdump_backend = *be) pr_info("kmemdump backend %s registered successfully.\n", backend->name); =20 + 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); =20 @@ -151,6 +162,7 @@ static int kmemdump_unregister_fn(int id, void *p, void= *data) if (ret) return ret; z->registered =3D false; + clear_elfheader(z); =20 return 0; } diff --git a/drivers/debug/kmemdump_coreimage.c b/drivers/debug/kmemdump_co= reimage.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 coreim= age + * + * 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 =3D (struct elf_phdr *)((size_t)ehdr + ehdr->e_pho= ff); + + 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 =3D elf.ehdr; + struct elf_phdr *phdr; + struct elf_phdr *tmp_phdr; + unsigned int phidx; + unsigned int i; + + for (i =3D 0; i < ehdr->e_phnum; i++) { + phdr =3D elf_phdr_entry_addr(ehdr, i); + if (phdr->p_paddr =3D=3D virt_to_phys(z->zone) && + phdr->p_memsz =3D=3D ALIGN(z->size, 4)) + break; + } + + if (i =3D=3D ehdr->e_phnum) { + pr_err("Cannot find program header entry in elf\n"); + return -EINVAL; + } + + phidx =3D i; + + /* Clear program header */ + tmp_phdr =3D elf_phdr_entry_addr(ehdr, phidx); + for (i =3D phidx; i < ehdr->e_phnum - 1; i++) { + tmp_phdr =3D elf_phdr_entry_addr(ehdr, i + 1); + phdr =3D elf_phdr_entry_addr(ehdr, i); + memcpy(phdr, tmp_phdr, sizeof(*phdr)); + phdr->p_offset =3D phdr->p_offset - ALIGN(z->size, 4); + } + memset(tmp_phdr, 0, sizeof(*tmp_phdr)); + ehdr->e_phnum--; + + elf.elf_offset -=3D 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 =3D elf.ehdr; + struct elf_phdr *phdr; + + phdr =3D elf_phdr_entry_addr(ehdr, ehdr->e_phnum++); + + phdr->p_type =3D PT_LOAD; + phdr->p_offset =3D elf.elf_offset; + phdr->p_vaddr =3D (elf_addr_t)z->zone; + phdr->p_paddr =3D (elf_addr_t)virt_to_phys(z->zone); + phdr->p_filesz =3D phdr->p_memsz =3D ALIGN(z->size, 4); + phdr->p_flags =3D PF_R | PF_W; + + elf.elf_offset +=3D 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 =3D (struct elf_note *)¬es[*i]; + + note->n_namesz =3D strlen(name) + 1; + note->n_descsz =3D descsz; + note->n_type =3D type; + *i +=3D sizeof(*note); + memcpy(¬es[*i], name, note->n_namesz); + *i =3D ALIGN(*i + note->n_namesz, 4); + memcpy(¬es[*i], desc, descsz); + *i =3D ALIGN(*i + descsz, 4); +} + +static void append_kcore_note_nodesc(char *notes, size_t *i, const char *n= ame, + unsigned int type, size_t descsz) +{ + struct elf_note *note =3D (struct elf_note *)¬es[*i]; + + note->n_namesz =3D strlen(name) + 1; + note->n_descsz =3D descsz; + note->n_type =3D type; + *i +=3D sizeof(*note); + memcpy(¬es[*i], name, note->n_namesz); + *i =3D 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 =3D 0; + + struct elf_prstatus prstatus =3D {}; + struct elf_prpsinfo prpsinfo =3D { + .pr_sname =3D 'R', + .pr_fname =3D "vmlinux", + }; + + /* + * Header buffer contains: + * ELF header, Note entry with PR status, PR ps info, and vmcoreinfo + * MAX_NUM_ENTRIES Program headers, + */ + elfh_size =3D sizeof(*ehdr); + elfh_size +=3D sizeof(struct elf_prstatus); + elfh_size +=3D sizeof(struct elf_prpsinfo); + elfh_size +=3D sizeof(VMCOREINFO_NOTE_NAME); + elfh_size +=3D ALIGN(vmcoreinfo_size, 4); + elfh_size +=3D (sizeof(*phdr)) * (MAX_NUM_ENTRIES); + + elfh_size =3D ALIGN(elfh_size, 4); + + elf.ehdr =3D kzalloc(elfh_size, GFP_KERNEL); + if (!elf.ehdr) + return -ENOMEM; + + ehdr =3D elf.ehdr; + /* Assign Program headers offset, it's right after the elf header. */ + elf.phdr =3D phdr =3D (struct elf_phdr *)(ehdr + 1); + phdr_off =3D sizeof(*ehdr); + + memcpy(ehdr->e_ident, ELFMAG, SELFMAG); + ehdr->e_ident[EI_CLASS] =3D ELF_CLASS; + ehdr->e_ident[EI_DATA] =3D ELF_DATA; + ehdr->e_ident[EI_VERSION] =3D EV_CURRENT; + ehdr->e_ident[EI_OSABI] =3D ELF_OSABI; + ehdr->e_type =3D ET_CORE; + ehdr->e_machine =3D ELF_ARCH; + ehdr->e_version =3D EV_CURRENT; + ehdr->e_ehsize =3D sizeof(*ehdr); + ehdr->e_phentsize =3D sizeof(*phdr); + + elf.elf_offset =3D elfh_size; + + notes =3D (void *)(((char *)elf.ehdr) + elf.elf_offset); + + /* we have a single program header now */ + ehdr->e_phnum =3D 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 =3D (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 =3D PT_NOTE; + phdr->p_offset =3D elf.elf_offset; + phdr->p_filesz =3D note_len; + + /* advance elf offset */ + elf.elf_offset +=3D 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 =3D 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) =20 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 --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.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 5786427D771 for ; Tue, 22 Apr 2025 11:32:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321544; cv=none; b=Js/ceUNBUBmO6kXIQACVWk5MhyKes0UHmycY9U5eb+JziTf0mX7xf2MWhLI8pI9k2JoT3rG1XTlLr2Lp5LG6SUzaZ8jd7e98icII0IuNS3FBWO31h7lrmQOirCImtitcqwMQRC74uMKXvSmTaGHfpxDyxG38pC0bXKwpM6O8Qkc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321544; c=relaxed/simple; bh=ZEfuO89SqASiM7GrCPCbp+s2T96g+unLkUU0ynS0zgo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ghhkVHdTIC6VS6vkVURqaTPrhc8UtREhXF14nXM3GsrOrdg6iqvC4GHnNX6zAQHOr7eYMd35jK/8AytoKFS5+LYN/UFmpryw4VoTxhGPfTMeTXgLvydWBIPxSRGRWiMFQTzab/bv8JjsvIuM8iTB7shKHpLjFl1RZGKeWXZcEm4= 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=GU7LQMgm; arc=none smtp.client-ip=209.85.128.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="GU7LQMgm" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-43cf06eabdaso48339335e9.2 for ; Tue, 22 Apr 2025 04:32:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321541; x=1745926341; 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=x9mhCj0ekrSAhKxeAdIDKoiXrDacQrSQO5Vuilr0jZM=; b=GU7LQMgmVIJUSoeSNKjC7TGDQUXttCYFRYCb7dKAB517LiucoTqHa1XD52VppNUgiI k9WitxHy7GgbkMEkvLBQ1Pw4hQpkb0LVC6pxCgoD6n7xlSlepDZLunog2+WIH/HGgwFV LwBxkQzSP5SjEz3RaagwxzxlHJh8oXFcvCosbzmTdlLSVMdEQk92aNWK1z7aISTcENYz dqoMlzowXCbN1kcIcYpeythaRyqehNbVDS/8t2wV9A97vfvyc6jGuTph8ygJxdUFMaBx ub+eohfH4xUBSyvOutGu+E3tE2nKEnXywM5bw+50I+8nxd1Zx6Wx61fznsDgen2/BtWI kaDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321541; x=1745926341; 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=x9mhCj0ekrSAhKxeAdIDKoiXrDacQrSQO5Vuilr0jZM=; b=QNqfhneS70VtmIR43ALX92CmvuOw9LJakpNT+EmiB3X8gVN4D1a+zNDXnDc2g5QA31 vfGddzQa8Is13IOM8SSpkIajH2KeZaDaa0mA69vb3c2AWsVvXp1RMH+Tgadl5gyrsYLp Y3Wa9krsX4P9B+YX8Gt54PWCvf5xPSOkPk4AbmJQtxGSKEl1KOPbECtiliweQmTp5Snz uU9jD2YYfoJWu1mqZsd6K6KLI7NBvDIh4aujSLjKOG7sXQ2vpTdqKAgAC73Xj76vhy0k YDZ6HxQ+4bgcihajUQ2P6qstk+AB7tKiDXW3UdoVoZjEOjCBvlEHEx0TTrkNgkvo/Ndk KHwg== X-Gm-Message-State: AOJu0YwbZSVgHAP+/8zViIKnLXqxmq8srCGnCRBzywCyV9HIHaIQqCA/ 15qtfhsK/0P3y6Me5C5b8k1VyTZjPGOCUe1hRPPjJwHu71wrnsQ1TmAG+AW8BMKlMUoYgZcSaXD I X-Gm-Gg: ASbGncusQHBwvTaZv2buK/EmEh0GO5ws/T2txVed/Ix2agwEaQf95bKrpiCUBaLrzf4 A7jCGq7PnlqpF9mhBRiwnQm57W+9gq2WMMfTlF3niE5X/qrpAjRBfP8rpAWUFelW+mBNdGI1Rkh OXVDHnyQi9jseEQNY6m7fsnF2OLPw+30U3yPw88k9V+GC9brah4bn9vtDmZpDXl7jERtfUIsQAs fbMlz8a9n5jb/+2k94FfDs2ULaY5s/PvRpRGGMx0b4mOOVX37aBZ5csD1dxqeAFLXC6LX6qqqA7 5OrCqeewNb6s528IkdGQbbgSqr4zB5WtScH2VYq9MVYIyN/Vt07t X-Google-Smtp-Source: AGHT+IETnKdGNbtMn7JPOPRBj99xAT5wJXNpOwUNB001P6TYN6eu4ikfra2LHHxXB1sLzvhGYsSz8g== X-Received: by 2002:a05:6000:1ac9:b0:39b:fa24:950a with SMTP id ffacd0b85a97d-39efbadeb66mr12760697f8f.36.1745321540656; Tue, 22 Apr 2025 04:32:20 -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.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:20 -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 07/14] printk: add kmsg_kmemdump_register Date: Tue, 22 Apr 2025 14:31:49 +0300 Message-ID: <20250422113156.575971-8-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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add kmsg_kmemdump_register, which registers prb, log_buf and infos/descs to kmemdump. This will allow kmemdump to be able to dump specific log buffer areas on demand. Signed-off-by: Eugen Hristev --- include/linux/kmsg_dump.h | 6 ++++++ kernel/printk/printk.c | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h index 6055fc969877..cbe76c94710b 100644 --- a/include/linux/kmsg_dump.h +++ b/include/linux/kmsg_dump.h @@ -80,6 +80,8 @@ int kmsg_dump_register(struct kmsg_dumper *dumper); =20 int kmsg_dump_unregister(struct kmsg_dumper *dumper); =20 +void kmsg_kmemdump_register(void); + const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason); #else static inline void kmsg_dump_desc(enum kmsg_dump_reason reason, const char= *desc) @@ -112,6 +114,10 @@ static inline int kmsg_dump_unregister(struct kmsg_dum= per *dumper) return -EINVAL; } =20 +static inline void kmsg_kmemdump_register(void) +{ +} + static inline const char *kmsg_dump_reason_str(enum kmsg_dump_reason reaso= n) { return "Disabled"; diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 057db78876cd..cf4aa86ef7af 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -48,6 +48,7 @@ #include #include #include +#include =20 #include #include @@ -4650,6 +4651,18 @@ int kmsg_dump_register(struct kmsg_dumper *dumper) } EXPORT_SYMBOL_GPL(kmsg_dump_register); =20 +void kmsg_kmemdump_register(void) +{ + kmemdump_register("log_buf", (void *)log_buf_addr_get(), log_buf_len_get(= )); + kmemdump_register("prb", (void *)&prb, sizeof(prb)); + kmemdump_register("prb", (void *)prb, sizeof(*prb)); + kmemdump_register("prb_descs", (void *)_printk_rb_static_descs, + sizeof(_printk_rb_static_descs)); + kmemdump_register("prb_infos", (void *)_printk_rb_static_infos, + sizeof(_printk_rb_static_infos)); +} +EXPORT_SYMBOL_GPL(kmsg_kmemdump_register); + /** * kmsg_dump_unregister - unregister a kmsg dumper. * @dumper: pointer to the kmsg_dumper structure --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 D805A27D79B for ; Tue, 22 Apr 2025 11:32:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321545; cv=none; b=tzEEOy9/trrVQHA8Qry6KE+zWoVHQ0+N1ygnaf3d1I1RceWFkZoiplknrGbY9euCu2pTvJhGYsoerzPNqbsbHEZ7pZKczuQw15Y1FtH2nmwxkbkNqXt8rwPZP+EUkGXB2onysigdwRJHt9/KECIW9xw/JZ0iNxnfzrOvRniyGiI= 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.52 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-f52.google.com with SMTP id 5b1f17b1804b1-43cec5cd73bso32448015e9.3 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=qtWWUbyXvLWRxLITK5IWBQihk3CTkB8PZGjs1V5s0/Xf0+R4H7TgUqOC8EURgAxKv5 pSu1+KNzBPpJHNxtea1UUXG5N7HOC1C6/yENQ6z3+BxWDLb0NrNA07EMZmWUIN50V3rt oo7+78Gk/djdFqnPosVbAhnfl4uv7dhzUN2wBhzcNQWfWNYCiTTJHnubxsJANHXZ0Fg4 cGWhU3gpCUBMvzq+aw3fIkJCgw2VKwj6AsvzmhUk4H0a6l5ww+3ZnMWzBzLJFPD2OngK UOrmCbUNeE4lz7i3v5fmqe6fEziNyuypjamzE4PcbHsTsm6JfmwVVneUegXXo6HyOe9K RUuA== X-Gm-Message-State: AOJu0Yydj9bruIcaR26Xgu2rF1wPIfu2B14MrRo6UqBcmWGsIr7+O2Db o1FJEOIXFlhHz3SwYmQVcl9jvF/r4UnSFihGPdGQLlxvTSL2C/rcOkpSGJRC/AW3pUBTkl93PEc r X-Gm-Gg: ASbGncuofTATtswFR7rQgeaM+egzDedyydzd4b2xFWELPEkWMfbA994mNAxiylw2xkq qeHM3eivu2/iIFbwIpvHwWobSwjo/UN4EUViLpXig2bGNQknXnYu6t/7gtuE3vgaJU2LclLJjDG bz2cA7G6VuOGiCTWtWd3Z1/DOSXJZIleXZJxW5VGIgjFuzQLfCsuYjEdBhXnhm5yLOf8VEjw3on FVJXJn2snbkRc2/huDScj3exaTTYwkGgUz3o78V9V7H5k9jnNc5ta34hG9ZfZlD6x/BCUlEk6My lhE7sbsPxbMwcu5pdG+vZX/ZeZPW1NF4qZi1lcMyqF/srVbyu8c+ 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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_co= reimage.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(); } =20 static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx) --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 7EF0927C14C for ; Tue, 22 Apr 2025 11:32:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321547; cv=none; b=aEfT7tPcZnyzRKTY+/EWVbUn2iPHubwfJACW1RuqqX+YOVRWYLjQI/u1r3EzslgAqa89QFIBNELiOA6Zkw4tNE3sVeuKYqPodwzQDxI/vBHH3iyDLMvKV/IPAkf5qA06RDbWNJW5of5hYQ4Z0brM86W6cKyS/Y4wpsr9sLUOHdk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321547; c=relaxed/simple; bh=4jPx8WFc9syd9FZTvpteAC1u4ZAz1jUbRb8VNBeqebI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZvMnzPmQlCfboMZinS8mRN8lMWaMyls8rAOs2eoynk01C9r5mWivcwcwLv+3Vfbd0on8r1R0uj1Yz4KC5Xq5BprUwt3X8Pp1E6r51yE3+svvQLrj5/pjmIwzmrGD5ugvIzIgrn8hFq/5Cu4kkvSUMulolGbH/IXlLI72HAgo0Ns= 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=B1a7hL/R; arc=none smtp.client-ip=209.85.128.47 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="B1a7hL/R" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-43ed8d32a95so43437585e9.3 for ; Tue, 22 Apr 2025 04:32:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321544; x=1745926344; 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=05bSEWwjsFQoObkjxJQo+JCFAb3Ry4oW7GBGxZnV2N0=; b=B1a7hL/RbR/mHHAwFin0SsqhT35t2zsp1Y10DdcQWhryPS3mHpR8CoHFA8mlw8WsCN vKoGwMxR/qQuaLoxGXhUoUYhpkC9i4C1q7ElszkIvXaWHBYlukDORSeMYqIn8/5A7IXq abmubrCtkWqJjwFtog7f9V2TPf43ijQnS1GlOn57q6gGK7nxMwVoJpAj01dQ8xGnVvoD KNQ+BWNNMKEBt1R881SJ4NFO7NXIhd1u0RGlyG6KFCWp3PZFiMQvcd+NKrJaW/Gw46M6 g0g3Po+yUsAaDaH4fdA7NcjsMe6LIoCSynAELyecJnwuMuDqeL8GH7+QZVF24dofPRmP DcCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321544; x=1745926344; 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=05bSEWwjsFQoObkjxJQo+JCFAb3Ry4oW7GBGxZnV2N0=; b=E6zKtD9DPicjx1qRL6svvCbqpXCW7zdyo2VpZE0QGEnMx9jVeaw+Eg8X+c3V+qKwfF zcaoSzVOipIa51KnyrUTK+Qi5vW1rguH6jv4FW0QnCuV0j8y0q3X4REUceFK1YS6yPg9 SYW5y21jRkV4sgdiKM4Jh+jD8ARXBEPKF/d2EOifIxg2UVA/kkmcIaVzSmv6QYdlr3FR dRMaz/Fvx/QJF4aFWATOaMhVmH/WgOE8Jq4EZQ9il3bkXCv4QeLwsmIha1X8KmZ8RFk6 kVLUNtvlddTUGulSSJYi8Cus9vIfSs2GqaBgWZN0wAVXx2QflqIUhL498OUOmCD9diq8 VXXQ== X-Gm-Message-State: AOJu0Yz67lJy0TiVcujpTqEkPGHBkQ+NbFdZ9TeEcS7+yXXFnadIjtfn hI91qBhGGdwiNPxWNFMvS4SucDsNLotZC9pGKJz+p/fLnoDo/u70HYI3+BXrxHc+r63Knh/xFqC 7 X-Gm-Gg: ASbGncswc/qu/inTtUGhBwImQmqKxU24AtxcXTAJ7WoX6xns9o2pN6cJNRvk5ZK/gq+ 3cV55sKhM0vvA5mEymTMP126nXfdCjM6dz+g6zlyCeWmtu/Z0mEwlu0EO17wYdePSfhwgrtPxdR 7anxnpy6mUvvKg5uE14FOCfeSECZIHHH2RmJYELHa0tDQE3dF/XZZpZPXWLc6106WcnuLPiOeBq eJUgVmHjVN8y9elhQpuyIKxr0VwU5IFyNJgpMF8Rsg5cJ5NKmXfQnp7vGic5Z1V4OM5resLQZVC Tg8zggGJdmIPVw/sQFUg2X7ujxb0QEOCWAIh+cyTASux17r7om0o X-Google-Smtp-Source: AGHT+IGsfI8qZKkHCIu00QTSDHfliRxo6YWhSw3Jfq+3jp8jtX+qjyzyKnnSEeessnTrVraohm79QQ== X-Received: by 2002:a05:600c:3d08:b0:43b:cc3c:60bc with SMTP id 5b1f17b1804b1-4406aba7ecdmr157805795e9.15.1745321543774; Tue, 22 Apr 2025 04:32:23 -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.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:23 -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 09/14] genirq: add irq_kmemdump_register Date: Tue, 22 Apr 2025 14:31:51 +0300 Message-ID: <20250422113156.575971-10-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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add function to register irq info into kmemdump. Signed-off-by: Eugen Hristev --- include/linux/irqnr.h | 1 + kernel/irq/irqdesc.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/linux/irqnr.h b/include/linux/irqnr.h index e97206c721a0..136f0572ad78 100644 --- a/include/linux/irqnr.h +++ b/include/linux/irqnr.h @@ -9,6 +9,7 @@ unsigned int irq_get_nr_irqs(void) __pure; unsigned int irq_set_nr_irqs(unsigned int nr); extern struct irq_desc *irq_to_desc(unsigned int irq); unsigned int irq_get_next_irq(unsigned int offset); +void irq_kmemdump_register(void); =20 #define for_each_irq_desc(irq, desc) \ for (unsigned int __nr_irqs__ =3D irq_get_nr_irqs(); __nr_irqs__; \ diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index 287830739783..ae29165b1f1f 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -164,6 +165,12 @@ unsigned int irq_set_nr_irqs(unsigned int nr) } EXPORT_SYMBOL_GPL(irq_set_nr_irqs); =20 +void irq_kmemdump_register(void) +{ + kmemdump_register("irq", (void *)&nr_irqs, sizeof(nr_irqs)); +} +EXPORT_SYMBOL_GPL(irq_kmemdump_register); + static DEFINE_MUTEX(sparse_irq_lock); static struct maple_tree sparse_irqs =3D MTREE_INIT_EXT(sparse_irqs, MT_FLAGS_ALLOC_RANGE | --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.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 F15FA27F4CD for ; Tue, 22 Apr 2025 11:32:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321548; cv=none; b=B2863T1jTda50de6KSPIkDaTTh255rYuT1qdGCU680/DSnFH+k+j87VAYUfBo+SQpnzGPWM99/H4+SGNFhQaa/Z4pAPccicBQMN2PI3aw4xy/CT8Mngnw51byoie274XHt03qEaj/wgKCG9WNOTnpWG/hdArhbi/mJV3+XfEwAo= 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.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="quvFyP4o" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-43cf628cb14so44212055e9.1 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=gyGtWjZFqcwh4eTNzSsvJX4vSfRL4ZA4T3yY1tKwF975zHdWZs9AC8ppxrRm90Qlp8 mZUQqPYtsbzc7Gu+/5Thn3FmfjflHM42BfZes41Z4Q45FrwwfLeNNhzNKIJC19bsPEZY DsJNRJBnrQrx8r/WMusOmdJLNz/8vJB4bcU8azkvDDbdHoSLgFZDTiMg+t1MwJf4kfn/ NQNHc1ZcvLTxt++hCvssCqImu+e/azImFncBhCsQC6DZEJOT3qOaTbKw04iavuHwNeNx Bxx/Ic3Yv5ruqV5VhUOvH+ICZU97iZwdtlZDQPnargMXw1Kn8slBcvV7SkGXXqJHvSGp fbaQ== X-Gm-Message-State: AOJu0Yzws0ntXUVGC3ViJEsQHDZpeg9NF5/8UrK8r+bHZRKtt2BR6VSP pM7Bj0JzdjkrupPq6eaZ79xG7Gqg4MRvZHbKqysxt0GwV5G36JZbWsvidvaYC5MWTeJ+UYU9Ub3 W X-Gm-Gg: ASbGncv1/8E63r9zW4dOMsNHkDnUoaMZbwhvECdi8h8keuNB9Cnopu1YNXQpIJiTgdq gX6eKAnn/+JRRGNqFtURYCfZTZ9JHVg4KP+tzhq9xkjluETghZmQemQxMI5Vf2UCGz8ZSU9JmgH i95HI73457ZU6MsJXK+L3q13fRzhBIJ7cylCAOOSNza1fSf17wJGQZepSxatDtFc7pnFsXsv06l 9t7yFiZX5kyC+A0wvS3QOgAUaNatxUfCyBWf6ljuwbDxFJru7sIMHAcn4rYNNFQEl740VS6XsZO FjhP9dte6Yhhi7jtUDfH07n2VfXIR9Ph/ybj+dAK9FRS4TyJfBXh 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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_co= reimage.c index 077b65cae4cb..2144edcc6157 100644 --- a/drivers/debug/kmemdump_coreimage.c +++ b/drivers/debug/kmemdump_coreimage.c @@ -2,6 +2,7 @@ =20 #include #include +#include #include #include #include @@ -74,6 +75,7 @@ void register_coreinfo(void) sizeof(jiffies_64)); =20 kmsg_kmemdump_register(); + irq_kmemdump_register(); } =20 static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx) --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 92B2C27FD4F for ; Tue, 22 Apr 2025 11:32:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321550; cv=none; b=FTHkB8esztcgExfWeY7rFa4hB6N6g0akIMUvnWEKG4DIZkQiN0EnAd0uA4wbiYlnC95zvayqTcsGBsPaW7ZyncKPSVBQK6IgAa5Nmb4RvHb3AvnPtJUSywLlMrbq6bYPM5fXZ5JvDBKJgG5+kbQYP3W4j03+I0MP87AG9oxfC5s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321550; c=relaxed/simple; bh=dQBWiaOBeGSAz3TktHG+f+M9wJ7RgZde2mn2/2XVBIg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uVPrTUBQ7FGtUuFX0/rcJtOm3QfZXTlkFijba2L0EHpi3swXZ54n6MQHEoozKEvpmNTm4ZAElp+qSj3Uow318s8OpyiEtIDSJbsErJbdTDaVyZXaWkVJaAn+oxGyDj7gD41vpNLA1CIMJkwdIxkMurNoePQaISQtLVxKI8+k+MQ= 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=ARgh0SFr; arc=none smtp.client-ip=209.85.221.53 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="ARgh0SFr" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-39c0dfad22aso3535493f8f.2 for ; Tue, 22 Apr 2025 04:32:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321547; x=1745926347; 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=M9iDb6dJHPByHFRUfHN+WUxFJ05ZfE06RQ96hiEBIf4=; b=ARgh0SFrfqZAan+la19+075iqfSj8fVFSeu1ZetXoG4zBvEK9fkaYgtP6O54s5us0x Gh+UAZsGvKpVpHUdDs/KBZveylDcHs5RuA832aqh7AImxtOZfPD0sP7nZLvFASFO9aM/ 9/6uHQCjPGsP3L/2WNGcpUpyCoFlwrtRNP+f9HYcwxjHRAfIG1Xvll+vI8UUxBDS7W/G 5B93pYlwD7JPiVZFX858cfv1OxTOvWFWGj3eT3kKKSmpmNsAToxwNsvJLWKwvTT8MFrj Vmsn7y3eD2/ehhfUeAXgR8HVuFnPiy8wnM8Gmxy+n42Chf5/id1lZxOPmjQVNM0mWu1D Wkjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321547; x=1745926347; 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=M9iDb6dJHPByHFRUfHN+WUxFJ05ZfE06RQ96hiEBIf4=; b=PYlgXyiT2t6rc0Z2XMOMYAGY6bOz4BizZhKEK2v1pN0fbnMsZ+rFsPlC2ECp9lUJBf BqfJo7/dRCdWjSZhBnZ4gLKedaL/a3K+52PAKGO25ldLHBY6v9ZukbFXGT0yb5KZh5e7 nhDyap+FAsimojRH2qhLNhWAx+/18ev6oQWQywxelGlsp2dhkc0DiKKZ2P+xbVXNV/9Q IePplw4Xof24sc3bMj+XqN6DUI4uwt84/bpHL+2j9fyWFnpziynjec+vXXTth+M6qm9h CWsuHpqP0ZbAwrW8VCVw1o7u8D8RhgLpWYBrhrsXY7Vi1aKwuWUg5UlvPVNmCx9A8sry Rawg== X-Gm-Message-State: AOJu0Yxaa0cMgAQwVUMIfG7VE/c0hALV0MTe6pejMe/KupvGJjuGLWe4 ZUe4+bW6Ua6HMcxE3+LC1FzohKLsiZLJ7u6z923oz4dK8Hdv+5PpNrI1dBTsWOcAwP3rbcKfZsU G X-Gm-Gg: ASbGnctCBIogE6xAd/EBfZruqyrHmrjSFQ9W676UmoQZ10LCjLMI+XNIq4tUqPXR/JV UhdsUW8LbuA8dtS09sTWm6uBAeMhpAHyRzwBpiV2ngbfITMd+3mhF3vmun6REi8/IfA26NlhfTk tPG33U+o7KOEwSsKo7QR3aIkoMHXgv2tJSFshCMpDlm8+yICDMGmXmgCK1JQS1yxyxR3Rp/YQko 6YjLwBZ+pxy+q0AtIRja6jwfWjPEjOirDmQUZvtrPhLKbvZlOnNzW/wwQLcjfGmvcofcot4yeXX FqDlsQA0mQ2RbZSoGrcFziiplEqAHNQTTLIjrlL7285aVcA39Y0Oo3UqF3FRThg= X-Google-Smtp-Source: AGHT+IEcklRua+TIOcJ9V56azXwxEY9ZBfbluuMXCoJPkRtrWwdtYmmWeeqPQxiQXCGvLRp7yg+S1g== X-Received: by 2002:a05:6000:1846:b0:39c:11c0:eb98 with SMTP id ffacd0b85a97d-39efbae03admr11898357f8f.39.1745321546877; Tue, 22 Apr 2025 04:32:26 -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.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:26 -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 11/14] panic: add panic_kmemdump_register Date: Tue, 22 Apr 2025 14:31:53 +0300 Message-ID: <20250422113156.575971-12-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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add function to register panic info into kmemdump Signed-off-by: Eugen Hristev --- include/linux/panic.h | 1 + kernel/panic.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/include/linux/panic.h b/include/linux/panic.h index 54d90b6c5f47..42a24bae218c 100644 --- a/include/linux/panic.h +++ b/include/linux/panic.h @@ -96,5 +96,6 @@ extern const char *print_tainted_verbose(void); extern void add_taint(unsigned flag, enum lockdep_ok); extern int test_taint(unsigned flag); extern unsigned long get_taint(void); +extern void panic_kmemdump_register(void); =20 #endif /* _LINUX_PANIC_H */ diff --git a/kernel/panic.c b/kernel/panic.c index d8635d5cecb2..a26c9581e70a 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -38,6 +38,7 @@ #include #include #include +#include =20 #define PANIC_TIMER_STEP 100 #define PANIC_BLINK_SPD 18 @@ -589,6 +590,13 @@ unsigned long get_taint(void) return tainted_mask; } =20 +void panic_kmemdump_register(void) +{ + kmemdump_register("taint", (void *)&tainted_mask, sizeof(tainted_mask)); + kmemdump_register("taintflags", (void *)&taint_flags, sizeof(taint_flags)= ); +} +EXPORT_SYMBOL_GPL(panic_kmemdump_register); + /** * add_taint: add a taint flag if not already set. * @flag: one of the TAINT_* constants. --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 2AE63280CCF for ; Tue, 22 Apr 2025 11:32:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321551; cv=none; b=Z8io/q9VJcLGXkYHUfCFtcF9V1lZGTORed65G+PtDkwJiYzvCMcyGjzc961G53fd9Ke9K6jBlkYPKRBZRJBwE5Yb8QABmVl4ySVyr4wFE9hKR07Mf90pkgU/vi+hiZro1FrF5f1KG5K2SVL5wDcmowy0V4D7Bp7qoIqd64C/wwE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321551; c=relaxed/simple; bh=ZFDuP50cM3MaZ7k24hjB0hKAUp2z1/JdcCExNP+BxkE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YLRJMx6EB0QgesulaZqabCwaJjivDrsKn8V1u7tqBnhZjhhUiTC+7xfrlLZY6ZFDDuTsmY/sc3El4wEZvLH80Crh2lZzplj2H3VzWb6CxeyjVHMmW0q6jXjOdRuI0QXIgbu+S1tQ8oyATnzO7KGnehr8a9evaOQ5Vi/kdhfppWg= 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.54 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-f54.google.com with SMTP id ffacd0b85a97d-39ac56756f6so4976660f8f.2 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=h7AWYlPFrVqJ7IBguPF8WVisb1biq6oqCiywRQT5mqmBX1e3jp1sNQckILObznmcKC HXmnA3yw31/eNO5PtI1JSZHd32sboaw3XV9KaRuZQVb8iMckgThrkfBZBRxJKk5MqRR/ aJfvbNQVQk/j+P+nvZCHYC7jUcCoOKMJtaFACZJt6FTXJfg24qkMrG39BEnHTzFL/cug OKbWjQ8wyVBYHDs4+Mgr6PQRWbGdrTPc19lFmONaHrFXgVgBt6MZHS057QGW50i6xKd1 gt7ogBdzkjS1kkVEOLYfxhO0cfdUysjFJDmSwbpW/reCjdAJjaaXoddFxRwLSdCsXuA8 MKXA== X-Gm-Message-State: AOJu0YzViIL3OFbZZLJV5FddfYUHQQ6W6TSMFJcfCXGkWVC8PY6gY5b/ Eubet74sLYHxL5mtkhBKPJzzNGbHF3WMtGSAlNxfqUxtrhwXB5cj4FO1XZCi5pgGoI81cXRNOmK x X-Gm-Gg: ASbGncvAe0P8uw/9kbF1p2KTyDgVOnGeF/gYWbmehtME/8GBcoJPbhSwc+Kc08bn8Fq jEb2OxLNng/D2vBseFfxs+Jm96/egj4SADd13Zpm3NaTpItFNEDzRYjZT2Acx9cal1Tskzwj/eK wyvYoAv2TLdhUQ4d0k9+o81Dq1vrGArYJ6qVh5RRtN27gsGKEn6UIisN0NtNIPBF6ROtT5Rsj2E W3hXT0BwZ05IwVi4BMLZ/LZdm3xPXL8RKZ482xGbXnO411/z4mZcoWP21tC/XA7Stzrl5dMFz24 LkTVEvwiuVQsz/+cr5+T3YDkM1ZgD6jcLPYq0rQcv3JXXXgk7PIZ 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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_co= reimage.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) =20 kmsg_kmemdump_register(); irq_kmemdump_register(); + panic_kmemdump_register(); } =20 static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx) --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 DF39028134E for ; Tue, 22 Apr 2025 11:32:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321553; cv=none; b=f9NzKQQebpFcxhIQQsP7nlkenj7hdnP8MZhDYaIJuxbk6+qNcWFvXRcC9lhuuK/oyrCe79zQHjaS6cyl9GG9UofkSmyAhzn2ucvinum7UANnVuRRhtz07pgaHr1xFyfTBLcMMT9saWctqPqj8vU1N5S7YUHQUEjoRPimKcBgpwo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321553; c=relaxed/simple; bh=qwn4Lief7wgubEepkWmBxUkY4oGRDY4M3wvf/KtKAN4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y2Y+Pzxnc0qdcTeHetGdaZIFE4cN/UPA7rU4tx7Rx3NEXeTDGYE1vTIGGXJ6mkyjf2RW6tY58O4r6mux871L5cWAxDNjV7Kibcd6aHTzazPqogHTW13SHbslBtCHtZJ+hwpkznd+jVE0/xhN5vkPJZQxI2QWGnnVYhpLAr61EWo= 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=InMJhGSb; arc=none smtp.client-ip=209.85.128.53 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="InMJhGSb" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-43cfe63c592so57784385e9.2 for ; Tue, 22 Apr 2025 04:32:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745321550; x=1745926350; 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=cvmS58q+1N4NLUDG3LIuB02O70ZoHihiBJ1Y750u6aM=; b=InMJhGSbSf2vRyZy3H0hOHFGjxMh5v8/b1pfyuuNRneG9ouTMrkl5sOl6d/o+mW8jO b4nRmOid/Fgd21pftd3i2zvebOGTYpjrm9uFUzNzisOjfxpB/I5LKy2voJjOAfAq1qDw 8iWhTQ9LwnYqJatLWC4SsyxUGZ2s6pANa/9aAHSZjC+1/BTC4lZDPmgwpELqw0i5Hvkl 2n1uOm6F3ngwHiX6t0b+c4GQjKH6cU0KSWF6Dq1WIaj/q0UpLgu0FiZG1n4NOUG1JmyK 2EBlZN1zxpKCvOH2VhmWkVuYYzgHSB13VRIyGa0HMlf3m/5lpWpDbHrXrgwBzMvO0gK5 lyjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745321550; x=1745926350; 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=cvmS58q+1N4NLUDG3LIuB02O70ZoHihiBJ1Y750u6aM=; b=dgU/Ow4BtHbXfRlxVCVZyt5ZOKMtIMqFe1ZrrPYSp6R6M+VyUTgW9ImXGAdrWF/i8T lhSSanmbovQVuc8+KZP1aX66z7kRsw/nTjlx+i/0HjgkZg47Mv2/aCnmR5SVnPTFIL+6 pX59OkZxrggzIIAmGUJ6cAJb5FwroSlcbFxqDH/hkG9CunkWAmOiP32vw8X1blBCnZNu 6wx3dUvC1CNUU9zVHQRmX5ce4Rnh9QPIwIkK5xX5b/++6tmXGzc7qghIARnV6OwDYyu6 JGJJHka0pGK4Dm+wWDwTJumU/Lpq7rMmqzlxWqd9HRzMJVSGvEp4wiwX3jcU/ROkgoq7 35zA== X-Gm-Message-State: AOJu0YwUFJDYVaG/LH2a8r0SXBJPE9k8N2ra6iiYK8LkeVi2NT4V+291 b6HT9MWHnT7Tf4FC89xZHVxSei2ryLpDsciqVgdIiO6cUPozUp2RFdakuqFel7M2NaRkApvPhuS G X-Gm-Gg: ASbGncsLxcLI+dsfMTowuO5bCOoedWN9Es+/+MO/jyPYfyLE3Wce7nVslZtT9XKf1/u nbZ04s/bmw5wOZByd94qQaVPUFj5WdErrpMDwXfOLKxZ9viPPw4XkdChC59dIu458mfyDXRfsuy nwlPM80RyTv1+sJeSofVs4q+P6SoOhaphO6IeIXOcaZQYklweug/9CnXtR5i+ineQtvPcJ+MeUw HYRiRsBBrjGNH0Blmwkao0pum1mmDvRZ0S+K88FP8pvJn9NNIha6LrZR11dSfxaHuyrmoU92bOK Ymi6REcVdwy1tspmIJbM1fMDw9Nyyd9xwXI1QQ76mIE94Y1NXM9c X-Google-Smtp-Source: AGHT+IEGyrx2mGjKmUnsFcIC3SpcjXAJAkCfqaXdm/X2mvwM46sWClIbCzBR8wdxshvHGYRPAtMSRQ== X-Received: by 2002:a05:600c:1e15:b0:43d:82c:2b23 with SMTP id 5b1f17b1804b1-4406abfaae3mr114731845e9.23.1745321549987; Tue, 22 Apr 2025 04:32:29 -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.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 04:32:29 -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 13/14] sched: add sched_kmemdump_register Date: Tue, 22 Apr 2025 14:31:55 +0300 Message-ID: <20250422113156.575971-14-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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add function to register scheduler info into kmemdump Signed-off-by: Eugen Hristev --- include/linux/sched.h | 1 + kernel/sched/core.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index 9c15365a30c0..441f5a6099f6 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1820,6 +1820,7 @@ extern int cpuset_cpumask_can_shrink(const struct cpu= mask *cur, const struct cpu extern int task_can_attach(struct task_struct *p); extern int dl_bw_alloc(int cpu, u64 dl_bw); extern void dl_bw_free(int cpu, u64 dl_bw); +extern void sched_kmemdump_register(void); #ifdef CONFIG_SMP =20 /* do_set_cpus_allowed() - consider using set_cpus_allowed_ptr() instead */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 00ea6f31973c..8615fd02d4db 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -66,6 +66,7 @@ #include #include #include +#include =20 #ifdef CONFIG_PREEMPT_DYNAMIC # ifdef CONFIG_GENERIC_ENTRY @@ -8672,6 +8673,12 @@ void __init sched_init(void) scheduler_running =3D 1; } =20 +void sched_kmemdump_register(void) +{ + kmemdump_register("runqueues", (void *)&runqueues, sizeof(runqueues)); +} +EXPORT_SYMBOL_GPL(sched_kmemdump_register); + #ifdef CONFIG_DEBUG_ATOMIC_SLEEP =20 void __might_sleep(const char *file, int line) --=20 2.43.0 From nobody Sun Feb 8 13:45:23 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 69C5B281367 for ; Tue, 22 Apr 2025 11:32:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745321555; cv=none; b=awLdFts70IuUHtmXmlxqbqICsPFYUlwiodZ46P5CNLNwetiQxUiUDjbXwnjfFA+xC+xO2m5NMfto0OJHTxBA+TiAO0gn5rgiVedzAKgSCmCWJuGcHucsUN4JOGycKf6/erzC6sezJoMxGqZt1uID4016EDxbfNKtRQBIdo4UF7o= 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.53 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-f53.google.com with SMTP id 5b1f17b1804b1-43d07ca6a80so24402605e9.1 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=EDXNR2u5IXnmA2RDMgwbcdbx7lbypmpElOKXjrrtsLWf5Q9S/33Lp0TP3Nm4GL7QGR 6x70pyLBt0sA22OEUxSKAc8JxVIjKHAifHhcub3bkJsUyAVg5OaWtool1PL52xi256QY RozJuWhzGYLo8cMaBABKxXtDPRLhCeJ9WgTlC4h1VR4grSmaG/PYlJYbSyXwUcDmHXnc zWuc2fOEA2iSRWR9ZMCyFKfeTm/5L2CNT6p48w8z0AAn6tOY3lvK5RkTYF+ZedJKKsAn WPx72viQVaACOJv18F8sLN9uK3sfAWCa3dWtZBzllYJwBazU3fcWDVPbhh2oNFV3V51k F1KQ== X-Gm-Message-State: AOJu0Yx0c5YTq0LMVBFa0SR+NoWbmXPpnbI/nfvRk7kenn3jEhjZf/S9 q75N+vnkgg6iXI+5jATqDGm6VlbKeibdZeBo8ykXqhHNSLy13Ota67+Dvsqct3kQ7KUUlmKTgWH y X-Gm-Gg: ASbGncvIoznHkFFRlhyTw7xogw4n8Pa98vrCDMMR5Egj5B7va5T4Pn+JFC3tZQ2cqM1 nlBTW8Qq3c2CN4QYNNvtkHwOJSmj2jAcCjMshnZPou41ymCVCpRbPSQwSokC+81Uhu3KgsgzPFZ gCNA8Nu16Gx6mThsFJLAVixAVBbtzRUEJl1c7xtRPI6mQgMERpYx7Stc8nKHl7Oj7R2g6yjgafA Pr984m40tSxciA/w8qiYoVUrEZFOww8G8gOhSf4PRXWGAfKx/AokLjIsFI5lmDSe2kz9MtFxGhR tapw3AgavguKL83b8Kt3xp3we8qr/SS7DzI/9w+OSykE4kJ//MCR 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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_co= reimage.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(); } =20 static struct elf_phdr *elf_phdr_entry_addr(struct elfhdr *ehdr, int idx) --=20 2.43.0