All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.