From patchwork Mon Sep 25 21:28:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Kinsburskii X-Patchwork-Id: 13398426 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 DC8C7CE79A4 for ; Mon, 25 Sep 2023 21:28:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 772728D0048; Mon, 25 Sep 2023 17:28:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6FB968D0041; Mon, 25 Sep 2023 17:28:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 59D138D0048; Mon, 25 Sep 2023 17:28:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 40D7F8D0041 for ; Mon, 25 Sep 2023 17:28:27 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 151B6A0D43 for ; Mon, 25 Sep 2023 21:28:26 +0000 (UTC) X-FDA: 81276408612.29.833A626 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by imf10.hostedemail.com (Postfix) with ESMTP id 51EB0C0026 for ; Mon, 25 Sep 2023 21:28:24 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=linux.microsoft.com header.s=default header.b=dWbNHl0r; spf=pass (imf10.hostedemail.com: domain of skinsburskii@linux.microsoft.com designates 13.77.154.182 as permitted sender) smtp.mailfrom=skinsburskii@linux.microsoft.com; dmarc=pass (policy=none) header.from=linux.microsoft.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695677304; a=rsa-sha256; cv=none; b=OuWufWZFettKvLoc8YW/qv2pXfMwxcFC2SNSumg/fXXMHDWs6/8dt9L678XL/YUVZ2B3Vd 67dVc7qU1zPC8Rsx/FJyCloPpyPVAIMNBKZYEZdqKQST8PFX1OLtbxUkz1Bi6HU+20x8+p yCJ/9rgsF+OuZCxx18j+TN1Ue3g7DmA= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=linux.microsoft.com header.s=default header.b=dWbNHl0r; spf=pass (imf10.hostedemail.com: domain of skinsburskii@linux.microsoft.com designates 13.77.154.182 as permitted sender) smtp.mailfrom=skinsburskii@linux.microsoft.com; dmarc=pass (policy=none) header.from=linux.microsoft.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695677304; 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=JfnfRf/8Z1j91lE6hWWpyKLJ8dXQ6U0FUQpoylAZ8tA=; b=untyv07nRSo9wXt+6P/y7xXjm6v5m0oMLr7fY/8U2p4d4aIrVgNj87lqEj8DbTsZhcl+Dy SQUIdbrJ/CiCDFvIck2HHJ1Sf7XMV0B8Fap2vOdvjVp250ejlRYYn192RKvgCVali3QSwf HrMJXaPJLgncD9zOyTraoT+amj4nivk= Received: from skinsburskii. (c-67-170-100-148.hsd1.wa.comcast.net [67.170.100.148]) by linux.microsoft.com (Postfix) with ESMTPSA id 874BA212C81C; Mon, 25 Sep 2023 14:28:22 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 874BA212C81C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1695677303; bh=JfnfRf/8Z1j91lE6hWWpyKLJ8dXQ6U0FUQpoylAZ8tA=; h=Subject:From:To:Date:In-Reply-To:References:From; b=dWbNHl0rs/Szzl5OmMYUUNSVUH665li3UCcaxU37P8vzb09CFwp0HrmaCMsLneC+Z 8Fu0yKAok1W6TAZoSnLmhtoenEBITTdDJE8ihS2PFKq8oikP7fEL+cShCODKI6iKgC PrYgG7tRVKKfqrnvXyTfcMuCYeMCcAkaqfR04VHI= Subject: [RFC PATCH v2 6/7] pmpool: Restore state from device tree post-kexec 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:28:22 -0700 Message-ID: <169567730206.19708.13228262570187347469.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-Server: rspam08 X-Rspamd-Queue-Id: 51EB0C0026 X-Stat-Signature: 3euoej9ysu87ytx1jyqxwrhw7pfi9yob X-Rspam-User: X-HE-Tag: 1695677304-528581 X-HE-Meta: U2FsdGVkX18BFl/sgtQ+NNuNEtos/Xmd3tvr7r4neyCuU7WaSzKXInLUfLBIkMSVHlXaiCU5scTDlG/E3Y29g8DGfsdRRzg2dKPeuaVU0mdFIx/gvfBPrM+uzDaM0bAM4EQUZHtZVrcAUCHrHmiSyghTtWADyDINXiIYkR6aMVi+CbNzzTB/jo7/ca8lD6B+/Wq00/p85hrQXLtV1KUKcEsMhQs6nZNu47zVcV8gMyiOROkyu7Iq4aSbfSBD7N+iRFFZc50vYODdsNjdqv0rKIECih0PGu5pxZaaYXboqkqxWQzqj4oFI2RATQgMK+W4QkL0+AgYX9b3gMX9na+3HfKMiqJqsT/sKxqvvUHNN5wPy45bIu5D7HPicaJsFbtgdxtu4sE1Z2UC1ryyNSkuVCblOARJljFRnHA6AJAFzQ+NLgy1ukc54ASaYd13YKLm1oVqAcbyUUhGJAAXJbR80oZtvHm7/zTvmbs73ErTaFEwdo9i07DjFTP+PAuzjm4lktwXdt8XCc9kWrJBrrBFXZrexh6V8ms0bMLyZ90/RcBupu1SFBajDKSIp1wWh8vY49ED9ciPodHXYfMDxmgw32kbL5yuBkZj2k4AoN9ss76a+T0DnhoclbP0BOriHsCS/BEkW4KYCXi+T1eF8Niy3rAEqHZfxRX/7WSOoYGKr25vOkzTnT7WRG5u/br67/+dfgbJiQcESX2ReyCbVGSGC31QVelWQa3r9KGBIRQ4WKgwSodsEDneOP04Q6Pmdpf0TPD4S5mIPiDsEsVvZTVJtGbP/T7W7h9Me2dpYh6jelMphBMOdh+zXRcZz+k780aW4tSM3tv553SQ6Y9zs/X68h5PmPJQCq9wZWeTh9JXCbuBGQLUjAQhJl4LfOcmRuHczMq/lMqzlM1Xg0j9hjeI8yWL3KR5AYeQ2cyNzbviHeWKL0vEmKu/d15XY3TJ96uxIrBsrErMf5vFxqhTja4 IrrHY17U 1Pli7yGJR2RV0cLqUBefIwFp88wKNt0jAMpTQcdYYQKc7XA+Har9XIk7qur72nI84fCpBSc0dVfXxnM/e5jIeFJPE3PL7TnrHHDRSZ3I+Q4+eRh9KIg59RhQDzDX2z4UdMTZHloQBqKL5jbh26HH6JYqti2nXGF3FdGqOPpkggwZ2vqiukQKix5qpyU/d0dK9cPbl7K9FOot8oOcKOGQ6NVbE1ZsCd5PS+LLBUlHur/+8Ylev/v4cZlPTR551GUAEyvkFoWW36OXKOpJPSTPJPkwJaOo4zWfoC8ciUSJXsqs1OZg= 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 Retrieve the pmpool bitmap from metadata in the fdt passed over kexec, bypassing the need for reinitialization. This ensures the seamless transfer of the pmpool state across kexec. Signed-off-by: Stanislav Kinsburskii --- mm/pmpool.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/mm/pmpool.c b/mm/pmpool.c index f2173db782d6..6c1a28fd3493 100644 --- a/mm/pmpool.c +++ b/mm/pmpool.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "cma.h" @@ -49,11 +50,56 @@ static void pmpool_fixup_cma(struct cma *cma) pr_info("CMA bitmap moved to %#llx\n", virt_to_phys(cma->bitmap)); } +static int pmpool_fdt_restore(struct cma *cma) +{ + struct device_node *dn; + u64 val; + + dn = of_find_compatible_node(NULL, NULL, "pmpool"); + if (!dn) + return -ENOENT; + + if (of_property_read_u64(dn, "base", &val)) { + pr_err("invalid fdt: no base\n"); + return -EINVAL; + } + if (val != PFN_PHYS(cma->base_pfn)) { + pr_err("fdt base doesn't match: %#llx != %#llx\n", + val, PFN_PHYS(cma->base_pfn)); + return -EINVAL; + } + + if (of_property_read_u64(dn, "size", &val)) { + pr_err("invalid fdt: no size\n"); + return -EINVAL; + } + if (val != (cma->count << PAGE_SHIFT)) { + pr_err("fdt size doesn't match: %#llx != %#lx\n", + val, cma->count << PAGE_SHIFT); + return -EINVAL; + } + + if (of_property_read_u64(dn, "bitmap", &val)) { + pr_err("invalid fdt: no bitmap\n"); + return -EINVAL; + } + + pr_info("CMA bitmap restored to %#llx\n", val); + + bitmap_free(cma->bitmap); + cma->bitmap = phys_to_virt(val); + + return 0; +} + static int __init default_pmpool_fixup_cma(void) { if (!default_pmpool) return 0; + if (!pmpool_fdt_restore(default_pmpool->cma)) + return 0; + pmpool_fixup_cma(default_pmpool->cma); return 0; }