From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 62A50606A31D for ; Wed, 21 Oct 2026 21:11:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=aHRGnbBI; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=X2wPFaw0 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date :Subject:To:From:Reply-To:Content-Type:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=093JJqrrOxUj2abNMLhbp+4Uc4OaHt2/cWwMxdwN2F8=; b=aHRGnbBIsLBJnd 8+4zQdhmT7C2tYj3tmuQ41lbnIkd7O1N3yE5wnmvIFgQ2UrpCctYj/ze+N3M8zLkLEzGlSxaTJwAA isuQAgzP5/QhTdGPSBY6xnThZ8kLt6V7oMjg6g+4i4kPJ3FF9eF71OrJB23bWLZT9xVs5yrRuBQWh EM7zJ9VzyfZd7u0nDtGoTTW2ODxUPxXkkjDU3qKLCnB4EB1diz9/a+3AD7R0I4qsQHMlYpu8WoZ/c OwLHdxfppK3RGO0exAEiznqui8uMUrTekYahVgCaLHhsclprscLzuG+B1IvNzrKGvp+0Dkd1R7L6P 85F0p7ceSDP9tQmPZ/gw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJdab-0000000Cu5V-2s6t; Wed, 21 Oct 2026 21:11:13 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJdaY-0000000Cu4P-3KAK for kexec@lists.infradead.org; Wed, 21 Oct 2026 21:11:11 +0000 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-4a018792ab3so9886935e9.0 for ; Wed, 21 Oct 2026 14:11:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792617069; x=1793221869; darn=lists.infradead.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:content-type; bh=093JJqrrOxUj2abNMLhbp+4Uc4OaHt2/cWwMxdwN2F8=; b=X2wPFaw0TK5v1QchrOBys69DHo+NW9SVgqoWXT42YolhAFvqkGCY4dc4D3x/vw5o6B MzOTvTYnZ02ofoRBI9dZePHjT+N0hVY+qzHChUEzjz1nHqwsg+ED6OjzsFMe0A/qI3nR 5fF6e4Fcs5+An7Yxt2IImuiZljBHiA1+BKre/DUPSnxgp0hrhBRNmnr5mntXCUV5rXgG jLG2vuij/NwyXZxOrIWTXvWjCiL1EgGkePciqGjjgwVRveJ8o9DYkzwo8lhCNSod9WNR lHC5WoTlo66hNv8iMi5vGYO86fUAo71QDlEDm2/F26nzuymAXpJrxMIw7CJ27ZaBmC0F KHLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792617069; x=1793221869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=093JJqrrOxUj2abNMLhbp+4Uc4OaHt2/cWwMxdwN2F8=; b=Rr2RQzSgCerlXzR0X3T8uRjGvIGhn9uYor2bYaKyHD+TT3k7qhVOE9x5ZmwdLSL9wf lljX5VS9h+LYr33QlsLIpBtvQVYKbcmgXxJiWvJUOkl62LcEKUfw3U5qRA7MFGdNE2KN Klmqwj4yDGAdzVAzO9FN22Zjjm8lqhOVSZfK92e81TV95COQpxuSldKGhkvLuo1fybtO eg/l3hyEl2S9eQp7juu+6/raef3RDShZRk/vBGmwmRBK1zSWM/+jo0LPanD68plbeF3T 0uI1mE5ZuNLBc7oIgFgcre/aooGyByXVpRUFa8By4NDWhpckQXHSDCrhEmdNwUWnKA97 Rr8w== X-Forwarded-Encrypted: i=1; AKwUvBzcMScIz5iX0a2SrPXWZgp+QvqTgPyNmF8nt29pskZoka4FUfQNBv3znvINgsW6FfXw3gGOwg==@lists.infradead.org X-Gm-Message-State: AFq9FYKi0Zw/5su0CSjgxupuf+i/AUuPXXFZ3Px1JmMj4qvrbEOja12c 657kjMnV0tBgx/96e3G0wrcICX/JCgmjjzaJNMYMhiX4HZl4R97VoCMv X-Gm-Gg: AYBFou12xI/EZjocYQLMkcHgYmBfWOA+/jUKGr1CfGrdWlW3DRIyFPlJiKLqxRYj3zz LadItU67ADp9whgB1lWvnjQabXp+0PDX1MhXv/YU3nKNohTiPKgcl4Bm9kAkXkK/q68qSa6mkub tZZGEdJ74/7qo5RmgrmYjBW8xhh2MTNNm3GBL3+cxgi/snh9dCYLmNrOtaDzXnC9iPO4oa5tamE z3zrAimnnowOftQ/ia7xlhMsIJFPT3nIVgqZi/QUEzkwpxqS0D06Tr3eqryP7lLvr3Alq2LC91x CP17Vg+bVzbkoB8s1cbH29K5/n08FTe4dYRz0OPnuZVERnaKtfDD4VEguNaQ9OKT60ochKb9U0S ZO/7Pl4EbYqzr/qJmEtfW9cVjeTTIupGXzJzGFh5KnXZNsYY3DKr6SDuzwPhcoMn41HmIfTJ6Xz 6Kkp6kFN+60t3EnE7T1sHQVavGBF5A/hJNmieQ5ljUkKIRSQDMDClAAtGfYSvE7dc3PgZwrSthW cK9bEAcq4fM9jOMmWA8ZYWphQD9P+H5DYYb9mQo X-Received: by 2002:a05:600c:46c3:b0:4a1:fc98:1cb1 with SMTP id 5b1f17b1804b1-4a1fd8cd9f5mr69945755e9.2.1792617068708; Wed, 21 Oct 2026 14:11:08 -0700 (PDT) Received: from nobara ([83.231.69.9]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4a203a25fb5sm22891525e9.6.2026.10.21.14.11.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Oct 2026 14:11:08 -0700 (PDT) From: "Jose A. Perez de Azpillaga" To: Mike Rapoport , Andrew Morton , Kees Cook , Alexander Graf , Changyuan Lyu Subject: [RFC PATCH 1/2] memblock: factor out the KHO bootmem check from memblock_alloc_hugetlb() Date: Wed, 21 Oct 2026 23:10:45 +0200 Message-ID: <20261021211058.83483-2-azpijr@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20261021211058.83483-1-azpijr@gmail.com> References: <20261021211058.83483-1-azpijr@gmail.com> X-Archived-By: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261021_141110_869077_FEDEDAD6 X-CRM114-Status: GOOD ( 16.78 ) X-Spam-Score: -2.1 (--) X-BeenThere: kexec@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tony Luck , Pasha Tatashin , linux-mm@kvack.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, "Jose A. Perez de Azpillaga" , Pratyush Yadav Sender: "kexec" X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 reserve_mem regions are preserved with KHO too, and need the same search that keeps HugeTLB pages out of KHO bootmem. Move it into a helper. No functional change intended. Signed-off-by: Jose A. Perez de Azpillaga --- mm/memblock.c | 70 ++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/mm/memblock.c b/mm/memblock.c index a450092a80fb..f43659688681 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1744,6 +1744,31 @@ void * __init memblock_alloc_try_nid_raw( return memblock_alloc_internal(size, align, min_addr, max_addr, nid); } +/* + * Memory that can be preserved with KHO can't be in KHO bootmem, since the + * next kernel boots out of it. Bootmem areas are normally not very large, so + * this shouldn't take too many retries. + */ +static phys_addr_t __init memblock_find_outside_kho_bootmem(phys_addr_t size, + phys_addr_t align, int nid, + enum memblock_flags flags) +{ + phys_addr_t addr, start = 0, end = MEMBLOCK_ALLOC_ACCESSIBLE; + + while ((addr = memblock_find_in_range_node(size, align, start, end, + nid, flags))) { + if (!kho_bootmem_overlap(addr, size)) + break; + + if (memblock_bottom_up()) + start = addr + size; + else + end = addr; + } + + return addr; +} + /** * memblock_alloc_hugetlb - allocate boot memory for HugeTLB pages * @size: size of the memory to be allocated in bytes @@ -1761,52 +1786,29 @@ void * __init memblock_alloc_try_nid_raw( void * __init memblock_alloc_hugetlb(phys_addr_t size, int nid, bool exact_nid) { enum memblock_flags flags = choose_memblock_flags(); - phys_addr_t addr, start = 0, end = MEMBLOCK_ALLOC_ACCESSIBLE; + phys_addr_t addr; memblock_dbg("%s: %llu bytes, nid=%d, exact_nid=%d %pS\n", __func__, (u64)size, nid, exact_nid, (void *)_RET_IP_); /* Don't waste mirrored memory on HugeTLB pages. */ flags &= ~MEMBLOCK_MIRROR; -retry: - /* HugeTLB pages are always aligned by their size. */ - addr = memblock_find_in_range_node(size, size, start, end, nid, flags); - if (addr) - goto found; + + /* + * HugeTLB pages are always aligned by their size, and can be preserved + * with KHO. + */ + addr = memblock_find_outside_kho_bootmem(size, size, nid, flags); /* Try all nodes if allowed. */ - if (numa_valid_node(nid) && !exact_nid) { + if (!addr && numa_valid_node(nid) && !exact_nid) { nid = NUMA_NO_NODE; - /* - * If a previous candidate overlapped with KHO bootmem, it would - * update start or end. Now that the search is opening to all - * nodes, reset them. - */ - start = 0; - end = MEMBLOCK_ALLOC_ACCESSIBLE; - - goto retry; + addr = memblock_find_outside_kho_bootmem(size, size, nid, flags); } /* Found nothing... :-( */ - return NULL; - -found: - /* - * HugeTLB pages can be preserved with KHO and no preserved memory can - * be in bootmem. So retry if found address overlaps with bootmem. - * - * Bootmem areas are normally not very large, so this shouldn't take too - * many retries. - */ - if (kho_bootmem_overlap(addr, size)) { - if (memblock_bottom_up()) - start = addr + size; - else - end = addr; - - goto retry; - } + if (!addr) + return NULL; if (__memblock_reserve(addr, size, nid, MEMBLOCK_RSRV_KERN | MEMBLOCK_RSRV_HUGETLB)) return NULL; -- 2.55.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C31F9606A31F for ; Wed, 21 Oct 2026 21:11:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=AQqElsSp Received: by kanga.kvack.org (Postfix) id D91516B026B; Wed, 21 Oct 2026 17:11:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D1BFD6B026C; Wed, 21 Oct 2026 17:11:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C09FB6B026E; Wed, 21 Oct 2026 17:11:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 8F1686B026B for ; Wed, 21 Oct 2026 17:11:12 -0400 (EDT) Received: from smtpin03.hostedemail.com (lb01a-stub [10.200.18.249]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 0C468406C5 for ; Wed, 21 Oct 2026 21:11:12 +0000 (UTC) X-FDA: 85347878784.03.BBB3D50 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by imf05.hostedemail.com (Postfix) with ESMTP id 37B8D100008 for ; Wed, 21 Oct 2026 21:11:10 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20251104 header.b=AQqElsSp; spf=pass (imf05.hostedemail.com: domain of azpijr@gmail.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=azpijr@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1792617070; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=093JJqrrOxUj2abNMLhbp+4Uc4OaHt2/cWwMxdwN2F8=; b=YxZIuRyjAH6CDOXg9tD6zxhSYL3+7UDqGXOrirrPf6bPBCSnNhAvKx3rp/zBaTx+oVzxw3 HGNW+6sMlUB4HqwvoLpXYyVBF7I4mMWvq+rtBQe/GNf+1My6zGrnmUoasdaiN3YgArKHI9 84KewqK+ENZtPBU7jCEn+J7b1mx3qZg= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20251104 header.b=AQqElsSp; spf=pass (imf05.hostedemail.com: domain of azpijr@gmail.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=azpijr@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; d=hostedemail.com; s=arc-20220608; cv=none; t=1792617070; b=l/TwzzJXH28ekD0VpMC9v2tYsmW5I+ucYgT3/gQkKoE3EmAqQJ8wx2qn8xjOOGxO9C3v0I LYEj8OyGOXFPL5DsE3CEuA0N4epWEN1JthCqYB8TnxxSVESIH6X+BScIM8yKWqfkQpuTFk zH9+kKgUrvg69OVcmve60PEEIQITKWs= Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4956869750eso8517925e9.2 for ; Wed, 21 Oct 2026 14:11:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792617069; x=1793221869; darn=kvack.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:content-type; bh=093JJqrrOxUj2abNMLhbp+4Uc4OaHt2/cWwMxdwN2F8=; b=AQqElsSpXc1Cqksto+oEoAZSaAyKt9b9oKNjs8c4O9NGSGB1ayY7k8E8tW3ZBYTZMW SXlaclGaUGERAmKAyRMEirxNXe5xzzBSHuGLrp1x6aJYZw44vfBWdNEm4CW1F52NTalU UMubKE8yZqKtxWYaPVJuy/LdT0HnFAdreiyOySxk2g7+r8FS6ou4QC618jn7yzwa1nm3 ZhgWtRdwgaab/K4jQ5GtLyszwmVVzvCOW1UIJB141ntE0Sm0yjwNM8ZvzKHUhKT2YMcw /EYNmh60igfb9geg6sIoEfytsneTDFlLBZX9qkHrh8BIB6qXewBFyFhQT92uEzN+6s68 pI9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792617069; x=1793221869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=093JJqrrOxUj2abNMLhbp+4Uc4OaHt2/cWwMxdwN2F8=; b=0n2v+4OYcnc33T+alDu5ULmy2emTOdZnpKx2XMppw8DVJD3P7PLb+kSM0KZsm47+FD Od3+WtuOAEhEhOANnynvwkL+IwMnj1adnTlKeIYT/9X+KlznCV0U/QPGLvZuLNGGNXRk g8UI7DfOsjW/7acZX7TOjZekLCK1A/ATj27nj+8Nos5hwn77Heccquk35TirPK3brabB Abt/gaBfGr8e7JjxT8ylBLd+nCvjEaIiPJA/IIbrDYcQjQZ+oBop64pk434AT9imwHoJ e1sGALLzJFsjVb2aDsWB6eBIAH2EKCANEiV4aRWVnM7uzY9qhM4Y8EPo8rDqX00Ys/y+ 21fg== X-Forwarded-Encrypted: i=1; AKwUvBxGyPKMJhLtF+moNdgXI4V9huyHyNYlu3lSJzdRNf9uNQZdarIWNPZ5qZndgmZ5NuC1rQDQCpytDQ==@kvack.org X-Gm-Message-State: AFq9FYJebjArvYEEkQZuBe5Kh+5/8nQiR1a4Sc2J3fr8RCES0990Z+nJ 8pJOPSRQlTbe6+JPxA8UsmLSgUWrCqNFMvRiM4yoxqlfqkMzEXMeK5Z4 X-Gm-Gg: AYBFou2baFOO9JwfzDOxjVAFsFf5VBTPOM6m8Z/HEywxJYjZkU/aiT28865Y7Pf2j9y PmOIVAxYoiGLbxJvyvJMBmX/Vp7hRZaWZQAEaANE8AB00uTksMn38Xyp18XW+HCVbBTdomyrEsa mxTzqXXebqUj6Et8fAPTgPp/+LTB2PiSMRCfmveNfi9nMyGki0HNEVQ2l+my14zbExm0nO6i5Zs bxhiqabUTafq3T+hwWf+w+XunmMBbqpCOQq66TQRs4inw9M1JfuZFN4ou0ZGqcwqQczh85ACYsm FKmxNvuBOEzA/iCuIrINddXuHkUdVOljwZ3Dvf8FaFlwcvZUotyeHX2IXYfxk3DeS/ZqP8YsB0g WOMfztrb+nWLl5tkqWl+G+zLZvAi7bv2qy2EulqKsk2tz2vMfmjn6iHbNyLh9F2xKydE0fhqPnR uZeeioXc2ZRYHLxo/OG6ZzwC4vy81d0DKCEVSpto0PClUU6vpElZQxBzVdNUbpWgRYH3IvBvXpp yKrWb7hw1YaBdr87pl3NnMuOLf1VKF/omFNKg7T X-Received: by 2002:a05:600c:46c3:b0:4a1:fc98:1cb1 with SMTP id 5b1f17b1804b1-4a1fd8cd9f5mr69945755e9.2.1792617068708; Wed, 21 Oct 2026 14:11:08 -0700 (PDT) Received: from nobara ([83.231.69.9]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4a203a25fb5sm22891525e9.6.2026.10.21.14.11.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Oct 2026 14:11:08 -0700 (PDT) From: "Jose A. Perez de Azpillaga" To: Mike Rapoport , Andrew Morton , Kees Cook , Alexander Graf , Changyuan Lyu Cc: Tony Luck , "Guilherme G. Piccoli" , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Pratyush Yadav , Pasha Tatashin , kexec@lists.infradead.org, "Jose A. Perez de Azpillaga" Subject: [RFC PATCH 1/2] memblock: factor out the KHO bootmem check from memblock_alloc_hugetlb() Date: Wed, 21 Oct 2026 23:10:45 +0200 Message-ID: <20261021211058.83483-2-azpijr@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20261021211058.83483-1-azpijr@gmail.com> References: <20261021211058.83483-1-azpijr@gmail.com> X-Archived-By: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 37B8D100008 X-Stat-Signature: d4ik8qhqpgdbudahab5ogotxzzn9wzqq X-Rspam-User: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=4.0.1 X-HE-Tag: 1792617070-190025 X-HE-Meta: U2FsdGVkX18jMKZSkGhmlG7rWbMb/kyBfEr1OaKATH2nZOWzVp+jwn6UBgCLpt6jq0fet9hp8w0vjHbq83WFlotVWSWumj1GRwE5B9Lwi9HUpEl78uTEGE+y1Vfw/D1+9Qcku7inrx6vLwGJKhwHPLZQQNjEAqszlc/N1fF28KJO/ntCuDEJNoajaSaJNVA6f4ebPNmEo8hTkcu87Z6p4jlgTuBbHg8/wdKy4coI8bKjw8t9Fzm2qC1RXvSrbv/xPsI5Qjdu9zfNEyKA16uyX9C0/CawKbYLD5EPa2ARNZx0qHrSwAaQE2Pp0Nti1qU6ZuhKzt476ZW3OURsdiYPk/Dhk3ebhisfSOtcJi4fOURa4VARk0aVWu27s99u3kUfRL8pRpEkMzYw8WeXFvjcP/Y5Uad+spO2J7B7snDnjpsoDKk9d2o1gVUpUlsqCKsln8Jm3XpIiSjARsc3OrAfbuetiSoPpsOHRdFdAaHYUwPwexK0DxHUcvMQQdKp/s5zHux2iSTUl59xlyePvNsvmCYqQV7hJiGQZ8XdlV7NinqrnJwpgWMPpBMntWKKgNoA+S4KHbh4RlTtmkWYMKuZjbJViiV54XNAKVEwDMp+iba0hLdjln5YE/gHvoIYkKuExyyVfQ9ZJnMCxK7P5TW7CszupTxu5SyHKvcZ1LUvHAbVjZAIc59eY7qwSGx+HXITqQCAZyoxGKWFv5N8B0CJWa8pp+g1W08KgSLDC8eRA5xT4FvHImGcN6sM5TNt56BJFofNNZnOFFV1F8Wc6sxeVr3yVCq7gz5qrqWWZUNmzdMSzkJkZgUgEGoq6tQ+A7koWEg8HjvE8OLMejMV/jl3ZVeBiMQUjmc2tmbCjQCU8cVFzeN+uCn7+N48rszGC6vqT+uwMewKIXvpCbV+CsAVT9dNbr8LOgWo2fFeDxdRpj4l8V8NMNW2tgPTFBCMEbw2fVs4YJYnSRWsi3GR7Ja z8KeLOBj dCVUOSSofLtAHTPVlEQ/YuazyiubyTbXtJHg0GkC5071XKlyVKP9iqi4G8OqO3fVVb+GJza3Y66HPEGIfwDR+nCG/z8oDeJCmesz3BSDb0vmDy56D3hKJa33CtHRDKQkrRDLooWTt7AxkKU4t03tsjoLLHbWQ8u8nmJ2zljXg7Frk/zIDxhkdDa4fPCWdIc3NyNJHLehe8KYzqIhVK/ywb27PuXxIZYVqyvmGM5K4VAsn7VOTQdjwfuXFgHUvTuY1Foey1rWvulW72bMxgLj0/U/v4VqKJOOhBzNi3e8HLMxqeLBAKV3nGgzlXBCSLYBrnyMwnuu6gk0eFsSDeVmnsSlb+jMLzpQ7vn/vMNFCv4N8zNgXKInTqs5iPcJ6OZ7JyckwAXGv7xthhq6eT1PflJs3b26RfgNb+VJlkfaF0YNByEKsaThGM7lfJqLepugBEGqvYbBaf/8gIYk= Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 reserve_mem regions are preserved with KHO too, and need the same search that keeps HugeTLB pages out of KHO bootmem. Move it into a helper. No functional change intended. Signed-off-by: Jose A. Perez de Azpillaga --- mm/memblock.c | 70 ++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/mm/memblock.c b/mm/memblock.c index a450092a80fb..f43659688681 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1744,6 +1744,31 @@ void * __init memblock_alloc_try_nid_raw( return memblock_alloc_internal(size, align, min_addr, max_addr, nid); } +/* + * Memory that can be preserved with KHO can't be in KHO bootmem, since the + * next kernel boots out of it. Bootmem areas are normally not very large, so + * this shouldn't take too many retries. + */ +static phys_addr_t __init memblock_find_outside_kho_bootmem(phys_addr_t size, + phys_addr_t align, int nid, + enum memblock_flags flags) +{ + phys_addr_t addr, start = 0, end = MEMBLOCK_ALLOC_ACCESSIBLE; + + while ((addr = memblock_find_in_range_node(size, align, start, end, + nid, flags))) { + if (!kho_bootmem_overlap(addr, size)) + break; + + if (memblock_bottom_up()) + start = addr + size; + else + end = addr; + } + + return addr; +} + /** * memblock_alloc_hugetlb - allocate boot memory for HugeTLB pages * @size: size of the memory to be allocated in bytes @@ -1761,52 +1786,29 @@ void * __init memblock_alloc_try_nid_raw( void * __init memblock_alloc_hugetlb(phys_addr_t size, int nid, bool exact_nid) { enum memblock_flags flags = choose_memblock_flags(); - phys_addr_t addr, start = 0, end = MEMBLOCK_ALLOC_ACCESSIBLE; + phys_addr_t addr; memblock_dbg("%s: %llu bytes, nid=%d, exact_nid=%d %pS\n", __func__, (u64)size, nid, exact_nid, (void *)_RET_IP_); /* Don't waste mirrored memory on HugeTLB pages. */ flags &= ~MEMBLOCK_MIRROR; -retry: - /* HugeTLB pages are always aligned by their size. */ - addr = memblock_find_in_range_node(size, size, start, end, nid, flags); - if (addr) - goto found; + + /* + * HugeTLB pages are always aligned by their size, and can be preserved + * with KHO. + */ + addr = memblock_find_outside_kho_bootmem(size, size, nid, flags); /* Try all nodes if allowed. */ - if (numa_valid_node(nid) && !exact_nid) { + if (!addr && numa_valid_node(nid) && !exact_nid) { nid = NUMA_NO_NODE; - /* - * If a previous candidate overlapped with KHO bootmem, it would - * update start or end. Now that the search is opening to all - * nodes, reset them. - */ - start = 0; - end = MEMBLOCK_ALLOC_ACCESSIBLE; - - goto retry; + addr = memblock_find_outside_kho_bootmem(size, size, nid, flags); } /* Found nothing... :-( */ - return NULL; - -found: - /* - * HugeTLB pages can be preserved with KHO and no preserved memory can - * be in bootmem. So retry if found address overlaps with bootmem. - * - * Bootmem areas are normally not very large, so this shouldn't take too - * many retries. - */ - if (kho_bootmem_overlap(addr, size)) { - if (memblock_bottom_up()) - start = addr + size; - else - end = addr; - - goto retry; - } + if (!addr) + return NULL; if (__memblock_reserve(addr, size, nid, MEMBLOCK_RSRV_KERN | MEMBLOCK_RSRV_HUGETLB)) return NULL; -- 2.55.0