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 32D70C77B7E for ; Sun, 28 May 2023 15:04:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C057C6B0074; Sun, 28 May 2023 11:04:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BB5306B0075; Sun, 28 May 2023 11:04:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A7D676B0078; Sun, 28 May 2023 11:04:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 98B306B0074 for ; Sun, 28 May 2023 11:04:52 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 6A0C2C025D for ; Sun, 28 May 2023 15:04:52 +0000 (UTC) X-FDA: 80839986024.13.CBC80FD Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by imf03.hostedemail.com (Postfix) with ESMTP id 8349320014 for ; Sun, 28 May 2023 15:04:50 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=VNTP3hIv; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.43 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1685286290; a=rsa-sha256; cv=none; b=OmUvC2uV34AAk8LQCwZK0IImR6oyWrrMQWwr6qwHT8VAhkGgjgN3DGF0MyI/EXYGRrcD0v jPOWSMX7rA2PcXz2FEu6XlOrafu0BlJh5+hbFJjgUIKkie+r0+cS3Wq6X1EarnZSyApRVr 6TIYFylrSkTww1uI5KIUQB4xSq8Hhb8= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=VNTP3hIv; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.43 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1685286290; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Lmu2fGgKtj6ACiAeNAU++2qaCys/oPeAAPciVcyRr8E=; b=PGwmEU6tMS7kGeWUN39nnzZPMrcHjQ9pZUxdJ++JxXt5cHq+PsGg17SB9i7y8SynWF8Ouv huWKoHmUXGRREzKZFHn8IcBJ4dnMEtUXIMc3CyrUgVP458M/awAfgfJjtL426dir9DYYXE uhvRBChukYQ4tp4T6bQaWQL5Pf0fX0Q= Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-30ad8f33f1aso1382620f8f.0 for ; Sun, 28 May 2023 08:04:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685286289; x=1687878289; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Lmu2fGgKtj6ACiAeNAU++2qaCys/oPeAAPciVcyRr8E=; b=VNTP3hIvPOJbJsHZd6LRbIC6MWhK1sardjlLZ64M0YHRKy2jGfyQbZIvleOVdxpIzY hP1TLHTpTANUc/qjU7v4MOJBmXjXCUDkzRJybmuQJY7tHdM+r9rlACjXnJYuL5VnzZqz KPx5JfBorA1LjDZwtpVDN3Ytr0TYOjjq8yQlnN2W6CKkqhqGg85XJ9q79ZrzcDEVLGLE kZQs9rfB/rlGjAJqoSqfB5pDBUxFMmbraGczJTs1cyqKgWNLt75xxEoznyI+oRZlKnMQ Bsp+JGXCGU456WqvlKEcMCo3QRlUqVjV1jja8qFZJVYQnjg8p++9b30UtQDOauoLgWej mRkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685286289; x=1687878289; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Lmu2fGgKtj6ACiAeNAU++2qaCys/oPeAAPciVcyRr8E=; b=Xt0WocB/e0w9lOLvAVEXxZsKMM1nmu6POHQ8vTbbXIjL6AUAn3ESJV0Dg+zop09a+1 dCLoBwUA/BFfKjBubHqGnMeCsIdmWNl3+6uhNXWPpFcaGNiEbcNUvzFYtpiZDwr4eboA 8bVqJbl6tkSgAsfooLDLNBQNhZ+kPvdrLaaOSwM1wtVjajdV+QrR5r+y6Iz2lTE7Y3Mw LiwSDLpwRJzQPl5pC4YGke+LpstPWww5Ch4FCcWxyy9GpUIyPu7EJDUsHjES2GkRkraE 7LpK1gykwKiLAH9gQeCVoCMtOPKMLpe5vJhYURrcB7z2QBkvXEVQfMnA7ED1d5M7wjii QvVw== X-Gm-Message-State: AC+VfDw2Kww2bwGt+GFMKFzUozOhUl5SqqMWrhEP4BwXcwqzXY/1nZrX dYF+YNJyPnr3h0hn5Aud2A4= X-Google-Smtp-Source: ACHHUZ5ROSZcIZxIZBRpBPo23jhUI5J74WfJyx14MDTpJxtVMUuL7kjNwe6vOgiT2cypRwPL0RLIDw== X-Received: by 2002:adf:f412:0:b0:306:2d3d:a108 with SMTP id g18-20020adff412000000b003062d3da108mr5913759wro.11.1685286289090; Sun, 28 May 2023 08:04:49 -0700 (PDT) Received: from localhost (host81-154-179-160.range81-154.btcentralplus.com. [81.154.179.160]) by smtp.gmail.com with ESMTPSA id e8-20020a5d65c8000000b0030649242b72sm10939674wrw.113.2023.05.28.08.04.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 May 2023 08:04:48 -0700 (PDT) Date: Sun, 28 May 2023 16:04:47 +0100 From: Lorenzo Stoakes To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, Andrew Morton , Shuah Khan , Jens Axboe , Peter Xu , Jason Gunthorpe , John Hubbard , Jan Kara Subject: Re: [PATCH v1 3/3] selftests/mm: gup_longterm: add liburing tests Message-ID: <91f08840-4a43-4678-a116-ead7d3d77d19@lucifer.local> References: <20230519102723.185721-1-david@redhat.com> <20230519102723.185721-4-david@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230519102723.185721-4-david@redhat.com> X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 8349320014 X-Stat-Signature: er7degph5tjkoqraz1prxogmwp93xcm9 X-HE-Tag: 1685286290-793996 X-HE-Meta: U2FsdGVkX1+BqaMcHmMmehMVClOokQ2sO9EY8S0LcxGQ5ib8wLqnSubLdPdOuEvMzbhcM967akk1oy4VMtmCYS6hur39b2z6Njs0LBQpM/eJyUVa4aWPTLRrq3sw3Gu6eK7tHdPr47LusRXDnnICkbCP7NcpQwpHZk1T3P2rXbwdUS+yXC9MftBqG/+3cwbS3GHzRIt47VNviVowDHvpUthkVuYua5Aw0rb2u5+D8RASYPjm5Fxe4WsLNYIV2YBg0w2xKS8zZk0qYwySaV9+VWsbUvsLIBV+BOhbvEFdpLXcC+qEplP1T9ebJEGZggfahXhjQPdpjomvYwlWUDYjKBBJfM/XyeTAg063DbEwEHszbX/2TP+WLXckd6GFGDZkGUbiBe8gBAHHLnu++5yGt+dS+0xbGsObJSmGVQNSnvG4O6FuPtQlMrDZaXosJhuq9z8P7H7QNMLyxKui/GNvilV8lHbFatC59Hl6twE1/SyDzRMVL8CJafYCV/q1ry20PRRVAblbRRFUUPknG8csteZjtVDKHLjLAL8XMc2Zfc7OVO3IDUCCNFhSpfOmFScM9pxtvayZgf5gZFH+H+dO4Fdzwie3ROXo3B6GCad0w+HJurb3Q5LhMtCincl7mRu+ltpld1Z/3TVhpsbl2YSttyaNO2OCJlxeQnmNXnueZ259LXQJ7K+THfTTl9QMHKCaW7eS5UuQIsUvq9kqJtCTQFjs+VZ2XUKVtglVCrqR1c+Z/AfVR7aHfxu9z3/fux77TVgE53oLCYjU8XZEstcjYTeEoReFM+sO9VMXAiYOeZ/Wd7KIKMYH04EwJ6bjx4MylE16IsoGUao1cEOh5t53nXSGyTMH0ueOZORpA7TCuEO/FVJpEuRR0Azy/QLILjb/0blgNUm3fvk0xfslFGoife8kdI0iQg5g9bFNLypzsvp1dY1HVpiK7WImpuLb/RkL1K6xZWmtNZxiVXurMjt Jp7g96Jx MmGxgPuUm4m+uZXkMNnTRWiyQBrVboAHRz4ONbrgHEz7VUb6q8fyP8fyOv2IiE8FWYh89G1unfetO8qR7rfEs/+xOO/UUqRMDC8COxdp7GJd64RVnbmAQcMpL4ponNKumqxjxknEc1jzciWwyBJTdtWkNKNql8zDurffy5BO6qQX8Ks6corBhrPFO6qk9MK0pbjqD/57RmDatEGCU8PQtyvMXo9ugzrYQLVpGJtxkHYebrIPVZAf1CelH6YWo8RYHlehUcOF2ft3+Am9b2cVNa6KG8K3GINdAfpdcIU8bhyoP500l9HnI2N6+jLHcjlGPj8zgMp0P1N2YyiQtNoSy4UCk7wdSPLySJSbc1dah8eoEtCL1SSb5APwyFmUFBzlEINNVeH4K9biGDBXMYe8KyTojwtPLhlGqAkEtIFJoeVfPomZSiwxyPbxlqCmr0zgFfwtSamHo4T8QN6HJQrgQ3Opx+ybLAE/LTFDILV6JSbIXaXc= 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 Fri, May 19, 2023 at 12:27:23PM +0200, David Hildenbrand wrote: > Similar to the COW selftests, also use io_uring fixed buffers to test > if long-term page pinning works as expected. > > Signed-off-by: David Hildenbrand > --- > tools/testing/selftests/mm/gup_longterm.c | 73 +++++++++++++++++++++++ > 1 file changed, 73 insertions(+) > > diff --git a/tools/testing/selftests/mm/gup_longterm.c b/tools/testing/selftests/mm/gup_longterm.c > index 44a3617fd423..d33d3e68ffab 100644 > --- a/tools/testing/selftests/mm/gup_longterm.c > +++ b/tools/testing/selftests/mm/gup_longterm.c > @@ -22,6 +22,9 @@ > #include > > #include "local_config.h" > +#ifdef LOCAL_CONFIG_HAVE_LIBURING > +#include > +#endif /* LOCAL_CONFIG_HAVE_LIBURING */ > > #include "../../../../mm/gup_test.h" > #include "../kselftest.h" > @@ -80,6 +83,9 @@ enum test_type { > TEST_TYPE_RO_FAST, > TEST_TYPE_RW, > TEST_TYPE_RW_FAST, > +#ifdef LOCAL_CONFIG_HAVE_LIBURING > + TEST_TYPE_IOURING, > +#endif /* LOCAL_CONFIG_HAVE_LIBURING */ > }; > > static void do_test(int fd, size_t size, enum test_type type, bool shared) > @@ -173,6 +179,51 @@ static void do_test(int fd, size_t size, enum test_type type, bool shared) > ksft_test_result(should_work, "Should have worked\n"); > break; > } > +#ifdef LOCAL_CONFIG_HAVE_LIBURING > + case TEST_TYPE_IOURING: { > + struct io_uring ring; > + struct iovec iov; > + > + /* io_uring always pins pages writable. */ > + if (shared && fs_is_unknown(fs_type)) { > + ksft_test_result_skip("Unknown filesystem\n"); > + return; > + } > + should_work = !shared || > + fs_supports_writable_longterm_pinning(fs_type); > + > + /* Skip on errors, as we might just lack kernel support. */ > + ret = io_uring_queue_init(1, &ring, 0); > + if (ret < 0) { > + ksft_test_result_skip("io_uring_queue_init() failed\n"); > + break; > + } > + /* > + * Register the range as a fixed buffer. This will FOLL_WRITE | > + * FOLL_PIN | FOLL_LONGTERM the range. > + */ > + iov.iov_base = mem; > + iov.iov_len = size; > + ret = io_uring_register_buffers(&ring, &iov, 1); > + /* Only new kernels return EFAULT. */ > + if (ret && (errno == ENOSPC || errno == EOPNOTSUPP || > + errno == EFAULT)) { > + ksft_test_result(!should_work, "Should have failed\n"); > + } else if (ret) { > + /* > + * We might just lack support or have insufficient > + * MEMLOCK limits. > + */ > + ksft_test_result_skip("io_uring_register_buffers() failed\n"); > + } else { > + ksft_test_result(should_work, "Should have worked\n"); > + io_uring_unregister_buffers(&ring); > + } > + > + io_uring_queue_exit(&ring); > + break; > + } > +#endif /* LOCAL_CONFIG_HAVE_LIBURING */ > default: > assert(false); > } > @@ -310,6 +361,18 @@ static void test_private_ro_fast_pin(int fd, size_t size) > do_test(fd, size, TEST_TYPE_RO_FAST, false); > } > > +#ifdef LOCAL_CONFIG_HAVE_LIBURING > +static void test_shared_iouring(int fd, size_t size) > +{ > + do_test(fd, size, TEST_TYPE_IOURING, true); > +} > + > +static void test_private_iouring(int fd, size_t size) > +{ > + do_test(fd, size, TEST_TYPE_IOURING, false); > +} > +#endif /* LOCAL_CONFIG_HAVE_LIBURING */ > + > static const struct test_case test_cases[] = { > { > "R/W longterm GUP pin in MAP_SHARED file mapping", > @@ -343,6 +406,16 @@ static const struct test_case test_cases[] = { > "R/O longterm GUP-fast pin in MAP_PRIVATE file mapping", > test_private_ro_fast_pin, > }, > +#ifdef LOCAL_CONFIG_HAVE_LIBURING > + { > + "io_uring fixed buffer with MAP_SHARED file mapping", > + test_shared_iouring, > + }, > + { > + "io_uring fixed buffer with MAP_PRIVATE file mapping", > + test_private_iouring, > + }, > +#endif /* LOCAL_CONFIG_HAVE_LIBURING */ > }; > > static void run_test_case(struct test_case const *test_case) > -- > 2.40.1 > All good, Reviewed-by: Lorenzo Stoakes