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 390EDC4167B for ; Sat, 2 Dec 2023 08:02:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9FA888D0083; Sat, 2 Dec 2023 03:02:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 983398D007C; Sat, 2 Dec 2023 03:02:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 82EA78D0083; Sat, 2 Dec 2023 03:02:09 -0500 (EST) 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 6B8ED8D007C for ; Sat, 2 Dec 2023 03:02:09 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 42360A00FF for ; Sat, 2 Dec 2023 08:02:09 +0000 (UTC) X-FDA: 81521135178.10.E7E8220 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf18.hostedemail.com (Postfix) with ESMTP id 263A11C0023 for ; Sat, 2 Dec 2023 08:02:06 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=none; spf=pass (imf18.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701504127; a=rsa-sha256; cv=none; b=uiHQM6N8bzkkBJlpXMMc8594Scj13XXXYYxKKrHlcvY7noFIiFgpQ7lPA03BLeBWUB4x9C 5nVa2foMjKgLKbgclIBAC/Kk4abHOKOhnzNXI5Ax3cX5W9PBkF5McoAy5XBHhRdpaXDV35 XX/Z/e31HyNUZdBpKCIu4kdQKV4B5iE= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=none; spf=pass (imf18.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701504127; 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; bh=9jTBEBxlsoXS7V1Ze7l0arVekafrG4vczFNu0OyzD30=; b=G36pd8oNwzYwNfYZMXTAl7cGtiwP/JWbW+1cjZS0Sh3ooTaE4lyexlg+Lk5q1PkgqKnSeC Tndk1kIj/1dQCcuRtEs6uBnTzIpmTZNHm3gnxjmiOfQ8s903XfQLi9j2+j3xDabk+xN/fa EiacWqJjVrRvPIpEwyPOZA3CJubQY5g= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3A0281FB; Sat, 2 Dec 2023 00:02:52 -0800 (PST) Received: from [10.57.73.130] (unknown [10.57.73.130]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 96FA23F6C4; Sat, 2 Dec 2023 00:02:02 -0800 (PST) Message-ID: <69a197cf-1e2c-4f6e-b0ca-7cbb154c044b@arm.com> Date: Sat, 2 Dec 2023 08:02:01 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 5/5] selftests/mm: add UFFDIO_MOVE ioctl test Content-Language: en-GB To: Suren Baghdasaryan Cc: akpm@linux-foundation.org, viro@zeniv.linux.org.uk, brauner@kernel.org, shuah@kernel.org, aarcange@redhat.com, lokeshgidra@google.com, peterx@redhat.com, david@redhat.com, hughd@google.com, mhocko@suse.com, axelrasmussen@google.com, rppt@kernel.org, willy@infradead.org, Liam.Howlett@oracle.com, jannh@google.com, zhangpeng362@huawei.com, bgeffon@google.com, kaleshsingh@google.com, ngeoffray@google.com, jdduke@google.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kernel-team@android.com References: <20231121171643.3719880-1-surenb@google.com> <20231121171643.3719880-6-surenb@google.com> From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 263A11C0023 X-Stat-Signature: rs65ts9an4aktcqe4rfr9ntypdt96dn3 X-HE-Tag: 1701504126-853256 X-HE-Meta: U2FsdGVkX18f9TW4m/OJpJBKQuW0p9Lu9gR2ksEBTBaTh2asoX7mvZAnCbYme75CIG30z9Y8taENKkExg+xw+9APB9ShQsrsGe1DsCv09AWVtsSq5dG6q5sLi2enPB0l3nxeXaV/js6JVHjkueBIerNNID/YtOkKZABOHhnfaIionxefgrcObNm6GcRMDbWd8DBpMkL4VLD56STB3NXGt2oIJ5XKWoy0UTO9xepwBzX2OGXgJF2rxqcBQQ9xeMkgxP+/93onDKjz6QWutziEnNRZl8XTP+sPhC2O10AFTvzeN3xNH1bjKWCGxiVNThg1hkex+6pVTpJ1Jgyt+cZPGiPjbX1NWaNwRfoc2O6hT75iU9gy4NL1iUlcHOy3Y52pbYADJuNsfyWGKS9yuto6akhsMsDZvzR/oqfltaKTd9ExXYnrO9cH89DdP7RgLOOMhvQ26L7GJYtqFlnN7ukgIzHOv14PPJ90d+eqYrkDUF0/rR8uwmudmKBXlg4HKOr8oEsK1r1K8oe3XUqH2jpU6bU3IE014UA8BoDI3iFiNBG+74nInUImwMc8eU1ZbfU2nkiuJ8SUa+JYAk/kRahlv7z86Ewcv0as6MtXtEgmydlW5KctHDrDZZlh3W76ECgLG7FVhRKWaFqcU+5m6DLBux/l8g7pWmB0Hq0DDMDxaCyf6a9m7GHMx8H0DWRtOGlEkiRiAYEzQ0S3h8jnC+Z9LZeHfp9z1ufFAmSaiqkNorqOrgfq2xujRFs2hF0/sRlC6rgK3ZxqO5kgq6/brdH+eE7NF9qQ/kI1kCIglJH9+PhrgtS5JWoHYYiMORVCm2wbEVjc+wDIBGAOIcTgi6bVwUXlFUOoEOBkzIuVwjppEYtiM/Xq3Ak+CptEdz2HoRzAZKNfKkvP0oeSOM2rXMffP/aEgLD7pEHUnHOyLDEamhVLIaFIPGgKrD9uEuVXlpfZb25lpY5S2rUs6atfxEy NeqZwcjl BbgGzo/RYJ+GeUlfM/rR8/LhI2CA9qvgRk9NrERiNzFYpA8CoXJp/P4R2ztjEmUoXgVCe/SjbYCkvWzz7l357zfmDR6kkpfApcF6oMbn+mOCFTuJPFqHdlEy/x2D8E9tmVHkdPaYvCK9GqKT5uIeO6wxqEbLsZaliwQivTyeL7ONk97bq4malHuvyXrk701lqopd1UwLa/YMh5a+h9CrjWu5WO7zBrV19LUUZ8hFayQ9OyO1HsiwzxRJXwuKYxP97T3E2HGOHsQBiek/cFgBXjhww6pfybX4ArC4sBMaU4ebUzPhS7r09uI5CxuxuFcpfd8BuyiJ3VQbP/s4= 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: List-Subscribe: List-Unsubscribe: On 01/12/2023 16:26, Suren Baghdasaryan wrote: > On Fri, Dec 1, 2023 at 1:29 AM Ryan Roberts wrote: >> >> On 21/11/2023 17:16, Suren Baghdasaryan wrote: >>> Add tests for new UFFDIO_MOVE ioctl which uses uffd to move source >>> into destination buffer while checking the contents of both after >>> the move. After the operation the content of the destination buffer >>> should match the original source buffer's content while the source >>> buffer should be zeroed. Separate tests are designed for PMD aligned and >>> unaligned cases because they utilize different code paths in the kernel. >>> >>> Signed-off-by: Suren Baghdasaryan >>> --- >>> tools/testing/selftests/mm/uffd-common.c | 24 +++ >>> tools/testing/selftests/mm/uffd-common.h | 1 + >>> tools/testing/selftests/mm/uffd-unit-tests.c | 189 +++++++++++++++++++ >>> 3 files changed, 214 insertions(+) >>> >>> diff --git a/tools/testing/selftests/mm/uffd-common.c b/tools/testing/selftests/mm/uffd-common.c >>> index fb3bbc77fd00..b0ac0ec2356d 100644 >>> --- a/tools/testing/selftests/mm/uffd-common.c >>> +++ b/tools/testing/selftests/mm/uffd-common.c >>> @@ -631,6 +631,30 @@ int copy_page(int ufd, unsigned long offset, bool wp) >>> return __copy_page(ufd, offset, false, wp); >>> } >>> >>> +int move_page(int ufd, unsigned long offset, unsigned long len) >>> +{ >>> + struct uffdio_move uffdio_move; >>> + >>> + if (offset + len > nr_pages * page_size) >>> + err("unexpected offset %lu and length %lu\n", offset, len); >>> + uffdio_move.dst = (unsigned long) area_dst + offset; >>> + uffdio_move.src = (unsigned long) area_src + offset; >>> + uffdio_move.len = len; >>> + uffdio_move.mode = UFFDIO_MOVE_MODE_ALLOW_SRC_HOLES; >>> + uffdio_move.move = 0; >>> + if (ioctl(ufd, UFFDIO_MOVE, &uffdio_move)) { >>> + /* real retval in uffdio_move.move */ >>> + if (uffdio_move.move != -EEXIST) >>> + err("UFFDIO_MOVE error: %"PRId64, >>> + (int64_t)uffdio_move.move); >> >> Hi Suren, >> >> FYI this error is triggering in mm-unstable (715b67adf4c8): >> >> Testing move-pmd on anon... ERROR: UFFDIO_MOVE error: -16 (errno=16, >> @uffd-common.c:648) >> >> I'm running in a VM on Apple M2 (arm64). I haven't debugged any further, but >> happy to go deeper if you can direct. > > Hi Ryan, > Thanks for reporting! Could you please share your kernel config file? It's arm64 defconfig (so 4K base pages) plus: # Squashfs for snaps, xfs for large file folios. ./scripts/config --enable CONFIG_SQUASHFS_LZ4 ./scripts/config --enable CONFIG_SQUASHFS_LZO ./scripts/config --enable CONFIG_SQUASHFS_XZ ./scripts/config --enable CONFIG_SQUASHFS_ZSTD ./scripts/config --enable CONFIG_XFS_FS # Useful trace features (on for Ubuntu configs). ./scripts/config --enable CONFIG_FTRACE ./scripts/config --enable CONFIG_FUNCTION_TRACER ./scripts/config --enable CONFIG_KPROBES ./scripts/config --enable CONFIG_HIST_TRIGGERS ./scripts/config --enable CONFIG_FTRACE_SYSCALLS # For general mm debug. ./scripts/config --enable CONFIG_DEBUG_VM ./scripts/config --enable CONFIG_DEBUG_VM_MAPLE_TREE ./scripts/config --enable CONFIG_DEBUG_VM_RB ./scripts/config --enable CONFIG_DEBUG_VM_PGFLAGS ./scripts/config --enable CONFIG_DEBUG_VM_PGTABLE ./scripts/config --enable CONFIG_PAGE_TABLE_CHECK # For mm selftests. ./scripts/config --enable CONFIG_USERFAULTFD ./scripts/config --enable CONFIG_TEST_VMALLOC ./scripts/config --enable CONFIG_GUP_TEST This is the config I always use when running mm selftests. I'll send you the config file separately. Then I'm running in a QEMU VM with 12G RAM, equally split across 2 (emulated) numa nodes. I have these pertinent kernel command line args (intended to ensure all the mm selftests can run): transparent_hugepage=madvise secretmem.enable hugepagesz=1G hugepages=0:2,1:2 hugepagesz=32M hugepages=0:2,1:2 default_hugepagesz=2M hugepages=0:64,1:64 hugepagesz=64K hugepages=0:2,1:2 > > There are several places UFFDIO_MOVE returns EBUSY: 4 places in > move_pages_huge_pmd(), 2 places in move_present_pte(), 2 places in > move_pages_pte() and once in move_swap_pte(). While I'm trying to > reproduce, it would be useful if you could check which place is > triggering the error. Happy to, but will have to wait for Monday. I should say, the test fails consistently for me. But sometimes the failure is EAGAIN (11). Most of the time it is EBUSY though and I haven't figured out what causes the difference. > Thanks, > Suren. > >> >> Thanks, >> Ryan >> >> >>> + wake_range(ufd, uffdio_move.dst, len); >>> + } else if (uffdio_move.move != len) { >>> + err("UFFDIO_MOVE error: %"PRId64, (int64_t)uffdio_move.move); >>> + } else >>> + return 1; >>> + return 0; >>> +} >> >> -- >> To unsubscribe from this group and stop receiving emails from it, send an email to kernel-team+unsubscribe@android.com. >>