On 25.10.22 17:26, Gerald Schaefer wrote:
hugepage-vmemmap test fails for s390 because it assumes a hugepagesize of 2 MB, while we have 1 MB on s390. This results in iterating over two hugepages. If they are consecutive in memory, check_page_flags() will stumble over the additional head page. Otherwise, it will stumble over non-huge pageflags, after crossing the first 1 MB hugepage.
Fix this by using 1 MB MAP_LENGTH for s390.
Signed-off-by: Gerald Schaefer gerald.schaefer@linux.ibm.com
tools/testing/selftests/vm/hugepage-vmemmap.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/tools/testing/selftests/vm/hugepage-vmemmap.c b/tools/testing/selftests/vm/hugepage-vmemmap.c index 557bdbd4f87e..a4695f138cec 100644 --- a/tools/testing/selftests/vm/hugepage-vmemmap.c +++ b/tools/testing/selftests/vm/hugepage-vmemmap.c @@ -11,7 +11,14 @@ #include <sys/mman.h> #include <fcntl.h> +/*
- 1 MB hugepage size for s390
- */
+#if defined(__s390x__) +#define MAP_LENGTH (1UL * 1024 * 1024) +#else #define MAP_LENGTH (2UL * 1024 * 1024) +#endif
Why not detect it at runtime, so this works on any architecture (e.g., ppc64 with 16 MiB IIRC and arm64 with weird sizes)?
A patch that adds such detection code is currently on its way upstream:
https://lore.kernel.org/all/20220927110120.106906-5-david@redhat.com/T/#u
We could factor that out into vm_utils.c