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 05259C433EF for ; Tue, 14 Jun 2022 21:40:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 039C66B0071; Tue, 14 Jun 2022 17:40:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F2A606B0072; Tue, 14 Jun 2022 17:40:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DA3CF6B0073; Tue, 14 Jun 2022 17:40:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C776D6B0071 for ; Tue, 14 Jun 2022 17:40:20 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay12.hostedemail.com (Postfix) with ESMTP id 9E645120877 for ; Tue, 14 Jun 2022 21:40:20 +0000 (UTC) X-FDA: 79578160200.01.528F2E2 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2058.outbound.protection.outlook.com [40.107.243.58]) by imf05.hostedemail.com (Postfix) with ESMTP id 2E2E610007A for ; Tue, 14 Jun 2022 21:40:18 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YRpfZuwDlIFWdiGXAe2TqnUGqaRCsvMO6ehbbiu3AonniE3PX2aX/JDCk3QYC3uFhRNYa/uOj+EBv3RUVm7ayRgI1EazfD3qmlTz3JoZyjmANx79tMJLQJFLf1Jc7NmL0hvqKUfSJwr6cbGsG1wwrmEo8mkS9jucoWnkGmYwoWfoEZIoUr4PMOZtGFFlcZbhPMYaIh8vqwZPGMtk2ZPepA9eWY2CXiVUeUBr2+sWsZmSHfpGp4FNvPatfR9AVeXj2S9zV7GqI4rV7bP/29Aw6TGVQFlx4Nlt9bwMSqyHLdGSs0ysQlKjpaByazWQZ/IcUnD8kI5Ny3oi43AEJ2FIcw== 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=LjNUPmgsKFp5Wz/50B0VOXCeiOdwcgip2aymIcPgo5A=; b=ZH0xZms3NIgyJqZz/HB/uofRNyAoieMLp+0hAhXRzyUPimSSsOU8hY5LYLC6tW4tmDTzgrB1iQMIPyAYx/D6Fk/gmNMCgOnCLip3jyv7SQY4GOHHZLk9m328G21vLgYP8dgANCL7WCe0ukz+0SoeFSZltXktOyhpLqmp33PJIFqtjfKOw4RVsnv1KRrAyEL8RFADrSUZqNNSI3Epo93LiKwSxtZ2baYozwWDkTlt75MmM4O5jZfqOn5yQffUh2nVQnvTMf9hf4wTBXYARBoSbVbIV0ipyx3MCSVU8mdyoko1uF5iMwmiKqRwsJ2P1H89HPVTTLzluyiXADtWhvjYuw== 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=LjNUPmgsKFp5Wz/50B0VOXCeiOdwcgip2aymIcPgo5A=; b=NQMNaHWvG9/U27FMR9ikb46KRjGptb5TMO6FTjT+NzzheP30WOcdK3iZp/kQQzV+KZED/6XpciQV5bD/IgdUWIGGCREVdCf7LN2BRjV/rJfyOD9j/gDBuJJsLg8zH8lXm/8ZyJEqnjOqGwF62Hx7fxuf3i9Jy0i4mYnJc7+LmWl77Odj78aEtLKq0+N9fquR9JZVsdyBSlKJaFeytYUkmmsa+yU4fv4lgiuRjaC5UTvriVxlNLRevoCZBX+kOiKfUA36mtFwJJy9nXRYTnD96MStsatbe+Tfdi+uJe7SGpU2oGVwy15yt0y3GbymeIPOlEzi7Gz0MaXkHlv33qG1LQ== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by DM6PR12MB4140.namprd12.prod.outlook.com (2603:10b6:5:221::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.13; Tue, 14 Jun 2022 21:40:17 +0000 Received: from BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::15e3:d746:57e8:4de0]) by BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::15e3:d746:57e8:4de0%8]) with mapi id 15.20.5332.023; Tue, 14 Jun 2022 21:40:16 +0000 Message-ID: Date: Tue, 14 Jun 2022 14:40:13 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Subject: Re: [PATCH RFC] userfaultfd: introduce UFFDIO_COPY_MODE_YOUNG Content-Language: en-US To: Nadav Amit Cc: Mike Rapoport , David Hildenbrand , Peter Xu , Linux MM , Mike Kravetz , Hugh Dickins , Andrew Morton , Axel Rasmussen References: <20220613204043.98432-1-namit@vmware.com> <3eea2e6e-1646-546a-d9ef-d30052c00c7d@redhat.com> <481fc9d0-6122-bf59-9d04-23c10d256764@nvidia.com> <0BB58ACF-2801-4622-BF3B-9913A23AE46C@gmail.com> From: John Hubbard In-Reply-To: <0BB58ACF-2801-4622-BF3B-9913A23AE46C@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SJ0PR03CA0111.namprd03.prod.outlook.com (2603:10b6:a03:333::26) To BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ade85982-5bd4-429f-8fbd-08da4e4e78d2 X-MS-TrafficTypeDiagnostic: DM6PR12MB4140:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9o8puYrmcFMZ+LOq+0Sbvq125OwVVtXibKXEA3Y/5lp8xEXPpNPJpSb1YfH3B+ROyYBnkjuD0e4tFWiK0hBsVARNTgl1YjiRJkG/yvj47Gec/vvTCA9J8Z4zUOUQH441eIJFgOGEsii0OowRkABqrh+Yo3EdiVstWQdKU9cMabq8YIL+zW/2inKB765aTrNiF8x7Ugcc1Vpo094aWIWeFlbSgsBxjEfwzu4hUoJSf6MqY7AUN3UkZMusB4W3TAnGhwFG7rnS1TNO3Z9ruP4tf8WXS10yNM5qRR8Da/KgEp5las1tVtjzLhF/3vtpw+NEcUVrDDtB9U3Tr5rqRQqX2cm7X81ix1N/ydZp4BzCg8dwVLSl9At6bxL8qOfJ6LWTMwhwMMWtLHMMD94PVF7ybpUDEANPZoO8e8Cv+Opbe1ImkNhrC+5aJgaRb7bWwr7T+9pVXqAypYlzdQPN+89cCYtqvXO+tscUP/zAbXy4J5piUkvkoe4stNixF51bSw+K/JiYod52ZyofDDOhgjUG/Xd0b5ZHTUQezi93XfPhcRk+NGKx5L+1U4e1namxYkLahqBBQV/PxHPcrPV1Fzb6RSG1jooAzVAgIiMqH/9tP7E+xcAziedgMh6DlhgnHCZM/7Z1KzeKHUFzbNIHDDe4pW0b7WHOhX9TBEgJmHhjJ/R+ruHEmrhkniUMyBxg5xco3vkofJ1FhyfG4mIHPd0TiNA/SU+wFFe3NpByAh7Nz+3rH3NyxumSLlt11JgumOfS X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB4130.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(316002)(5660300002)(8676002)(4326008)(66476007)(83380400001)(66946007)(66556008)(38100700002)(2906002)(36756003)(8936002)(6916009)(54906003)(31686004)(6486002)(508600001)(6506007)(6666004)(26005)(53546011)(6512007)(86362001)(31696002)(186003)(2616005)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bi9zek9NWWxLRlRUS0J3elpXMEhmVVh1eXAxMlgvSWJxT3FWTWJyMFVtN2cw?= =?utf-8?B?cElUS1RZb3VGTXlDREFZckZpOFpBa25GTXYzZzg5Q0JtS3ExMnFORTQ0dmtN?= =?utf-8?B?L0xVTlFjdlFlaDAxU0ZYSFVhellYSTREd1R4OWR6d0h4aitrK28rdkJPYmQz?= =?utf-8?B?cmdCc0sxU2llcVFrckNpWEJpU0tlcGFjSk9MWFUwZVNPYkpwT3pBcGdqSUF2?= =?utf-8?B?eGwrSEJqckw3UlJycUlFWG85eituZnVHbzFLTGdhdElPb1E4cEJpdEJZaWpF?= =?utf-8?B?d1ArbTJxSWRyYjJoRE5DK29oeC9zY3JScDF2NCtWWVY5VFZJNTdsWTAzbUJ5?= =?utf-8?B?U1VDeVp0bG9kenlvTklEQzdlNTdtV1FScHY5bjErZ2dFQmk5c25oZ2dmUE1U?= =?utf-8?B?cE5MTU92Y05ZUzQwSjVsWG1nK2JPTEduYXV4U24xNGhMN0FtNUhoQUVjd0Q0?= =?utf-8?B?ak9aMVZDWkp0b2NUR2ltVkU5d3RNQ2VUeFdUeDdCRG55cDBxRVdXSDZCRFll?= =?utf-8?B?S0xFam1LaWtNYnhBSmIralp6Tkp2OEFmTnhwNmwyQ2d5UlcybDQzY01GWlVP?= =?utf-8?B?cnFCRjQyWkJ0ZGFXc1RBOTNhTWJWYS9Cc2tJZDlqK3FzbDNDZzhXMjJ5OXc0?= =?utf-8?B?WWxsckpEOFdaT2Q4VUpuakNZemxIKy9PT0QxRE1WWjRkUU5OanMweHE4V1B6?= =?utf-8?B?WWJmZDBRYlEyTnpNUW5HL0VEZUUrcFplQXpRa24rUmY3SXg3b3dpOXVIRllw?= =?utf-8?B?V1p6L0xvZlZEQ3ZnZEc5MUVyZDQ4UlZtclVEam1NL2pzY2E5aVBLRVRCcXgz?= =?utf-8?B?d2FYQUVRUWZMbG1FSERQNGptcjJva1R4WjUyUEV0cTYyTUtpYmtBRWJwQ1Uv?= =?utf-8?B?SkxyU2grVDBwZ2psckVZL1B5eFVSaUFwZ2R0dW5pT1VTK2xZOUxDNzQ3TEl4?= =?utf-8?B?cGdFRXF2eFhsb2hkRGtxN0xQNEkyL1JzRXZyWjFVcWJ5OHk3eGdxWGRya3Fr?= =?utf-8?B?U3lJaWVWWFB5KzJnVGVsSk16dkEvUnkydG01MTBMZkI2SHFzb0drWFBBL05n?= =?utf-8?B?bHhLTzJFUnY4MXN3UmF5cWRBY0NaTjV6b2ZzVUIzSVBTRWFDR2JOQ1Npelkr?= =?utf-8?B?TGRNall5V1MxRlhldGJuTW1DdzEvSDhsNDNIdHcza3kyWjQ1WGZGWFdiSGV4?= =?utf-8?B?Vk1wY2VBQ0pCUjh2YS92RUdIc2x5K0VxRXRzT0wwZkVLS1pSeHQzcEliWGw0?= =?utf-8?B?cXNxVkNBSTI2VXVqZ25CQnQ0Ym40TFMzWUZrdjlxUVQwSmtmeG9UZytPRWoy?= =?utf-8?B?TUkzUGthejdpUFlQN0QvRU5QaVlVbURLOGRqQzVYWjY1NGk1eUJsK1NWV0hh?= =?utf-8?B?R1pQdUJqSHFrMkFLZExUZGZoZDc2d1gzTnRsUEpqZHgvKzE1U1dxQlZYNWwr?= =?utf-8?B?UEp5SWpFVXhYM0VhV0l6OXJvaDY2eWhEUkNBcXBjbXNmU24zYk9LUHRsL3lX?= =?utf-8?B?ZTlHRTd0T1pNZGZsNVlwb0w2Znk3Nlp1Um5KTkFZdWsycllBZVpMOWltL01t?= =?utf-8?B?ckQ2ZG1hZ3JOYkQ2SnNVU3ljbTgwM1RTa2NQdTVEaG1GelF3aW53bitqanBz?= =?utf-8?B?TEpMbDZla0R1VXhPUURqNGYvWkFFeUdTZWlIazl6U2syN1hkNFZRRVJ4ei9k?= =?utf-8?B?aW1iMHBuaHFtbjJMenpxa3JQREVxZVVSeVZWNUtlZnVUVmYxZ3NHNXZKK2pM?= =?utf-8?B?RFBZc1YwU3dicjl3M2h6RUhEUjJGU29QVEoxU2lTL0l5cjcxdStyMmVWazdL?= =?utf-8?B?dGxqTytvanRJYkY2ZStSWnZUTm1vajA0azB6bEhpNU5YSTdhV0h3Sk9sNmlD?= =?utf-8?B?YUhsOW1YT1F0a2JETllhRjl4Q1hHaDF6V1E2ZXJ4MzdFaUIvNFlsMSt1K1Vu?= =?utf-8?B?NE50Zm5uSXRWOXVnK1VhV2paZVlENU4randWb2VNNDZIVWFxZHRIclJweUJt?= =?utf-8?B?Sis4cHQ4NzZoK1N3QUhkbGloYWxRR25QTHMyR1o2T2Y5c0FmMnZoTnBvaVM1?= =?utf-8?B?SG1Rd2NnS2Qyc3BCZ29EQ1dxUEJ4V3AzYmJGZGk1OGpxSkJwRTNyUlNWTnYx?= =?utf-8?B?bjZ1bW5UelVuanIrWkVtNnhrb0RkaFJVTkRubVhLYmZhb09YRWk4am1sOVEz?= =?utf-8?B?WG83aVl1dXJva0l4U2RndklvZXhxQ0pveE1MeUZOenFBQzErQmpCQ2lJN214?= =?utf-8?B?QkxvVlFaTzA3N0tQMGJEdlRkZU1TWXltV1QwOWo2ays0dDJHYXI1RTRaY1JT?= =?utf-8?B?amNpRUxmbmJKd1FPeTVIV05KMDhYNDYwNmlLdDZuYjFqUmxCSU54cGpQUnla?= =?utf-8?Q?MUd8hBm3UDipsGts=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ade85982-5bd4-429f-8fbd-08da4e4e78d2 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2022 21:40:16.9233 (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: zAl4xKpYv32D0XAq558HLhOD528PHqV012Tc1zpzZM4vrFFXNFzeg/a77PqyBokk8RoJqKhS+ruHeOI5JctVtw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4140 ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1655242820; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LjNUPmgsKFp5Wz/50B0VOXCeiOdwcgip2aymIcPgo5A=; b=c2A+s1Nua3YV1fLRgZ9X95ymN2XjrfWt/HStvcrPtSAhgVD6p8yBlSCQ+RkOsET5CamB6C 5qbShcGMZrd7zzDHVbXMbtNwAlP6wg1hmkQSe2H6c5hGGCVCc1rrXZwwroIkCFQc2w3Xx4 M0txmg9WGq7jyZMnem22ZcdV6b0qGbA= ARC-Authentication-Results: i=2; imf05.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=NQMNaHWv; dmarc=pass (policy=reject) header.from=nvidia.com; spf=none (imf05.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.243.58) smtp.mailfrom=jhubbard@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1655242820; a=rsa-sha256; cv=pass; b=DWuh36Vl66ASaRv7FqrHMXAg9tR1SW6bp3Oa2TBTH2Knkk+fWcrN8uAOIGfphT4CnTEP1j tNP4MR/OoaWVFEaTKTmCDifpv27xz+NrzPNzv9waLRj9M7oVXUxIJCJ1XJMnfMlfgXk3xa T9J9KxbtrHwE9rV4mao2woGFQMeZIhM= X-Rspamd-Queue-Id: 2E2E610007A X-Rspam-User: X-Stat-Signature: rksx5fe6tdjdypk1i6b9gg9ymbec45rd Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=NQMNaHWv; dmarc=pass (policy=reject) header.from=nvidia.com; spf=none (imf05.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.243.58) smtp.mailfrom=jhubbard@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-Rspamd-Server: rspam04 X-HE-Tag: 1655242818-850484 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 6/14/22 13:56, Nadav Amit wrote: ... >> So if you have a choice, I implore you to prefer flags and/or enums. :) > > Thanks for the feedback - I am aware it is very confusing to have booleans > and especially multiple ones in a func call. > > Just not sure how it maps to what I proposed. I thought of passing as an > argument reference (pointer) to something similar to the following struct, > which I think is very self-descriptive: > > struct uffd_op { > /* various fields */ > struct vm_area_struct *dst_vma; > unsigned long len; > atomic_t *mmap_changing; > > ... > > /* ... and some flags */ > int wp: 1; > int zero: 1; > int read_likely: 1; I am more accustomed to seeing: unsigned int flags; ...and then some #defines or enums nearby that are used for .flags. The bitfields are not used as much, Linus wrote some words about why, (which I'm not hopeful I can find). Basically they are not a very robust C feature, and the kernel has good support for dealing with flags within a word. > > ... > }; > > I think that fits what you were asking for. The only thing I am not sure of, > is whether to include in uffd_op fields that are internal to mm/userfaultfd > such as “page” and “newly_allocated”. I guess not. > Actually, I think passing around a struct might be overkill, when you can simply collapse the various boolean args into a single flags arg. It looked like a lot of the new args were bools... thanks, -- John Hubbard NVIDIA