From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9219933D6E6 for ; Sat, 4 Apr 2026 12:21:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775305283; cv=none; b=u/dUnJV5zPOB/6Su9vvXYB8JsvKALxcgypG00p9H20zL6sl309AqkLiCOxHzZTTQpexMOTaQ6auxis1+6dmh1SVYKiYQaiUfFpkqyrH8tUGv+sqpQs+jGZUc/ExlO5u7RAmB5dpT0m2UwUw+ZPtoC2WarDUSQEg7fL+FoFjX/yI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775305283; c=relaxed/simple; bh=0PMiPkkUvfp+b40kviKwLdoc6COYYJjvz9mq2wf5IdI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZgTsapzWJR/hfBiqlAdD1r7RfW9r1RnwODpd9cx7jVH+TbXxBTqubvIoslwhOMaMRyKAq6Z1GE7jTEjVLrrZ7FHEU8wSvAgq3XFLIwxLsoraJhYUpX/HE7jY1P4ikdeGQUI3rk2v7R4YCMWjT1cEkFbHxLIDGHLcKLJA2WJVZXw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=IArgHOZk; arc=none smtp.client-ip=209.85.210.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="IArgHOZk" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-82cf83bf375so1058404b3a.0 for ; Sat, 04 Apr 2026 05:21:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1775305282; x=1775910082; darn=vger.kernel.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; bh=+4Nvft068bH006LDXNZII5o6Ddc8RwmqN3Jk81Xy5HA=; b=IArgHOZkd9Jc7/37cX47J1bLATxb1/VfZbDXXtxa5TpRjiRBnItjrq8nn4MQ5xXgEB yNh8lwSDwV0+fxRzgOqotQaUxl7cTMWXwXX+Evc/le26oo2Bmxh9FClzKi5O974Nh5Fw FOKynFtNHZoRfbmDZ6AVVJeYQVM+NlEdFyHmNI36hIQtsf5searssa9y2e315PDAsQo4 XaByH6eeWvY7tq4ERUelegbWY4iCQmLGE2Ud1JYx+GauqnDh+N4Mnh/e6F962p1uITdF kZC82YhdlCrebizJX42pbNJ4bRYnvVF7NppQkykpcfLTrre0JFfS/MFxTNnnbuqAhQ8G bNEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775305282; x=1775910082; 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; bh=+4Nvft068bH006LDXNZII5o6Ddc8RwmqN3Jk81Xy5HA=; b=IGQ966ad/iO6DoNcec80EZ/jsp5XdZ3Omwb4NWEF3s4hBtmdtcN9qCjM/2l/VG0M2l aSvvB/b+0ZAc9Vjr9Tdg6RBLhH1dbb71UExocwUG6zuJW6HcAHnEoYrAPjTtkHcPanWR 2rn4mMPSKntNYQhLxRT2MoY5sX3cQqc30D/K5Edr17SKo7Gs6u0xxEaNLk6ddQY3xRMR H7S76f65ioENq1ruaCoXiBeYhLaqjXoSdPmC4sZOCX736zbTwL3qaelqTFxwU17zS/q7 5DUggAd+k+WwCl4ZPGFVF63kv0KhMXLyiYjb7oKc10f6WGoqQzoRDhKuBabTz/ebD/Ws HthQ== X-Forwarded-Encrypted: i=1; AJvYcCUT+n2tHDSaT1H6sco00S+vUtWMNBUzMFce1BiT6VVBQVOS1/TbasRWX9sHjcHX5v6u7Xp4h3GWOM3K5pc=@vger.kernel.org X-Gm-Message-State: AOJu0YxVevGagltbyAPfysiosQymTE6mfDdj5dasNptDPDXRuo3H51R6 1eZHEGMcZfXBh5UiyhnRCEMZHtSdqCaxUPtW0xBrK8K8wG3uNWJYzFsPGAn4NoP+qKU= X-Gm-Gg: AeBDietwygUr4QofaFHwQoo6Rl31OnxS8M2jtSzG/djq9l8cC+5Oy3u6xKOiXzlGIG7 LDmhO4u9zjUk5KWKEd2SqUORI4m+vzzxQakIBfHc1r/UYlbiuo+r6iUiMxhRHDWecZ6aiaNVqSX 9oZRPm2bmZ4s6OvTW5C/Mxnt+an20Pw5xGdz+KQNcIr7j5oT+p8KpGzC74J81HnERPXmhlTknuA XhxofE5PNudRO9aVBJwmyQAqrRyE2ILczgAMlVAeqBNbOTMVhKi8F3uyy9/SESwW3mxTF+hVAq6 SW3Ve9R4I3CVA0L46o5SwGd/AF+Rk2NLNCaXSCa79uYcobBVrkD5dx0NMxCVHYFNlWW3KKLWEPz Oc56GcJTLbxZwGeQCtVW/bqJe1WhfWuARVJ6o5PmZyJ2IBl+Fj0LSK6NZZK4dGneJ0Q0+jLZ2Y4 SABQ4YbSWkiGEdYFwQEWuLeuuoixJNbjZJEtS0n/9CitU= X-Received: by 2002:a05:6a00:4649:b0:82c:ddbb:7db3 with SMTP id d2e1a72fcca58-82d0da8bc37mr6013532b3a.25.1775305281718; Sat, 04 Apr 2026 05:21:21 -0700 (PDT) Received: from n232-176-004.byted.org ([36.110.163.98]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82cfebe5b23sm8327063b3a.59.2026.04.04.05.21.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Apr 2026 05:21:21 -0700 (PDT) From: Muchun Song To: Andrew Morton , David Hildenbrand Cc: linux-mm@kvack.org, Muchun Song , Muchun Song , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , linux-kernel@vger.kernel.org Subject: [PATCH v2 1/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd() Date: Sat, 4 Apr 2026 20:20:54 +0800 Message-Id: <20260404122105.3989557-2-songmuchun@bytedance.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20260404122105.3989557-1-songmuchun@bytedance.com> References: <20260404122105.3989557-1-songmuchun@bytedance.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The two weak functions are currently no-ops on every architecture, forcing each platform that needs them to duplicate the same handful of lines. Provide a generic implementation: - vmemmap_set_pmd() simply sets a huge PMD with PAGE_KERNEL protection. - vmemmap_check_pmd() verifies that the PMD is present and leaf, then calls the existing vmemmap_verify() helper. Architectures that need special handling can continue to override the weak symbols; everyone else gets the standard version for free. Signed-off-by: Muchun Song --- mm/sparse-vmemmap.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 6eadb9d116e4..1eb990610d50 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -391,12 +391,17 @@ int __meminit vmemmap_populate_hvo(unsigned long addr, unsigned long end, void __weak __meminit vmemmap_set_pmd(pmd_t *pmd, void *p, int node, unsigned long addr, unsigned long next) { + BUG_ON(!pmd_set_huge(pmd, virt_to_phys(p), PAGE_KERNEL)); } int __weak __meminit vmemmap_check_pmd(pmd_t *pmd, int node, unsigned long addr, unsigned long next) { - return 0; + if (!pmd_leaf(pmdp_get(pmd))) + return 0; + vmemmap_verify((pte_t *)pmd, node, addr, next); + + return 1; } int __meminit vmemmap_populate_hugepages(unsigned long start, unsigned long end, -- 2.20.1