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 14E1DC7EE2F for ; Wed, 1 Mar 2023 17:14:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 508976B0071; Wed, 1 Mar 2023 12:14:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4B8DB6B0072; Wed, 1 Mar 2023 12:14:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 380756B0075; Wed, 1 Mar 2023 12:14:00 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 25E206B0071 for ; Wed, 1 Mar 2023 12:14:00 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id BB4D1C077A for ; Wed, 1 Mar 2023 17:13:59 +0000 (UTC) X-FDA: 80520976998.14.589EDBC Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by imf21.hostedemail.com (Postfix) with ESMTP id AC6951C0014 for ; Wed, 1 Mar 2023 17:13:56 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=WpwQWd4I; dmarc=pass (policy=quarantine) header.from=collabora.com; spf=pass (imf21.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=1677690837; 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=dmbPW82hrdyVAAjrsaBdzBPnpiw1Pq8eVHgI8kbEHPI=; b=WKRsZqUolzoJWcLV1V47Qn9hjqIYxTe/mwjE5QfkfbVyR3R54XbzgipQkt2z+3m/tHw8QB qPuHlPj4zINCa4deEM5v2ogEEAKfV1rv9bSLreQK6gkiGS/OpOg6Mo+meZQK4ekZIlTYuy kkgg+fj8tXAR2/1zg6vOJZonqGQYZ0w= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=collabora.com header.s=mail header.b=WpwQWd4I; dmarc=pass (policy=quarantine) header.from=collabora.com; spf=pass (imf21.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=1677690837; a=rsa-sha256; cv=none; b=RcLemVAG0Er2XZxXKUGOJLwMvPsY9ZHFWQObsOALBJ2GNC39ppquAQQONC7owDwmwKTwfe kUavg4IcxZ0Jpq17joXdIft/wXbGdKRBf2C1HP6aZ3CDc3B31N1xuaodNS893IrmG4rFIk tmTUuUbGNpFOv9UOaDn5oGcj2Krjvk8= Received: from [192.168.10.12] (unknown [39.45.217.110]) (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 9C77066020D1; Wed, 1 Mar 2023 17:13:52 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1677690835; bh=sX1l5vpO1pOZkdcjHK8B8ItjOquI8mvBxgNUPz9UUtU=; h=Date:Cc:Subject:To:References:From:In-Reply-To:From; b=WpwQWd4IIz2bSmEsysv06hje/uFtGJtgn+Y9V7s6tDVHRPIPwLmRtra4nODd7a8+6 QdOglGJAbsw2D7rFomi47r7cOBQjU+InHvqkzh6ePefGUQu6pW0459GtnejpVUJEf/ EoBDwWZp5AqeR6tEGDlUxP1+4LzBNLvSSUzmofSfE5ZvcOoUUrCBjYybFBTBLeid/z wyMTOefzz0fGk7xmTTu0L8tYf83px0M57XjEQ5Bf01nwmwdl9gpE1o8EkbXwymfNFx sSnRTXAJtvj7buxOxrA/7eQHQAmNT1BZs/wlUi6tCA21ArH5nJgWUfINMO/SOSOWao QdagiQheS9Bow== Message-ID: Date: Wed, 1 Mar 2023 22:13:47 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.2 Cc: Muhammad Usama Anjum , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrea Arcangeli , Andrew Morton , Mike Rapoport , Axel Rasmussen , Nadav Amit , David Hildenbrand , "kernel@collabora.com" Subject: Re: [PATCH v2] mm/uffd: UFFD_FEATURE_WP_UNPOPULATED Content-Language: en-US To: Peter Xu References: <20230227230044.1596744-1-peterx@redhat.com> <640319be-ddb6-d74f-b731-eee5ceab3d01@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: rspam02 X-Rspamd-Queue-Id: AC6951C0014 X-Stat-Signature: gohxsp3dipzdc7tohj89a1dfm9x4y5u7 X-HE-Tag: 1677690836-36861 X-HE-Meta: U2FsdGVkX1+erLqFGOAuRQkinZmjm0nLTPhFBlfYnEP0M2yfeer6fNWsjKUxYZOsqRQ/O+HPvJORBQZr901KYg20/Yr6uFab1vpEg8jzlSVjJUye8lGFvFs4Qqg5z+l7hIngr8aVJEp3DKSDsHBthwU/EGCXIZpDs21K0xpVdTxiRPm5kCc7ibjBiiKKsAxCkgniG8NAacKsBMjsBostYusDNGAjJRNvIzSfCARdvcIC+wi5H3S8moXhCv13OrNSX4FTyvvjF1Xw+ugocP+AyaXmLSLx0bUVdPIn/aCIHVeF7/ejCPru3xMkSS1AFIBiJGJiMxWwdVv09hSgOcRh9gdD/NPSVvMoNCMf2EzQZ4nQgptkarLRIFagRuWPwritTmv3Znx1LkfQjzE/TV+0XfhFQdmkxFVLCbza6RhEvGJxZnL1poAapyYrwlZ06vhE6g80g1i8nEHkbCUeGwefV68tVewwLb15HdylOTy1wz/1kHKR4S32nSMEvBIsVAv9NrzXiP8fVJX2W10hjjN5BXdvVHdW0DsLmub+sSYM3oaW8v3NZNXqvhajPSNDPX8OxlKF+b7Osj8jdsuKW3CTTNd0jOc5bB+zw0eMhkKk3LHDfMyF5MshredvdytqXzhlRoS/HREkKaJetP29HzQXJWTbROMmLPpIS1B9QMfJv6ktz8rq3glbQeUQ0YfA6KyFgWJuRhdjU84xlpdZUv6Q1fL7mZVssvOIGXDEdj4/71a/uuiAfrSOgZ/Gq2QpcxrsdMEGoz1AMowBusB5QkypxlXz3jAnBYmPfgv428QGOCAPkNaoIzB5OIhthUptPp2Mv/Qc47XRRR5j2H7a5e6wDRpOw5P6pYvuD+XPcB+Gm0VqJmITrUw0DpTH27DwofVcsWzyuyn5ARj8sgWqu3QtRqkt5/LwkFDkuCN3/gbLi50k0jaGbx8ws2h3qcEO9NNqMXz3XuXtj6Yd6+l0/Zq B/roaXaC nHT+DgeCgfsfiZotVpma5xIce83VYyI9v/ZbuAm1nN57EIz0xe/F9lxD15WMsl4ln6m3pXcUZE8XtyROShmXqznKwfAgwkxXqkdON7q2H+/DyhdUu4OsFmzPEc8m5+LGSLM5ClrnmGmmRrDXFOlfN7/0Agt+t+4VX12vsRijYPaC8ADc9hnflGSuGmtAOrkrNybT9WxKjk6MH+PgS6nXRdfLliP+yNu0N4LwpMdDGnxm09biWhLaIS2iEcyoGpLsczvLwTe8oAFMisk4nW2XE9nfPRQN1QsRexizTzVds8qMWQlcqQGlfEA3blgTviCIV7oJ6LxGikJVZg1Ai6T9AfxMR7nCJJQtkfo+W8Fy+Sdx9jFir+k1rhmwXUvIKowUhH4cd 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 3/1/23 8:19 PM, Peter Xu wrote: > On Wed, Mar 01, 2023 at 12:55:51PM +0500, Muhammad Usama Anjum wrote: >> Hi Peter, > > Hi, Muhammad, > >> While using WP_UNPOPULATED, we get stuck if newly allocated memory is read >> without initialization. This can be reproduced by either of the following >> statements: >> printf("%c", buffer[0]); >> buffer[0]++; >> >> This bug has start to appear on this patch. How are you handling reading >> newly allocated memory when WP_UNPOPULATED is defined? > > Yes it's a bug, thanks for the reproducer. You're right I missed a trivial > but important detail. Could you try apply below on top? > > ---8<--- > diff --git a/mm/memory.c b/mm/memory.c > index 46934133bd0b..2f4b3892948b 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4062,7 +4062,7 @@ static vm_fault_t do_anonymous_page(struct vm_fault *vmf) > vma->vm_page_prot)); > vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, > vmf->address, &vmf->ptl); > - if (!pte_none(*vmf->pte)) { > + if (vmf_pte_changed(vmf)) { > update_mmu_tlb(vma, vmf->address, vmf->pte); > goto unlock; > } > ---8<--- This patch works. Thank you so much! > > I can send a new version after you confirmed it at least works on your > side. I'll also add some more test to cover that in the next version. > > The current smoke test within this patch is really light; I somehow rely on > you on this patch on the testing side, and thanks for that. > >> Running my pagemap_ioctl selftest as benchmark in a VM: >> without zeropage / wp_unpopulated (decide from pte_none() if page is dirty >> or not, buggy and wrong implementation, just for reference) >> 26.608 seconds >> with zeropage >> 39.203 seconds >> with wp_unpopulated >> 62.907 seconds >> >> 136% worse performance overall >> 60% worse performance of unpopulated than zeropage > > Yes this is unfortunate, because we're protecting more things than before > when with WP_ZEROPAGE / WP_UNPOPULATED but that's what it is for (when we > want to make sure that accuracy on the holes). > > I didn't look closer to your whole test suite yet, but my pure test on > protection above should mean that it's still much better for such a use > case than either (1) pre-read or (2) MADV_POPULATE_READ. Ohh... I should stop comparing UNPOPULATE with buggy implementation and compare with pre-read. I've compared apples with oranges. I'll do better benchmark for the comparison sake. I'll let you know if the performance is becoming an issue. Overall we need pagemap_ioctl + UFFD to correctly emulate Windows syscall. Secondly we also need good performance (more the better). > > Again, I hope the performance result is not a concern to you. If it is, > please let us know. > > Thanks, > -- BR, Muhammad Usama Anjum