[PATCH v2 0/4] memblock tests: fix BUILD=32 address conversions and warnings

Tianyi Chen posted 4 patches 1 day, 11 hours ago
mm/memblock.c                            |  2 +-
tools/include/linux/mm.h                 |  2 +-
tools/testing/memblock/tests/basic_api.c | 20 ++++++++++----------
tools/testing/memblock/tests/common.c    |  6 +++---
4 files changed, 15 insertions(+), 15 deletions(-)
[PATCH v2 0/4] memblock tests: fix BUILD=32 address conversions and warnings
Posted by Tianyi Chen 1 day, 11 hours ago
Fix the BUILD=32 physical-address truncation and sign-extension failures,
and address the remaining GCC warnings reported during review.

Changes in v2:
- Use memblock_phys_free() for all synthetic physical ranges in the basic
  API tests, not only the maximum-address check.
- Keep the dummy-memory address conversion fix unchanged.
- Use __pa() in tools virt_to_phys() to avoid a pointer-size warning and
  sign extension of 32-bit pointers with their top bit set.
- Initialize end_rgn to avoid GCC's maybe-uninitialized warning.

Clang BUILD=32 without NUMA also passes on v1 (189 checks). The earlier
cover letter only mentioned the NUMA-enabled configuration tested then.

Validated v2 with GCC 13.3.0 and Clang 18.1.3, retaining the default ASan
and UBSan flags and adding -Werror. Both compilers build without warnings
and pass ./main -v and ./main -m -v in each configuration:
- Default and NUMA=1.
- BUILD=32, with and without NUMA=1.
- 32BIT_PHYS_ADDR_T=1, with and without NUMA=1.
- BUILD=32 NUMA=1 MEMBLOCK_DEBUG=1.

Each run passes 189 checks without NUMA or 272 with NUMA, including both
allocation directions. A separate virt_to_phys() boundary check passes
with both compilers in 32- and 64-bit builds; GCC BUILD=32 failed it on
v1 for 0x80000000 due to sign extension.

v1: https://lore.kernel.org/r/20260916161105.2548281-1-hi@tychen.cc

Tianyi Chen (4):
  memblock tests: use physical addresses for region removal
  memblock tests: zero-extend simulated memory addresses
  tools: use __pa() in virt_to_phys()
  memblock: initialize the region merge end index

 mm/memblock.c                            |  2 +-
 tools/include/linux/mm.h                 |  2 +-
 tools/testing/memblock/tests/basic_api.c | 20 ++++++++++----------
 tools/testing/memblock/tests/common.c    |  6 +++---
 4 files changed, 15 insertions(+), 15 deletions(-)


base-commit: 5728d3523f12826a2b180c1c5738f74e33197e14
-- 
2.55.0
Re: [PATCH v2 0/4] memblock tests: fix BUILD=32 address conversions and warnings
Posted by Mike Rapoport 5 hours ago
On Wed, 23 Sep 2026 11:31:22 +0900, Tianyi Chen wrote:
> memblock tests: fix BUILD=32 address conversions and warnings
> 
> Fix the BUILD=32 physical-address truncation and sign-extension failures,
> and address the remaining GCC warnings reported during review.
> 
> Changes in v2:
> - Use memblock_phys_free() for all synthetic physical ranges in the basic
>   API tests, not only the maximum-address check.
> - Keep the dummy-memory address conversion fix unchanged.
> - Use __pa() in tools virt_to_phys() to avoid a pointer-size warning and
>   sign extension of 32-bit pointers with their top bit set.
> - Initialize end_rgn to avoid GCC's maybe-uninitialized warning.
> 
> [...]

Applied to for-next branch of memblock.git tree, thanks!

[1/4] memblock tests: use physical addresses for region removal
      commit: 9357596afac61154e7f54048c0add9f1293b9eba
[2/4] memblock tests: zero-extend simulated memory addresses
      commit: 6957416ae43de1830174f527b5b8cf737401a8dd
[3/4] tools: use __pa() in virt_to_phys()
      commit: a10f3a08d248fcb3006f587faf42437837fd12c6
[4/4] memblock: initialize the region merge end index
      commit: ba94f68b754985f77c3f6d3354df74952a1e0752

tree: https://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock
branch: for-next

--
Sincerely yours,
Mike.