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 1147CC7619A for ; Wed, 12 Apr 2023 16:43:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A7B72280009; Wed, 12 Apr 2023 12:43:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A2BFE280001; Wed, 12 Apr 2023 12:43:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8CD56280009; Wed, 12 Apr 2023 12:43:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 782FC280001 for ; Wed, 12 Apr 2023 12:43:02 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 483C21C4843 for ; Wed, 12 Apr 2023 16:43:02 +0000 (UTC) X-FDA: 80673308604.26.6033DF2 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf01.hostedemail.com (Postfix) with ESMTP id 3CB414000F for ; Wed, 12 Apr 2023 16:43:00 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Fqt+253y; spf=pass (imf01.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@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=1681317780; 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=AoupzZV60neLuDl2cXNTlifM0oGkfquzJdJQPjel9/o=; b=j5SKLkDoVMN+OG3hJJcI7DmbQRbifFTXTIIU7AGUhULZ4XLQrQ8pzhNhH2HsZtV6GF1r/x gl62qwzIId4HeKJcMnk/oTCW3baJKl431QxUWXk0zYNuSQurZ9d2WwqjfyHGhiC7c5g9Mx XGZlCJtg0anqFlkSoGKlWuim8tffy2U= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Fqt+253y; spf=pass (imf01.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681317780; a=rsa-sha256; cv=none; b=d97b5UcwJdin4fFHYhmsnODLn9+LzOdpxkdE4yYyoP6huRjmOmPjsKnkD9F2or0BdjHbZr vKr5077D/x1DpMVofSFFgUTa7ElkpBKUIylPPIa18ZinEp2A9uJSZE8eB+7787jDwPWaIh BM63s8dKwPL9ZkkSeANud/48QsBM+dM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1681317779; 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=AoupzZV60neLuDl2cXNTlifM0oGkfquzJdJQPjel9/o=; b=Fqt+253yEMSRCci++usohz4ZPLJQ7tz1q59G1I+5yPwxd66T0yAdDxjBZqCbYBtSrzM45t ojpfNHNlhNFL3jtx9/8ioxXO9hfv2e7y5MiY3aksvu5RLwrfKbH1yMkulY04gpiEqlJ7KN Tbuvo4oFuIpwD+blmZ80v+H27ryjNWQ= Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-19-LE_4LeqFOFK63_7aV7twIw-1; Wed, 12 Apr 2023 12:42:58 -0400 X-MC-Unique: LE_4LeqFOFK63_7aV7twIw-1 Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-5ea572ef499so7657286d6.1 for ; Wed, 12 Apr 2023 09:42:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681317777; x=1683909777; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AoupzZV60neLuDl2cXNTlifM0oGkfquzJdJQPjel9/o=; b=lwLBIP4UGIyZdHeEd0gmeqRi5hnhs32bA0cGJ/lxs2Ni1cUASeqb8qnXHxQBhckOWq 62CPGi4l02DyBEtIZHcYsgsmz8e3QJ4rVy6hjlcHmGcTx/Rq3QrkXZJMEGwQUxGbnYbO ATTJPWW42ZRtsuQ8X5BOm+1yt9MqnOj0n4EqcJt8KfQlSQbnf3KRpUVt7nDDRhbrAP5a t261R3065MuIwhx7hDlE4XXfJ4Dbat9Ns2AaArmWLkU6ItJAMVZ+QaNTwzNssHooWaw/ 0LTFPhOAJOs/98eGY79AvFoYZpVVz7UgoPDk61iIIrg+Gy2hEccsy1eJ/DoLzhEa5Qpx my5w== X-Gm-Message-State: AAQBX9cuveaES9v45c8eMdJhUxgdGe3Bqy4/mcSzLps8viFWg5eXnL5v ZFOzsdtUAyVtXcA/nxy2vqBh/j16n49INpL1JtuHh0G2Ti6b6SnrQJgd9FCwNrLo7Ia7B8OdbX1 9UyUBDV2gbEW9x/jyeLs= X-Received: by 2002:a05:6214:5290:b0:5ed:c96e:ca4a with SMTP id kj16-20020a056214529000b005edc96eca4amr14523310qvb.1.1681317777450; Wed, 12 Apr 2023 09:42:57 -0700 (PDT) X-Google-Smtp-Source: AKy350bfOXnCx58JgZiPwX0xXvF0Ya2D7UIXCwQklBBts7OkUAc2gH540xRewo9GNFpZt0OMQoqV1g== X-Received: by 2002:a05:6214:5290:b0:5ed:c96e:ca4a with SMTP id kj16-20020a056214529000b005edc96eca4amr14523277qvb.1.1681317777138; Wed, 12 Apr 2023 09:42:57 -0700 (PDT) Received: from x1n.redhat.com (bras-base-aurron9127w-grc-40-70-52-229-124.dsl.bell.ca. [70.52.229.124]) by smtp.gmail.com with ESMTPSA id o24-20020a05620a229800b00747d211536dsm4766694qkh.107.2023.04.12.09.42.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Apr 2023 09:42:56 -0700 (PDT) From: Peter Xu To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Andrew Morton , Andrea Arcangeli , Mike Kravetz , Nadav Amit , David Hildenbrand , Mike Rapoport , Axel Rasmussen , Leonardo Bras Soares Passos , peterx@redhat.com, Mike Rapoport Subject: [PATCH v2 15/31] selftests/mm: uffd_open_{dev|sys}() Date: Wed, 12 Apr 2023 12:42:54 -0400 Message-Id: <20230412164254.328335-1-peterx@redhat.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230412163922.327282-1-peterx@redhat.com> References: <20230412163922.327282-1-peterx@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Queue-Id: 3CB414000F X-Stat-Signature: d696fow6gk8ii9ioi9uqgisgd8tdo8er X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1681317780-952691 X-HE-Meta: U2FsdGVkX197MnVXSptYhZaAbNphnJiXYGkEw+fMIBNTn0F9bBjfKur1jT1I4owB3WluevqMFGuMgFMN16df4RgSapTFwX9XmqIXiQiI7oI9CkJTcLAlUz8i3Juwej9dtYSLokMSR8ad3xIwCB3JsOxOi5tEPRZC+EMU9CLsS9Pj6JtHTpD110XQ0VOvfgRjllFAQa2ivKz+/J5QDAKSFc+Uy2Fu3w4YrGn76GDV87/lAfjZLNDlwkq8Z+2h5KLf34AunY9CxGx8EM/oeWwZayMN2UzM2iBebZiDxG0a6tlsWcoghvrQafefVV3wdUCsXhpUarkAplRBqsNjuHhR3kyxOD6/tzCD5qjfgDFQphr/GFvLQMovLGZmzdh+YYDupNcT1+US3tmQU57lVRldqabpRxdmOBRfe18+YsBRru4X0rKakbZy7PJilxpHiPU36ZUna13m/wBcdopfmlYh7MMIXv+bs/XWgODiBT3yQ/4VxHsdEbg2tfyTHk2ofWmz24/yOH17itSTBerHMVFX2D/fGJr/7VyLfkkthyhWHYmLOHRQ93ULdiZ7vRpXSsIVhJeoSO/GmBGSao/TPkkvNQDp8Kjut8wSSLM8FrBY0cAtWIzKMd6a3USKn52LaNu8Kcv/t9k3F3ifRj/EwR9sXPgKCzJ9HP6uld3CcQ3fWzdkmZbvK5wZYqo4SUGiiImoTA+9MDYIemXTilxWa9gMB9EAv85n9Q6NjEh7OtKSa1WpswQmzlA8nBBEcPMm6bsS7It0gRKIcdxiLViAocfvJEXiOdps9pFRFW9Bj75jp7kRete9PK7BGvXboP7EFm67Ofp35bnLlaXJdCGepluJ0hTRVM01xE1We3HFpqofPSBfMhxzStdvD1fTqDAtV3DSWwl3ADYn6pcbl0W0AH2+CEpGmXEiwjViBNdNOfhwl7saITXvhKn/KOJkJbQOfX7/np0WFjfVlVvhV5lmvvy FEd1Mu+M +8/sdd93XXhvLXhfakX7e3kYcanETVtSMTa6/ytYoA3LSN7AMjMu3F9nOw42PQSS4ebhC7TwB4A5zAnb/fH/MriQlkaoEqbzcMVjyxzLzEtuyo27vHzmrohkVcVBp6NvpGCMX2RSxNr9mAAjTSQKgCxl3q7wC3V2YQ4w9HWyNtqZAcfno+tngM73VHlmAPO/+uEWOy8vI65RCUM2FADc7hhWA/O4coTLXHHEEfWyG/GOmod6LmyfHB4K/h0pu3WGESz3GaGGqYioI2qzJxN2KbhVbZ46YYx7SqmyMkj5RZFQuCrYxzuea9e10jpwkQ/tGU9d4+NysbBQIjM9yGhunwVPS67VQIhYo0gkm95bw3/0NL0cTW5jSczpExBsMM5uU5vlv0IyjMIxtNgPFTuP/aVlYc5Ez6ItkfW87rHblXcKuLJeUeonhyWb5jR7VG2dzNM7kFw/KEZmOAHkz4gVz1i5O2lUpkTtMxOOkBMdzxq0qGJVlOBup61u4xCvUMcP95OHKPrCtkVnEhtBjAYeD4DIrF5Aoti8dwVsqaFM/CXuwiCWDIGAZy+c0btdGMAl2jOuWCUlnzO0beLA= 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: Provide two helpers to open an uffd handle. Drop the error checks around SKIPs because it's inside an errexit() anyway, which IMHO doesn't really help much if the test will not continue. Reviewed-by: David Hildenbrand Reviewed-by: Mike Rapoport (IBM) Signed-off-by: Peter Xu --- tools/testing/selftests/mm/uffd-common.c | 28 +++++------------------- tools/testing/selftests/mm/vm_util.c | 24 ++++++++++++++++++++ tools/testing/selftests/mm/vm_util.h | 2 ++ 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/tools/testing/selftests/mm/uffd-common.c b/tools/testing/selftests/mm/uffd-common.c index daa5b5781e7a..09ea24c5f02c 100644 --- a/tools/testing/selftests/mm/uffd-common.c +++ b/tools/testing/selftests/mm/uffd-common.c @@ -192,34 +192,16 @@ void uffd_stats_report(struct uffd_stats *stats, int n_cpus) printf("\n"); } -static int __userfaultfd_open_dev(void) -{ - int fd, _uffd; - - fd = open("/dev/userfaultfd", O_RDWR | O_CLOEXEC); - if (fd < 0) - errexit(KSFT_SKIP, "opening /dev/userfaultfd failed"); - - _uffd = ioctl(fd, USERFAULTFD_IOC_NEW, UFFD_FLAGS); - if (_uffd < 0) - errexit(errno == ENOTTY ? KSFT_SKIP : 1, - "creating userfaultfd failed"); - close(fd); - return _uffd; -} - void userfaultfd_open(uint64_t *features) { struct uffdio_api uffdio_api; if (test_dev_userfaultfd) - uffd = __userfaultfd_open_dev(); - else { - uffd = syscall(__NR_userfaultfd, UFFD_FLAGS); - if (uffd < 0) - errexit(errno == ENOSYS ? KSFT_SKIP : 1, - "creating userfaultfd failed"); - } + uffd = uffd_open_dev(UFFD_FLAGS); + else + uffd = uffd_open_sys(UFFD_FLAGS); + if (uffd < 0) + err("uffd open failed (dev=%d)", test_dev_userfaultfd); uffd_flags = fcntl(uffd, F_GETFD, NULL); uffdio_api.api = UFFD_API; diff --git a/tools/testing/selftests/mm/vm_util.c b/tools/testing/selftests/mm/vm_util.c index bb633d050d71..5ee6c4688a7c 100644 --- a/tools/testing/selftests/mm/vm_util.c +++ b/tools/testing/selftests/mm/vm_util.c @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include "../kselftest.h" #include "vm_util.h" @@ -230,3 +232,25 @@ int uffd_unregister(int uffd, void *addr, uint64_t len) return ret; } + +int uffd_open_dev(unsigned int flags) +{ + int fd, uffd; + + fd = open("/dev/userfaultfd", O_RDWR | O_CLOEXEC); + if (fd < 0) + return fd; + uffd = ioctl(fd, USERFAULTFD_IOC_NEW, flags); + close(fd); + + return uffd; +} + +int uffd_open_sys(unsigned int flags) +{ +#ifdef __NR_userfaultfd + return syscall(__NR_userfaultfd, flags); +#else + return -1; +#endif +} diff --git a/tools/testing/selftests/mm/vm_util.h b/tools/testing/selftests/mm/vm_util.h index 3a9762022efd..481354141533 100644 --- a/tools/testing/selftests/mm/vm_util.h +++ b/tools/testing/selftests/mm/vm_util.h @@ -48,6 +48,8 @@ unsigned long default_huge_page_size(void); int uffd_register(int uffd, void *addr, uint64_t len, bool miss, bool wp, bool minor); int uffd_unregister(int uffd, void *addr, uint64_t len); +int uffd_open_dev(unsigned int flags); +int uffd_open_sys(unsigned int flags); /* * On ppc64 this will only work with radix 2M hugepage size -- 2.39.1