* [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64
@ 2022-11-09 22:11 Punit Agrawal
2022-11-09 22:11 ` [PATCH v2 2/2] selftests: proc: Mark proc-pid-vm as x86_64 only Punit Agrawal
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Punit Agrawal @ 2022-11-09 22:11 UTC (permalink / raw)
To: akpm, shuah
Cc: adobriyan, linux-kernel, linux-fsdevel, linux-kselftest, Punit Agrawal
The proc-empty-vm test is implemented for x86_64 and fails to build
for other architectures. Rather then emitting a compiler error it
would be preferable to only build the test on supported architectures.
Mark proc-empty-vm as a test for x86_64 and customise the Makefile to
build it only when building for this target architecture.
Fixes: 5bc73bb3451b ("proc: test how it holds up with mapping'less process")
Signed-off-by: Punit Agrawal <punit.agrawal@bytedance.com>
---
v1 -> v2
* Fixed missing compilation on x86_64
Previous version
* https://lore.kernel.org/all/20221109110621.1791999-1-punit.agrawal@bytedance.com/
tools/testing/selftests/proc/Makefile | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/proc/Makefile b/tools/testing/selftests/proc/Makefile
index cd95369254c0..743aaa0cdd52 100644
--- a/tools/testing/selftests/proc/Makefile
+++ b/tools/testing/selftests/proc/Makefile
@@ -1,14 +1,16 @@
# SPDX-License-Identifier: GPL-2.0-only
+
+# When ARCH not overridden for crosscompiling, lookup machine
+ARCH ?= $(shell uname -m 2>/dev/null || echo not)
+
CFLAGS += -Wall -O2 -Wno-unused-function
CFLAGS += -D_GNU_SOURCE
LDFLAGS += -pthread
-TEST_GEN_PROGS :=
TEST_GEN_PROGS += fd-001-lookup
TEST_GEN_PROGS += fd-002-posix-eq
TEST_GEN_PROGS += fd-003-kthread
TEST_GEN_PROGS += proc-loadavg-001
-TEST_GEN_PROGS += proc-empty-vm
TEST_GEN_PROGS += proc-pid-vm
TEST_GEN_PROGS += proc-self-map-files-001
TEST_GEN_PROGS += proc-self-map-files-002
@@ -26,4 +28,8 @@ TEST_GEN_PROGS += thread-self
TEST_GEN_PROGS += proc-multiple-procfs
TEST_GEN_PROGS += proc-fsconfig-hidepid
+TEST_GEN_PROGS_x86_64 += proc-empty-vm
+
+TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH))
+
include ../lib.mk
--
2.35.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] selftests: proc: Mark proc-pid-vm as x86_64 only
2022-11-09 22:11 [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Punit Agrawal
@ 2022-11-09 22:11 ` Punit Agrawal
2022-11-10 1:12 ` Shuah Khan
2022-11-10 0:02 ` [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Andrew Morton
2022-11-10 0:20 ` Shuah Khan
2 siblings, 1 reply; 8+ messages in thread
From: Punit Agrawal @ 2022-11-09 22:11 UTC (permalink / raw)
To: akpm, shuah
Cc: adobriyan, linux-kernel, linux-fsdevel, linux-kselftest, Punit Agrawal
The proc-pid-vm test does not have support for architectures other
than x86_64. Mark it as such in the Makefile and in the process remove
the special casing in the test itself.
Signed-off-by: Punit Agrawal <punit.agrawal@bytedance.com>
---
tools/testing/selftests/proc/Makefile | 2 +-
tools/testing/selftests/proc/proc-pid-vm.c | 9 ---------
2 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/tools/testing/selftests/proc/Makefile b/tools/testing/selftests/proc/Makefile
index 743aaa0cdd52..db953c014bf8 100644
--- a/tools/testing/selftests/proc/Makefile
+++ b/tools/testing/selftests/proc/Makefile
@@ -11,7 +11,6 @@ TEST_GEN_PROGS += fd-001-lookup
TEST_GEN_PROGS += fd-002-posix-eq
TEST_GEN_PROGS += fd-003-kthread
TEST_GEN_PROGS += proc-loadavg-001
-TEST_GEN_PROGS += proc-pid-vm
TEST_GEN_PROGS += proc-self-map-files-001
TEST_GEN_PROGS += proc-self-map-files-002
TEST_GEN_PROGS += proc-self-syscall
@@ -29,6 +28,7 @@ TEST_GEN_PROGS += proc-multiple-procfs
TEST_GEN_PROGS += proc-fsconfig-hidepid
TEST_GEN_PROGS_x86_64 += proc-empty-vm
+TEST_GEN_PROGS_x86_64 += proc-pid-vm
TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH))
diff --git a/tools/testing/selftests/proc/proc-pid-vm.c b/tools/testing/selftests/proc/proc-pid-vm.c
index 69551bfa215c..6b0cb772b688 100644
--- a/tools/testing/selftests/proc/proc-pid-vm.c
+++ b/tools/testing/selftests/proc/proc-pid-vm.c
@@ -105,7 +105,6 @@ struct elf64_phdr {
uint64_t p_align;
};
-#ifdef __x86_64__
#define PAGE_SIZE 4096
#define VADDR (1UL << 32)
#define MAPS_OFFSET 73
@@ -209,7 +208,6 @@ static int make_exe(const uint8_t *payload, size_t len)
return fd1;
}
-#endif
/*
* 0: vsyscall VMA doesn't exist vsyscall=none
@@ -225,7 +223,6 @@ static const char str_vsyscall_1[] =
static const char str_vsyscall_2[] =
"ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]\n";
-#ifdef __x86_64__
static void sigaction_SIGSEGV(int _, siginfo_t *__, void *___)
{
_exit(g_vsyscall);
@@ -493,9 +490,3 @@ int main(void)
return 0;
}
-#else
-int main(void)
-{
- return 4;
-}
-#endif
--
2.35.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64
2022-11-09 22:11 [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Punit Agrawal
2022-11-09 22:11 ` [PATCH v2 2/2] selftests: proc: Mark proc-pid-vm as x86_64 only Punit Agrawal
@ 2022-11-10 0:02 ` Andrew Morton
2022-11-10 1:44 ` Shuah Khan
2022-11-10 14:34 ` [External] " Punit Agrawal
2022-11-10 0:20 ` Shuah Khan
2 siblings, 2 replies; 8+ messages in thread
From: Andrew Morton @ 2022-11-10 0:02 UTC (permalink / raw)
To: Punit Agrawal
Cc: shuah, adobriyan, linux-kernel, linux-fsdevel, linux-kselftest
On Wed, 9 Nov 2022 22:11:03 +0000 Punit Agrawal <punit.agrawal@bytedance.com> wrote:
> The proc-empty-vm test is implemented for x86_64 and fails to build
> for other architectures. Rather then emitting a compiler error it
> would be preferable to only build the test on supported architectures.
Why does it fail? What would be involved in making it available
on other architectures?
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64
2022-11-09 22:11 [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Punit Agrawal
2022-11-09 22:11 ` [PATCH v2 2/2] selftests: proc: Mark proc-pid-vm as x86_64 only Punit Agrawal
2022-11-10 0:02 ` [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Andrew Morton
@ 2022-11-10 0:20 ` Shuah Khan
2022-11-10 14:45 ` [External] " Punit Agrawal
2 siblings, 1 reply; 8+ messages in thread
From: Shuah Khan @ 2022-11-10 0:20 UTC (permalink / raw)
To: Punit Agrawal, akpm, shuah
Cc: adobriyan, linux-kernel, linux-fsdevel, linux-kselftest, Shuah Khan
On 11/9/22 15:11, Punit Agrawal wrote:
> The proc-empty-vm test is implemented for x86_64 and fails to build
> for other architectures. Rather then emitting a compiler error it
> would be preferable to only build the test on supported architectures.
>
> Mark proc-empty-vm as a test for x86_64 and customise the Makefile to
> build it only when building for this target architecture.
>
> Fixes: 5bc73bb3451b ("proc: test how it holds up with mapping'less process")
> Signed-off-by: Punit Agrawal <punit.agrawal@bytedance.com>
> ---
> v1 -> v2
> * Fixed missing compilation on x86_64
>
> Previous version
> * https://lore.kernel.org/all/20221109110621.1791999-1-punit.agrawal@bytedance.com/
>
> tools/testing/selftests/proc/Makefile | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/proc/Makefile b/tools/testing/selftests/proc/Makefile
> index cd95369254c0..743aaa0cdd52 100644
> --- a/tools/testing/selftests/proc/Makefile
> +++ b/tools/testing/selftests/proc/Makefile
> @@ -1,14 +1,16 @@
> # SPDX-License-Identifier: GPL-2.0-only
> +
> +# When ARCH not overridden for crosscompiling, lookup machine
> +ARCH ?= $(shell uname -m 2>/dev/null || echo not)
> +
> CFLAGS += -Wall -O2 -Wno-unused-function
> CFLAGS += -D_GNU_SOURCE
> LDFLAGS += -pthread
>
> -TEST_GEN_PROGS :=
> TEST_GEN_PROGS += fd-001-lookup
> TEST_GEN_PROGS += fd-002-posix-eq
> TEST_GEN_PROGS += fd-003-kthread
> TEST_GEN_PROGS += proc-loadavg-001
> -TEST_GEN_PROGS += proc-empty-vm
> TEST_GEN_PROGS += proc-pid-vm
> TEST_GEN_PROGS += proc-self-map-files-001
> TEST_GEN_PROGS += proc-self-map-files-002
> @@ -26,4 +28,8 @@ TEST_GEN_PROGS += thread-self
> TEST_GEN_PROGS += proc-multiple-procfs
> TEST_GEN_PROGS += proc-fsconfig-hidepid
>
> +TEST_GEN_PROGS_x86_64 += proc-empty-vm
Why do you need this? You already have conditional compiles.
Conditionally add proc-empty-vm to TEST_GEN_PROGS like other
tests do.
> +
> +TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH))
> +
> include ../lib.mk
Same question Andrews asked you. What does it take to get this
to work on other architectures. proc and vm tests should be
arch. agnostic as a rule unless it is absolutely necessary to
have them acrh. aware.
thanks,
-- Shuah
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] selftests: proc: Mark proc-pid-vm as x86_64 only
2022-11-09 22:11 ` [PATCH v2 2/2] selftests: proc: Mark proc-pid-vm as x86_64 only Punit Agrawal
@ 2022-11-10 1:12 ` Shuah Khan
0 siblings, 0 replies; 8+ messages in thread
From: Shuah Khan @ 2022-11-10 1:12 UTC (permalink / raw)
To: Punit Agrawal, akpm, shuah
Cc: adobriyan, linux-kernel, linux-fsdevel, linux-kselftest, Shuah Khan
On 11/9/22 15:11, Punit Agrawal wrote:
> The proc-pid-vm test does not have support for architectures other
> than x86_64. Mark it as such in the Makefile and in the process remove
> the special casing in the test itself.
>
> Signed-off-by: Punit Agrawal <punit.agrawal@bytedance.com>
> ---
> tools/testing/selftests/proc/Makefile | 2 +-
> tools/testing/selftests/proc/proc-pid-vm.c | 9 ---------
> 2 files changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/tools/testing/selftests/proc/Makefile b/tools/testing/selftests/proc/Makefile
> index 743aaa0cdd52..db953c014bf8 100644
> --- a/tools/testing/selftests/proc/Makefile
> +++ b/tools/testing/selftests/proc/Makefile
> @@ -11,7 +11,6 @@ TEST_GEN_PROGS += fd-001-lookup
> TEST_GEN_PROGS += fd-002-posix-eq
> TEST_GEN_PROGS += fd-003-kthread
> TEST_GEN_PROGS += proc-loadavg-001
> -TEST_GEN_PROGS += proc-pid-vm
> TEST_GEN_PROGS += proc-self-map-files-001
> TEST_GEN_PROGS += proc-self-map-files-002
> TEST_GEN_PROGS += proc-self-syscall
> @@ -29,6 +28,7 @@ TEST_GEN_PROGS += proc-multiple-procfs
> TEST_GEN_PROGS += proc-fsconfig-hidepid
>
> TEST_GEN_PROGS_x86_64 += proc-empty-vm
> +TEST_GEN_PROGS_x86_64 += proc-pid-vm
Same comment as before. Add proc-pid-vm conditionally to
TEST_GEN_PROGS
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64
2022-11-10 0:02 ` [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Andrew Morton
@ 2022-11-10 1:44 ` Shuah Khan
2022-11-10 14:34 ` [External] " Punit Agrawal
1 sibling, 0 replies; 8+ messages in thread
From: Shuah Khan @ 2022-11-10 1:44 UTC (permalink / raw)
To: Andrew Morton, Punit Agrawal
Cc: shuah, adobriyan, linux-kernel, linux-fsdevel, linux-kselftest,
Shuah Khan
On 11/9/22 17:02, Andrew Morton wrote:
> On Wed, 9 Nov 2022 22:11:03 +0000 Punit Agrawal <punit.agrawal@bytedance.com> wrote:
>
>> The proc-empty-vm test is implemented for x86_64 and fails to build
>> for other architectures. Rather then emitting a compiler error it
>> would be preferable to only build the test on supported architectures.
>
> Why does it fail? What would be involved in making it available
> on other architectures?
>
I have the same question and also don't like adding TEST_GEN_PROGS_x86_64
Please see my comments on the two patches regarding this.
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [External] Re: [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64
2022-11-10 0:02 ` [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Andrew Morton
2022-11-10 1:44 ` Shuah Khan
@ 2022-11-10 14:34 ` Punit Agrawal
1 sibling, 0 replies; 8+ messages in thread
From: Punit Agrawal @ 2022-11-10 14:34 UTC (permalink / raw)
To: Andrew Morton
Cc: Punit Agrawal, shuah, adobriyan, linux-kernel, linux-fsdevel,
linux-kselftest
Hi Andrew,
Thanks for taking a look.
Andrew Morton <akpm@linux-foundation.org> writes:
> On Wed, 9 Nov 2022 22:11:03 +0000 Punit Agrawal <punit.agrawal@bytedance.com> wrote:
>
>> The proc-empty-vm test is implemented for x86_64 and fails to build
>> for other architectures. Rather then emitting a compiler error it
>> would be preferable to only build the test on supported architectures.
>
> Why does it fail? What would be involved in making it available
> on other architectures?
The test is written to fail building on architectures other than
x86_64.
#ifdef __amd64__
munmap(NULL, ((size_t)1 << 47) - 4096);
#else
#error "implement 'unmap everything'"
#endif
I hit the build failure while semi-automating the running of tests on
internal infrastructure.
I am not familiar with the issue being tested but after a bit of
staring, it looks like there are two architecture dependent components
to the tests -
1. TASK_SIZE / application memory layout - the test unmaps the
entire the user virtual address space. For this, it needs to know
the length to pass to munmap().
Although it's possible to add this per-architecture, I am not
sure if there is a way to discover the length passed to munmap().
2. How the vsyscall page (if implemented) is mapped - this
influences the known good values used for comparison in the test.
It doesn't look like vsyscall page is used on arm64 but I am not
sure about the situation with other architectures.
(Alexey, please add if I've missed anything)
Thanks,
Punit
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [External] Re: [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64
2022-11-10 0:20 ` Shuah Khan
@ 2022-11-10 14:45 ` Punit Agrawal
0 siblings, 0 replies; 8+ messages in thread
From: Punit Agrawal @ 2022-11-10 14:45 UTC (permalink / raw)
To: Shuah Khan
Cc: Punit Agrawal, akpm, shuah, adobriyan, linux-kernel,
linux-fsdevel, linux-kselftest
Hi Shuah,
Shuah Khan <skhan@linuxfoundation.org> writes:
> On 11/9/22 15:11, Punit Agrawal wrote:
>> The proc-empty-vm test is implemented for x86_64 and fails to build
>> for other architectures. Rather then emitting a compiler error it
>> would be preferable to only build the test on supported architectures.
>> Mark proc-empty-vm as a test for x86_64 and customise the Makefile
>> to
>> build it only when building for this target architecture.
>> Fixes: 5bc73bb3451b ("proc: test how it holds up with mapping'less
>> process")
>> Signed-off-by: Punit Agrawal <punit.agrawal@bytedance.com>
>> ---
>> v1 -> v2
>> * Fixed missing compilation on x86_64
>> Previous version
>> * https://lore.kernel.org/all/20221109110621.1791999-1-punit.agrawal@bytedance.com/
>> tools/testing/selftests/proc/Makefile | 10 ++++++++--
>> 1 file changed, 8 insertions(+), 2 deletions(-)
>> diff --git a/tools/testing/selftests/proc/Makefile
>> b/tools/testing/selftests/proc/Makefile
>> index cd95369254c0..743aaa0cdd52 100644
>> --- a/tools/testing/selftests/proc/Makefile
>> +++ b/tools/testing/selftests/proc/Makefile
>> @@ -1,14 +1,16 @@
>> # SPDX-License-Identifier: GPL-2.0-only
>> +
>> +# When ARCH not overridden for crosscompiling, lookup machine
>> +ARCH ?= $(shell uname -m 2>/dev/null || echo not)
>> +
>> CFLAGS += -Wall -O2 -Wno-unused-function
>> CFLAGS += -D_GNU_SOURCE
>> LDFLAGS += -pthread
>> -TEST_GEN_PROGS :=
>> TEST_GEN_PROGS += fd-001-lookup
>> TEST_GEN_PROGS += fd-002-posix-eq
>> TEST_GEN_PROGS += fd-003-kthread
>> TEST_GEN_PROGS += proc-loadavg-001
>> -TEST_GEN_PROGS += proc-empty-vm
>> TEST_GEN_PROGS += proc-pid-vm
>> TEST_GEN_PROGS += proc-self-map-files-001
>> TEST_GEN_PROGS += proc-self-map-files-002
>> @@ -26,4 +28,8 @@ TEST_GEN_PROGS += thread-self
>> TEST_GEN_PROGS += proc-multiple-procfs
>> TEST_GEN_PROGS += proc-fsconfig-hidepid
>> +TEST_GEN_PROGS_x86_64 += proc-empty-vm
>
> Why do you need this? You already have conditional compiles.
> Conditionally add proc-empty-vm to TEST_GEN_PROGS like other
> tests do.
I copied this approach from KVM tests. Looks like we've got a few
different ways of disabling compilation within selftests.
I can respin to conditionally compile as suggested if that is the way
forward.
>> +
>> +TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH))
>> +
>> include ../lib.mk
>
> Same question Andrews asked you. What does it take to get this
> to work on other architectures. proc and vm tests should be
> arch. agnostic as a rule unless it is absolutely necessary to
> have them acrh. aware.
Please see my reply elsewhere in the thread for an assessment of the
architecture dependencies.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-11-10 14:45 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-09 22:11 [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Punit Agrawal
2022-11-09 22:11 ` [PATCH v2 2/2] selftests: proc: Mark proc-pid-vm as x86_64 only Punit Agrawal
2022-11-10 1:12 ` Shuah Khan
2022-11-10 0:02 ` [PATCH v2 1/2] selftests: proc: Fix proc-empty-vm build error on non x86_64 Andrew Morton
2022-11-10 1:44 ` Shuah Khan
2022-11-10 14:34 ` [External] " Punit Agrawal
2022-11-10 0:20 ` Shuah Khan
2022-11-10 14:45 ` [External] " Punit Agrawal
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.