From patchwork Fri Feb 28 18:29:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank van der Linden X-Patchwork-Id: 13996914 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 1408FC282C6 for ; Fri, 28 Feb 2025 18:30:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 32F34280011; Fri, 28 Feb 2025 13:30:17 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2D9B0280001; Fri, 28 Feb 2025 13:30:17 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 17D43280011; Fri, 28 Feb 2025 13:30:17 -0500 (EST) 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 D728D280001 for ; Fri, 28 Feb 2025 13:30:16 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 907C0C1154 for ; Fri, 28 Feb 2025 18:30:16 +0000 (UTC) X-FDA: 83170193232.18.9DE344B Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) by imf08.hostedemail.com (Postfix) with ESMTP id B429B160014 for ; Fri, 28 Feb 2025 18:30:14 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ZnIDgEvV; spf=pass (imf08.hostedemail.com: domain of 3tQDCZwQKCAQjzhpksskpi.gsqpmry1-qqozego.svk@flex--fvdl.bounces.google.com designates 209.85.216.74 as permitted sender) smtp.mailfrom=3tQDCZwQKCAQjzhpksskpi.gsqpmry1-qqozego.svk@flex--fvdl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740767414; 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=zk9Htkr8Yt0AZQiLc51J5q9c0jXDbJ3jlcXbWrZj33Y=; b=5AWTVtbp/1KXdrqIgKUwZuAfRzjm+vV+zjhS5YsHQC89A4keD6ZhtrDHqfLEzykY13jqP3 3yFMNEwmt7Zp6E4gNkXiUregaaNRPVUfn/kcO/6BbFqUG78k8fXVjNhuw06VlPNN5+bHgF OXTYzzXT8oZ8kruUk5CqZDnIofDZHbw= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ZnIDgEvV; spf=pass (imf08.hostedemail.com: domain of 3tQDCZwQKCAQjzhpksskpi.gsqpmry1-qqozego.svk@flex--fvdl.bounces.google.com designates 209.85.216.74 as permitted sender) smtp.mailfrom=3tQDCZwQKCAQjzhpksskpi.gsqpmry1-qqozego.svk@flex--fvdl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740767414; a=rsa-sha256; cv=none; b=ajZLUKkabOAPjjK1JKiOFc6fmn8VZfTPpHk57oFidDEWtFqJAdPXuir3bLlQoxvGWS2dIg nP5i4uZKHBXtSShj7WjRZKioJCiUil8ctImuV19R+JYHg1frJYkCvIASjOIbebqK2JpL+T Dlb7Ol5mbHVIEYZNNj1w82lr00j48rs= Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-2fe8c5dbdb0so5122453a91.3 for ; Fri, 28 Feb 2025 10:30:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1740767413; x=1741372213; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=zk9Htkr8Yt0AZQiLc51J5q9c0jXDbJ3jlcXbWrZj33Y=; b=ZnIDgEvVJIfYWUVuSfMtGX4HUpuvuX3xGi6jNg+SIojAlWJa6qou0j2hglZT9encR3 VoONEyIUHKpjDRfaCYz2azz/JnmxDmWbcdDpIaBD54TXQgemy13CSRUIBqYb4hoiL0AF kT/+/FQF6hg+4KsbaYPybY8cQiDEvB8z2UudY8KuF2jTPwA2o4XVWkSj7XBTw0YrQsFd VC+5rq/Ns/ztUyht+ljxRlKKRr7fTVfLku3uHqj2uwfou42OyICGbsVYr37ZrM+JxaOZ H3iLSPR0/6+rw4kQbnvZ4f/C5wZjWqSroBGHh9k9ZeChmup+fFh4bVLZJZfeLuZLk2B3 IlnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740767413; x=1741372213; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zk9Htkr8Yt0AZQiLc51J5q9c0jXDbJ3jlcXbWrZj33Y=; b=DHdx0ixz/Pw7qRjFOB3L/g/9BBcK2a8xq2Oc2T8kJwp2lRMY3fkmvG3mx/2snteo0z tVWChJSciB8whewGlbD2ZYa3saGyxcphPQogMwXWTRnyTSnxtSPiL5v5CxMdRIRy1xC8 E33H5sbYG+PYn6AMO37tRTKevZpFx0jjEBx3tXLiBOi0dxZr0SQVbFk/bMqZJq+G7ths ceUfSt4AJYgk7jIGZPjVR4JsnH3eCiKg1+PqSgWMiaHfBhy1qJWwD121pxfxKCHAqvhv IzYLyJuCCB8yVm5pXvlv7Udc04h2nsejsWJp4tgRPcmvqn6Y15ENnn1DnZYYzU/S4OK6 c4vg== X-Forwarded-Encrypted: i=1; AJvYcCXfZUkhJUQdX4xqj6XhEQZ5u96rI+EL+53q+1DNJ2hronWdlVBOg7kCZ+x80jjPYFhrO+7wF6t+mw==@kvack.org X-Gm-Message-State: AOJu0YwF570hpdQIWEp64gEAdu+ES6e/9BVcZH8qa8VeNYwUEz+SCExH RMwntS/vMsKBPixcXEhKTwNY44XVaWz/Yrbw7QlZNsgyxHn+nx4crEsGuCrc3/fNAmc9Qw== X-Google-Smtp-Source: AGHT+IEv+QN7E0eQvDAjJvrjNKcnw7M4fyJS/kvcrVF43N89A8GZT3t7+PIL/4t4nWbs737dFUx4stCK X-Received: from pjbee14.prod.google.com ([2002:a17:90a:fc4e:b0:2ea:5469:76c2]) (user=fvdl job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3803:b0:2ee:44ec:e524 with SMTP id 98e67ed59e1d1-2febac0a7e6mr6645676a91.35.1740767413637; Fri, 28 Feb 2025 10:30:13 -0800 (PST) Date: Fri, 28 Feb 2025 18:29:16 +0000 In-Reply-To: <20250228182928.2645936-1-fvdl@google.com> Mime-Version: 1.0 References: <20250228182928.2645936-1-fvdl@google.com> X-Mailer: git-send-email 2.48.1.711.g2feabab25a-goog Message-ID: <20250228182928.2645936-16-fvdl@google.com> Subject: [PATCH v5 15/27] mm/hugetlb: deal with multiple calls to hugetlb_bootmem_alloc From: Frank van der Linden To: akpm@linux-foundation.org, muchun.song@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: yuzhao@google.com, usamaarif642@gmail.com, joao.m.martins@oracle.com, roman.gushchin@linux.dev, ziy@nvidia.com, david@redhat.com, Frank van der Linden X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: B429B160014 X-Stat-Signature: wkmn4caygjxcxuboawim6zrnd6e4xnsu X-HE-Tag: 1740767414-496425 X-HE-Meta: U2FsdGVkX1+qx3sxOmlQioP8mDXw74RTso/TMzRUv4uoveaM1kfTEfYuGsn3tXtwstZTxn+fKmAr8FKWi7dpsQJRlAdk4cg5LqhRjnhI2fx38CjX/gd/lpVMYKHg73Rz2rMmExavNVDx8orxZrbttMUJ3y1WrdVJkPcovffuZAn7ZLhu4/bmW32uU8/TPE/K2gGuwrtvn9cgv4T+ydE1UCpflfyX5y3hLyofCSnCEtV7btmY2VVJDg+QJruIqYAVDFbnp7EK/oR8JzRnoWbKW6enMd707/bPTg6UZB+or3OhKKd6uQ0R5NCPBbjFON4f5nvPb2q3gMw1ffGa3603/nhC5XgESfhiltP02izj5bKevsH9VZsbcvgFJESVa0eva8E/gtpaYtN2dOdiXDf42+Tk4QoTqTf1OToq78/wBAqV41j77H0l8tyMajAeyjqzAxIHf/LoOPxHECAzKtw45YopdPcHqponMBFDw9PdlC0QNpPd7GQx0OTpXDO6BSUdELR4ZIFQJcigEVogtH6VgBwlz5mRGv8V92x+6u8SsLfPNb6ZHt3um4SzJh782szmt4NIPdbVOrwSigzSvwJljS6+7l1da93Co/wZXAQvBBKnO8Dpvmm6pgLXj6+uVnLSCbN8HwVft+/mQV3W7bV/GASE6bnXwZnpHuP7xDjwDigV+M8/SEtygz/fOCuaA0lA/DW5/yburELM4MGj42a9fjbuHMmL5XOm6vFBBCkMnTQ4E7YVqIcovebQt9BkwecSlMUxm3MKn9KJW5Zr8xebtc+VsfNc13Ywd23SGlvtSvMXuW/a1HgonWFjDaIT82fbQmEYu3D6eLK1VeztEAyhZYapjePYQzfFHMZqMDTTe0mVNTqHGJsgF5GVbx67jn8yl6CJCDdGVmuoC7pk4pDXZNpWbXAnchYWT8+iDmHNaCdrqjZCyM6XfRsLTSTcFJruL77Q7rslD1rYYzkHfDA oXTlkAgh RQrxxQ3W+c8ZDAmz5K43KfuwOWtFzbsHvnnJeszCDve73F6dG1HlcOusi854+EfpJPneG1rlmb0wzlx5DR5Kx5WYNBgP4aa3pb2T19NLiZL/gbbYE8qIX6c654TjeYwciT6Hk1c3R8nRFVflscMAhqffQ9D15fJReO1MtX5lqK0z4qcIljDwNMttSBN9DKdCgv8hYK7Ljuw/HBQkrvkP8rYAxOugmTVCbOrVLVJRYcDc6xESvDk6KabLzXPN2TBzududmvpYHLDtqD6f19hPbwfHlj5Zjg+K787k3ymKfmemMlypa32Z8vT7SKqTUu6HboWX2msXYBZxt+fx2j+mycpdH/+g5SaWMvjMft3PS9vzwDP0ewCUeKTwl0vqSmX8BgI6r68vISAPrRMHkmAIqfZuNDHE/7TUl5jfHtmtDlpN0Ovcsh97mrd12YVxDNkMQSBBQPO4OwnwDXX0mNv5QbxVr4Aw0UQ6joN3y9Gkt2rDRp+xhsZcUzDP1fuJTsaSONxNEU/Ij3lSxRvEDKFCy90ieo2NPc1zwhGJfQ9wLsjwijmci3bUAqXLrW+D1GG2r2kgOkbMm8FDtg1I= 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: Architectures that want pre-HVO of hugetlb vmemmap pages will need to call hugetlb_bootmem_alloc from an earlier spot in boot (before sparse_init). To facilitate some architectures doing this, protect hugetlb_bootmem_alloc against multiple calls. Also provide a helper function to check if it's been called, so that the early HVO code, to be added later, can see if there is anything to do. Signed-off-by: Frank van der Linden --- include/linux/hugetlb.h | 6 ++++++ mm/hugetlb.c | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 9cd7c9dacb88..5061279e5f73 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -175,6 +175,7 @@ extern int sysctl_hugetlb_shm_group; extern struct list_head huge_boot_pages[MAX_NUMNODES]; void hugetlb_bootmem_alloc(void); +bool hugetlb_bootmem_allocated(void); /* arch callbacks */ @@ -1256,6 +1257,11 @@ static inline bool hugetlbfs_pagecache_present( static inline void hugetlb_bootmem_alloc(void) { } + +static inline bool hugetlb_bootmem_allocated(void) +{ + return false; +} #endif /* CONFIG_HUGETLB_PAGE */ static inline spinlock_t *huge_pte_lock(struct hstate *h, diff --git a/mm/hugetlb.c b/mm/hugetlb.c index f9704a0e62de..ea5f22182c6e 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4906,16 +4906,28 @@ static int __init default_hugepagesz_setup(char *s) } hugetlb_early_param("default_hugepagesz", default_hugepagesz_setup); +static bool __hugetlb_bootmem_allocated __initdata; + +bool __init hugetlb_bootmem_allocated(void) +{ + return __hugetlb_bootmem_allocated; +} + void __init hugetlb_bootmem_alloc(void) { struct hstate *h; + if (__hugetlb_bootmem_allocated) + return; + hugetlb_parse_params(); for_each_hstate(h) { if (hstate_is_gigantic(h)) hugetlb_hstate_alloc_pages(h); } + + __hugetlb_bootmem_allocated = true; } static unsigned int allowed_mems_nr(struct hstate *h)