From mboxrd@z Thu Jan 1 00:00:00 1970 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 B9550C47074 for ; Tue, 2 Jan 2024 19:58:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 27F876B0088; Tue, 2 Jan 2024 14:58:17 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 22F596B008C; Tue, 2 Jan 2024 14:58:17 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0AA686B008A; Tue, 2 Jan 2024 14:58:17 -0500 (EST) 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 E98326B0132 for ; Tue, 2 Jan 2024 14:58:16 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id BD43F160127 for ; Tue, 2 Jan 2024 19:58:16 +0000 (UTC) X-FDA: 81635432592.05.41BC02C Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by imf17.hostedemail.com (Postfix) with ESMTP id F1E2640006 for ; Tue, 2 Jan 2024 19:58:14 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=linux.microsoft.com header.s=default header.b=sf+h60Ai; spf=pass (imf17.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=1704225495; a=rsa-sha256; cv=none; b=FMtafiHhKMhe4OSUgPzDUUFMRC70GsggxQlZS+0y4WPt8T/8WmXvs69nLWtByr4QSTdc5T KWOvl7tWR6d2kEbysFcusatYyiea5VBX4OfRRmz2qQ9mPswynbjNYioYser4PPHuU9q4Tb IpUNh+LlrIlNBPTjliDPmbW/Slgyy94= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=linux.microsoft.com header.s=default header.b=sf+h60Ai; spf=pass (imf17.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=1704225495; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=2UaDwV/oGm+Epqzq+iuoXLl1XYKs/iiOjHPSgAf4WNI=; b=4cMD/tb+YqB90yylpgu75KhynfKDKqnXNR+2cvZIlVk6+Abc/Ej66s3nD0V4BAsKDkuDEM 4hRwIIpFd4srH+HRRsWz7d/xRel53gBmSQdm9JDCtJcKNB5SgmSVrQG6iB2dBmfY6XWoh1 yQyD39TUMOWMVEGPslWDXdxs2wtCEC4= Received: from skinsburskii. (c-73-239-240-195.hsd1.wa.comcast.net [73.239.240.195]) by linux.microsoft.com (Postfix) with ESMTPSA id 2C6DD20B3CC1; Tue, 2 Jan 2024 11:58:13 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 2C6DD20B3CC1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1704225493; bh=2UaDwV/oGm+Epqzq+iuoXLl1XYKs/iiOjHPSgAf4WNI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=sf+h60AikfAoNDWIfOQf+gp/7n62YjqR91jk021dI0v+1a8M9a0OEjS7fQlNbGHtT ipeSl4ZqBYQjVEH3GZlLaVHYTWm8e6nUV0SEqCtKnbq135a3/00oHsQNKX3wd4Z7BD ICaDdMQVBMMzyyO3sadV/R66AVE4C1KSJe3ErDtk= Date: Sun, 31 Dec 2023 19:33:01 -0800 From: Stanislav Kinsburskii To: Alexander Graf Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-mm@kvack.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kexec@lists.infradead.org, linux-doc@vger.kernel.org, x86@kernel.org, Eric Biederman , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Rob Herring , Steven Rostedt , Andrew Morton , Mark Rutland , Tom Lendacky , Ashish Kalra , James Gowans , arnd@arndb.de, pbonzini@redhat.com, madvenka@linux.microsoft.com, Anthony Yznaga , Usama Arif , David Woodhouse , Benjamin Herrenschmidt Subject: Re: [PATCH v2 04/17] kexec: Add KHO parsing support Message-ID: <20240101033301.GA765@skinsburskii.> References: <20231222193607.15474-1-graf@amazon.com> <20231222193607.15474-5-graf@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231222193607.15474-5-graf@amazon.com> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: F1E2640006 X-Stat-Signature: 84xknqae8gcz8d7n1cicph9enwf6xs6i X-Rspam-User: X-HE-Tag: 1704225494-511195 X-HE-Meta: U2FsdGVkX1+FVK99AiIk5oYMspJj+CjCeDFe65gFPYAGO2vis0CTFodsOYXxiJIgbvDAjk5qh22KfG+swDS/oLhOe285S1OoJ280m/1slWHXr/Qa637U8V5Ac4o0TMSmDINaXg3GPNlxrEWD0J6UyA8/llI/r/ESQOwtTqYDA91Ivq/kOmGjI6Xeb1ZdVTedy6mIgEjHTGakinTHavMNKA5H11y0FEDmNYJlAroKrpCKeNvtA4DELzizsUle37zyMsurum3H71au1Klbn4hXnWFkiZXJ0/XSE9Kc/DsnVXPS4lwK8tgYnaHpSn/LwXgCq5bWHv6IBU3l6P7+v/C5d3WKGNFS5yAN8G9lMgBnyjsoObRTYpLh2aVYHtkXk719nUBLQn/d0+8R9uyEvG4Anu+RR4CSou3ZL1YR+7tFAzBHrb1mHyALSFjhW3Yt3Vk+QaawaQTlVZ7UEQbaaPII0CCuHhnQl/vHLEyLRwPAnalmU1l3Kh8HBXoIjusKG/kBmRou/zNjJ6QxPaxEkbXuqXSh+ElEFFvQmlJFO6LYBRPUKjVVxUCksjkSzIoT4j/XjMzJhRVrojkF6FKXoIvmifoqaOHHwu8unnh56rw6IuYDlV30bY65h4HZ3Sn5WCxQ96DyS73dJeWXUyeCt/y2bBuR/7c5fbbjFXPqojljrHrFGf9KUGQcNXD4deUHsxKV3B4Khkh6DsmqnboN7+bym2Nt/f1RLjx6cyrlq2UVLljrfluoXLVy3LDdhzf0MCO+MKjxU2lJV7bwDozyG7UDxZhBPMVG4/zDd2ZMxYEi4fwntbRsHDaNaP6sXDbww/Gt8IT6kz8Szez8GbJ5A3n6/eFqtqZQgauGRYWA4k6Fc2hr0CcbLRMqHkkDvjJ/uRuGivw4lBJ703V4B0YmaYvK1b0Vqg4ra6WxG4ROG9iArEDlw5fXZ8YfPH4XkxNYyPo3VVNYN1clK0bez5BMImw JcD2DjyF gi5LJr/Of2nsPnEZjgQzj4aEYFMfqK6um3jiZ3+ZGAJX+HA/dsCllHmGspE41agje6y6AG+nVlMuZidnG97B4uTpfASrprPsv4x1Lc6G3hjO6wnVPyBJih5PrIYU2ls+xTmqqsUZqnHZQFl9fPEF/ewOeLGGsNnUi+rzkOPxzBalzLCOF7gGmkdpvj/HCasN71iGTCx9tWEK/fM9YK9FXNVbosTRvDk3vXe7DyojDUuYBJvf1NLGiWHHMmesejmB/AJUxgNS+AmQEMTebfrBhMZZidRbapjHpOWio 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: List-Subscribe: List-Unsubscribe: On Fri, Dec 22, 2023 at 07:35:54PM +0000, Alexander Graf wrote: > +/** > + * kho_reserve_previous_mem - Adds all memory reservations into memblocks > + * and moves us out of the scratch only phase. Must be called after page tables > + * are initialized and memblock_allow_resize(). > + */ > +void __init kho_reserve_previous_mem(void) > +{ > + void *mem_virt = __va(mem_phys); > + int off, err; > + > + if (!handover_phys || !mem_phys) > + return; > + > + /* > + * We reached here because we are running inside a working linear map > + * that allows us to resize memblocks dynamically. Use the chance and > + * populate the global fdt pointer > + */ > + fdt = __va(handover_phys); > + > + off = fdt_path_offset(fdt, "/"); > + if (off < 0) { > + fdt = NULL; > + return; > + } > + > + err = fdt_node_check_compatible(fdt, off, "kho-v1"); > + if (err) { > + pr_warn("KHO has invalid compatible, disabling."); It looks like KHO preserved regions won't be reserved in this case. Should KHO DT state be destroyed here to prevent KHO memory regions reuse upon rollback? > + > +void __init kho_populate(phys_addr_t handover_dt_phys, phys_addr_t scratch_phys, > + u64 scratch_len, phys_addr_t mem_cache_phys, > + u64 mem_cache_len) > +{ > + void *handover_dt; > + > + /* Determine the real size of the DT */ > + handover_dt = early_memremap(handover_dt_phys, sizeof(struct fdt_header)); > + if (!handover_dt) { > + pr_warn("setup: failed to memremap kexec FDT (0x%llx)\n", handover_dt_phys); > + return; > + } > + > + if (fdt_check_header(handover_dt)) { > + pr_warn("setup: kexec handover FDT is invalid (0x%llx)\n", handover_dt_phys); > + early_memunmap(handover_dt, PAGE_SIZE); > + return; > + } > + > + handover_len = fdt_totalsize(handover_dt); > + handover_phys = handover_dt_phys; > + > + /* Reserve the DT so we can still access it in late boot */ > + memblock_reserve(handover_phys, handover_len); > + > + /* Reserve the mem cache so we can still access it later */ > + memblock_reserve(mem_cache_phys, mem_cache_len); > + > + /* > + * We pass a safe contiguous block of memory to use for early boot purporses from > + * the previous kernel so that we can resize the memblock array as needed. > + */ > + memblock_add(scratch_phys, scratch_len); > + > + if (WARN_ON(memblock_mark_scratch(scratch_phys, scratch_len))) { > + pr_err("Kexec failed to mark the scratch region. Disabling KHO."); > + handover_len = 0; > + handover_phys = 0; Same question here: doesn't all the KHO state gets invalid in case of any restoration error?