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 9334CC25B76 for ; Wed, 5 Jun 2024 08:55:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0C2F76B007B; Wed, 5 Jun 2024 04:55:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 04B046B0082; Wed, 5 Jun 2024 04:55:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E2D036B0083; Wed, 5 Jun 2024 04:55:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C3AE96B007B for ; Wed, 5 Jun 2024 04:55:30 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5E060A1C2E for ; Wed, 5 Jun 2024 08:55:30 +0000 (UTC) X-FDA: 82196226420.09.2057036 Received: from out-189.mta1.migadu.com (out-189.mta1.migadu.com [95.215.58.189]) by imf07.hostedemail.com (Postfix) with ESMTP id 1060F40008 for ; Wed, 5 Jun 2024 08:55:27 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=WWowJ2OJ; spf=pass (imf07.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.189 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717577728; 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=S4mCPcq6Gp0ug8l4Qe9KHcC8Y+s6DU5bqT1iov4dcRI=; b=prxxxzNFBEr57ElgXfK0XhAyzjAiDrVg7uonw7jbBrvRoqtu54jwfoaDXN4RKu8LbksPjU afzflBBBxO/4/66KwgVFxMRp/zeMufYCQTWzVW4ZAjJIBAzcCaoAk/bp8D8MCqNDxYn1MI txMn2igj5DucmWqoaCvdTmm81BgEF7Y= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=WWowJ2OJ; spf=pass (imf07.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.189 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717577728; a=rsa-sha256; cv=none; b=2wBqMkHU7NPHuMy6nvaVagd6rNwdd2gw7rgLovaCWEDxAgXlLRREdiRaHnetJ1N7oN6qV7 8/eEvEgAMjTop5y89Zd/ZPbQlh/O0sxE2h+bQSrE1nMYAh8fyipNjkyc/ZTUxaC+iwudiC kuup4GxaWZvoEJBHvsoOx/2voAH1BPc= X-Envelope-To: usamaarif642@gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1717577725; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=S4mCPcq6Gp0ug8l4Qe9KHcC8Y+s6DU5bqT1iov4dcRI=; b=WWowJ2OJCy5MK9lP1nsuFyx6zyS+SlOXc5ZQzy1lnLyYBmq1BtVu7GpMLPW5m51VT6uO2z 4xqk0FM5FsMAHbRgFQqZZnLy2MQ4L2JID9KRaYN+s8SLtJ2p6T+xx6uWlelNqBTaqlxCIc GqjPD9OEwrUw8qS3zlhPmLl8v8oRP+A= X-Envelope-To: akpm@linux-foundation.org X-Envelope-To: hannes@cmpxchg.org X-Envelope-To: willy@infradead.org X-Envelope-To: yosryahmed@google.com X-Envelope-To: nphamcs@gmail.com X-Envelope-To: chengming.zhou@linux.dev X-Envelope-To: linux-mm@kvack.org X-Envelope-To: linux-kernel@vger.kernel.org X-Envelope-To: kernel-team@meta.com Date: Wed, 5 Jun 2024 01:55:17 -0700 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Shakeel Butt To: Usama Arif Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, willy@infradead.org, yosryahmed@google.com, nphamcs@gmail.com, chengming.zhou@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com Subject: Re: [PATCH v2 1/2] mm: clear pte for folios that are zero filled Message-ID: References: <20240604105950.1134192-1-usamaarif642@gmail.com> <20240604105950.1134192-2-usamaarif642@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240604105950.1134192-2-usamaarif642@gmail.com> X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 1060F40008 X-Stat-Signature: 139mour4ps7y5iy1qbbhmqqe9i13i55p X-Rspam-User: X-HE-Tag: 1717577727-256539 X-HE-Meta: U2FsdGVkX18c6ze3jixXJEJdKJGp/3FR09NFZ5yemOLUzqP7TPlh0Nn2mTKBynYa+Lvk9uTz9sazf/ZCUtzFJ2RUC/Of0Ci55SyZau9rdAykt1AMNicKCU5mm+3SqP9EH3gg1GDZ02z2r2G7VsVdndimGhpORb6+ALLpORYh8mTMWe7XfC68wUy/LTQRlDBaeyTgXUB1RMH5+j18KO6PvHbxkL5J7tK6dX10hP5b/nY6ojTtZpSYNylv89fZPg6aZhjaQ7DOf01IV4cz5VgFfcbkc2uZSiAiY0ntO8vLGOk6XB45EKnnGqi79An16cazNbfaYxrj2rDte40sbVLmyTlXXfuXCzG9s+fFSP5ZIQwhFiM6WL5pmYrtjCZsyZyHhZ4b1svpH1zvPjrdvU8CWLkAm+GyewwtpwuOiDmN2+QY/cowH1T+GRI5hjbuwS/KTWqToa3VnnDOcAZQwbiST4qBP8DM00nOnTp0YwGnbRQPW853nev3MJOr9TkLIcXssH7VqJuekifu/Nnto9rE2UH83MAGpXOFJiS1I2nS05NYPK8JObOeaR2om/FlhHi7VCX/jtmABO1cePopXzx2uffTc40JOwjHOX5c+ihyuyWAQH+StIGUFRGruinNEH9+SjSXbmTaxVPzDR70lUrdo6vc6nSv22vbA+5pUqHoCTF29t+8ZWOw/gPBF/RmqduTaolVkvhwtjtbkdCo9/Ekfid8mMuW6+Sj+M4dTn1McJJato08luxhaMtEEu704+yynFMgHOLgGYOupfsqJxIGd/7fRDy0oOUstDYhnv5xUrF9mMf+BF9qEvXuWTdwFcSTs1BMgsFSYfjG+I8cPvGZC1a4ymV4bDC8drwupvw+M56Z88KAjnoaWGZ9aOHSE10yN8HgnkbOxC1FoktMN5UD+EWK4BCN63WyUUHYFNc/Gn2tFJiaGjHc5/2XKqBYYz+7NcxU2Z3tQVwTfBKHltf /7241vMu Z19515MTeH50s+1dMCkosiWfaFZF/ZGoaWi/oZCv3M4JSnwVstmKnltbN3qnU+QCQoHXcbbwauAZ4OZdLtYmRQplpdQ== 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: List-Subscribe: List-Unsubscribe: On Tue, Jun 04, 2024 at 11:58:24AM GMT, Usama Arif wrote: [...] > > +static bool is_folio_page_zero_filled(struct folio *folio, int i) > +{ > + unsigned long *data; > + unsigned int pos, last_pos = PAGE_SIZE / sizeof(*data) - 1; > + bool ret = false; > + > + data = kmap_local_folio(folio, i * PAGE_SIZE); > + > + if (data[last_pos]) > + goto out; > + Use memchr_inv() instead of the following. > + for (pos = 0; pos < last_pos; pos++) { > + if (data[pos]) > + goto out; > + } > + ret = true; > +out: > + kunmap_local(data); > + return ret; > +} > + [...] > + > /* > * shrink_folio_list() returns the number of reclaimed pages > */ > @@ -1053,6 +1085,7 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, > enum folio_references references = FOLIOREF_RECLAIM; > bool dirty, writeback; > unsigned int nr_pages; > + bool folio_zero_filled = false; > > cond_resched(); > > @@ -1270,6 +1303,7 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, > nr_pages = 1; > } > > + folio_zero_filled = is_folio_zero_filled(folio); You need to check for zeroes after the unmap below otherwise you may lost data. So you need to do two rmap walks. Most probably the first one would be the standard one (inserting swap entry in the ptes) but the second one would be different where swap entries should be replaced by the zeropage. Also at the end you need to make sure to release all the swap resources associated with the given page/folio. > /* > * The folio is mapped into the page tables of one or more > * processes. Try to unmap it here. > @@ -1295,6 +1329,9 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, > if (folio_test_large(folio) && list_empty(&folio->_deferred_list)) > flags |= TTU_SYNC; > > + if (folio_zero_filled) > + flags |= TTU_ZERO_FOLIO; > + > try_to_unmap(folio, flags); > if (folio_mapped(folio)) { > stat->nr_unmap_fail += nr_pages;