From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CDE0FC001DD for ; Thu, 13 Jul 2023 14:29:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6222A900028; Thu, 13 Jul 2023 10:29:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5D14890001C; Thu, 13 Jul 2023 10:29:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 49A0C900028; Thu, 13 Jul 2023 10:29:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3DEFA90001C for ; Thu, 13 Jul 2023 10:29:26 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D3ED71402CB for ; Thu, 13 Jul 2023 14:29:25 +0000 (UTC) X-FDA: 81006821490.16.E13AC1D Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf13.hostedemail.com (Postfix) with ESMTP id 6F94020021 for ; Thu, 13 Jul 2023 14:29:23 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=cb9jSeXP; spf=pass (imf13.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689258563; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kWheRexL9/dCgbw7jig9WF+1nd9uSSsREdM3sWtNnIk=; b=jP/o0xf2C1SdrtULggMqeNt+KlT65a2pAwK5c8ga3SPVAGxubBeTG2vaFCA5DZRR5J5XKb b/+oW/+KjKpzJZgze8sqK5jymIzxxpXmjLdFRR5PMD3T87r3o/tn8vpn3P8b7mSM3S5IbH IKkDm1uPRj28C0cN/JBYI9TeRdvUIBc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689258563; a=rsa-sha256; cv=none; b=P5XDfsREhBou6DwTMNE4pPtxWY1shyPpBaJ9xSrTbESeaZFt1AdaMZneCcSYmS3w2pRGfm IwJBJ46Xgq3rW1k0rlnIcUOseMcmfZwo8US7BET2OZoJvA1yItNs9Si7wfe5F+nQ2p0wZv 435gohLJxYRCcc708Q8HXKdO4ow6YhM= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=cb9jSeXP; spf=pass (imf13.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1689258562; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kWheRexL9/dCgbw7jig9WF+1nd9uSSsREdM3sWtNnIk=; b=cb9jSeXP+7BcZ84TYofpyu82IXdAo/lzOrrJXyqVySQsbCGcbVHVLgZIsuk8VKx9G4BLWP sIkFQ0UNtuug7DlXzSM6MzmysOY38YGnjU3eQCZUS7eMtH9gM1LiJTEswrZMV7BNqDqS7/ S2jpOSaYQlSAADicu+WMsLQNzZOAtSU= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-599-1osnrIVRMDq6KJ8S6VPK9w-1; Thu, 13 Jul 2023 10:29:18 -0400 X-MC-Unique: 1osnrIVRMDq6KJ8S6VPK9w-1 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-3fc020021efso3443435e9.0 for ; Thu, 13 Jul 2023 07:29:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689258556; x=1691850556; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kWheRexL9/dCgbw7jig9WF+1nd9uSSsREdM3sWtNnIk=; b=gn7AyZ2ViJpsit5N4dijRcVCRf7V8KJMrsM835RiJ3P3ulsZAiU36Pp15dsez/cwBO utQ1tAayjlpjaybDLHWHeZg5FK+JLipTqIqKMHVZ9waEk5PwHaait3XtWmdvrv/PU5nQ ZPWXfm+WgI/soRtCRDYB9R54G7m/yf0o0cDHZfgXzoa5Y9gQfOrpwuDh56g7Atx9cA9j 32u9dSyMbKnwPf6zzB5p0FgMSSIfoPX3iT+IzCa9HEddEnEi8vL1vqr3o2xKIhiCHtro Z6FMgk6ndobJLLQ5w5I5ePC/+sVba/n7tb5B8mHruqxgPkmP3Mpz952vXt/vv1i+Oji/ fyLw== X-Gm-Message-State: ABy/qLagA/EIRZor30e3WBxHsUY6yiZAyNG2gIr1P+vdmkmiJ9p1Feks Hq0+LYNwEJ7ei1tdHK5O7+MTOzVhacMDvAsOttzqmZtLUtVUeTl5eV3t5rZwWJXW4REzu0UGBR9 PKBUw0nu+bRc= X-Received: by 2002:a5d:5185:0:b0:30f:d1e3:22b7 with SMTP id k5-20020a5d5185000000b0030fd1e322b7mr2068832wrv.6.1689258556557; Thu, 13 Jul 2023 07:29:16 -0700 (PDT) X-Google-Smtp-Source: APBJJlFCo+2nmgVTcBRc9JOJoYST2pj1+6ivlrd1rEq1VKgGw7EbnCrodlPYzOGiJn5LwTkY0iPvLw== X-Received: by 2002:a5d:5185:0:b0:30f:d1e3:22b7 with SMTP id k5-20020a5d5185000000b0030fd1e322b7mr2068802wrv.6.1689258556128; Thu, 13 Jul 2023 07:29:16 -0700 (PDT) Received: from ?IPV6:2003:cb:c717:6100:2da7:427e:49a5:e07? (p200300cbc71761002da7427e49a50e07.dip0.t-ipconnect.de. [2003:cb:c717:6100:2da7:427e:49a5:e07]) by smtp.gmail.com with ESMTPSA id q10-20020adff50a000000b003144bfbd0b3sm8156598wro.37.2023.07.13.07.29.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 13 Jul 2023 07:29:15 -0700 (PDT) Message-ID: Date: Thu, 13 Jul 2023 16:29:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v1 3/9] selftests/mm: Skip soft-dirty tests on arm64 To: Ryan Roberts , Andrew Morton , Shuah Khan , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Mark Brown , John Hubbard , Florent Revest , "Liam R. Howlett" Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org References: <20230713135440.3651409-1-ryan.roberts@arm.com> <20230713135440.3651409-4-ryan.roberts@arm.com> <773cc0a8-24b8-7fcb-2980-7676fc772014@arm.com> <3c566e28-c7ad-7ba8-4583-619266282387@redhat.com> <556d05f0-7103-1079-fce1-1fb6bd40b17c@arm.com> From: David Hildenbrand Organization: Red Hat In-Reply-To: <556d05f0-7103-1079-fce1-1fb6bd40b17c@arm.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 6F94020021 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: gtyp7syi5wt9btnnm1nx3j8k9nposaue X-HE-Tag: 1689258563-196146 X-HE-Meta: U2FsdGVkX1/8eK7g4BPeusod8l9vWzNKevtQhiJQ4S3uqledmPxFDr3oTJBoWndJW2OvxRp0B1MhaqUejjF40s9D0667/lraa2znpHcPAzre9omH4mPaR7yRYad0B1tbeJH43+cyXxuzO+Guvlqwyt4eFgTCqJhyJ7mSY8T0tmzIxjlMTDv77diXAoe9lde9NPsLqNAhVOLMFRZj0W0yN1EgHP+5evMdIHQ3QUNWFWTEI1+TUrlYBVgAHmn1EZlpBN38iIUG6iQJxnJSuUS1cBaVopg/laClWr4tLGVZpcTAP8DYeh36qDJe2dnJdNa5AVWXVqU0JAgquOAMIsnhfx58DYSiqf0hAdgC++kYKjyierlm60koCabrS/PEibRLr3o56W1JzuALUKKv4btwV4N6hebCM1p7xnIk7ZLKaZtg9HKeboGHO3ZT+4IpctoYjoNdOjogQLmOQDQO7R34Mefw8dP/ypinAMXZThnVkDtRQ66SH+TEjir6MaqpzgK+fKqyUD/rA7awkMeNN4qdm+DHtd8GXptqC9a7i7bdLK6Oltznz/yJ2oQKGRbMBr1V1wHtSYJbNo7Ig2EiZQ4KXNs3kZW2E+xVlFBMMaK1Hn4jem/KPZ8gEVl7K6u+pd4roXJIejNSSc7d1Svc2OfG8Rad9c2yyEsA+n15XIfDFyjGERuN0ZPaOn5CXtxhcl0/mHIPp3Ru124DgShjEpd14Q5ZdVep5E6/vull+8Hy92CkiB67TAg6HpicJ6uSvKs3vHrKsxlglJtbJoR9TeXjBDEBlqkxeHkmzkI8u/gluaf7zTv8DlD2N+SBl/GRJ/tBiO6CfMste1AeFriO1mYqZ8jZD3Y/+UOzE7Yf0+Sj2KXE7Edw8qL/H/t2Ffthbr2DiPGRaI9Czp7CBvfC4rcCrt9d19Y52255d/OaQXL0zSw7u3Xpj8rkrvaWF7fAm59IS4KYj3SwyaeH1UqZDvi objFCoTN 8noZbJL4Xd9WqFA+jMvbcYKgOGxWC1+dSaOchqUWdMj38S8uyMKg/x+IvOz+GqrqHHlOLbKvku0RVKJBbP6N4l0PUTndK4WL5INz8Ex4vo64vI/jwXKGAB8b0GxeSamxFbu0uPUQCX5U7uaIdLXaNqXDS3YDHW0oHD2DwAZugEtyJpwZP3ZnQ3vxE6JB3qWsoPA/HYOrB6QzqVc+zHsG+9VO/GNJf8FCp0uXkIsgfeX1SGA1gKxqT24GpGzMaChoc8w1jBdSlML/aDlfSGn5MaBp0OYI+2yHpUtLe+UNVY6+wnM5FdPT8pjldqkNJcr7TjVixvqz5oiMa+3mFhGuLwTeoDq7zt2LLSgImXbewcnuNBTggwsTkR+aqd2Nux30Ztkbida9qumKKc7eytb9TFXywo/0e2cV6O8Q4L7W9M/O3yj7++PS1vCxUXzKo41vV1kBX X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 13.07.23 16:14, Ryan Roberts wrote: > On 13/07/2023 15:09, David Hildenbrand wrote: >> On 13.07.23 16:03, Ryan Roberts wrote: >>> On 13/07/2023 14:56, David Hildenbrand wrote: >>>> On 13.07.23 15:54, Ryan Roberts wrote: >>>>> arm64 does not support the soft-dirty PTE bit. However there are tests >>>>> in `madv_populate` and `soft-dirty` which assume it is supported and >>>>> cause spurious failures to be reported when preferred behaviour would be >>>>> to mark the tests as skipped. >>>>> >>>>> Unfortunately, the only way to determine if the soft-dirty dirty bit is >>>>> supported is to write to a page, then see if the bit is set in >>>>> /proc/self/pagemap. But the tests that we want to conditionally execute >>>>> are testing precicesly this. So if we introduced this feature check, we >>>>> could accedentally turn a real failure (on a system that claims to >>>>> support soft-dirty) into a skip. >>>>> >>>>> So instead, do the check based on architecture; for arm64, we report >>>>> that soft-dirty is not supported. This is wrapped up into a utility >>>>> function `system_has_softdirty()`, which is used to skip the whole >>>>> `soft-dirty` suite, and mark the soft-dirty tests in the `madv_populate` >>>>> suite as skipped. >>>>> >>>>> Signed-off-by: Ryan Roberts >>>>> --- >>>>>    tools/testing/selftests/mm/madv_populate.c | 18 +++++++++++++----- >>>>>    tools/testing/selftests/mm/soft-dirty.c    |  3 +++ >>>>>    tools/testing/selftests/mm/vm_util.c       | 17 +++++++++++++++++ >>>>>    tools/testing/selftests/mm/vm_util.h       |  1 + >>>>>    4 files changed, 34 insertions(+), 5 deletions(-) >>>>> >>>>> diff --git a/tools/testing/selftests/mm/madv_populate.c >>>>> b/tools/testing/selftests/mm/madv_populate.c >>>>> index 60547245e479..5a8c176d7fec 100644 >>>>> --- a/tools/testing/selftests/mm/madv_populate.c >>>>> +++ b/tools/testing/selftests/mm/madv_populate.c >>>>> @@ -232,6 +232,14 @@ static bool range_is_not_softdirty(char *start, ssize_t >>>>> size) >>>>>        return ret; >>>>>    } >>>>> >>>>> +#define ksft_test_result_if_softdirty(cond, ...)    \ >>>>> +do {                            \ >>>>> +    if (system_has_softdirty())            \ >>>>> +        ksft_test_result(cond, __VA_ARGS__);    \ >>>>> +    else                        \ >>>>> +        ksft_test_result_skip(__VA_ARGS__);    \ >>>>> +} while (0) >>>>> + >>>>>    static void test_softdirty(void) >>>>>    { >>>>>        char *addr; >>>>> @@ -246,19 +254,19 @@ static void test_softdirty(void) >>>>> >>>>>        /* Clear any softdirty bits. */ >>>>>        clear_softdirty(); >>>>> -    ksft_test_result(range_is_not_softdirty(addr, SIZE), >>>>> +    ksft_test_result_if_softdirty(range_is_not_softdirty(addr, SIZE), >>>>>                 "range is not softdirty\n"); >>>>> >>>>>        /* Populating READ should set softdirty. */ >>>>>        ret = madvise(addr, SIZE, MADV_POPULATE_READ); >>>>> -    ksft_test_result(!ret, "MADV_POPULATE_READ\n"); >>>>> -    ksft_test_result(range_is_not_softdirty(addr, SIZE), >>>>> +    ksft_test_result_if_softdirty(!ret, "MADV_POPULATE_READ\n"); >>>>> +    ksft_test_result_if_softdirty(range_is_not_softdirty(addr, SIZE), >>>>>                 "range is not softdirty\n"); >>>>> >>>>>        /* Populating WRITE should set softdirty. */ >>>>>        ret = madvise(addr, SIZE, MADV_POPULATE_WRITE); >>>>> -    ksft_test_result(!ret, "MADV_POPULATE_WRITE\n"); >>>>> -    ksft_test_result(range_is_softdirty(addr, SIZE), >>>>> +    ksft_test_result_if_softdirty(!ret, "MADV_POPULATE_WRITE\n"); >>>>> +    ksft_test_result_if_softdirty(range_is_softdirty(addr, SIZE), >>>>>                 "range is softdirty\n"); >>>> >>>> We probably want to skip the whole test_*softdirty* test instead of adding this >>>> (IMHO suboptimal) ksft_test_result_if_softdirty. >>> >>> Yeah I thought about doing it that way, but then the output just looks like >>> there were fewer tests and they all passed. But thinking about it now, I guess >>> the TAP header outputs the number of planned tests and the number of tests >>> executed are fewer, so a machine parser would still notice. I just don't like >>> that it outputs skipped:0. >>> >>> But it a lightly held view. Happy to just do: >>> >>>     if (system_has_softdirty()) >>>         test_softdirty() >>> >>> If you insist. ;-) >> >> diff --git a/tools/testing/selftests/mm/madv_populate.c >> b/tools/testing/selftests/mm/madv_populate.c >> index 60547245e479..33fda0337b32 100644 >> --- a/tools/testing/selftests/mm/madv_populate.c >> +++ b/tools/testing/selftests/mm/madv_populate.c >> @@ -266,12 +266,16 @@ static void test_softdirty(void) >> >>  int main(int argc, char **argv) >>  { >> +       int nr_tests = 16; >>         int err; >> >>         pagesize = getpagesize(); >> >> +       if (system_has_softdirty()) >> +               nr_tests += 5; > > This is the opposite of the point I was trying to make; If there are 21 tests in > a suite, I'd like to know that there are 21 tests, 16 of which passed and 5 of > which were skipped. This will hide the 5 from the test report. Well, these test are impossible on that architecture, which is IMHO different to some kind of "impossible in the configuration" like "no swap", "no hugetlb", "no THP available". -- Cheers, David / dhildenb