Mike Rapoport <r...@linux.vnet.ibm.com> writes:

> Hi,
>
> On Tue, Jul 24, 2018 at 11:42:09PM -0300, Thiago Jung Bauermann wrote:
>> If userfaultfd runs on a system that doesn't support UFFDIO_ZEROPAGE for
>> shared memory, it currently ends with error code 1 which indicates test
>> failure:
>>
>>   # ./userfaultfd shmem 10 10
>>   nr_pages: 160, nr_pages_per_cpu: 80
>>   bounces: 9, mode: rnd poll, unexpected missing ioctl for anon memory
>>   # echo $?
>>   1
>>
>> This is a real failure, but expected so signal that to the test harness:
>
> I don't think its a real failure. If the kernel does not support
> UFFDIO_ZEROPAGE for shared memory the userfaultfd_zeropage_test can be
> simply skipped.

Ok, good point. I'll make that change in v2.

>>   # ./userfaultfd shmem 10 10
>>   nr_pages: 160, nr_pages_per_cpu: 80
>>   bounces: 9, mode: rnd poll, UFFDIO_ZEROPAGE unsupported in shmem VMAs
>>   # echo $?
>>   2
>>
>> Signed-off-by: Thiago Jung Bauermann <bauer...@linux.ibm.com>
>> ---
>>  tools/testing/selftests/vm/userfaultfd.c | 8 ++++++++
>>  1 file changed, 8 insertions(+)
>>
>> diff --git a/tools/testing/selftests/vm/userfaultfd.c 
>> b/tools/testing/selftests/vm/userfaultfd.c
>> index bc9ec38fbc34..686fe96f617f 100644
>> --- a/tools/testing/selftests/vm/userfaultfd.c
>> +++ b/tools/testing/selftests/vm/userfaultfd.c
>> @@ -1115,6 +1115,14 @@ static int userfaultfd_stress(void)
>>              expected_ioctls = uffd_test_ops->expected_ioctls;
>>              if ((uffdio_register.ioctls & expected_ioctls) !=
>>                  expected_ioctls) {
>> +                    if (test_type == TEST_SHMEM &&
>> +                        (uffdio_register.ioctls & expected_ioctls) ==
>> +                        UFFD_API_RANGE_IOCTLS_BASIC) {
>> +                            fprintf(stderr,
>> +                                    "UFFDIO_ZEROPAGE unsupported in shmem 
>> VMAs\n");
>> +                            return KSFT_XFAIL;
>> +                    }
>> +
>
> By all means, this check should be moved to userfaultfd_zeropage_test().

I made that change in v2.

> Ideally, we should call here ksft_test_result_skip() and simply return from
> the function.

In my understanding, calling ksft_test_result_skip() would require
converting the testcase to use the functions that generate TAP output.

Also, returning here isn't actually necessary: from my testing
userfaultfd_stress() doesn't require zeropage support in shmem so if the
only bit missing from uffdio_register.ioctls is the one for
UFFDIO_ZEROPAGE then this error can simply be ignored and the test can
continue. Do you agree?

>>                      fprintf(stderr,
>>                              "unexpected missing ioctl for anon memory\n");
>>                      return 1;


--
Thiago Jung Bauermann
IBM Linux Technology Center

Reply via email to