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 BA0DAC25B4E for ; Fri, 20 Jan 2023 19:20:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 371F96B0073; Fri, 20 Jan 2023 14:20:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 321BC6B0074; Fri, 20 Jan 2023 14:20:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 19BBA6B0075; Fri, 20 Jan 2023 14:20:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 077216B0073 for ; Fri, 20 Jan 2023 14:20:09 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id B1FA1140215 for ; Fri, 20 Jan 2023 19:20:08 +0000 (UTC) X-FDA: 80376142896.22.FC2160F Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2047.outbound.protection.outlook.com [40.107.220.47]) by imf04.hostedemail.com (Postfix) with ESMTP id B83614000C for ; Fri, 20 Jan 2023 19:20:04 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=IZD29+3X; spf=pass (imf04.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.220.47 as permitted sender) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1674242405; a=rsa-sha256; cv=pass; b=6JkiDg/Q0BR2ftSCrzbR7cm3gdt8JL1UsZ87+P6Py3DeHemxbY/aj3i3de/+fqWUqRDBun ThrT0eD4+qu/URriD4LArTLUj7g3JWmilWvjUHUFizx9Xxfr83vfaZHMQNkGZowkJQlFew cdW25LKZCv7oVNEFUvYJt/nhRsfMYMI= ARC-Authentication-Results: i=2; imf04.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=IZD29+3X; spf=pass (imf04.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.220.47 as permitted sender) smtp.mailfrom=jhubbard@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=1674242404; 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=FqhfVlQSb8uD6XgrdG9Gbi98esVIVykDEHfty1JjC1A=; b=M1GND57EPwrG+34UBLgGNt/R867oxUGoQjN7n+hd3Ex8ZJhQenBpTK9krOW1ZSMMf+wTpe /cQ+a/e8FxwigRxDq0W2eTbLcyC4jYs7jZbWszlms3rpTCFlWkwTds+370kd064iZek1Tj 1L8k2sG5PwUJk3XpRyfmGV7buKeyLfg= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iXlQXM/6JMZ2nAER46T+PEUiMeWhZq9y3KooKRPFURG8FmhPd8ap9Q0Mwdo8H9YLDljrMtpkcMg2UmE9drLCbirojnx98yc8UlgP7vxwxiUzyKc/hcn5bQbj9JzN6Ut9PUTcRsgFgjG5QhL8yBqEBiXTelcbfMllyF1rhWfYPTRJqmmf1NHvZLqegfsgrgODK1tK4Fv3CiB5KS2uFktdmDDSTjwZJ3t7CDOge0fs1nyr7zbZXipuTKKPvrt95j9gYBIkHEHU5sumphY3usc7x3ESETiONg+Ov+gYLmd9hOA2bPiGJeWB61c7bYCi7V124H7JnSgnuEvZkHV/FMjfQA== 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=FqhfVlQSb8uD6XgrdG9Gbi98esVIVykDEHfty1JjC1A=; b=SFJo6kO6/RCcNCfS2ftkSSGLMvHCyct/ua6D8927GBBuHMxj+VLnjCRzAPMf8nab6RW2Naug7yh0egzYWiZ/Ot0TZWbV/Y1IPsjeWbgDtMjFEaXeGbO2GirOAGf5VS5UpRID6g5riF19BIenI9IQozaUw7rQxxi9Ym7NYmD5c2x/KK/V9nXy2nYGyBc7TXCgI0XgWh0nNuJbAPMTs1+X+tj2M5pFTiWFTBUamcpfm6OpV/vQ/8nCeRgBvUuwkqLYAfm+0Yo4kUT/awGtV8fUORh4F3PxCySlhvQjKsz0RSSjCEjyst0ibMWznd0L4DeZt3r1tl7Ig1Yzd6FL5SXyWg== 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=FqhfVlQSb8uD6XgrdG9Gbi98esVIVykDEHfty1JjC1A=; b=IZD29+3XNkpCmf1eZ4ZheBIIjw0bBA8lkYLYtvuzzo9YkUEww6PjuJgFYA3ogc5n9+PZDNSJTBC3KMdsZ5tpllyJV3R7ObNms70oT8vBSM+H/jokkKevVOnJb2/ndbhA+WIis4hJKvKvEasspvZ90VFEidQiovd53pjJMkMaDtcqWa8ehnldxxj60DGbpLDaZVB9DOBlCySYFvICfAtgKi1o6owI4OIzMfD08FfpxKwYDhrT2Zx5vU3ilUEphpmvaJE5iPWJ8OMvbKgIlZYUXSkeujLR+1yVokRj2nYZXdYwFiFUgeEG5oUfXvkj5VMVr8sl4j7Z0m2z7MkOuvMzNQ== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by MN0PR12MB6056.namprd12.prod.outlook.com (2603:10b6:208:3cc::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.27; Fri, 20 Jan 2023 19:20:01 +0000 Received: from BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::7895:c4d1:27d2:5b0a]) by BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::7895:c4d1:27d2:5b0a%9]) with mapi id 15.20.6002.024; Fri, 20 Jan 2023 19:20:01 +0000 Message-ID: <4f052c76-6e29-24d7-3d7a-79d7aad69364@nvidia.com> Date: Fri, 20 Jan 2023 11:19:58 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH 6/8] mm/gup: make locked never NULL in the internal GUP functions Content-Language: en-US To: Jason Gunthorpe Cc: Alistair Popple , linux-mm@kvack.org References: <6-v1-dd94f8f0d5ad+716-gup_tidy_jgg@nvidia.com> From: John Hubbard In-Reply-To: <6-v1-dd94f8f0d5ad+716-gup_tidy_jgg@nvidia.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BYAPR07CA0043.namprd07.prod.outlook.com (2603:10b6:a03:60::20) To BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR12MB4130:EE_|MN0PR12MB6056:EE_ X-MS-Office365-Filtering-Correlation-Id: d5e7500d-3229-4db4-7e77-08dafb1b53b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fU5hUuY/zBUBxYBvQ0dqmt09u+CAwSEBA+mDiaHgSg+AT6chVWR6D2yCnzClNn33wmF+/63URp7DH2yBmUhYOasZKfMqR/D48iQaf2wl0QCMr0QplptYwcXFK9yMUVw2QL1FP4xzKpgUsb2XyPh/AeBLR39QHhtkHp1pmeAj/4XPMM76yPos/aD7uhR5AqVtZUfIYLz8Wk8/BF8nucaJd45IdeVus3lWrdHpseZJA+9bYTGeiJtNf7POdgZVCb9+9kSsbROuGL00R4h7Pm4oAXg2b00QlSymFixgYal8qpHQkxp6LVsTz/fFgiuig/3pDp1jnRNA1pOmr0xHHQYx8XB7KG1GNLhuAkdypgPndR8xEX4Hd6DwAdgX2ZiE2mGvgVhl8XWPvCO0wlZgitVMOijIYEO4Q1CJ2AfLpcEGtbcvfJfFX8hIFW8P8h3lUgrPM20O4EQKczpIFpFJCJTdBXyILuA5i0nxLsvtsdDEwWSGR0ZdBGZJQHBdq8H5av0sthINz+c9n+GU0CtVKtFJy/NtOsTCEXDovkmxGJ5vX5PobOoP+raDWYzdNtP740gCKMFYrqE9DuB6J9GJsycjFcpnHl7puanDOXCS9ViEyIG7IZ3eNyl83JzGFe2Rjvpj2+vF/c+FkR882UACrlEcDEjFVxBeUgda+cODNA6PMqiM492QVL0HdGmk2xhK17OamqhJYIJHCoQP2OgCmebTLq9b54bn+KEZiyM0rsXm6UA= 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:(13230022)(4636009)(136003)(346002)(376002)(366004)(39860400002)(396003)(451199015)(5660300002)(37006003)(41300700001)(316002)(2906002)(6636002)(66556008)(66476007)(31686004)(66946007)(8676002)(4326008)(6486002)(478600001)(53546011)(6512007)(6506007)(6862004)(6666004)(36756003)(26005)(186003)(2616005)(83380400001)(8936002)(86362001)(31696002)(38100700002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UW1KVHJqY3l0V1ladThuczM3N2FIMWM5dkluSGxwUFA0aXhFMGMwaTFvSFkw?= =?utf-8?B?Nlp0S0EvSkV3RlV6THZWazJFNjRqT0MrT3FkMEI3UU5xS04rWFZXbnV0ZmNU?= =?utf-8?B?Sm9zZUtKVFVNbDZXR2hzdXF5NDdmblNKSGJDSXkwSFdpOUtXakxUdi9oWmJO?= =?utf-8?B?bWcrT2JoRVJLL2pWQURlQTNqYmJZYmhxVzhsK1hSS0h3SHZEcDFxYVpEc3Iv?= =?utf-8?B?cmZEY0xmNkZwTTcwR01NZVBWM2duUVJ6cnQyeDBCMFlvU003WEd4S3lmRHIx?= =?utf-8?B?WHl3MEU1bmNVUlExRkZRaldzcXIrenNCbFRzRHJoQjN0bTI3eVJTU2tWNUhJ?= =?utf-8?B?ZjRqTXorMnMvdDFVbSt4N01sTUNQUTVtalBPOXFpZHlyd2VlYlVCODluK05C?= =?utf-8?B?VHBTcy8rOVhEOW5wM1VzbDJtcjhnZ0Q4ZFMrckVoZGxMZVVFM202anU2TlZk?= =?utf-8?B?OUJTOVJzYWs2cWF3MU1rU3hCbGNnU0Q4OUw2T3Y4Uk9CZ0N2c25NNXRpanYy?= =?utf-8?B?WExBNzZaNE5PQ1BLYW41ajFaWkZYQjlHSC8wcW5ob3Y1eTBPajVXc1dKdHZR?= =?utf-8?B?T3p4NjZac2o5OEpvZlR1ZTBwQnVnWUNjMkhXQ2YzV0N0d28yd1pRV1M4QXpJ?= =?utf-8?B?YWszSVQzZUE1Q2hUMVFwbGJQZGlzS09sTWIyNjNvMzlqTkdXdkFNUDBCclQr?= =?utf-8?B?M21HVEFYSXVTbXJjOXdQV0hMcnNWbWdoaUY5ZHFPeVU3S05raTYzOWpsdFRt?= =?utf-8?B?K2JKZUVtbkRVbnRHcHo5enR3L1Y3SU9hL2Q0T3ZIYThiakROeFZJMHFZdDJ5?= =?utf-8?B?VnVrYmIySC9lcHJjSTJwMmZjeVFCQVN6K1FwUFRFTlV0UjB4ZzA5T3h4d3pT?= =?utf-8?B?MjJuU2k1dUgvcURTbEhQK2c5RS9aNytwMmFlVWk0V2pGSXR4Wk9CYUczTEMy?= =?utf-8?B?K3l2eWMvL1dsVlJ4ZlV4S21SRU1jYml4b01zVlJISm5FTDRDSzh1L3JtM0Vw?= =?utf-8?B?ckhXK2QwdXR3eEFnbzVxSHB4RGJNbUN4bER4SG5nZXBGVjFOZURobkkraURE?= =?utf-8?B?bTYzaHJjMksvRUxLOVBhandVQUU1Y1l3QjNKSVBrb3RGeVNTeVlKU0JQb0t6?= =?utf-8?B?enBkSVNsczhxa05lZzhkb1hqcFN5RVFsRVp6d0gzNHp1eUp5MHBIYThQRW42?= =?utf-8?B?Rnh3M0VWR0V0KzhOMUZYY3hybU80NkpJMHVCZzltZlhNM2dUMEh5UUJmdnM4?= =?utf-8?B?QnJ6RlBJS2dibHM3YVF3dUpDaDFrQzhmNTRyT0FzV0VFYUp3S2JFNVFxa1hN?= =?utf-8?B?RFFsZndiYmdFWmVMZXZXaGxEL1RQYWhQQ21WMnNqVzNoZVV3dWljY1NNVWJM?= =?utf-8?B?LzlDNTg5WG4yOUZZQSt4MDN3dzZ3bVM4VUF0dFNidHRodGdXd3hYL0s1VG5D?= =?utf-8?B?ZVc2QlF2SERKbm10RXIrVzI0UlVLZU1TUlRLYnhBeC9IMk9YZmQ1VnlWcFVD?= =?utf-8?B?SDEydklKMEtZblNkRXp1WDFjOXQvcDkwU0RZSUNDa0tINjVGdTFGYnE5NXI2?= =?utf-8?B?aUdpaEw4cmVlcnRVRnJsZ2crN2ZTV2ZsaWRjd1c2N1hCSm1EaGczOS8vQ0xJ?= =?utf-8?B?cFM2djI1UjBwbmpaZTFlUGNUOHlKTGNGNWRHdVRVNnJNVUhwNHA3MkhsbnEw?= =?utf-8?B?b1M4bFFVcWNydzZGN3JMVjNab0VLaDZQaXcrdVE5QkQrbDZQUDdielgybTJG?= =?utf-8?B?aENHSVZxL3puSWo0ZjZ2ZkZiYlU1S0dhSzB2RDNwNVQ1OFlrNllneVVFZzJC?= =?utf-8?B?S2dmZkZKTmxZZGQ3Wk8wZTBiMmFKYXJyV0ZCN3pZTmN5RTJyRmFKSSt5eVZs?= =?utf-8?B?eUhXejVEQmtzaTN2b01CSW9EdVRlTGhoSEpTTlhMaXNNb1RnOHlpdEwwL0I3?= =?utf-8?B?djZqQVRWL2NDakNsTHRaZDVLTVNiTHJCU050WklDeStlWUVZWkJISG9yK2Mv?= =?utf-8?B?dHJuVllzY2V5Q1p3TUhzb2hwQ2RUV0xrWVFCZEJ1TE84blF2Vkh0K3AwV1gv?= =?utf-8?B?MjlmeFQ4MlpxK1lNRHU4OWdlV1pXZXNRNmxGTjAwTHQ1cDZNT3FXSjEyMW13?= =?utf-8?Q?ST5H6+/g9lbDMG0RUOTGphn7w?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5e7500d-3229-4db4-7e77-08dafb1b53b9 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2023 19:20:01.5263 (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: bAXnLLgKj7OOrGSp0vvu/RuHwqkJ7nD1UjaVxdlfMaFGece+st2FZkQy3R2PoSoRS/Lovrx8vi1IEAb7jzpDLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6056 X-Rspam-User: X-Rspamd-Queue-Id: B83614000C X-Rspamd-Server: rspam01 X-Stat-Signature: mkz3nfn4k9c3pd5g3qk1fm7h5ej9h4o8 X-HE-Tag: 1674242404-893265 X-HE-Meta: U2FsdGVkX1/nd4jtKqvSSUwnx2UdVoNPRZAYXWngrwzjzQfEzYrZ0CZUdv6wCxpM3Gjw99wJ3WK4a2XFs8O9xiWEI6b0JG/56Epv6FZDdsYAkBvs+CBSahUhaNtozi6B0PYYJN32Nb41TZz2QohfYipg56TQssIy8rJoTigfH1KF0G8pX3Lc/UrX6IhqWDnAYVfHRhsQOLrVs74JHYQBqH8zueDZFqU/BTDp6wbgPS9F6xE9DXtkdmJBBAS+6ZAZXlYel5Bn/CiN3d2Hwx/BO9rIIiIqmNQq0AzvRcKSEbR8gnBT/2X3kADokPqLsXPIKi9suqLnI1XpD3M6FogAmtJEyL/nJkAXs81im66ZiiKp5lVzPJc3eDM1mFyizosFGBXJhzukpT5cUQGFE//VyoaMl824dRU6wS4DLtZ5YeiYUdlIfMgnXkXR6HIzQ6vGLatDzf2qOGyy9Gt/S6wxD2quVejNaNbeVdQeZQZ5YXVEr3JbefkWJLBKlaeWCym8mCSGrPMoqjL8wLIihk0sgIBeeL9WBKp4rHbUz7p9HQejaxNWE3TvqA8fKnHuDPW18G4k2qbhMVpSIl+QFkNyE+kP6m4/XLzbIf4F/8oGsoOd+cUJboi1z5Bh/vK5L1cfvkElTuA1+6n8xOl7AIAi0s4vCqMdQyj5OTbNPx5Rp/YSEOSALYc1z7uGmIYZM0yXB0hytT8/TJwsLsBv1Z3mDmsCvXgyUSwBKrE8dlf0WHGmCyG5xFRRnzMk6K03Cek9PN4eBhwUQVyJuW7iVKlpVLghNPLPkjwoX+2fQjeiY0Q4Iv+E5T8VR773tG5NO/OmcGdAayzSG7UyUvrR/Sr8WMLGVPFR7NAT8SX9H5xPkLOggFq5GQWt8MmNxz6LSkU7AbVUmG3QRWP7PL4K73kQ1613Sehd08i7H+Ux9Zjz2RP21L7wPXoFy8OdpZ3EFjDQ3jj9xRbltqi2FeF/col 8fn4jx4K nBl5Ue8ndpyqXdHQ+zlV55EZMeQb2o4/awM+mFItyMFU27F996dq9RifcwzalZzRD2lWBtWE+9e/ghb7bLDHmccLjO+Akb41coi/cDrmJsd0ZwlaJiQAA43n9YtC36EvPYHUYBBteZq6qQ02WXJ0lvuVvaapWNEpi1dKZdtPfhJP3Ja5sG395Y35Eh9u+Tll4Knux8zVDdD93kjnMHuI+HNe9Ny3rvlOnq9/lpFT5qOjak9hhELk2C/E2IQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 1/17/23 07:58, Jason Gunthorpe wrote: > Now that NULL locked doesn't have a special meaning we can just make it > non-NULL in all cases and remove the special tests. > > get_user_pages() and pin_user_pages() can safely pass in a locked = 1 > > get_user_pages_remote) and pin_user_pages_remote() can swap in a local > variable for locked if NULL is passed. > > Remove all the NULL checks. > > Signed-off-by: Jason Gunthorpe > --- > mm/gup.c | 30 ++++++++++++++++++++---------- > 1 file changed, 20 insertions(+), 10 deletions(-) > ... Looks correct, just a few remaining comments that could be removed or fixed up: > @@ -1121,7 +1121,7 @@ static long __get_user_pages(struct mm_struct *mm, > i = follow_hugetlb_page(mm, vma, pages, vmas, > &start, &nr_pages, i, > gup_flags, locked); > - if (locked && *locked == 0) { > + if (!*locked) { Just above this function, there is a comment that can be adjusted to remove the reference to possibly NULL locked arg. This one: * If @locked != NULL, *@locked will be set to 0 when mmap_lock is * released by an up_read(). That can happen if @gup_flags does not * have FOLL_NOWAIT. There's another one above populate_vma_page_range(): * If @locked is NULL, it may be held for read or write and will * be unperturbed. * * If @locked is non-NULL, it must held for read only and may be * released. If it's released, *@locked will be set to 0. ...and another set, above faultin_vma_page_range(): * If @locked is NULL, it may be held for read or write and will be unperturbed. * * If @locked is non-NULL, it must held for read only and may be released. If * it's released, *@locked will be set to 0. thanks, -- John Hubbard NVIDIA