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 6B50DC05027 for ; Mon, 20 Feb 2023 13:27:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 033376B0081; Mon, 20 Feb 2023 08:27:06 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EFDD06B0088; Mon, 20 Feb 2023 08:27:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D9EED6B0092; Mon, 20 Feb 2023 08:27:05 -0500 (EST) 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 C35A06B0081 for ; Mon, 20 Feb 2023 08:27:05 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 845F61A056B for ; Mon, 20 Feb 2023 13:27:05 +0000 (UTC) X-FDA: 80487746010.24.F8AE3FC Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf26.hostedemail.com (Postfix) with ESMTP id B7561140016 for ; Mon, 20 Feb 2023 13:27:03 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="UkLjZU/x"; spf=pass (imf26.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676899623; 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=Orw/62L3fUm2kaIqxIGVnuHcki2uHED6NG8qcBmbxGE=; b=GRbHO5z0KgatVq2xHiXF/hRfINIKYL4ePUqe0m7MLX34hey9e6uToQf6H0LVUtL6yfiv3t BB8FrIWxw9nkYzPdSROs+I/9G88UMQKhq2e01d4zzYG8jgke23NqTLW0NnwKOuxX7jcFdC Jonv1assXZ9LmgV1XXW0gRynirLY/DY= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="UkLjZU/x"; spf=pass (imf26.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676899623; a=rsa-sha256; cv=none; b=A1aW0hwh+7FF41di76eebtb41WgEmAMEqMoW+nBxDq42X2NhBF7f5cAEwEWhxCo/YN28Fb s8bcD1ldYHWww1bMMepcKaZx1DH6SdlXU4Dad+lt7MrPRp+8ygudBAD4DHr6j5WrQyFvQ9 ivLGLL2OehmKcdmEwin6BB+Hc7qK5Fo= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B7B7860B9A; Mon, 20 Feb 2023 13:27:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C6B3C433EF; Mon, 20 Feb 2023 13:26:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1676899622; bh=gABycNmDsaE8rStdHvaqVjETdB3UP1bj2wN6aXwFGQ4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=UkLjZU/xmTq7YtlM2nRS961aOed/9VW/PzOscHWvnJF+9fL9OLHpz1uahozF0Culs d8ASa1roMSsa4yEEvcwtNAyQIcxKxTfi0dHgjHd/MHDmnkP7KsvLSvvqu1IVdPyjiB J8WphKgkLEFGTCxTD1Lh6sEdPMz+PiK6tycDIjJzTl9I6ZeVGKH3xlvpNMohSwh0F6 rd4FLUysaC1d6mr0vnuyr+6v5RgiQD7rMki64k3V9UK4sarN/1MpAgFkFrIcC+AdNY Qo3MKGc1EYFMS9hVjLnCz94LHRQvxBArNBrvr2uKJuFkf7Pa3rzHV9j3p9AtdIVNbT PUPxhGqs7wdcw== Date: Mon, 20 Feb 2023 15:26:42 +0200 From: Mike Rapoport To: Muhammad Usama Anjum Cc: Peter Xu , David Hildenbrand , Andrew Morton , =?utf-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= , 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 , 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 3/6] fs/proc/task_mmu: Implement IOCTL to get and/or the clear info about PTEs Message-ID: References: <20230202112915.867409-1-usama.anjum@collabora.com> <20230202112915.867409-4-usama.anjum@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230202112915.867409-4-usama.anjum@collabora.com> X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: B7561140016 X-Stat-Signature: 4ya5j36sb3gwkgih1is5cn7srr41antd X-Rspam-User: X-HE-Tag: 1676899623-676750 X-HE-Meta: U2FsdGVkX18PbtV8Lanvv0a9r8PMLRO3XKQfuNOV0XwbDr0q+QLQm2RYiAWZCeWk3WuleU+i/L1l58qO5HBxtb8SQVyFfgb2nAqAnFNnyYLlrM2UAPNh2+n6GixLE3PnrA/T+jvec4LwTQlLOJ4g4hY1mWzlPU+jq8ZCsZU8TJ0r4ICgFD5h+zMS2FQ3+016IZb8UjUTvgy2C4GF0yDkoTzWSkfcZOPJ7Hoemn5BQvLW9jxIa3UlRROFjpcfdQ03qxoL/KbpN4UCc2QniVcjGHqSPVVHpdYAIzznsWHcl7pj3SsbBJm3cD3qbTdQYYYWru0q6XmMvNWUQVsijdMHAWB70jJzuhvcq+DRXkoShFLYBjb+Gi6fbT2ktfRht9hU0KxQ/eUx2UU+qtzUVX9sS6cQIJnnBfsCP9ztzasmAsxotx31ZhL1+4i+CfPqEMkAFks/XEgmooKEpMPsS1VsfGpVnCXK2rBwgqtPA/lFIYmkkiougYqCMGGRSU9VV/9MtgZSf2VQOVuY86yWhEXAyrWO5dw+vuzhlbp5+iGyaPGUQfdyArF2cZIMGLUvyNatMjyTaSXlH/BourU/pRkih9Rc84HB+dTJT9IOHf6BfRk4IMfNFwLOPo9gzt4qiuCjjOA0mDiEi0z1UgSclE8dX+Ew+oPhmWA5m3FpQ5aF0WZQqaUoEPXS4qeWLXp1YemFoYIDwYKMbXO458HuO53XP4qQMuWqjFOV5uciD4vPGRwO25Kp11nsAS+mjjM2s25MMyGYDV3aYqiTKn4INRCOmxI6BhSVUK0O1dGn50Kf4jOWxr2QUWjMAb8VPjzh7n0s5bCeoZeDueLZE3U84KSKjGXEJpivtbLLgxw+Dk3LP+jxbIIJ2brJeuvTf1BgatJdYLMbrM9sdXk47x3VKiG1g0K4/RNjMdN4lWAC4bFLijyLzQs7eFltsJjK98duuNknU4F7RsW7e7DgLoBZWyb 4RbIqjxj z8D9QozgeK5nJkdPq7j3/miQ8Z25kXG1cT02YFp/hWB/G2I2Rq3UcW1wzFbUnEPok+48/lSl5NedZP/4YzeHwa1Fov+xJv8fX1gcoMj0aH1kQqVaE4/1YOdUtOF+ttFOvZ3muUltA6XeQ5X3by4kz/f3NPI2QHXyLwaC+2q97qUC/hSSwGPDrXpNcKvjSV7aqPPDm9rksuL1kQQREC26xoEQyqwKKuQk6FAcQJPSRfSaQraR+YVLsYslHyiNNeGRevhozlessFqJCO96END36ZapYYWC5t4p4ZAtaedw1wVTrwQcCwVQoxRa5TWNnMHPceMZ8UQCMS1SkNHXAWEp1Bm4f9ZcXOCfiF3R5 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, On Thu, Feb 02, 2023 at 04:29:12PM +0500, Muhammad Usama Anjum wrote: > This IOCTL, PAGEMAP_SCAN on pagemap file can be used to get and/or clear > the info about page table entries. The following operations are supported > in this ioctl: > - Get the information if the pages have been written-to (PAGE_IS_WRITTEN), > file mapped (PAGE_IS_FILE), present (PAGE_IS_PRESENT) or swapped > (PAGE_IS_SWAPPED). > - Write-protect the pages (PAGEMAP_WP_ENGAGE) to start finding which > pages have been written-to. > - Find pages which have been written-to and write protect the pages > (atomic PAGE_IS_WRITTEN + PAGEMAP_WP_ENGAGE) > > +/* > + * struct pagemap_scan_arg - Pagemap ioctl argument > + * @start: Starting address of the region > + * @len: Length of the region (All the pages in this length are included) > + * @vec: Address of page_region struct array for output > + * @vec_len: Length of the page_region struct array > + * @max_pages: Optional max return pages > + * @flags: Flags for the IOCTL > + * @required_mask: Required mask - All of these bits have to be set in the PTE > + * @anyof_mask: Any mask - Any of these bits are set in the PTE > + * @excluded_mask: Exclude mask - None of these bits are set in the PTE > + * @return_mask: Bits that are to be reported in page_region > + */ > +struct pagemap_scan_arg { > + __u64 start; > + __u64 len; > + __u64 vec; > + __u64 vec_len; > + __u32 max_pages; > + __u32 flags; > + __u64 required_mask; > + __u64 anyof_mask; > + __u64 excluded_mask; > + __u64 return_mask; > +}; After Nadav's comment I've realized I missed the API part :) A few quick notes for now: * The arg struct is fixed, so it would be impossible to extend the API later. Following the clone3() example, I'd add 'size' field to the pagemam_scan_arg so that it would be possible to add new fields afterwards. * Please make flags __u64, just in case * Put size and flags at the beginning of the struct, e.g. strucr pagemap_scan_arg { size_t size; __u64 flags; /* all the rest */ }; > + > +/* Special flags */ > +#define PAGEMAP_WP_ENGAGE (1 << 0) > + > #endif /* _UAPI_LINUX_FS_H */ > -- > 2.30.2 > -- Sincerely yours, Mike.