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 938B5C001B0 for ; Wed, 16 Aug 2023 10:28:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 00D808D002E; Wed, 16 Aug 2023 06:28:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F018B8D0001; Wed, 16 Aug 2023 06:28:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DF0028D002E; Wed, 16 Aug 2023 06:28:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id CE4EC8D0001 for ; Wed, 16 Aug 2023 06:28:40 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7A405C0E5A for ; Wed, 16 Aug 2023 10:28:40 +0000 (UTC) X-FDA: 81129594000.26.5CB4371 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by imf17.hostedemail.com (Postfix) with ESMTP id 695634000E for ; Wed, 16 Aug 2023 10:28:38 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=PpzIsZzg; dmarc=pass (policy=quarantine) header.from=collabora.com; spf=pass (imf17.hostedemail.com: domain of usama.anjum@collabora.com designates 46.235.227.172 as permitted sender) smtp.mailfrom=usama.anjum@collabora.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692181718; 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=AaRTDxluAN6eYm7AaFP14i9aiHd5kcrxhlA8rsVowxA=; b=F3+FDnNFv9TWrxIKubWoCIWzba/QQCW6snISMsM+BKng1us/H/EI5+fuIzCm4udB8pUQt8 1qzsv/2llY/lNZam4H8uESCtCUF5tdlRc1Kc4Apz4FT0dt54yPRZ5aiUPUM8fdpHyzXvS3 1069eT2QrMOrrozFs+kX34Lezi3Ei9M= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=PpzIsZzg; dmarc=pass (policy=quarantine) header.from=collabora.com; spf=pass (imf17.hostedemail.com: domain of usama.anjum@collabora.com designates 46.235.227.172 as permitted sender) smtp.mailfrom=usama.anjum@collabora.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692181718; a=rsa-sha256; cv=none; b=rey1gMDURnWPh65fLxNes9wuKDK63fWdr7WqDafOyetvVMR9Bog6ZS9FycUb3dEoynfXDP hbrrEVhSvWLM7dBqTORMn2i2Zc5ri4PcPNb4i2tORrCdoM7wVJh37f/aUMCWrHXyN0exw+ j/ti9be/dQVp/A8c+ygRaSsZAw1rJJc= Received: from [192.168.100.7] (unknown [59.103.216.185]) (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 9F9196601F5E; Wed, 16 Aug 2023 11:28:30 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1692181716; bh=ftvs9GI0pTNN1Q/Ql07C6782DgKc5N83c95v6mS+/Vs=; h=Date:Cc:Subject:To:References:From:In-Reply-To:From; b=PpzIsZzgyGy2AshrVIdc0edRLPNHnuk21fD7lKYnpXHzB3doJSC+w046cwPHp/3hr aGPn8aQutuTcG4dJfCB0G+DhBK26/PIQiLCKqfEdv4XVOxnIs2Xw/5rd7gw3LysdUf G6d4DFOa5zJIzJGVq1WxwkqR53uGvGX9Ec7S1iR4WyZQfAMzWxhgPSee/WCpJUnSZP 8QzQsj1RZ2d4z3hBSRUfN2O7gaN3i0UM1t/yduIBDcTVfRbwFvp126hmnNSFzCPqTB KvDfCe2qfyzx+UxAeRAVPZXYkHw5NR7FhImLJF9vXmy1H4wiAJ4gWXswlWiD/saGHX UK21CV+X0xKqA== Message-ID: <4367a28b-97c8-a73a-f8a2-8706d8ecf285@collabora.com> Date: Wed, 16 Aug 2023 15:28:26 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.1 Cc: Muhammad Usama Anjum , Peter Xu , Andrew Morton , =?UTF-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= , Andrei Vagin , Danylo Mocherniuk , Paul Gofman , Alexander Viro , Shuah Khan , Christian Brauner , Yang Shi , Vlastimil Babka , "Liam R . Howlett" , Yun Zhou , Suren Baghdasaryan , Alex Sierra , Matthew Wilcox , Pasha Tatashin , 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, Cyrill Gorcunov , Mike Rapoport , Nadav Amit , David Hildenbrand Subject: Re: [PATCH v30 2/6] fs/proc/task_mmu: Implement IOCTL to get and optionally clear info about PTEs To: =?UTF-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= References: <20230816065925.850879-1-usama.anjum@collabora.com> <20230816065925.850879-3-usama.anjum@collabora.com> Content-Language: en-US From: Muhammad Usama Anjum In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 695634000E X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: iqmfg1mqmxwf57zymwn17eofe537c97r X-HE-Tag: 1692181718-970562 X-HE-Meta: U2FsdGVkX1/gbydayIN+srEhVMbweJZn5Vy2jfkReA3BKkFy+c4C3iiCcz70C4ZaXKHimvybziPTaIweuczGuITG2Xcx04cGwPdIwKQrJTXh1Q4DXZ75fXKGFQNXSJaHaWB3Yn51lDFEdoO+fv0RVjj4J6kk1N7UcR/8AyOBCtSTlGWLVIVZ8/dKF/7V7Zyd4S/j1fveBDa7Kr2FMt/QEdvlxbxWF/0dgJgLEQkk/SYDqv9gUJM4KYhbkPus0tCGb3G7OVVFBfX4lvMVJO8IgNeoPxA48FI9Tr0Qrt7CzyuMt7iDFrP+mx11cLhEaq6TjPg3F7/k7qD6GQGPn9LjO0yMJj0530GGjuZ9DmIjEmDb8ef18mLen8jfdn1u3WDuU8KIxX8GZuEySo2nDLNJTg5Efw9b3LDZiHKvg4QHt6KDb2rmbOmD2es8lWU/jsdlEBwFtjlIhdWLTsYyeYQWauRy5XJkHVmO7SqZZ3YwYD2xZvxYKb410yRFA228TZbOcHTAZ2sT4H8qbb1Pf4HGZaGTsPMe9ANPO14YtKBTaunqWRipI8+VcbkG0DjNcLOTCh7ZtKAmIg+NSFxQCkm314fyJjgA4D5KnG+QCmxZEoUSu9t6zVtxILbuBmASAlSSkWbLdn2JqdIFWdfuJkxGlDHtiz4Ffw3611cpDGxlZMtqZBP+Y+gNXvbZ52zP6Br3mD6f5eugXSNjUN/1tab4WRj0RPFOjMnGY5+D+C6SZBsIOblAgoNMC2UnRmBeTa2TVaGorPwGUkPvEpb4TRXJsZonNKaa4/1nTVJpaj/eAd/oNFnFk8/YjFUJoFVbLLmvu+wlD251nIysi3ASgf4oAOhzoHTgTYtiO97J3Ag2qIDSYjE/awfVM4zHl5FSih4e6isypwUryBZDexhNkjasE4hjXsD/dJupP8tjGcwwiUt42pgTwcoc7CWuAteszW8G9R5D0STRmlE8ltwFbWQ pZI8e27n UwIzhTrGwDHJ9hDTuWz6JgkdZtTwWJ/eU48zoHooSQZ+lJzUEuoSigG0BblJG29bggR0SekMI89o9130ufz9FX0LbXMJOC1HCJrC+LGPTt6GHdVZSjS88L+kmX2dFDeLryD5iLx5iXRswUuzBqlWO2gtgFgltY23YgZe+21F7HX1NcF2XmmRbXbJdjL2t/DTCzsRiQVIQMO68ufbpOSNJCeLwiS27qptcgmqUPmCKMT+P0QEX4WEp/xqtQrfXM1VNtK1v 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 8/16/23 2:45 PM, Michał Mirosław wrote: > On Wed, Aug 16, 2023 at 11:59:21AM +0500, Muhammad Usama Anjum wrote: >> The PAGEMAP_SCAN IOCTL on the pagemap file can be used to get or optionally >> clear the info about page table entries. > [...] >> --- a/fs/proc/task_mmu.c >> +++ b/fs/proc/task_mmu.c > [...] >> +static long do_pagemap_scan(struct mm_struct *mm, unsigned long uarg) >> +{ > [...] >> + for (walk_start = p.arg.start; walk_start < p.arg.end; >> + walk_start = p.arg.walk_end) { >> + long n_out; >> + >> + if (fatal_signal_pending(current)) { >> + ret = -EINTR; >> + break; >> + } >> + >> + ret = mmap_read_lock_killable(mm); >> + if (ret) >> + break; >> + ret = walk_page_range(mm, walk_start, p.arg.end, >> + &pagemap_scan_ops, &p); >> + mmap_read_unlock(mm); >> + >> + n_out = pagemap_scan_flush_buffer(&p); >> + if (n_out < 0) >> + ret = n_out; >> + else >> + n_ranges_out += n_out; >> + >> + p.arg.walk_end = p.walk_end_addr ? p.walk_end_addr : p.arg.end; > > I think p.walk_end_addr can be removed and replaced by `p.arg.walk_end` > directly in the walk functions. If we don't set walk_end_addr we'll also > return 0 so the check below will match. Might be good to add this as > a comment. I'll remove it and add a short comment. > >> + if (ret != -ENOSPC) >> + break; >> + >> + if (p.arg.vec_len == 0 || p.found_pages == p.arg.max_pages) >> + break; >> + } >> + >> + /* ENOSPC signifies early stop (buffer full) from the walk. */ >> + if (!ret || ret == -ENOSPC) >> + ret = n_ranges_out; >> + >> + p.arg.walk_end = p.arg.walk_end ? p.arg.walk_end : walk_start; > > When the walk is finished, with ret == 0, the walk_start will point to > the beginning, not the end of the range. So: > > if (!walk_end) walk_end = p.arg.end; This condition is to cater for the case when for loop doesn't execute at all because the address range was zero. In that case start == end. So p.arg.start or p.arg.end both would work fine. I'll add p.arg.end in accordance to above loop. > > Other than that, the patch looks complete now. Thanks for all your work! I'll send the next revision. > > Best Regards > Michał Mirosław -- BR, Muhammad Usama Anjum