From nobody Fri Oct 2 06:58:33 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 6764F7080D for ; Tue, 4 Aug 2026 10:01:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785837693; cv=none; b=Vl0dOv6iw5sn/VChNyqELiyUhsxm1js0ZVWKW8+ktuK6TRV0sboQGeLEQO/h82GuDT7M3zJCMVOFNypiyB/CAZ+X2cz584EXYDcqX+oRiLkgQJshilERtGgAAYrmgG9fGfRX/T7H9zUAfcxtGCeXsc4gdUTSZJ0ssERJQ3wFq9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785837693; c=relaxed/simple; bh=TMQeIMZRw8PiU1k8PZHl2nDeslgEmvjKRDAJVayJmug=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=mmvuSzBf4RdJj6L4QH/ljFo/P1hZwfOpGrnLQUCTCTP3SGo9Lg+JjzSUWtg6pS+LeTrXSaDRfXP5eQuveHcmpYPaZcjRKxNKhTWSFE67OBSJSs1rcbIThNFdNuMS+wpJOSieIDSPHnLA7cfKClYITxbxxDzUitInzBzQLXvV/IE= 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=S2wEOe76; arc=none smtp.client-ip=209.85.216.46 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="S2wEOe76" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-38e42560ebcso3365183a91.1 for ; Tue, 04 Aug 2026 03:01:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1785837691; x=1786442491; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=aYflmuUwZg+LkDRhQLs4cwbxThznTN9cF2/RrSbCR3E=; b=S2wEOe762zwsHdcciKxunGLMxWPruj9vGnlIiawB/Bz+wA+Dv+ycW8D784krhSIRXg 4yB5MHYb58hwTol6Eq0+4fOKMtCEQ98AMYGXEcvPDk+YHp2MhAfIbG0q6/ZMd1qqUsIg devoJ4rK5nm53GR9zU4Ek9D661Q6Got9eHlMrpoBTR5JWUevGSTunC0pGa6nQMTIMnPU Tm0Pg38aLgrvq3Y0Vb5nuwotclrmFEN8genpEFFGYOtCcqQ6wfVOhWlY9GeQzuH7G02d w+6Tf1ilmw7SW3RENSCS++91/vhKk2vNRpTnUMvc+wgjtZdUj77IeyGc4Qm2dPgyEwNt KeJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785837691; x=1786442491; h=content-transfer-encoding:mime-version: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=aYflmuUwZg+LkDRhQLs4cwbxThznTN9cF2/RrSbCR3E=; b=tIynvjWRqnmr64o0bR6PstDspU8obFBb47AgAgwcNZWG05DSenjaZwOY1ZYxlKM+hM ebQDyRMBYEAiKjm35dR0zqXChMwBqRrbNTaqkiDiS5txzM4BTafM8iFRYnOXSOcIWb7M 9AMOd5JnYCxiNLTsL8pNWsz19OFQI3JQer/oJ8O5scA//8tAaf7VFPx3feeqXfh6cUwo Ck9jaRWKIY9ZX6rqwzhqn5dEmGKaZHN/Kg8BYqHv3DWZbOZ8NubtWYq1dWfr0Gzjr2v1 edrkj1VdCBLzFIWzcuzbGMY91vo+BuigXB4jJDHRkJTQ3BCGZBOxELnVNhNxZbjcVgeR MC7A== X-Forwarded-Encrypted: i=1; AHgh+RpKoA2rSUelSZcSXfTSHrNg/NuE1OLkO/8MTgi+/s2Joj9VyKyBNtR13b9yA0KBGZUZ1ddnFNj64aQlvlQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyWmk8Ro/7ogJlvA0KenWJYq0c1OSxjhOFPHWYUKnwMrD3JyHxN omaIh8Ddh4xrQv8z8ZynZ0Gx80CSvn/AVeF7Uamxtm0q68mLGyvBAr++hRGWIhgdYt0BFiAnzdk RNUgEQdndhw== X-Gm-Gg: AR+sD13A+WGSveP+88gYzHCwD+taMmxx1epuN+HrTkxsNEEGTFJtRIm9h/dcpx4Ftts rk20a3aenxBOxvuSagMA+GmhgK3B3BcV+te+7H8nwuW9y83MnvvgeAHQikUSHsZYlUrlalDSPH+ 0FGqsWPhbabp9BI3Pn6CrRkzHJdIZbLVOtXaDaHbNb8LV4TJ6+vKWvKAqfSa1e2F/J/0FtQOGus oJZQM8c3nI32jRyMPDoRb7VOB6CwvGQYyVd5QBxPX/lfGzmzb3CQ0nY7ECUa+Z7gJpOblvbxH/8 kRjOw4GggQlelwlclnxNlIsvUlKpvDZtCFXs3wNVkT7gSwJA1Y+SMYKFkZi/EUzDchzmHkMVa2u 8AM80iU2LCFzm4bgQ2eOZmbRTndYAfjvNqyBMvMvAJ74gQdgtgkoIFHCiwnGM+pFCTNh++fwC/m KIiG8du0g/ShRJpd1zP4yY0aJC+V1GdUJ+VPVgalccRY8Bw4HyQgTI5fpjFXF98W5v+oe2OWaGN kU0bq0XI+qtZ6x46bVPcvfDYWNHrKWEZJqk X-Received: by 2002:a17:90b:3bc8:b0:38e:712a:be68 with SMTP id 98e67ed59e1d1-38fbc59c8a8mr11833017a91.43.1785837690462; Tue, 04 Aug 2026 03:01:30 -0700 (PDT) Received: from G6L4RL2QG9.bytedance.net ([61.213.176.12]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38febffb2ecsm1064200a91.8.2026.08.04.03.01.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 04 Aug 2026 03:01:29 -0700 (PDT) From: Muchun Song To: Andrew Morton , David Hildenbrand , linux-mm@kvack.org Cc: Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , linux-kernel@vger.kernel.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH] mm/sparse: keep mem_section_usage_size() internal Date: Tue, 4 Aug 2026 18:01:14 +0800 Message-ID: <20260804100114.16627-1-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" mem_section_usage_size() is only needed by sparsemem implementation code, but declaring it in mmzone.h makes the helper visible to all mmzone.h users. Move the helper to sparse.h so sparse.c and sparse-vmemmap.c can share it through the internal header. While doing so, calculate the allocation size with struct_size(), which ties the expression to the pageblock_flags trailing array instead of open-coding the struct header plus bitmap size. Signed-off-by: Muchun Song --- include/linux/mmzone.h | 1 - mm/sparse.c | 10 ---------- mm/sparse.h | 6 ++++++ 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index a26c8b855222..86891163e0ef 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -2070,7 +2070,6 @@ static inline struct mem_section *__nr_to_section(uns= igned long nr) #endif return &mem_section[root][nr & SECTION_ROOT_MASK]; } -extern size_t mem_section_usage_size(void); =20 /* * We use the lower bits of the mem_map pointer to store a little bit of diff --git a/mm/sparse.c b/mm/sparse.c index 704a9dec2b9a..46458e5300e2 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -213,16 +213,6 @@ static void __init memblocks_present(void) memory_present(nid, start, end); } =20 -static unsigned long usemap_size(void) -{ - return BITS_TO_LONGS(SECTION_BLOCKFLAGS_BITS) * sizeof(unsigned long); -} - -size_t mem_section_usage_size(void) -{ - return sizeof(struct mem_section_usage) + usemap_size(); -} - #ifdef CONFIG_SPARSEMEM_VMEMMAP unsigned long __init section_map_size(void) { diff --git a/mm/sparse.h b/mm/sparse.h index 95aa031213f2..4960a17b706f 100644 --- a/mm/sparse.h +++ b/mm/sparse.h @@ -47,6 +47,12 @@ static inline void __section_mark_present(struct mem_sec= tion *ms, =20 ms->section_mem_map |=3D SECTION_MARKED_PRESENT; } + +static inline size_t mem_section_usage_size(void) +{ + return struct_size((struct mem_section_usage *)NULL, pageblock_flags, + BITS_TO_LONGS(SECTION_BLOCKFLAGS_BITS)); +} #else static inline void sparse_init(void) {} #endif /* CONFIG_SPARSEMEM */ base-commit: 9a4cdc958dd79fc6c3b20b51a10debec6ca09fec --=20 2.54.0