Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1049741rwb; Tue, 4 Oct 2022 14:46:15 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6QVmdGlT1iFVdczyPOPNEj7VW78qa4wK/7LCDeEGzlZoeCSAyASlMJc8w1iVrcgM+oDqTF X-Received: by 2002:a05:6a00:2292:b0:547:5bd7:8966 with SMTP id f18-20020a056a00229200b005475bd78966mr29514300pfe.62.1664919975642; Tue, 04 Oct 2022 14:46:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664919975; cv=none; d=google.com; s=arc-20160816; b=ISZCuvCYVJnjUIZc7S531etEQSLxvnnshO5b4iyX7glmj57k60SDFHQLiJYnIIDfsb CSmU3/crerOSIzXSuSMlhzCqgmwgJDuvWfQP6gyZMd2FD3N+GYHsHXQE5rfCpPItzf43 thBnfaqlpbv2M1AP6j07Sz7CZ81hSSSozjvA2vb1yXrxLR41gqoc2ygCerjy9A/T4BMZ qTIXEU2aulTSTAlQ3eMTnYnSR26kUNhs9knk1dFISYTtqNnfGfSd3OuPEZeAHJ2V4uJY aCCGAQI+6XfO3ITTlzkU01xuk1ViFBqUTmHF4dWMTKOMZ3q8i6TFUReBSKSpO9XgGBYJ Y83A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=/w2JwM8JeFqa2ztqMSbd+xEgiAESxi1m1hIt+DBhlCQ=; b=K24s7iFUDLYMgq7ENcBYI2Mpi7CmUC6fZUTJNBo0B35WGkKhlpDE9m2UZ/IqMLTNX/ /ym2ZDLM6OItaSAWLqQYJL7gtjF4XlWmT1h79Ek9+2tN0Fv02vHvm5bRHjvKFqEj6ESW n9bUjiGoftTRa73DkcjmbY0P4LncRgVt320KWRy/byOIMTV5qSZMOdCgKgZqs9G83SpG TFbPdrZf3UOF/B2CcY970yA9glY4+Cvmr7S2qVHJ04u6z4tBU3aTtCSPOGvjstAW7QM/ iMb7VTRTwmV93eWx6dWha7J+UsRlAVmGE5/rQjEIw7O6V7yqXwvFkRY555C/vc2NmKp1 NOKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Z57QAEJP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l7-20020a637007000000b0043be8b2d5easi11306009pgc.497.2022.10.04.14.46.04; Tue, 04 Oct 2022 14:46:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Z57QAEJP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231912AbiJDVoV (ORCPT + 99 others); Tue, 4 Oct 2022 17:44:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56454 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230159AbiJDVoA (ORCPT ); Tue, 4 Oct 2022 17:44:00 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8264070E75 for ; Tue, 4 Oct 2022 14:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664919690; 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=/w2JwM8JeFqa2ztqMSbd+xEgiAESxi1m1hIt+DBhlCQ=; b=Z57QAEJPcI7UZhQ3yMQW0hPUUaN31mPYiMvXIO/NSvGt39yINSfM5Jax/VVkSSVpAOAx+8 sQTlc20ZCF0wVdOe4CPs5XvrPEFK+UL4j0aZYnNBKHKVOeBj3v+i+je935paUyltUl8zQb 5Ta4BdD2cOXwjGQb2U4L5k142SWU5yc= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-150-uI4hRshAO6qA_Mlyzizwfg-1; Tue, 04 Oct 2022 17:41:29 -0400 X-MC-Unique: uI4hRshAO6qA_Mlyzizwfg-1 Received: by mail-qk1-f199.google.com with SMTP id h8-20020a05620a284800b006b5c98f09fbso12934085qkp.21 for ; Tue, 04 Oct 2022 14:41:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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; bh=/w2JwM8JeFqa2ztqMSbd+xEgiAESxi1m1hIt+DBhlCQ=; b=DXypp2sh6tjpslC/rYk0LO7cII83T7mKkNdDO8STnoXkk0uTBgV8X0x70a7qCgzj9q pQTtJedYPiRasBAlfCVDdGo49E5Et/N5ygNjStkRZ3HDJi4k9ijtmRhWA2kDLBamwqJn gRMHa82++xzyW0llhq5XPTH2Wy6dIPDHAZpB3qT25sF2VQdOVqrbtezzcPCTE0WxTN2J S3aSmA1njDlwZHjjJXTQ9JuXKrHUSYTvkUpmPZX/WBxxMorvdaP4YpNzzJY5xco2wAP8 jc8GMWJYb9glu5Sa2oeUyyEJm4+D7CE6AGOxINekQNkCye9JQPvNEmKbzQtTC8YC8Y1O XHeQ== X-Gm-Message-State: ACrzQf17AXp9HIxSa0e/CLzRdkC60Du5ENjenz5qfQa2sA5pr4igdvpT AloHtP+uoTKNY60aUjWrnLwsNTkLTSalirhDb5ovexzUUNrUh1hGGIaLosQI426lJ1s3Z7lrqWX fyRCwYhFePNCl+4qKLhFHHYS9sK+b3/nHOFG+whwIFbCr1iOMAky1EVKOUCpueUlGAlxCBO9HiA == X-Received: by 2002:ac8:5cd5:0:b0:35b:bbd1:20ea with SMTP id s21-20020ac85cd5000000b0035bbbd120eamr21123623qta.549.1664919688666; Tue, 04 Oct 2022 14:41:28 -0700 (PDT) X-Received: by 2002:ac8:5cd5:0:b0:35b:bbd1:20ea with SMTP id s21-20020ac85cd5000000b0035bbbd120eamr21123607qta.549.1664919688375; Tue, 04 Oct 2022 14:41:28 -0700 (PDT) Received: from x1n.redhat.com (bras-base-aurron9127w-grc-46-70-31-27-79.dsl.bell.ca. [70.31.27.79]) by smtp.gmail.com with ESMTPSA id y15-20020a05620a25cf00b006bbf85cad0fsm15519956qko.20.2022.10.04.14.41.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Oct 2022 14:41:27 -0700 (PDT) From: Peter Xu To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Andrew Morton , peterx@redhat.com, Axel Rasmussen , Mike Kravetz Subject: [PATCH 1/4] selftests/vm: Use memfd for hugetlb tests Date: Tue, 4 Oct 2022 17:41:22 -0400 Message-Id: <20221004214125.120993-2-peterx@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221004214125.120993-1-peterx@redhat.com> References: <20221004214125.120993-1-peterx@redhat.com> MIME-Version: 1.0 Content-type: text/plain Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We already used memfd for shmem test, move it forward with hugetlb too so that we don't need user to specify the hugetlb file path explicitly when running hugetlb shared tests. Signed-off-by: Peter Xu --- tools/testing/selftests/vm/userfaultfd.c | 60 ++++++++---------------- 1 file changed, 20 insertions(+), 40 deletions(-) diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c index 74babdbc02e5..c0c6853cdce5 100644 --- a/tools/testing/selftests/vm/userfaultfd.c +++ b/tools/testing/selftests/vm/userfaultfd.c @@ -93,10 +93,8 @@ static volatile bool test_uffdio_zeropage_eexist = true; static bool test_uffdio_wp = true; /* Whether to test uffd minor faults */ static bool test_uffdio_minor = false; - static bool map_shared; -static int shm_fd; -static int huge_fd; +static int mem_fd; static unsigned long long *count_verify; static int uffd = -1; static int uffd_flags, finished, *pipefd; @@ -260,35 +258,21 @@ static void hugetlb_release_pages(char *rel_area) static void hugetlb_allocate_area(void **alloc_area, bool is_src) { + off_t size = nr_pages * page_size; + off_t offset = is_src ? 0 : size; void *area_alias = NULL; char **alloc_area_alias; - if (!map_shared) - *alloc_area = mmap(NULL, - nr_pages * page_size, - PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | - (is_src ? 0 : MAP_NORESERVE), - -1, - 0); - else - *alloc_area = mmap(NULL, - nr_pages * page_size, - PROT_READ | PROT_WRITE, - MAP_SHARED | - (is_src ? 0 : MAP_NORESERVE), - huge_fd, - is_src ? 0 : nr_pages * page_size); + *alloc_area = mmap(NULL, size, PROT_READ | PROT_WRITE, + (map_shared ? MAP_SHARED : MAP_PRIVATE) | + (is_src ? 0 : MAP_NORESERVE), + mem_fd, offset); if (*alloc_area == MAP_FAILED) err("mmap of hugetlbfs file failed"); if (map_shared) { - area_alias = mmap(NULL, - nr_pages * page_size, - PROT_READ | PROT_WRITE, - MAP_SHARED, - huge_fd, - is_src ? 0 : nr_pages * page_size); + area_alias = mmap(NULL, size, PROT_READ | PROT_WRITE, + MAP_SHARED, mem_fd, offset); if (area_alias == MAP_FAILED) err("mmap of hugetlb file alias failed"); } @@ -334,14 +318,14 @@ static void shmem_allocate_area(void **alloc_area, bool is_src) } *alloc_area = mmap(p, bytes, PROT_READ | PROT_WRITE, MAP_SHARED, - shm_fd, offset); + mem_fd, offset); if (*alloc_area == MAP_FAILED) err("mmap of memfd failed"); if (test_collapse && *alloc_area != p) err("mmap of memfd failed at %p", p); area_alias = mmap(p_alias, bytes, PROT_READ | PROT_WRITE, MAP_SHARED, - shm_fd, offset); + mem_fd, offset); if (area_alias == MAP_FAILED) err("mmap of memfd alias failed"); if (test_collapse && area_alias != p_alias) @@ -1821,21 +1805,17 @@ int main(int argc, char **argv) } nr_pages = nr_pages_per_cpu * nr_cpus; - if (test_type == TEST_HUGETLB && map_shared) { - if (argc < 5) - usage(); - huge_fd = open(argv[4], O_CREAT | O_RDWR, 0755); - if (huge_fd < 0) - err("Open of %s failed", argv[4]); - if (ftruncate(huge_fd, 0)) - err("ftruncate %s to size 0 failed", argv[4]); - } else if (test_type == TEST_SHMEM) { - shm_fd = memfd_create(argv[0], 0); - if (shm_fd < 0) + if (test_type == TEST_SHMEM || test_type == TEST_HUGETLB) { + unsigned int memfd_flags = 0; + + if (test_type == TEST_HUGETLB) + memfd_flags = MFD_HUGETLB; + mem_fd = memfd_create(argv[0], memfd_flags); + if (mem_fd < 0) err("memfd_create"); - if (ftruncate(shm_fd, nr_pages * page_size * 2)) + if (ftruncate(mem_fd, nr_pages * page_size * 2)) err("ftruncate"); - if (fallocate(shm_fd, + if (fallocate(mem_fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, nr_pages * page_size * 2)) err("fallocate"); -- 2.37.3