From patchwork Mon Sep 25 21:27:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Kinsburskii X-Patchwork-Id: 13398421 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90DFFCE79A4 for ; Mon, 25 Sep 2023 21:27:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C07DB6B0166; Mon, 25 Sep 2023 17:27:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BB6008D0021; Mon, 25 Sep 2023 17:27:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A56E38D0001; Mon, 25 Sep 2023 17:27:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 906B86B0166 for ; Mon, 25 Sep 2023 17:27:52 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 6D1751A0701 for ; Mon, 25 Sep 2023 21:27:52 +0000 (UTC) X-FDA: 81276407184.19.2E394BB Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by imf24.hostedemail.com (Postfix) with ESMTP id B578A18001F for ; Mon, 25 Sep 2023 21:27:50 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=linux.microsoft.com header.s=default header.b=Ij9r5NNd; dmarc=pass (policy=none) header.from=linux.microsoft.com; spf=pass (imf24.hostedemail.com: domain of skinsburskii@linux.microsoft.com designates 13.77.154.182 as permitted sender) smtp.mailfrom=skinsburskii@linux.microsoft.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695677270; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=qnZ5Xu4spnd++5roGWKZwrvGaezBYrs5S2IO+MMawnE=; b=gewQyCghkoIqH3ZadeSEQvuOqFQkIuvAg5v4If12EWn30TnVtQCKOU6Se4zAG91pGb/Vq4 gQVqBtFyiwet6SM7qhQxK7CrVZTHMX7yfKkdc9QoPbAh14633aXvvEU+knl3eptJlxGSJG 6bD/eXFCnYBKd/zi+aBVJKQP3R9iS5w= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=linux.microsoft.com header.s=default header.b=Ij9r5NNd; dmarc=pass (policy=none) header.from=linux.microsoft.com; spf=pass (imf24.hostedemail.com: domain of skinsburskii@linux.microsoft.com designates 13.77.154.182 as permitted sender) smtp.mailfrom=skinsburskii@linux.microsoft.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695677270; a=rsa-sha256; cv=none; b=i7HNqGqRnJKrSXx818ux46EoK3ha3T5ffB6eAWS07ZPjKmY6dDat7P7ACqjh02qF+mQ4oK tCiBQXqgPj/UVlyGUchQ3VXAgyqytFUwBCIaKStVUa40+k0xCvK8zJCX/FlWqRizgnJdAG waDONfb2ZVp5GwMiytfLCnuEUBgmk8A= Received: from skinsburskii. (c-67-170-100-148.hsd1.wa.comcast.net [67.170.100.148]) by linux.microsoft.com (Postfix) with ESMTPSA id 2FB66212C81C; Mon, 25 Sep 2023 14:27:49 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 2FB66212C81C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1695677269; bh=qnZ5Xu4spnd++5roGWKZwrvGaezBYrs5S2IO+MMawnE=; h=Subject:From:To:Date:In-Reply-To:References:From; b=Ij9r5NNdZTlutCpHM2H2+lh5bP0m8uJe/cvx090MoIIrC+5VpAugr4jsfJRiODw4i 7u5DsbyEiy95Pd40PgtvddqZ4ekhQHgcKxe0hY6A3ws8wHWUG6bSepooE3AxAkwafD gHNL+oOT88IPNEs0HH5n/h0TUJ9hrwy/e5M173N4= Subject: [RFC PATCH v2 1/7] kexec_file: Add fdt modification callback support From: Stanislav Kinsburskii To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, ebiederm@xmission.com, akpm@linux-foundation.org, stanislav.kinsburskii@gmail.com, corbet@lwn.net, linux-kernel@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, kys@microsoft.com, jgowans@amazon.com, wei.liu@kernel.org, arnd@arndb.de, gregkh@linuxfoundation.org, graf@amazon.de, pbonzini@redhat.com Date: Mon, 25 Sep 2023 14:27:47 -0700 Message-ID: <169567726766.19708.8904010689974887517.stgit@skinsburskii.> In-Reply-To: <169567722094.19708.3583735425859054859.stgit@skinsburskii.> References: <169567722094.19708.3583735425859054859.stgit@skinsburskii.> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Rspamd-Queue-Id: B578A18001F X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: e4ua4hkjxtkfd98sfhjmxcim8pdjn8d6 X-HE-Tag: 1695677270-209069 X-HE-Meta: U2FsdGVkX1/KcCQNNvJwKuSPuv4F6V9OV9wbA4w4kUO0hfUNmkK8Nca8N79gTIK6qsFaXObtmQz+bXf8jHNU2DMHOLrGfilI2xJ/JA5mNOEQYxJNq7yYnWxd/N+54uXFiHSV7EjxUZxP0RkoFSXBg2Rg7zvXI37sicNSPk8jDsUblIV1pq3YOsWvmhvUMrveA5ajbKwFarEgmDoCJTUNbtgya0niKg5aeNGVhYJvJ5nKubeAjSh6w4Yh2SHCV2CqZYGzX4XC1jKI4RvifSPsHT4An5UUNLk47pB5ubRXm/oTsciaTx+gLjFiTZjGDC1D45pfLQeVOewXPXyN5H+/iFZs+216ox66bjnXhuHmvtNeTeAJchO4FSRcJNSb2TPXJ4cUpSeLtOewvU74MV8eCZmJUHWrkORIEfPrDTQ5M2eJWiwdA4DzwudV1xk9z5BViGJNUgtM/adDFZkD3RTaDtF0gz+DcIVKIGK0eXfp6D+rEL+/mMZDxb+z1zlCOgjY1oCUDWYTjw76Wx6XrskIloc2h5oJNWSQ5ALfCdV3Vr/LU211VMNsYi6nlHreg2m2Zr6+Q5P+aK7Nf2j/4Ueu4LnNs7YdriXECjcXe3Caf2q8Y06fZGVqtLWWEYHn+P5KIsGqq7Tr/WgnrWRJRTF1J87agqYVFuU2AEtK4Byaju5D/sgww9gMW8fm8G9bGIpcVDTb6TjqugadrGu80QxhmkpK3TULoaJbL0xlvN1i1gJ12SXuP7lglpvQqWGSN7ChOz089aTSQ83cKihKipye7VEgZQoQRXag0Fbz2LjnQTOGWz2JSMACvBVi2Q0p+wX9SQ3MGOqgQHYXqpaCyYuXFu7JCT6c+xN3BP7cUWHyKhtVjkOFz2XWt7O1kD+vKStxr5IuVOWjQJrSKutXrfApusmhSainw17uXMU4WdGxKNd7AZ0EIQoe5HzZvJNJoFguY8CEnWyzlSznzH/jBKG 3zzwHCOp WkrjrxccYo0x/ytqxqGlFXS/lzs2kOKhNAcDTR5ZevLrpQbXPipmVjq1/h7IkBRdEDHbq6RGNQGu1mitsUUGkcy1pJkG/2Sf8PNZHRB1JaJpJSM9K+Jac/u6vbVunmeUxGQK8sB+e5wBsNXgCLuX3WK1kf4BQruhP5dnXMuHsBWMKTiOI/DwWG98IeI0SfNUWrA/kD0jIiuWYtFYT10j4c1e/HQwITvCBx6MkfKjySTdgqBP0sBD9FRjZPDjHiyktlFNfUcR/MAPWxA+IdyjR2YykTD0rkJx4vGSJVm7zZw+1exi0zXWW1WxgG6L2o3l0awTNoroz8afAJ9Uv1UGfkjWjFw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Stanislav Kinsburskii Introduce primitives to: - Register and unregister callbacks for flattened device tree (fdt) modifications. - Invoke all registered callbacks. - Check for any registered callbacks. These enhancements enable the use of a device tree to store kernel bits. Signed-off-by: Stanislav Kinsburskii --- include/linux/kexec.h | 7 +++++++ kernel/kexec_file.c | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/linux/kexec.h b/include/linux/kexec.h index 22b5cd24f581..c9c70551796d 100644 --- a/include/linux/kexec.h +++ b/include/linux/kexec.h @@ -282,6 +282,13 @@ arch_kexec_apply_relocations(struct purgatory_info *pi, Elf_Shdr *section, return -ENOEXEC; } #endif + +struct notifier_block; +extern int register_kexec_fdt_notifier(struct notifier_block *nb); +extern int unregister_kexec_fdt_notifier(struct notifier_block *nb); +extern bool kexec_fdt_notify_list_empty(void); +extern int kexec_fdt_notify(void *fdt); + #endif /* CONFIG_KEXEC_FILE */ #ifdef CONFIG_KEXEC_ELF diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index 881ba0d1714c..f9245d5e4459 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -43,6 +43,30 @@ static int kexec_calculate_store_digests(struct kimage *image); /* Maximum size in bytes for kernel/initrd files. */ #define KEXEC_FILE_SIZE_MAX min_t(s64, 4LL << 30, SSIZE_MAX) +static BLOCKING_NOTIFIER_HEAD(kexec_fdt_notify_list); + +bool kexec_fdt_notify_list_empty(void) +{ + return kexec_fdt_notify_list.head == NULL; +} + +int kexec_fdt_notify(void *fdt) +{ + return blocking_notifier_call_chain(&kexec_fdt_notify_list, 0, fdt); +} + +int register_kexec_fdt_notifier(struct notifier_block *nb) +{ + return blocking_notifier_chain_register(&kexec_fdt_notify_list, nb); +} +EXPORT_SYMBOL(register_kexec_fdt_notifier); + +int unregister_kexec_fdt_notifier(struct notifier_block *nb) +{ + return blocking_notifier_chain_unregister(&kexec_fdt_notify_list, nb); +} +EXPORT_SYMBOL(unregister_kexec_fdt_notifier); + /* * Currently this is the only default function that is exported as some * architectures need it to do additional handlings.