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 X-Spam-Level: X-Spam-Status: No, score=-6.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28398C43462 for ; Wed, 19 May 2021 12:46:24 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id B105860FE8 for ; Wed, 19 May 2021 12:46:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B105860FE8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 4819B6B0036; Wed, 19 May 2021 08:46:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4579E6B006C; Wed, 19 May 2021 08:46:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2AB0F6B006E; Wed, 19 May 2021 08:46:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0163.hostedemail.com [216.40.44.163]) by kanga.kvack.org (Postfix) with ESMTP id ED5E76B0036 for ; Wed, 19 May 2021 08:46:22 -0400 (EDT) Received: from smtpin31.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 78BA5181AEF2A for ; Wed, 19 May 2021 12:46:22 +0000 (UTC) X-FDA: 78157953804.31.4D8A33B Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2042.outbound.protection.outlook.com [40.107.220.42]) by imf13.hostedemail.com (Postfix) with ESMTP id B5CACE000123 for ; Wed, 19 May 2021 12:46:20 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N2dXzSSROVBGf/gg5PdP2aR16Jlg4O0Z0idlkLpS7uiEZbjYc5ugk/A5NdgpKrb0PShgywQUIzGgpppYqx9ud0itYos6PnfRNAshfOIsN8MEZ80P7e577X5in1IEdfFdp/4g0GW9z0vfkGZl3kdOiwECr7kv7LSQR4C9qiMFcOodOpf8a7DwhE5iLEUSLdMXj3lmfJCvAYM6ecxN6kiyMPhSplwmXihob/JJB+uIo3Nr146DBrs1bSLMVhhYrfHDuLQonJ0kzVwkc1DH0C2FVRV33GqbiCdhyCXOqhK6u3qup63jx/a3gNPJV1YR39fy27/DQ1wvttwLRYcGwTITDw== 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-SenderADCheck; bh=MFlxzPp4ZOoISWgFQEuzCfaawnMOi6RRAwx/58uZYco=; b=SEyZrZ0MiWMHKtk2XGA+Noi6EDkrbZJ3/dR1T8FZNK/C/X36kh5fnrl3L1B7MGWxxoi4o2iEYnh+QTWy59XWeHLWXTe/vgz/Op09xMEo44pQXSNhxafwn0qzaFjNvZjTpZxt5qSUqmJQb3C9gUXd+fRIxY52tLWzYtXYjDT7m3A9CzR7yjYhU66tzOeoeVaSdnMySf849o04jo0uAydZYFOERa3hs2BpyGlESfdoKghabNV6OecpdpCkXyvsP9yoGK5FoSUQEZ41WiTI9MpmiZAUV5AaGD1Kf3oh+w6l3rVRI69E8bbfd9PdwjCAkoVG0NOUjDaOVz/l3u7bUCY30Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=infradead.org smtp.mailfrom=nvidia.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); 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=MFlxzPp4ZOoISWgFQEuzCfaawnMOi6RRAwx/58uZYco=; b=QZVBYI+1AqekfNkdMsZqqMrGTHMzgzZ7GTFtlADgZPoCqWdtV5siZWDER34MrjYrsL8Y3XpibRxWBPUMCXfY991je2+c80zl8GudA8Reg3LnnpwuB/DDScgkTvKd4f6S9O4S3AfZNIIvPMADQB5/6HUxf+FlOcrQMTDdg30xH6kbzOEip9z64YpyUMT0pj527PHSAVIU8PckZ8wJ+msBXJgN1wAARUB2kDAxkauQuBz04esmtoEO654ARVwNBEmrjfcHt0m0JR/oUUqaK+1Z8vkirUFJ48jrX/4gdt3pjOE89SVedLkoDviXOoakbkJL66OOP8d/a7WfwjDCtdlRDg== Received: from DM3PR14CA0145.namprd14.prod.outlook.com (2603:10b6:0:53::29) by SA0PR12MB4382.namprd12.prod.outlook.com (2603:10b6:806:9a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25; Wed, 19 May 2021 12:46:20 +0000 Received: from DM6NAM11FT016.eop-nam11.prod.protection.outlook.com (2603:10b6:0:53:cafe::d4) by DM3PR14CA0145.outlook.office365.com (2603:10b6:0:53::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.32 via Frontend Transport; Wed, 19 May 2021 12:46:20 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by DM6NAM11FT016.mail.protection.outlook.com (10.13.173.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4129.25 via Frontend Transport; Wed, 19 May 2021 12:46:19 +0000 Received: from nvdebian.localnet (172.20.145.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 19 May 2021 12:46:16 +0000 From: Alistair Popple To: Peter Xu CC: , , , , , , , , , , , , , , , Christoph Hellwig Subject: Re: [PATCH v8 5/8] mm: Device exclusive memory access Date: Wed, 19 May 2021 22:46:14 +1000 Message-ID: <1911213.F1gzGJjR86@nvdebian> In-Reply-To: References: <20210407084238.20443-1-apopple@nvidia.com> <3859486.fHISG1RMxY@nvdebian> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Originating-IP: [172.20.145.6] X-ClientProxiedBy: HQMAIL101.nvidia.com (172.20.187.10) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6eac1a6-cfdf-4c69-cfc9-08d91ac419cf X-MS-TrafficTypeDiagnostic: SA0PR12MB4382: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: B8iYKs6BI2yFSmgCpFM/li4zMKsvlxf+M4oqUXkoucxT1CRL7zY/dn8v7Br2aFGbcVJEqWazOH3w2hgsHRMtpyJUfdv8n8XsDD5D2jbPcvcGAAjAq7N9KhfL5GoibgNXCAsULW9Fpvch/b965Wzxxg6a/gnDUxZJ06dr6YPAXoUTZG5aj1+VnmClVK6rtsDDHGENzssTopER2o8dHhqCfAVC0+H+V6juw0YavEomlSpKQZXDZ5SUyH//g+nz7cGOMTBO0VFkuC+7hg4eHhCvc8m+B+ZQSzB3Q58lSJgbuBgHQZTtAQ468AmSs93ib0hrVgQoTSvBVaAzNg+BJcF46CXvBYhzWts4H5NqTug+bxnTf+2J/X1tqIjXicl8IU+8KKpS33CZw2xDqVP1+O16e440VDs6/6MnrVD53PXaIx0TarDqV+7fd7JJ/fZTCpQuxOP67wkDb8tfqr6Itfkjc3ReiBZzSN59x6d2TYQOIKZRI3pM3bhRyWEr+bWmPP9ANzTzUj3juKhnbEA4VRc+4nVxzxv+MXrSICUCBr5JY+mvhcvhLeGrKFiaMnDz+bXodWKju8ToxsrJeUdPI8adfWIW8LFd24553TdrA01mPyNkEuR4T2KuDlWbhkYjcVmMhknyZH2XQ3CwZhnsxsMAEuRe03Z6Q0o2Woye1c0r6CsmP4KJmxpzy19EdI2ahwLKD1WzgJa2xKKxrFFD+Sd3pf/MBfDetqFDSe7zJMZn8FdN9Fxoi11ykU6wlt//eZNhEdJK8PaVeDOCXFV/Tkqffu54a6ZGIBCcdsuugDYFyXeB2+29vzf3Dv7pmQD01ffy X-Forefront-Antispam-Report: CIP:216.228.112.34;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:schybrid03.nvidia.com;CAT:NONE;SFS:(4636009)(39860400002)(346002)(376002)(136003)(396003)(46966006)(36840700001)(70206006)(9576002)(16526019)(83380400001)(316002)(478600001)(8676002)(9686003)(186003)(5660300002)(4326008)(6916009)(70586007)(36906005)(82740400003)(426003)(7416002)(82310400003)(336012)(86362001)(8936002)(54906003)(966005)(7636003)(356005)(2906002)(36860700001)(26005)(47076005)(33716001)(39026012)(60764002);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2021 12:46:19.7438 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e6eac1a6-cfdf-4c69-cfc9-08d91ac419cf X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.112.34];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT016.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4382 Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=QZVBYI+1; spf=none (imf13.hostedemail.com: domain of apopple@nvidia.com has no SPF policy when checking 40.107.220.42) smtp.mailfrom=apopple@nvidia.com; dmarc=pass (policy=none) header.from=nvidia.com X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: B5CACE000123 X-Stat-Signature: az7zmbw69o3mm7jii3i4kgicqycxiz5g X-HE-Tag: 1621428380-14379 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 Wednesday, 19 May 2021 10:24:27 PM AEST Peter Xu wrote: > External email: Use caution opening links or attachments > > On Wed, May 19, 2021 at 08:49:01PM +1000, Alistair Popple wrote: > > On Wednesday, 19 May 2021 7:16:38 AM AEST Peter Xu wrote: > > > External email: Use caution opening links or attachments > > > > > > > > > On Wed, Apr 07, 2021 at 06:42:35PM +1000, Alistair Popple wrote: > > > > > > [...] > > > > > > > +static bool try_to_protect(struct page *page, struct mm_struct *mm, > > > > + unsigned long address, void *arg) > > > > +{ > > > > + struct ttp_args ttp = { > > > > + .mm = mm, > > > > + .address = address, > > > > + .arg = arg, > > > > + .valid = false, > > > > + }; > > > > + struct rmap_walk_control rwc = { > > > > + .rmap_one = try_to_protect_one, > > > > + .done = page_not_mapped, > > > > + .anon_lock = page_lock_anon_vma_read, > > > > + .arg = &ttp, > > > > + }; > > > > + > > > > + /* > > > > + * Restrict to anonymous pages for now to avoid potential > > > > writeback > > > > + * issues. > > > > + */ > > > > + if (!PageAnon(page)) > > > > + return false; > > > > + > > > > + /* > > > > + * During exec, a temporary VMA is setup and later moved. > > > > + * The VMA is moved under the anon_vma lock but not the > > > > + * page tables leading to a race where migration cannot > > > > + * find the migration ptes. Rather than increasing the > > > > + * locking requirements of exec(), migration skips > > > > + * temporary VMAs until after exec() completes. > > > > + */ > > > > + if (!PageKsm(page) && PageAnon(page)) > > > > + rwc.invalid_vma = invalid_migration_vma; > > > > + > > > > + rmap_walk(page, &rwc); > > > > + > > > > + return ttp.valid && !page_mapcount(page); > > > > +} > > > > > > I raised a question in the other thread regarding fork(): > > > > > > https://lore.kernel.org/lkml/YKQjmtMo+YQGx%2FwZ@t490s/ > > > > > > While I suddenly noticed that we may have similar issues even if we > > > fork() > > > before creating the ptes. > > > > > > In that case, we may see multiple read-only ptes pointing to the same > > > page. > > > We will convert all of them into device exclusive read ptes in > > > rmap_walk() > > > above, however how do we guarantee after all COW done in the parent and > > > all > > > the childs processes, the device owned page will be returned to the > > > parent? > > > > I assume you are talking about a fork() followed by a call to > > make_device_exclusive()? I think this should be ok because > > make_device_exclusive() always calls GUP with FOLL_WRITE both to break COW > > and because a device performing atomic operations needs to write to the > > page. I suppose a comment here highlighting the need to break COW to > > avoid this scenario would be useful though. > > Indeed, sorry for the false alarm! Yes it would be great to mention that > too. No problem! Thanks for the comments. > -- > Peter Xu