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 542A6C19F2C for ; Tue, 16 Aug 2022 05:47:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6EDF88D0001; Tue, 16 Aug 2022 01:47:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 697256B0075; Tue, 16 Aug 2022 01:47:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 510C38D0001; Tue, 16 Aug 2022 01:47:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3C6036B0073 for ; Tue, 16 Aug 2022 01:47:12 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 079FB1A0150 for ; Tue, 16 Aug 2022 05:47:12 +0000 (UTC) X-FDA: 79804372704.01.98AE732 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2071.outbound.protection.outlook.com [40.107.212.71]) by imf27.hostedemail.com (Postfix) with ESMTP id 55D5840033 for ; Tue, 16 Aug 2022 05:47:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VZVa265mmAbfmVm1BKJ67fK96pAe8Iz29qm+cguESZnwHbIBRsiDRQCzPZLB2HGLo6kcNXHkHpbIQI57Cvumwu04x5uT0J9wnCH6kY6xMOhvgnk1bKDTX5UjfZZ+UaG/ES1FoxTgBC1Yxt15HK6xHl+IRmZs8oEMu+EB4A3WLY2iyhUkiHQWxk7C4ulTF6DHXLmGsDLPpMmE/DsOjChsryVtO9XX4zK+mC0mqxXUnjSaX++z6dqAdq1CD6wtmk4sh4ZIprbo9ETuCYRkA9kMocJ5RQmpDcYFkotkQXkQA41hcaUGvNyBzZpbsj3xhGxU//RuWmZgTyUTf4MucY11Ig== 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=wwgnAX8xjj0Dl+X/FD4Twla2GscBG7fvC47Fk5Wp/WY=; b=fNJxXmUBZ8yit5qQpj2vR8cl0p5Hq2x6U+jJpH6PArk8IixpzEms9HhX+yNOlpf+HB4MlFSoE7FKf8ESsgoNX6K0mlkcL5w2m5BoCQt7qZMXdQGRkISDUPy66RoAiu95RHVr1r0e5WHoHWEclYVfLpHPGawepZ51Ii8UmoV0lPb7rVKUFPgUCdgM5z2wlSqSzPOW5zbdhXIY6nSpPS+cQcaSXMMEe0eiCpclHlavOSgzmHjNmFHh21J1NiuzRB+IzHECqTAp+ZB0VOf0jI3tkElNh905cPwHk/20c9tKMK1K04qL9M+Ad7fmk0DJi41BfgXuTrbUBMpUJw/ZlfECrw== 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=wwgnAX8xjj0Dl+X/FD4Twla2GscBG7fvC47Fk5Wp/WY=; b=nvYdTrlsbFTob3D+9DkffijPiVEqvsGxHOe79677kyOsVfv2mwUYHUaP6V/sgIMwPWaTjbnKoNPge3kGOJVo0Vs6SLNsqd07LRznDUhYL7NSTrRmtEYasWpFQiEArNJZb0bEgxmqauStN49foPWMTeigZ0xYHPOBip0d//x+PJFnRWwx42IJMiEWET+WpZiSvGZ3JRhrLFYK0hh9T44lsOuGDz3movVO5H26stkqt4/u5q5ip+jvNDIuXMDfYnvTh4osxuYeB8Nixn7IZwsl4+3wnnOXg04qBTNc0UIp1N6Uf4/V9UxdYb/9J1wBh1Yx7ZEMlLrdeUR4O/fFx3DfmQ== Received: from BYAPR12MB3176.namprd12.prod.outlook.com (2603:10b6:a03:134::26) by CY4PR12MB1143.namprd12.prod.outlook.com (2603:10b6:903:38::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16; Tue, 16 Aug 2022 05:47:08 +0000 Received: from BYAPR12MB3176.namprd12.prod.outlook.com ([fe80::eca6:a4a7:e2b2:27e7]) by BYAPR12MB3176.namprd12.prod.outlook.com ([fe80::eca6:a4a7:e2b2:27e7%5]) with mapi id 15.20.5504.027; Tue, 16 Aug 2022 05:47:07 +0000 References: <487960bf67c7273ff5606c76f73bb51271bc7b90.1660269441.git-series.apopple@nvidia.com> <6b61e9bf7c65f78524db32ba3e65a7eb6b8a76a0.1660269441.git-series.apopple@nvidia.com> User-agent: mu4e 1.6.9; emacs 27.1 From: Alistair Popple To: Jason Gunthorpe Cc: linux-mm@kvack.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, "Sierra Guiza, Alejandro (Alex)" , Chaitanya Kulkarni , Dan Williams , Felix Kuehling , John Hubbard , Logan Gunthorpe , Miaohe Lin , Muchun Song , Ralph Campbell , David Hildenbrand , Matthew Wilcox Subject: Re: [PATCH v4 2/2] mm/gup.c: Refactor check_and_migrate_movable_pages() Date: Tue, 16 Aug 2022 15:29:20 +1000 In-reply-to: Message-ID: <87edxgvixy.fsf@nvdebian.thelocal> Content-Type: text/plain X-ClientProxiedBy: BY5PR17CA0026.namprd17.prod.outlook.com (2603:10b6:a03:1b8::39) To BYAPR12MB3176.namprd12.prod.outlook.com (2603:10b6:a03:134::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 993b42ed-8ce7-40aa-fed1-08da7f4ac150 X-MS-TrafficTypeDiagnostic: CY4PR12MB1143:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9M6PbNrVBcg2bXGBlst817elJ/TJu4Rjn5+qTWU8K2woYyAhYHleBbFTjwn9J/JRBQs5hMp+IaAaIB9ipbzKu/MMhpzzyrnxcvw757l4DnhrC07bXm/ezRe+t3lCRWaHv8MaExfub/JXOyHpU9BlEVay/1leIzmzSqR7V1od18unbUvYfk0rC+Lcfn/jt7JvITU1Szo6ovNV4kxZ9KDvoHrdDB5Gkj6+D1Cs/+ToYpeeuLbZxHqZkhR+0GzxaekeyJNdfmAcpGPwNvsEoh/qU9PLhEldQbNqifk65K+VmBgX1yDPv++mpn6GJXYwv/cH316rr+mjJPJDlFCJZr2yX6bS10j4DwW9LidYW8XuBoXb9/t0t1hpqyobiEoCNXUQwP6vF2aOhncdVxUvFnpuUn6Is9TNOQ7dljhqrvHkC/n714JAJJTckIHLgS9MRAGVQO0FdsIecsz//+BllPjfTElWcZdA9H5IrwP+iZeedoVW/B0MaFccG2kTSmCsvWDUS3XsZB+waUH0Q7d4uHhjlpTk4D7WQUaDU8L4GmVyxJ/1Jz8Pi0B5aZ5nj3il8BgjjucMXj5qWA6ABO1WeiUGn+MPJtNNW+vYpMAe7Tzg9NbjvluaRwjVYcUCMGeeWMfm0u40i6+MFdlXvYzvEipqN5wB3ZN1aSf3RJ2AgzflbY8aJvhY2H5OUOjRD8MsSwMxEQFbAZnqs0RG9YO1gB4guSF62suUJG9ulSkbw6/dYM0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR12MB3176.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(39860400002)(136003)(366004)(396003)(376002)(5660300002)(83380400001)(38100700002)(186003)(41300700001)(6486002)(9686003)(478600001)(316002)(6512007)(26005)(6506007)(54906003)(6666004)(6636002)(66556008)(66476007)(8676002)(66946007)(4326008)(6862004)(7416002)(8936002)(2906002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zsqrawdnXk6YmWZRsgO9I6nrlcuCieCoL5/QMYbNzCTgv9QMX4IerA88/jwR?= =?us-ascii?Q?mXRs7hOSUM4oHBUumeXEOt3+YG8m+sq95EDWhhiqyEfC9Plf/2gZ7s4z7sHs?= =?us-ascii?Q?C34+Va8U1hR7RXJFCbzvgAISgumvbrJ+DVYryikXrOmltqt2SALGrPf7lNip?= =?us-ascii?Q?xbvjn8Ah756p31E2xjPi/JsQT8MivX/8LwmQC3uuqN0byODAKx2SEhJHAF7A?= =?us-ascii?Q?jAElYPMVNcyXTqqfwj/BP3fAMRx3X11/yQsb/XNKLoi+NlkU1Piu50frUeeX?= =?us-ascii?Q?zLFTULaUhH8Lr9DWH5YSA/bDn92/NNPPdi60fMtC946EVc6hwRZReM9OzZ55?= =?us-ascii?Q?9uXcjyuQo3uTENC3oR2Qazr+nAh0DYg97fzEp5ZTBj1feUX5pcCTKm8DV68a?= =?us-ascii?Q?DsFPsWo8x/SfZFr0TYvcWwvMbUpCrVXWy3kxTEYRsxYNq5WzHaNa8kcS1Ifo?= =?us-ascii?Q?NC+bDhsOCn1bPNoVPE3bqIwpzi4bqhtAgAB9POvS4JvgMp8cmV5R57UNrFp8?= =?us-ascii?Q?o9GYqkFbrLB90jzyx6aAKZwVCGwOkLjI3oi/vuiZz9BvjOhsFAQbwJ+7+nas?= =?us-ascii?Q?++1ApoeXzXCNpnJQX0r+SAiHAb1Zwnf8eK9xcifxK6aVdzrsRrluR2HZHcT2?= =?us-ascii?Q?H+f5UvlxEhzaYzJEmeUnA+/H7iTiPvqEBgrZAD0d4fzmIx8zdr/RrFj0//Is?= =?us-ascii?Q?bNWVthFDOcYHM0WOWXv1K5XARTWHTFULtA3ZcHGh2c+3v4rc6Y+VXSVRHQKJ?= =?us-ascii?Q?3TWHhZxeu7t0KRb6/ag/kOy7HvRcYrIysJCDjhrgsvG95q/VlrzGxgvJowx1?= =?us-ascii?Q?Q1xZhHBU1PLugdR2aT/skNLk11WYWWLwOQ6DucQUxnCCRdXzIPTrvpZ51jtr?= =?us-ascii?Q?LvocTA/1HPAKa+enngSkXuAYwRSnO1qcpNAf3pNpiGgfsVyPVaFzvFkUgTd0?= =?us-ascii?Q?OAFuGK7byaO0Sy8tLDu2nQYoQWgl1//zcqBlMC79e315WQJI6I3b5i3q08K8?= =?us-ascii?Q?X616Zd2nojRjtUe8eTjiKCp6bMy0bBLK0Lx8i9MnIHRgwsENFTONDnqXx9r8?= =?us-ascii?Q?+AiUYMJQ2LQWolbckNcdFvFxUndF4RDL3OJ7IwF4an19dv6aoejLRRLRmh7B?= =?us-ascii?Q?S6sdMTahqF1ZWIGTo6ltIAXv1fKpk5AjUa0vxG95CW2MqJF6KAr+3xf+noC8?= =?us-ascii?Q?BAkO7gYRS/oFmnnixsnkh4FoMY9AVfo4sYfm9LoMSHz5quJukYu+3h5O10vD?= =?us-ascii?Q?oEyGk83b+PiyuEHDXj/JNDpvT7oY94QTIp37Qmf0H+fl5eC3vYs8Prv5FzTH?= =?us-ascii?Q?7u9tFZc/e0n9r5cujyyccdmpz4sxW28iHqQORbmUBF+oJKeY6zsXCbX5g+A5?= =?us-ascii?Q?AwUZqAat/XtlErgev9kAOF0bW6gcjfMqy57cvreYdbkKeP+WfAkubA42AEeI?= =?us-ascii?Q?7rosivnp73aDTACQOWMXkTZcSgvFrQra8YwHJDwklxasVY8iMC2jx5mGlwyH?= =?us-ascii?Q?7sch870Igqx0hXBu35AI69vAOYqG6aWhX0N2VaXW8DBeO7fJ5ThGMV2aMskb?= =?us-ascii?Q?He0x4Jux22gdVpnyywiI3pOX5hC1rcPMQ95WYP11?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 993b42ed-8ce7-40aa-fed1-08da7f4ac150 X-MS-Exchange-CrossTenant-AuthSource: BYAPR12MB3176.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2022 05:47:07.7089 (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: AEdcbINCF+/3NQqNbMTu/DTmflL8rYqPcJrExiGcEwfQGn6sCQ1+l4Iul09XAOMs3GfXv/VI1WbHCwsakXMsVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1143 ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1660628831; a=rsa-sha256; cv=pass; b=B2YgX+tQL8zIHflXQw9qA9BT0/8iHlggO8Bvme45m+jPVYVv4+VXzZ1JCRwnI4fuyy2MV6 WXN/7zJ/oZPFMG/HF6U35K2zACMEKB/yBYL8NnTJrnu0gqR3anyqR+uNVooJyS6+KVsXqR ZcKY+jj5qnNdMJNJD8bHME4z/lSzJ8k= ARC-Authentication-Results: i=2; imf27.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=nvYdTrls; spf=pass (imf27.hostedemail.com: domain of apopple@nvidia.com designates 40.107.212.71 as permitted sender) smtp.mailfrom=apopple@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1660628831; 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=wwgnAX8xjj0Dl+X/FD4Twla2GscBG7fvC47Fk5Wp/WY=; b=1Or7QueR7Y1YhszhuEX2eNdCRfd0WLzX+tjfZzRZiHITd+au74+tA9aUxKyQlbnHZD+zIQ Sb7SSkDufE4RPNxfklPLUkklw+bZlvW+GxL++eW6ycCU0KC/nh4Ag4y7vnhAd2KoErKD48 sfL2OsFZoI0MrUZTwGEPrfrCRUXu0O8= Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=nvYdTrls; spf=pass (imf27.hostedemail.com: domain of apopple@nvidia.com designates 40.107.212.71 as permitted sender) smtp.mailfrom=apopple@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-Rspamd-Server: rspam05 X-Rspam-User: X-Stat-Signature: 55xf8rnqsx444xxyxxk4f8sq4xy5yijt X-Rspamd-Queue-Id: 55D5840033 X-HE-Tag: 1660628830-11065 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: Jason Gunthorpe writes: > On Fri, Aug 12, 2022 at 12:13:09PM +1000, Alistair Popple wrote: >> When pinning pages with FOLL_LONGTERM check_and_migrate_movable_pages() >> is called to migrate pages out of zones which should not contain any >> longterm pinned pages. >> >> When migration succeeds all pages will have been unpinned so pinning >> needs to be retried. Migration can also fail, in which case the pages >> will also have been unpinned but the operation should not be retried. If >> all pages are in the correct zone nothing will be unpinned and no retry >> is required. >> >> The logic in check_and_migrate_movable_pages() tracks unnecessary state >> and the return codes for each case are difficult to follow. Refactor the >> code to clean this up. No behaviour change is intended. >> >> Signed-off-by: Alistair Popple >> >> --- > > This seems like the cleanest version yet! Thanks, the feedback from John and yourself has been very useful! >> +static long check_and_migrate_movable_pages(unsigned long nr_pages, >> + struct page **pages) >> +{ >> + int ret; >> + unsigned long collected; >> + LIST_HEAD(movable_page_list); >> + >> + collected = collect_longterm_unpinnable_pages(&movable_page_list, nr_pages, pages); >> + if (!collected) >> + return 0; >> + >> + ret = migrate_longterm_unpinnable_pages(&movable_page_list, nr_pages, pages); >> + if (!ret) >> + return -EAGAIN; >> + else >> + return ret; > > I would drop the else path and just return zero Unless I've misunderstood you I don't think that's correct though. check_and_migrate_movable_pages() needs to return one of 3 conditions: - 0: All pages are in the correct zone and are still pinned (ie. "success"). - -EAGAIN: Some pages were migrated, all pages need re-pinning. - errno: Migration failed, pins were dropped and PUP should fail. John's suggested comment update spells this out more clearly. > Arguably migrate_longterm_unpinnable_pages() should do the same? migrate_longterm_unpinnable_pages() returns 0 for success, errno for some kind of "permanent" failure that needs propagating. >> @@ -2051,10 +2079,10 @@ static long __gup_longterm_locked(struct mm_struct *mm, >> break; >> >> rc = check_and_migrate_movable_pages(rc, pages); >> - } while (!rc); >> + } while (rc == -EAGAIN); > > Since the only reader only cares about errno or not errno.. See above. Errors other than -EAGAIN should not be retried. > But no biggie either way So will leave this as for now at least. > Thanks, > Jason