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 9F43AC636D3 for ; Wed, 8 Feb 2023 19:36:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 35AC56B0071; Wed, 8 Feb 2023 14:36:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 30A9A6B0072; Wed, 8 Feb 2023 14:36:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 184FF6B007D; Wed, 8 Feb 2023 14:36:51 -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 006AF6B0071 for ; Wed, 8 Feb 2023 14:36:50 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id CB486AB39C for ; Wed, 8 Feb 2023 19:36:50 +0000 (UTC) X-FDA: 80445132180.24.2CC80B0 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2082.outbound.protection.outlook.com [40.107.212.82]) by imf19.hostedemail.com (Postfix) with ESMTP id 029A91A000A for ; Wed, 8 Feb 2023 19:36:46 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ItBw5am7; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf19.hostedemail.com: domain of ziy@nvidia.com designates 40.107.212.82 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675885008; 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=RdEpIXvhTTNVGp9hPB/SqhkugTNampfmrOLmtNiv0RY=; b=HYZ/jxdTj76FHCd+mjMyZoD113UnieEabAfBmAEkHvQE/+N7RXkPlf90Z6fEzO4H6D0nSs zUIxEVchnN7qDMYzlokEDhjA4aA1ki7YboyfTuzhan0lKazRyAuMw+rQ1G5W1dt3xa6JG1 99vDhZqHMh8x0ir2NmGcAPijAgomZg8= ARC-Authentication-Results: i=2; imf19.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ItBw5am7; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf19.hostedemail.com: domain of ziy@nvidia.com designates 40.107.212.82 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1675885008; a=rsa-sha256; cv=pass; b=CPYC4EuZNw6zCTvTeF+30ph0knIk1m2cwY/3gAjZXPks+M1KdCLBAsiQ+4dwGIcsisWlKj Hwhq0w1fyovZAbviJQBdniusNcH3+TSr8AgVAkbdejVyIWMDNH9bv965Vy1unLIIOMBM8+ EuBdGVUInXTjHV/W8gzM9Z3uS6ImLFk= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L5SmVpclrzVIQwk6q2gylnL2MKiHTSaXvlv34OHHj3SkKdYbg3JjSVjtGASSbXgcQyzvrg6vAuNVG0t1U2sOcVOg8Fcz35SSjktbQpKI6qhl3/7uXk+zntI6Q9bcRq0s9xQKZpnt7viKmDqL3xgnih+EaHUBoXTde3cQJMAO+6PEnJCBs4fd6ptc1A1e1ZfwbJBmQOJKz1kbd1EAd8mzfC7JTAStbe/CNI7oB4bSgI+gvgtRlVL0S7OZzoplPfGCsi5T0uv19zrS8QmF/RaTwyEEYIVzMcZY4KIloua+FkN7j2kWWSa4C/8UjCUprtzm9Vz+qh5JpYA+34EGf+LSew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RdEpIXvhTTNVGp9hPB/SqhkugTNampfmrOLmtNiv0RY=; b=H69yDbglwa/nbp5xUjrngXdYqR7ekC6POVtamEt1DXmh549HmMlJHzz6C/EgfEOCbmNP7fk4BYG2jI8kfol1Oq7vLc6uGplWoUjbmbySsh537+mSooYtajr3T9SQ2l0AL0L+9w+3Yr1TEd5Cuzi4TIwgMRdojtZdStizo5+zv6XMQuF+RoHPHVacxchL4cDghJKOwo6dXwuJacWsGfryskowZaedUaTbN+6voqFgaEqmFJa50r+E/SPHriAfhColydELjBfAFo+I/f3D5E5QJAqjPkDmGfOUq9MtVMT2J7IkAUvHCiQnIdVbEniPPWTyMBbdb7n9SbuaIrDi9nJj6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RdEpIXvhTTNVGp9hPB/SqhkugTNampfmrOLmtNiv0RY=; b=ItBw5am7d4FgCN3T4L6JOjPCrv8ubbwrDXUEbRAQDC5d+to+mS6egXrC+ogw7N2CpzQiQ8DuRdZAUy0EysUkieTn1RjRdJUC4iA1+7LRHOkjxIklT/1Lk2rAMUPoyddbdnz95/FRrAnHAKwMi5MlSjGouf3SG7PpbUqox3Q43Pcb3i9Dr7II9YKcwq9SZOySlq6oJCNQLhVN0lcuXiFImGnKG5Y9KtVEjvXvKkh9ZvuK+yRlzcCuf/8lPp+4mO5MU7ocVzGLL1s9jF6JVRo1KxZCT6WevUVrqK+METPpxrdsW7DAqt2Q/qJHK33/WiPv6fI/ryCf3H4eN9rXDxk7hw== Received: from DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) by MW6PR12MB7087.namprd12.prod.outlook.com (2603:10b6:303:238::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.36; Wed, 8 Feb 2023 19:36:44 +0000 Received: from DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::7f2e:5e8:9129:8663]) by DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::7f2e:5e8:9129:8663%4]) with mapi id 15.20.6086.017; Wed, 8 Feb 2023 19:36:44 +0000 From: Zi Yan To: Matthew Wilcox Cc: linux-mm@kvack.org, Vishal Moola , Hugh Dickins , Rik van Riel , David Hildenbrand , "Yin, Fengwei" Subject: Re: Folio mapcount Date: Wed, 08 Feb 2023 14:36:41 -0500 X-Mailer: MailMate (1.14r5937) Message-ID: <7DCA075B-1E43-47B1-9402-66C54513D52E@nvidia.com> In-Reply-To: References: Content-Type: multipart/signed; boundary="=_MailMate_249CA7A2-0174-4B44-AEB0-50CD9CBA6932_="; micalg=pgp-sha512; protocol="application/pgp-signature" X-ClientProxiedBy: BL6PEPF00013E0B.NAMP222.PROD.OUTLOOK.COM (2603:10b6:22e:400:0:1001:0:10) To DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5744:EE_|MW6PR12MB7087:EE_ X-MS-Office365-Filtering-Correlation-Id: ddfbcb93-d637-4364-f9ef-08db0a0bcf44 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: j3xOmzFtBp4p0DWIby8kXV4s9RVuzHXakqCNs/Oa2JB7fO4hBoPNaMhfBqqH7/SaW7flaBgR9eSgUBczw1xkuxrVQoQmrPaexrEkqCgMXpjfshRMa0bI5/negjcWjjL2d4JPxkH0iAa5fjse04BjvxgDhbMvNHuX2y3s68GFHEzyDo4+QopKfFvCvifD9YDb8EYILgp727CgAWWZBtGtpSuR8piDKgtVJ8oBA5HtSU/nmyW2+R+40mfNVGlKyUAW9KSXBOnhO6UIxK02Td9VHDvHP69BV3m054VJ0PeEb9fRJuLVOl6qMS6CBUCs8F9+q+1/ftDP8e60ATt9JaXRlVzR96+KzpdEKapbJOwOQwyu8BcJ7wic0Kn2n6fkuYZfNNOPGRP6MiOx2f8IzvHEv+MowLM7icCdHIZc/zNG1KTMn+f5usFGJaV285km/C3URVc7PRKAlTQXdF0fIpLVSWsRyIik+pHD7ZLqoSQc9nbLNOiy0Rk6aGUkKqFKppOnfN1eWx9DorPfULK8SrgeDSKcb0466JCl0A1E+uCobzNDn6yhMUE7yZcjx+HW/k+/+aksGViMrSQC0vcaMlec2ywKi9CkGyGGEgpPqY1tCzPifMRNv7yZ4TGv4ZvRrxPNybJn55jcVyZJ+ho2nf+SjD2X0T41KygcXllUkDNPbpxcXmjUC5gR+4ARjNVE3K1rerb7CQXjehXExahCuvDkVwWMnIK8AapAlKfh27hUolEG+BwsAi+4FaGJVs8sbSkQcvOBD6CXUed+VdD4gQ//qNxiA10ou8HupN6uBp0V3Quya/0jEO9GIXALrSf5dA4aLYxB1liIx1LbammHu+bqxbhlcYYW2ySgfIPhNDxx2xg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5744.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(376002)(366004)(346002)(39860400002)(396003)(136003)(451199018)(6512007)(2906002)(186003)(26005)(53546011)(6506007)(3480700007)(36756003)(6666004)(235185007)(966005)(7116003)(5660300002)(478600001)(6486002)(33656002)(41300700001)(8936002)(2616005)(8676002)(66946007)(4326008)(66476007)(6916009)(83380400001)(66556008)(86362001)(54906003)(38100700002)(316002)(72826004)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FKDOWc4+AhSOY9qLAzBFMn5tjjkUxMXzVcXbU+B8i/dOKERVRAUMnEjMz3QC?= =?us-ascii?Q?AbDVHBEZwAfWu1LmmLcQiytJ9yOvuHuMECLOS7tUHZlUR5RZRSDEbGsOVrb1?= =?us-ascii?Q?GX5L1dbwTHdGx2KAkxfYcCKFlXbHopQxVamlYa0gvBKX2egrJscCb+16szzx?= =?us-ascii?Q?LDaEhkX23gO8X/3aFat2beUEePmCc63PnQQJxCjra++BrPZeG6pcMZlXV664?= =?us-ascii?Q?pXjjTcnr4vqG6gZXy631VIWlV1fbbR++E+jLDJW8ZAfFFVoD99+d/ZnVh1ZV?= =?us-ascii?Q?7WA1CSmO4EdNKiN/tnBTLnuOaEk7hb5RuagbczhD9g6sOTLplxVvcKX82nCa?= =?us-ascii?Q?m/DvnFgqJALIO9Y0jjrlewJfYCO3R1p5hPPtqhDiFwCr6UDClpDamcfj/aki?= =?us-ascii?Q?RqrvCl3A2bABFgDZxELknU9alghkz4ncSbhdGm8hbIDqvw3fUTozbBHWV6pu?= =?us-ascii?Q?n5n9XxoMGiJoGIWb+ogoVvIilqoXEtDYejBPkvihX80Se9y1hn8mcNqEh3kW?= =?us-ascii?Q?tvuCXEOG2ycooN3zyHrREAfW1YE3dzVnDElpN0O8oicY4PxB0A849whPi1fT?= =?us-ascii?Q?KLIppHJ9cDJaM65HFOiZOPt5ps4qg8TRL86kSGKG0rqhc9BlClGQpr7Y6WPL?= =?us-ascii?Q?LMTnvKtKxi8JC0enrJNea7IJfSWy6dO8Y6FKzE+sWx5fcHNEIzD4Fl9NGyoL?= =?us-ascii?Q?8l1i1Yn8BXjNqNZJ1v4Ulv4C47Mo5LHAlg454CmqNVfDlp6nAHZqRO57v1sw?= =?us-ascii?Q?3YEm0llziMKbbzG4UENSrJknix8TflxVsAugRdhIJnsuzRdejW6dYGEhdSQh?= =?us-ascii?Q?c7B4QeF3k/I6//VSynKscwW32zlHH66827twZYZdci1GuXbeHnjrsjFxI6nY?= =?us-ascii?Q?xzwE2N0vSIPErz/7ZPWaDZaCJH0jrN0nEHDM5p8jNMPOHD+8BlX7hG95TLSJ?= =?us-ascii?Q?ijeorwTZH3LJPF8rOrmP0BQhTsE3+lQF4kWdJ1jQCS7sriWBKEpL1BHNqgnb?= =?us-ascii?Q?xWnbnrTnTEoPeoy9KNs8t6f9ojvtm3S8kEAykfykaAq6L3gP9IcwNflAHD8O?= =?us-ascii?Q?hlY5fP3onO4Xmv0i/4KoZMEZGOJ1hmj47tDMwdOTky8W/EMDpLp1aL/22CiQ?= =?us-ascii?Q?xsFUTApJqN/aCtU1WFLjGgW9OF867UvJV2MT+x6t6x/bHaNoUqkCF6Obyuyb?= =?us-ascii?Q?gyL01wHdbAvfNXIIrQzulmlpc39/jB8JZDMSFPdeJL5D6BVd5pgUXbAkQ+0C?= =?us-ascii?Q?AN/pS0qhVcAOLP00KJ4G4xamo1KcudpH2LaNGgXnUTby7APUxlNpRBXzGaos?= =?us-ascii?Q?M1olxRsYLa2h0cSp84QwwXYMAztE6qtX1C4x0u8nJh/pgzWL05E2z9jj9pon?= =?us-ascii?Q?QeVNj3pnWiwaEy6gPcvJpt6BT8MRm0fiPlTfqtyi6vPluVpuv3l0GW2W7sDa?= =?us-ascii?Q?S+mTpK7L2sskd2cIn3nD+tg2OBmX3GRwODCc4ncWV0Mq8wrZjXoGiQY6eHcS?= =?us-ascii?Q?YgmwIvm/04wVQU3oDnNDu4Ulrn2zQ6K8MitIW7XAeQeH/YK49R7/7MIpPd3y?= =?us-ascii?Q?7ezYdCJMcAeDA8DGSfLW7shGpxmtIPxlytdu2A51?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddfbcb93-d637-4364-f9ef-08db0a0bcf44 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5744.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Feb 2023 19:36:44.3233 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XckQRZ0mqGcf27pQb/Sz0iZoqxbn5+O0sXYp1tTTL+V8DtWavaSS59LX5gOZQENC X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB7087 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 029A91A000A X-Stat-Signature: 7mrwjtektd4jhuuhejhegtz1yopyi594 X-Rspam-User: X-HE-Tag: 1675885006-341015 X-HE-Meta: U2FsdGVkX19sJnpd6P5zwuWZYbNUDg38+CTMSnIMtCZLsKT2P1C4yK5FlTNrm0hxVa4fQf2wFdVvPBXbT2zp1MhZGC43yqh2Mb+dG99IUSvfPfCiCrpBzrRmPM8Dhm4wTYSTp+wEHWlfnzSMFays/YxgY43vAfzbT2t3ZBhsqRtFM2M/EsTj3yCq5R4ViC5k6UWt8LOmOAcagLvN15YVJYmA7wbpWoJVFUsP5evh3F50M7hK1eWaOs61eHOPN7ymw386gyQ3Z13AcZpm1i18i0bIizBnn0RWzOsZrY3iDmOss722hethPJIbit5xnkRuLWfDI+ZbQyd8ws4FGvrgTXlPt9iaVDd9Fs9eYKoHwKGZM9VMVfgjhwNZzGyQG7d/HLJRB9QXs4ZsV/jhi+qtaSjvEBjKIsOSYVWPvhdCOnPT7QhIhzfydbouXCJY/RvacgPPQZR4CmJRtl2BQFsoHBft78R5tVBswTRv8cb6nL8nsAaDolXWpjhjDrKJJY1ukJTzhjRD4zLUgnPJBBgcnzxHjQFgS4SxYCSHeB0po0P9MwzG1W5uzKgGV8POh7DFUUMbee+FVRanNhBCrmYDUANVJzpDAw87HpYXDpoR4j9qdzwfod/2Q4iN0OCABI8lClwA4qAE3M4RMs5H/RP04BCZYCsKp39KOCwBkCDlwOFThOZprY7UuWBfYziJ4I3JGR9t+p/qg2hvI8p2qrOVbegYOSwc9F06FUL/elFowIVfXoZuYjv+b6U6S8TYh9ynFRp+hww3akghijvOCG63qiTApmVkij4agVg9d5Z90FY67he/Ph4OyEZNQYYwk4zq9pqX8cBYfRy8pzMloBDhiXVpZNgr1zu79pFWemf3sRkD4Y/G3p87LK+nUiRndqh/La/D8AsuJ7MyOjj1cDwxevz5zREFzLAtbaMpqKg46bb2LXR3Mufnhm9rjZczYr76w1KSoTr2cyGZcN1jPre zNf1vcVW yvFc3Btu4Q86T9sdzaSMQpV3VXgMTeo/IjA2nYv0OWPBZzYeWGIA4Wijy5FlygJP0Crs+LZdaYcIfTfB1I4RI5/1q6dT4MDKpqxdPoSMtvc6F7gYhFnJMvBIMG42IwaTWWVXINiP9oOAUjrzC7EOkHM/poWlIJJV5Qi3m3ha2W+DV70Z2FZ3zilxPa+yDYpe92gf5JBgIeiXHcMIEcZBBuX925nMqnh8si0NYoTvo2nyxDbSWEAABmNeP6VAeL3SnoR0au1lFTHCkd1nx3WI7gs8XXUX/WYuEnguMdsogpkw7sclybzLxJnywsyBmsFfn/WKLS6P+yq3BroKKVh3vkfAyO8FDzmvn2QTBw6ryR5Cs1HKoLMCg0GKqUMXRF+sPV7Zocb4jlZU6N5CRRR2XXuEKSUacCqlSwZAJIa6fzgx20J7zLjaKHsCooUMMfBIWAzftE0Xyy46lHe9MfP8Ws2BYmCFoAKQvoDg7qjycmeuhqLZMWrvwekofSg== 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: --=_MailMate_249CA7A2-0174-4B44-AEB0-50CD9CBA6932_= Content-Type: text/plain On 7 Feb 2023, at 11:51, Matthew Wilcox wrote: > On Tue, Feb 07, 2023 at 11:23:31AM -0500, Zi Yan wrote: >> On 24 Jan 2023, at 13:13, Matthew Wilcox wrote: >> >>> Once we get to the part of the folio journey where we have >>> one-pointer-per-page, we can't afford to maintain per-page state. >>> Currently we maintain a per-page mapcount, and that will have to go. >>> We can maintain extra state for a multi-page folio, but it has to be a >>> constant amount of extra state no matter how many pages are in the folio. >>> >>> My proposal is that we maintain a single mapcount per folio, and its >>> definition is the number of (vma, page table) tuples which have a >>> reference to any pages in this folio. >> >> How about having two, full_folio_mapcount and partial_folio_mapcount? >> If partial_folio_mapcount is 0, we can have a fast path without doing >> anything at page level. > > A fast path for what? I don't understand your vision; can you spell it > out for me? My current proposal is here: A fast code path for only handling folios as a whole. For cases that subpages are mapped from a folio, traversing through subpages might be needed and will be slow. A code separation might be cleaner and makes folio as a whole handling quicker. For your proposal, "How many VMAs have one-or-more pages of this folio mapped" should be the responsibility of rmap. We could add a counter to rmap instead. It seems that you are mixing page table mapping with virtual address space (VMA) mapping together. > > https://lore.kernel.org/linux-mm/Y+FkV4fBxHlp6FTH@casper.infradead.org/ > > The three questions we need to be able to answer (in my current > understanding) are laid out here: > > https://lore.kernel.org/linux-mm/Y+HblAN5bM1uYD2f@casper.infradead.org/ I think we probably need to clarify the definition of "map" in your questions. Does it mean mapped by page tables or VMAs? When a page is mapped into a VMA, it can be mapped by one or more page table entries, but not the other way around, right? Or is shared page table entry merged now so that more than one VMAs can use a single page table entry to map a folio? > > Of course, the vision also needs to include how we account in > folio_add_(anon|file|new_anon)_rmap() and folio_remove_rmap(). > >>> I think there's a good performance win and simplification to be had >>> here, so I think it's worth doing for 6.4. >>> >>> Examples >>> -------- >>> >>> In the simple and common case where every page in a folio is mapped >>> once by a single vma and single page table, mapcount would be 1 [1]. >>> If the folio is mapped across a page table boundary by a single VMA, >>> after we take a page fault on it in one page table, it gets a mapcount >>> of 1. After taking a page fault on it in the other page table, its >>> mapcount increases to 2. >>> >>> For a PMD-sized THP naturally aligned, mapcount is 1. Splitting the >>> PMD into PTEs would not change the mapcount; the folio remains order-9 >>> but it stll has a reference from only one page table (a different page >>> table, but still just one). >>> >>> Implementation sketch >>> --------------------- >>> >>> When we take a page fault, we can/should map every page in the folio >>> that fits in this VMA and this page table. We do this at present in >>> filemap_map_pages() by looping over each page in the folio and calling >>> do_set_pte() on each. We should have a: >>> >>> do_set_pte_range(vmf, folio, addr, first_page, n); >>> >>> and then change the API to page_add_new_anon_rmap() / page_add_file_rmap() >>> to pass in (folio, first, n) instead of page. That gives us one call to >>> page_add_*_rmap() per (vma, page table) tuple. >>> >>> In try_to_unmap_one(), page_vma_mapped_walk() currently calls us for >>> each pfn. We'll want a function like >>> page_vma_mapped_walk_skip_to_end_of_ptable() >>> in order to persuade it to only call us once or twice if the folio >>> is mapped across a page table boundary. >>> >>> Concerns >>> -------- >>> >>> We'll have to be careful to always zap all the PTEs for a given (vma, >>> pt) tuple at the same time, otherwise mapcount will get out of sync >>> (eg map three pages, unmap two; we shouldn't decrement the mapcount, >>> but I don't think we can know that. But does this ever happen? I think >>> we always unmap the entire folio, like in try_to_unmap_one(). >>> >>> I haven't got my head around SetPageAnonExclusive() yet. I think it can >>> be a per-folio bit, but handling a folio split across two page tables >>> may be tricky. >>> >>> Notes >>> ----- >>> >>> [1] Ignoring the bias by -1 to let us detect transitions that we care >>> about more efficiently; I'm talking about the value returned from >>> page_mapcount(), not the value stored in page->_mapcount. >> >> >> -- >> Best Regards, >> Yan, Zi -- Best Regards, Yan, Zi --=_MailMate_249CA7A2-0174-4B44-AEB0-50CD9CBA6932_= Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQJDBAEBCgAtFiEE6rR4j8RuQ2XmaZol4n+egRQHKFQFAmPj+coPHHppeUBudmlk aWEuY29tAAoJEOJ/noEUByhUjwEP/3WPzvKpJpR0UqEtEObKwErVFcAkz8YUUnNo glylcJTYcs0rlnO7oXk6dqDPPvxFZ8+DCnUjJyiOujyPqDyGaFcbYjy1phQ/9CWw 2BnyTfyH0L5cOv8RMIWV3wrzC7oC2RvE8yiOWY8ImlMKDL3bTCbsvGe6rtjCzdFr C53FmUQAbzb6GFoB+Par2qPM6lkjvRmPIYGlL2k+GKf9WYPRcwYrSlyfhPBAV5G7 oR7qOOnRWxKl9pFyCOwyJXgLdHqpu5Q1Tvnyj/zC5PRJiueER0bdT6GxhyFSvd5Y Hl9Ptm9xhmmbXhsMPcMKL8my8qyiC3D4QI9WpvbGnIcA2vWWfjv2Ygn9ATgN0xaT xBLA+blWTc0W1bL2ZvEpjQARdZVtOnhx+YjrDozet/7DxCCwYV9owydJdaE0mlpG jgqQKR6h29WPXWkFzwjrWHHMhnY3r/2oKzUj4Cy4xLln8ZKmVOpxbDTYc4/htncj BmtSvhN2AWm/pQ8zTa41osLAyxVksxY69VnHbGjymAk7fDsoJmwFDYgdzeEhkZ4S Ke6+lenaOPPWSP9PXiLbto7PpLE/0KjiwiGIlBpiIymzDxEdGY0XUPOGdxjuAaKk KiNQA9qHYpEHIYdCrKAYwxRBvk3lXCnUeFJngLQecN6+CbbY/yylhIyz1gaGA2/s Z31Px5h3 =r1p6 -----END PGP SIGNATURE----- --=_MailMate_249CA7A2-0174-4B44-AEB0-50CD9CBA6932_=--