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 E606CC6379F for ; Thu, 9 Feb 2023 15:28:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 275906B0071; Thu, 9 Feb 2023 10:28:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 224D76B0072; Thu, 9 Feb 2023 10:28:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0ED1D6B0074; Thu, 9 Feb 2023 10:28:14 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id F298D6B0071 for ; Thu, 9 Feb 2023 10:28:13 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 9D530C08C1 for ; Thu, 9 Feb 2023 15:28:13 +0000 (UTC) X-FDA: 80448134466.14.2DF49B1 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by imf06.hostedemail.com (Postfix) with ESMTP id 99E81180008 for ; Thu, 9 Feb 2023 15:28:10 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=SklvgmPz; spf=pass (imf06.hostedemail.com: domain of usama.anjum@collabora.com designates 46.235.227.172 as permitted sender) smtp.mailfrom=usama.anjum@collabora.com; dmarc=pass (policy=reject) header.from=collabora.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675956491; 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=MRs+x8XPBbOmDHpJy1fVy31mBcc+lR0Jsg66VeZZKU8=; b=ExzR0HyU5YbU5w1aHTf+SdDwDS7V/Xg507or9JEczswoUSmhOe0/z2kFKTezKHMg2bM2aB O8IcfJh/OdMjlkYSXIwOc1Mg0AmKVHEWrymtb8ntCaeR0c0ZdNZX4pXjDBxN1daof2MgNp baf2T+1NCORZuVOJ11fodkM51AkCT8U= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=SklvgmPz; spf=pass (imf06.hostedemail.com: domain of usama.anjum@collabora.com designates 46.235.227.172 as permitted sender) smtp.mailfrom=usama.anjum@collabora.com; dmarc=pass (policy=reject) header.from=collabora.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675956491; a=rsa-sha256; cv=none; b=JGggHJ9FVCmNnuPmSnw0yitIttC5dwM1AFHm7B1/v+aDmxpwGHZKidaRJAXYvF1YrC+sEM /Yy22gnxb4Dnk9br76xofmgefBXXI9fv2ZvX9xp2GKlmQIkFnx8Hrd3w5GCq7xPMqF1BsV RMThqJn+X+JDBI+rM0cZyotCvqMZ84I= Received: from [192.168.10.12] (unknown [39.45.179.179]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: usama.anjum) by madras.collabora.co.uk (Postfix) with ESMTPSA id E6F2766020B9; Thu, 9 Feb 2023 15:28:01 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1675956488; bh=cVo2hwJA6ba+zxud5YmocaB8dvaCAIfmsd2BzN8RA7Y=; h=Date:Cc:Subject:To:References:From:In-Reply-To:From; b=SklvgmPzoikYluoyKD+usYENzjjeV8cXVAMyegngQGFdo8vYGHMhGAtc9g0sPwFVm qdwkUAyCCJZlimtbYIKmGcc9y+g7Hdfdhay3/K+sjkynf9SZ15Usn5upd6ScJgwbVF bdwKNx8K+4NUKkmv/ULlRig1TAMZKubdwBkf/rPkVM3HXq46LSV+Kl88Oa3MHsK4mP WfEJnyD9NWdJJucrIeOw2ZTxlYbBxJAd5EYg9Ad7+bW6pY2W/wMvXedjWU6oNyh5JU D0a+4G2OvcIihBvTMIqNXDsGtAM+IXztwbrpsd8XAPW6f7gGjrATBBlquvpI5Lcr9S oWXwXk5kSmPbw== Message-ID: Date: Thu, 9 Feb 2023 20:27:58 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Cc: Muhammad Usama Anjum , David Hildenbrand , Andrew Morton , =?UTF-8?B?TWljaGHFgiBNaXJvc8WC?= =?UTF-8?Q?aw?= , Andrei Vagin , Danylo Mocherniuk , Paul Gofman , Cyrill Gorcunov , Alexander Viro , Shuah Khan , Christian Brauner , Yang Shi , Vlastimil Babka , "Liam R . Howlett" , Yun Zhou , Suren Baghdasaryan , Alex Sierra , Matthew Wilcox , Pasha Tatashin , Mike Rapoport , Nadav Amit , Axel Rasmussen , "Gustavo A . R . Silva" , Dan Williams , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, Greg KH , kernel@collabora.com Subject: Re: [PATCH v10 1/6] userfaultfd: Add UFFD WP Async support Content-Language: en-US To: Peter Xu References: <20230202112915.867409-1-usama.anjum@collabora.com> <20230202112915.867409-2-usama.anjum@collabora.com> From: Muhammad Usama Anjum In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Stat-Signature: w1echph5c1x45z5usjspeddpm7mmbzcz X-Rspam-User: X-Rspamd-Queue-Id: 99E81180008 X-Rspamd-Server: rspam06 X-HE-Tag: 1675956490-627654 X-HE-Meta: U2FsdGVkX18H0NHe2RuHdDwo//tvKKSRIHuu6C1E/7dCVo4n/8xwvnYBa/hk9uM5lukJHngTV7LJGBjYaTME+I3FmT9V8NfqZtH2qex/yggX0vSIeKWAeUKAZmTGuPr7eENsXEgsVkn+Ea+fGj/SW+1osM1TxwFI8ARo3SdnkomZdJMj1UyPUhR4jjnFAL4x5uobfxhhyaue8wMH58Xb44BgtKoc4L6jtwJjX2SECopgZqRLyv5KIB4TEQzo3CiRYwAKt0ztSO+afKQjUbxoBFWve4NXeP8YYfeN2BnU4+zNjlfEroPU+gWlVxKl/wpvBBXffnS7hmJulzfl0AHIBBRBl5u8SsLZdmoggYdEu2XQvHTJee+7evjKK1CxcNL70Vk6iebmGEcNT15Y8tXvdZLgHAkFFtUAABDn3NfrmdVUz8GsNf+uAapwnZlsUiJg9HbgTenUBD8wUtTzZTbYuXJ4s+sEjYmKVMbPwF0wEg4L44Q7SBPZ2+z2uZ2zGeRiODHTZoiRRzy93lK+Vi4yc88e2lFKYrRRT6NPF5+5UgRXlRDPmYjF8+BrdnDQUQslmjA9+bkiYSIjL8oSf2rKzzx2V4fjxzOhqNnduSZK2QiXCYCN9xVwwRQAjWSBGnjwQoQuhXmiHUnGzI5bi5yegOc5+fTPQLYT6u7umiiy43v9OeNz4+GdBLFQvQ2wIDVnwXBZPrb0NhVKQYOq9Aw+FWb9TVVh98/TVUIoRfBanucfG6X8FN537auyPdl613+/BkLthb4GWY1Xiwa0E3FL1KYQKm5GPxm9OERH35+yeWCetw+eAXrWKYL32oAGGMNCuNyMYU0f3SkDPR7rWsoE3t8qF6P7EzrgxBXRMLUo3u1IaGPjxERVu8X3R8Orfp/JAkOx4XDY+iVTzCNoW2hJsKyLzJ5ZXUkzNsNx5BRWyz2LZ5vkk2/V1G5kHMeeKCnNNB27uwxbZbMuB0926ct 3eb2S8v+ NJfFcn5fy4wx8suqITCV3K3ppSixzc9Ob+9m2SBbTuLDHcXSzkfJdfRyXb/YCbeUWRX9e4yTnWaqEwptGbAIzY+aM6pSAEFWgPQMyT8l7MwmdvIU7HsZ1ZZD0R+A96CwfwvjbvxDoNKpB3YP0rnxwgmp5r7dDXc40SpOVuxn4J0cUuzoxDNxbIjpJoy+G+g8WlDFvt+bJsRONyub7loz/oIpoedobjnDl/rdy6ta7ndYhHoAebZoDwJcGtSlnMzXSErOEIYPPMZTWy4sSTknqpyod0/O+gUl563iHBFPm5H5TH0Q= 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: Hi Peter, Thank you so much for reviewing! On 2/9/23 2:12 AM, Peter Xu wrote: > On Thu, Feb 02, 2023 at 04:29:10PM +0500, Muhammad Usama Anjum wrote: >> Add new WP Async mode (UFFD_FEATURE_WP_ASYNC) which resolves the page >> faults on its own. It can be used to track that which pages have been >> written-to from the time the pages were write-protected. It is very >> efficient way to track the changes as uffd is by nature pte/pmd based. >> >> UFFD synchronous WP sends the page faults to the userspace where the >> pages which have been written-to can be tracked. But it is not efficient. >> This is why this asynchronous version is being added. After setting the >> WP Async, the pages which have been written to can be found in the pagemap >> file or information can be obtained from the PAGEMAP_IOCTL. >> >> Suggested-by: Peter Xu >> Signed-off-by: Muhammad Usama Anjum >> --- >> Changes in v10: >> - Build fix >> - Update comments and add error condition to return error from uffd >> register if hugetlb pages are present when wp async flag is set >> >> Changes in v9: >> - Correct the fault resolution with code contributed by Peter >> >> Changes in v7: >> - Remove UFFDIO_WRITEPROTECT_MODE_ASYNC_WP and add UFFD_FEATURE_WP_ASYNC >> - Handle automatic page fault resolution in better way (thanks to Peter) >> >> update to wp async >> >> uffd wp async >> --- >> fs/userfaultfd.c | 20 ++++++++++++++++++-- >> include/linux/userfaultfd_k.h | 11 +++++++++++ >> include/uapi/linux/userfaultfd.h | 10 +++++++++- >> mm/memory.c | 23 ++++++++++++++++++++--- >> 4 files changed, 58 insertions(+), 6 deletions(-) >> >> diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c >> index 15a5bf765d43..422f2530c63e 100644 >> --- a/fs/userfaultfd.c >> +++ b/fs/userfaultfd.c >> @@ -1422,10 +1422,15 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx, >> goto out_unlock; >> >> /* >> - * Note vmas containing huge pages >> + * Note vmas containing huge pages. Hugetlb isn't supported >> + * with UFFD_FEATURE_WP_ASYNC. >> */ > > Need to set "ret = -EINVAL;" here. Or.. Will fix in next version. > >> - if (is_vm_hugetlb_page(cur)) >> + if (is_vm_hugetlb_page(cur)) { >> + if (ctx->features & UFFD_FEATURE_WP_ASYNC) >> + goto out_unlock; > > .. it'll return -EBUSY, which does not sound like the right errcode here. > >> + > > Drop this empty line? > >> basic_ioctls = true; >> + } >> >> found = true; >> } > > Other than that looks good, thanks. Thank you so much! This wouldn't have been possible without your help. > -- BR, Muhammad Usama Anjum