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 2CC71C636CC for ; Mon, 13 Feb 2023 08:19:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A97C6B0071; Mon, 13 Feb 2023 03:19:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 658326B0074; Mon, 13 Feb 2023 03:19:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4F9046B0075; Mon, 13 Feb 2023 03:19:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 3FE146B0071 for ; Mon, 13 Feb 2023 03:19:21 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 04A8B141434 for ; Mon, 13 Feb 2023 08:19:20 +0000 (UTC) X-FDA: 80461568922.29.33B908C Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by imf16.hostedemail.com (Postfix) with ESMTP id F33C8180008 for ; Mon, 13 Feb 2023 08:19:18 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=RUj+x5+h; spf=pass (imf16.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=1676276359; 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=J6VNzALNWqfa+pVgnKTuzdZZ987vcJkuQbmzzIIBlDk=; b=6zdfshvmxlkq+SXYigE8ynKMXu9QTajdrJURYAz4eD6Hfehe4GoDj8wPLH6D5Q7VlkYwzT Cnr41YZKsB1f7XqGCJ1RY7YrWJ3SeoHA4CtZZB7dacgsJuBm0BqCAAjgFGrYqN0DcfPvzj BZIeGTK+JV7ufVNwJVfBHkDlVSYQNNQ= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=RUj+x5+h; spf=pass (imf16.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=1676276359; a=rsa-sha256; cv=none; b=Cxxhb6ab5CVG+Iw+ATPI5pSRPeiTviftW4nOjmDV99ruojhZgzWb/ahMlhAt5zAWKvEs2D F6fT2RvJvjel5/7aK7xoZ08LInkdePk43A18tTAEnEldj/pCKvCKJ0WPNrPs/jv5TbIOc3 T9jVS64TtyDydRgjeJDoLS0g5qsKmD0= 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 7E8686602111; Mon, 13 Feb 2023 08:19:10 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1676276357; bh=HcrRqQGTLDavaisdiDBAWZL7DbjBX2aS5kmcVSQao9Q=; h=Date:Cc:Subject:To:References:From:In-Reply-To:From; b=RUj+x5+hhHCs3+pYxQ5m7xQYA5s4//MWmZV4sAdJYmHle5VjOFUndXl1IARCprau9 4D78YmxFNBexbqZdeuK3bDJa44gajzUkLybaGpDtGXnG0BTueF2iOeO7ECQLHLGvc9 KB4Yu+kA26B5mf5CDFUlpOR+14iEiCtL3GknqNMCW1DU3E64WuKugoCV3aLgIimmrY wFurCzXK5sasmdjFS9oOixnYXyXFoP32BaL8oGQgvB1ezXe69nBGEVop2qJPrx+Y2I EpzrosGLYPHaIhrUhmj+3a/DyjJwZ3pA+2x0yvVlYRWB3v806AYcTtG4X3LG37kVBz JmBh1fhE7MOZA== Message-ID: <355ef60e-0918-13a5-196a-97e4e793edd4@collabora.com> Date: Mon, 13 Feb 2023 13:19:06 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Cc: Muhammad Usama Anjum , Peter Xu , David Hildenbrand , Andrew Morton , =?UTF-8?B?TWljaGHFgiBNaXJvc8WC?= =?UTF-8?Q?aw?= , 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 , 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 3/6] fs/proc/task_mmu: Implement IOCTL to get and/or the clear info about PTEs Content-Language: en-US To: Cyrill Gorcunov References: <20230202112915.867409-1-usama.anjum@collabora.com> <20230202112915.867409-4-usama.anjum@collabora.com> From: Muhammad Usama Anjum In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: F33C8180008 X-Stat-Signature: sgru6n57unhq7txojc1rox6mqjbr1w9x X-HE-Tag: 1676276358-762214 X-HE-Meta: U2FsdGVkX1+lLyBHePqnM2+XQCriPdnK+9Had85QieFCnUL5jJvWhtDVhMdYKOcGngE0HekObnyh7CmRDNcwv3149Bxu4gpoEPu6UY/S0IKNc3RD4HYvG6FtJG9lZxwIXZADUpERqpo95Egsx6+4iAEsO97c63XKd557lISfiSYjlp6Nl4f7COSHVhGFqXUBuQ6wuxYLAwvHlS6CBuXdpj7Nn9Tdb8tDNBNkYTPsUhcEFhQTaZKYsw/DkwIAEv4qYJH27ZS6l9qZyVE9OupVvV6hyd3CuluY/bZX8s0/2ggPxbpAuKGdNbPRGDINZyd0gqS+T2hN5uwth14jxMwBYOEKMtAFhYRnCTMOOMcrUdWBrO6iKqK2Cq5ZWaXrqx/OEXLUi3eXZ+kAfFp9kcFDg123Hv7BCkj6uH1BP676OWdeH3jXPm1rqUTdb/xPaW21SV2r4OT/4thAykF+HmcMEuS5OyAK6Q6Qzg/dv6Y1YRRBgwJz4vvoQQfWJnnYW3xO/LK7nccaZecYnVZKUag/rrlF6uiNBfoiUObkFEBwNTSHQI+dlTFjUCf+vBm1vIV2N+2z8kECTinuxnB7KXywLMmfxhvb5QFOyDptKQm4FxNo8bFM0agOpCuUUZpFahR1Gq/U0dq+UJChesV6EoHb7EZQAXNX34WJ9EVsshMZfKiWeK2haJLi82r8oZMd2TRFGVEQFcE+zo4E7OhURNIB3N0aMTswXrURAuaiqc3QlmDxEspAx2ptu3DOuE3MVcrAYUTsvUmzNbXatJ2t9sclJUM6Z2wzsLFhtVhZXXRNthdHK16d3uN9/wae9Jqt+yS1KIaFIkR8Bw8lCW/a0Ezh1TwDhs5oNtrncCzB1x1EkepGwOyi2VfjqHteDIo3z0keDHGBaMk3d17g/2NdLVTQYmpOnOf0bmiEx3tJomN4S0m68yymAWloZlwLQW4nlQSMdcDl0gKqTJL2SUPONg9 0Uex2SYX TRr0i86lhLM7oYHtTlK6WtWNmwW/nb+cqSBQZf66CAg1+4+3midPv+SpvxfGTxURcTnsmcoYe7f3OMezGSWJQBge3vcuMXgF/lfCJF1aS9UZSObX/eSy+764eA7gOlPltpCuAyqQjP/SxeC/1XB86zy6VE3vzlXTqh6G0fRx8bzRbUBzQOVDYsTWjqTXrT0VfMRuBWZVbaicyHzt0gd5WiET9WvONB7Esw8s6IQzLWVnUv587WXXucyjwxdlUCmRiIKeGf+F3c/qu8gk= 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 Cyrill, Thank you for your time and review. On 2/9/23 3:22 AM, Cyrill Gorcunov wrote: > On Thu, Feb 02, 2023 at 04:29:12PM +0500, Muhammad Usama Anjum wrote: > ... > Hi Muhammad! I'm really sorry for not commenting this code, just out of time and i > fear cant look with precise care at least for some time, hopefully other CRIU guys > pick it up. Anyway, here a few comment from a glance. > >> + >> +static inline int pagemap_scan_output(bool wt, bool file, bool pres, bool swap, >> + struct pagemap_scan_private *p, unsigned long addr, >> + unsigned int len) >> +{ > > This is a big function and usually it's a flag to not declare it as "inline" until > there very serious reson to. I'll remove all these inline in next revision. > >> + unsigned long bitmap, cur = PAGEMAP_SCAN_BITMAP(wt, file, pres, swap); >> + bool cpy = true; >> + struct page_region *prev = &p->prev; >> + >> + if (HAS_NO_SPACE(p)) >> + return -ENOSPC; >> + >> + if (p->max_pages && p->found_pages + len >= p->max_pages) >> + len = p->max_pages - p->found_pages; >> + if (!len) >> + return -EINVAL; >> + >> + if (p->required_mask) >> + cpy = ((p->required_mask & cur) == p->required_mask); >> + if (cpy && p->anyof_mask) >> + cpy = (p->anyof_mask & cur); >> + if (cpy && p->excluded_mask) >> + cpy = !(p->excluded_mask & cur); >> + bitmap = cur & p->return_mask; >> + if (cpy && bitmap) { > > You can exit early here simply > > if (!cpy || !bitmap) > return 0; I'm avoiding an extra return here. > > saving one tab for the code below. > >> + if ((prev->len) && (prev->bitmap == bitmap) && >> + (prev->start + prev->len * PAGE_SIZE == addr)) { >> + prev->len += len; >> + p->found_pages += len; >> + } else if (p->vec_index < p->vec_len) { >> + if (prev->len) { >> + memcpy(&p->vec[p->vec_index], prev, sizeof(struct page_region)); >> + p->vec_index++; >> + } >> + prev->start = addr; >> + prev->len = len; >> + prev->bitmap = bitmap; >> + p->found_pages += len; >> + } else { >> + return -ENOSPC; >> + } >> + } >> + return 0; >> +} >> + >> +static inline int export_prev_to_out(struct pagemap_scan_private *p, struct page_region __user *vec, >> + unsigned long *vec_index) >> +{ > > No need for inline either. > >> + struct page_region *prev = &p->prev; >> + >> + if (prev->len) { >> + if (copy_to_user(&vec[*vec_index], prev, sizeof(struct page_region))) >> + return -EFAULT; >> + p->vec_index++; >> + (*vec_index)++; >> + prev->len = 0; >> + } >> + return 0; >> +} >> + >> +static inline int pagemap_scan_pmd_entry(pmd_t *pmd, unsigned long start, >> + unsigned long end, struct mm_walk *walk) >> +{ > > Same, no need for inline. I've a few comments more in my mind will try to > collect them tomorrow. Your review would be much appreciated. -- BR, Muhammad Usama Anjum