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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 865B6EB64DC for ; Mon, 17 Jul 2023 15:56:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230035AbjGQP4u (ORCPT ); Mon, 17 Jul 2023 11:56:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229658AbjGQP4t (ORCPT ); Mon, 17 Jul 2023 11:56:49 -0400 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B893A4 for ; Mon, 17 Jul 2023 08:56:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=6rAKK+wxmLyxeZyfI3ZVNCD6IgYLEheT+1mkWcIo2/E=; b=ITVsMo0EZxjDbPwjtXY0q+QtNZ 8gbl3PWmF5+IAR7w4w6H/Gm41zQRpOUIsLgchJsvXLJWhrsKhMLpwnQXdX0BARLpbAMWtIR17mf81 8k+cba7QIun/PJbpMWeoaAwIIUKrROId6C/qlmcLannc8zhoMZvyimfHHtEpuET30xRPmWtZGXd2u RwVigIm0cdATeKOSJWBU68QowMBRC5VxWg2pGk/5mtMRGvqehERugmOLbJN9UezYwClx1ybGqWBDN YiywyLAo9rq7PVwrkpZ06ocNdso53hQsS76UHy5ZMiWv+drZ/tPxYZNWvFHsDcJLaDvdo2vw6kPEf y/xeajcA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qLQaX-0043ax-Dg; Mon, 17 Jul 2023 15:56:41 +0000 Date: Mon, 17 Jul 2023 16:56:41 +0100 From: Matthew Wilcox To: Ryan Roberts Cc: Andrew Morton , Yin Fengwei , David Hildenbrand , Yu Zhao , Yang Shi , "Huang, Ying" , Zi Yan , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v1 2/3] mm: Implement folio_remove_rmap_range() Message-ID: References: <20230717143110.260162-1-ryan.roberts@arm.com> <20230717143110.260162-3-ryan.roberts@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 17, 2023 at 04:49:19PM +0100, Ryan Roberts wrote: > > We're still doing one atomic op per page on the folio's nr_pages_mapped > > ... is it possible to batch this and use atomic_sub_return_relaxed()? > > Good spot, something like this: > > } else { > for (; nr != 0; nr--, page++) { > /* Is this the page's last map to be removed? */ > last = atomic_add_negative(-1, &page->_mapcount); > if (last) > nr_unmapped++; > } > > /* Pages still mapped if folio mapped entirely */ > nr_mapped = atomic_sub_return_relaxed(nr_unmapped, mapped); > if (nr_mapped >= COMPOUND_MAPPED) > nr_unmapped = 0; > } I think that's right, but my eyes always go slightly crossed trying to read the new mapcount scheme.