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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E14ECC433FE for ; Fri, 15 Oct 2021 16:28:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BD19361181 for ; Fri, 15 Oct 2021 16:28:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241327AbhJOQax (ORCPT ); Fri, 15 Oct 2021 12:30:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:59594 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241319AbhJOQaN (ORCPT ); Fri, 15 Oct 2021 12:30:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1634315287; 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=fVoo/wEaPXgvHRpj8N841l0tEm3CQ7P8YvLK3b5GSH8=; b=SddQnWX1P4JExWe/+i283c/1hZ+ZOQQhdCWQ6ciCuQ9HKrkOYNOBEPC+OlQ/f68ChPTQsz HPUTknI/ak213s/ZGVDW3oWJYCvdGZJrNSpK5HcnkybNjHg5GOXtrpO+/KVb4yn7mhMVJJ QSEh0oGkEpQowyxAKY9PMdQqNPDQg3U= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-346-BlZIci3XNG2YASFo4RsoNA-1; Fri, 15 Oct 2021 12:28:05 -0400 X-MC-Unique: BlZIci3XNG2YASFo4RsoNA-1 Received: by mail-wr1-f72.google.com with SMTP id c4-20020a5d6cc4000000b00160edc8bb28so6142112wrc.9 for ; Fri, 15 Oct 2021 09:28:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:organization:in-reply-to :content-transfer-encoding; bh=fVoo/wEaPXgvHRpj8N841l0tEm3CQ7P8YvLK3b5GSH8=; b=I4BY4gIkBHSXRNh8Q6p3D1cQzvaCsbitxsXzBDMPJjbjyz69SPlvAFXorHaxig8ig3 y5M/i+t0BE61kDDBH1RVAmLDeaLb7NMB+wxWrf1MLS7870Hqsv6z3mU8eFgOntQINZ67 /HixqGOGgPiZpNkHwwA78ymT3OEleex1iJBTExWnnuKg6MAq5nWODHiR3sfx4B55hPpn 5D89nmKeYr3rq01xOgqGOKiKKDeePji8wRQMODgyV7kEEdqxGWfeC9uaTSFlc+LeD7F6 rV3ZHoNr5PamDzteVCKVwK6u4e1QlHlVuRYsIxCF/3ousdQpbnYRGhCUrxjnUaP9kJpZ KZPQ== X-Gm-Message-State: AOAM532lYwpzBgHAC/KjyXnNXjBthQh5yanRCYD0c8gdPnOYNBPO5mcx g1VFuQGpx81MX51HM/J2gfOV0lewgM5EjR+sRhYjNdIPjyc5lTvsT0w3Mv7YAfEfso9YzRqADMc J53hZlCYVCCYRVMM5S2o4+Tjv X-Received: by 2002:adf:bbd1:: with SMTP id z17mr15316192wrg.61.1634315284536; Fri, 15 Oct 2021 09:28:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyY38Kw6/5SnX3X+xiuKSGHMv/fr5pKGXrlQpNCFnZijaAf2HmdUja4ZtS2emZG3U+LBrAreQ== X-Received: by 2002:adf:bbd1:: with SMTP id z17mr15316179wrg.61.1634315284327; Fri, 15 Oct 2021 09:28:04 -0700 (PDT) Received: from [192.168.3.132] (p5b0c6a01.dip0.t-ipconnect.de. [91.12.106.1]) by smtp.gmail.com with ESMTPSA id 143sm11383330wma.37.2021.10.15.09.28.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 15 Oct 2021 09:28:03 -0700 (PDT) Message-ID: <54baa765-9ad6-233a-dc60-25073c1625f4@redhat.com> Date: Fri, 15 Oct 2021 18:28:03 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0 Subject: Re: selftests/vm madv_populate.c test Content-Language: en-US To: Shuah Khan Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org References: <0a20f6b6-5985-8b3e-a577-7495dcf7d2b8@redhat.com> <3a06d58e-7301-6fbc-a305-d9f7c7220843@linuxfoundation.org> <77f4c6a9-141d-e103-7339-0055cc00f752@redhat.com> <78de0991-8e9a-693c-c020-472daa9ce916@redhat.com> From: David Hildenbrand Organization: Red Hat In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 15.10.21 18:25, Shuah Khan wrote: > On 10/15/21 10:19 AM, David Hildenbrand wrote: >> On 15.10.21 18:15, David Hildenbrand wrote: >>> On 15.10.21 18:06, David Hildenbrand wrote: >>>> On 15.10.21 17:47, David Hildenbrand wrote: >>>>> On 15.10.21 17:45, Shuah Khan wrote: >>>>>> On 9/18/21 1:41 AM, David Hildenbrand wrote: >>>>>>> On 18.09.21 00:45, Shuah Khan wrote: >>>>>>>> Hi David, >>>>>>>> >>>>>>>> I am running into the following warning when try to build this test: >>>>>>>> >>>>>>>> madv_populate.c:334:2: warning: #warning "missing MADV_POPULATE_READ or MADV_POPULATE_WRITE definition" [-Wcpp] >>>>>>>>     334 | #warning "missing MADV_POPULATE_READ or MADV_POPULATE_WRITE definition" >>>>>>>>         |  ^~~~~~~ >>>>>>>> >>>>>>>> >>>>>>>> I see that the following handling is in place. However there is no >>>>>>>> other information to explain why the check is necessary. >>>>>>>> >>>>>>>> #if defined(MADV_POPULATE_READ) && defined(MADV_POPULATE_WRITE) >>>>>>>> >>>>>>>> #else /* defined(MADV_POPULATE_READ) && defined(MADV_POPULATE_WRITE) */ >>>>>>>> >>>>>>>> #warning "missing MADV_POPULATE_READ or MADV_POPULATE_WRITE definition" >>>>>>>> >>>>>>>> I do see these defined in: >>>>>>>> >>>>>>>> include/uapi/asm-generic/mman-common.h:#define MADV_POPULATE_READ       22 >>>>>>>> include/uapi/asm-generic/mman-common.h:#define MADV_POPULATE_WRITE      23 >>>>>>>> >>>>>>>> Is this the case of missing include from madv_populate.c? >>>>>>> >>>>>>> Hi Shuan, >>>>>>> >>>>>>> note that we're including "#include ", which in my >>>>>>> understanding maps to the version installed on your system instead >>>>>>> of the one in our build environment.ing. >>>>>>> >>>>>>> So as soon as you have a proper kernel + the proper headers installed >>>>>>> and try to build, it would pick up MADV_POPULATE_READ and >>>>>>> MADV_POPULATE_WRITE from the updated headers. That makes sense: you >>>>>>> annot run any MADV_POPULATE_READ/MADV_POPULATE_WRITE tests on a kernel >>>>>>> that doesn't support it. >>>>>>> >>>>>>> See vm/userfaultfd.c where we do something similar. >>>>>>> >>>>>> >>>>>> Kselftest is for testing the kernel with kernel headers. That is the >>>>>> reason why there is the dependency on header install. >>>>>> >>>>>>> >>>>>>> As soon as we have a proper environment, it seems to work just fine: >>>>>>> >>>>>>> Linux vm-0 5.15.0-0.rc1.20210915git3ca706c189db.13.fc36.x86_64 #1 SMP Thu Sep 16 11:32:54 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux >>>>>>> [root@vm-0 linux]# cat /etc/redhat-release >>>>>>> Fedora release 36 (Rawhide) >>>>>> >>>>>> This is a distro release. We don't want to have dependency on headers >>>>>> from the distro to run selftests. Hope this makes sense. >>>>>> >>>>>> I still see this on my test system running Linux 5.15-rc5. >>>>> >>>>> Did you also install Linux headers? I assume no, correct? >>>>> >>>> >>>> What happens in your environment when compiling and running the >>>> memfd_secret test? >>>> >>>> If assume you'll see a "skip" when executing, because it might also >>>> refer to the local version of linux headers and although it builds, it >>>> really cannot build something "functional". It just doesn't add a >>>> "#warning" to make that obvious. >>>> >>> >>> The following works but looks extremely hackish. >>> >>> diff --git a/tools/testing/selftests/vm/madv_populate.c >>> b/tools/testing/selftests/vm/madv_populate.c >>> index b959e4ebdad4..ab26163db540 100644 >>> --- a/tools/testing/selftests/vm/madv_populate.c >>> +++ b/tools/testing/selftests/vm/madv_populate.c >>> @@ -14,12 +14,11 @@ >>> #include >>> #include >>> #include >>> +#include "../../../../usr/include/linux/mman.h" >>> #include >>> >>> #include "../kselftest.h" >>> >>> -#if defined(MADV_POPULATE_READ) && defined(MADV_POPULATE_WRITE) >>> - >>> /* >>> * For now, we're using 2 MiB of private anonymous memory for all tests. >>> */ >>> @@ -328,15 +327,3 @@ int main(int argc, char **argv) >>> err, ksft_test_num()); >>> return ksft_exit_pass(); >>> } >>> - >>> -#else /* defined(MADV_POPULATE_READ) && defined(MADV_POPULATE_WRITE) */ >>> - >>> -#warning "missing MADV_POPULATE_READ or MADV_POPULATE_WRITE definition" >>> - >>> -int main(int argc, char **argv) >>> -{ >>> - ksft_print_header(); >>> - ksft_exit_skip("MADV_POPULATE_READ or MADV_POPULATE_WRITE not >>> defined\n"); >>> -} >>> - >>> -#endif /* defined(MADV_POPULATE_READ) && defined(MADV_POPULATE_WRITE) */ >>> >>> >>> There has to be some clean way to achieve the same. >>> >> >> Sorry for the spam, >> >> diff --git a/tools/testing/selftests/vm/Makefile >> b/tools/testing/selftests/vm/Makefile >> index d9605bd10f2d..ce198b329ff5 100644 >> --- a/tools/testing/selftests/vm/Makefile >> +++ b/tools/testing/selftests/vm/Makefile >> @@ -23,7 +23,7 @@ MACHINE ?= $(shell echo $(uname_M) | sed -e >> 's/aarch64.*/arm64/' -e 's/ppc64.*/p >> # LDLIBS. >> MAKEFLAGS += --no-builtin-rules >> >> -CFLAGS = -Wall -I ../../../../usr/include $(EXTRA_CFLAGS) >> +CFLAGS = -Wall -idirafter ../../../../usr/include $(EXTRA_CFLAGS) >> LDLIBS = -lrt -lpthread >> TEST_GEN_FILES = compaction_test >> TEST_GEN_FILES += gup_test >> >> >> Seems to set the right include path priority. >> >> > > Yes. It works on linux-next-20211012 > > Do you mind sending a me patch for this? I just double-checked (after make clean) and there is still something wrong :( the only think that seems to work is the +#include "../../../../usr/include/linux/mman.h" #include hack. Using "-nostdinc" won't work because we need other headers :( -- Thanks, David / dhildenb