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 8C800C54E94 for ; Wed, 25 Jan 2023 02:45:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D4E5A6B0071; Tue, 24 Jan 2023 21:45:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CFE676B0072; Tue, 24 Jan 2023 21:45:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B9F786B0073; Tue, 24 Jan 2023 21:45:01 -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 ABC556B0071 for ; Tue, 24 Jan 2023 21:45:01 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 745741C6492 for ; Wed, 25 Jan 2023 02:45:01 +0000 (UTC) X-FDA: 80391779202.02.38DB52A Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2061.outbound.protection.outlook.com [40.107.244.61]) by imf09.hostedemail.com (Postfix) with ESMTP id 6379A140003 for ; Wed, 25 Jan 2023 02:44:58 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=UpRcpUQz; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf09.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.244.61 as permitted sender) smtp.mailfrom=jhubbard@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=1674614698; 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=xhPJoDmoeN0YK38ACQZk7Cbgh9xLla6+XTT/w58I/3w=; b=soxT9ON+nM+QOqPxhNkcQSyBZuANGbS8kGJF/g9oQuWiBK0MyxMG3weAJhXrS/VmVM2GCX TxXp7T7ZGFzdlwg6i+KsDxf8B1Woc96fuD5B+fdQouQOv8bkvT4Oulfxe/qwXKrfcbfS9N xRKt+u6mMmK68fUT+DsviQzPAWwwESQ= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=UpRcpUQz; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf09.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.244.61 as permitted sender) smtp.mailfrom=jhubbard@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1674614698; a=rsa-sha256; cv=pass; b=ewsWEJYwLxGkVQGlVUDNlCbCtE3Ou7WSJKiRltOLnIZwAjOS9L4jTMT4IvOY9te4ERX8Bk 1yXoOAkW4jjpdm/iRG4EDT3+DePHz2dqqs5LDqIsz5H0sf4PqWaoPwHPna5/XnVXnNp14G BZj4V2olsxKkHBLe1o6Kb4JfGla46f4= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GIECYqSxvuQBgwO2irKLXUwkMFHqE0lxNLpqqwwQ0/FyKu5Qfd1u/ZonhPgB2npK3USFyZdPN/6jGAa5sZ/pN6zo3X+4q++UUHGz9keAb3Z/iBN2+HXGGnpLrNN3oJn1qR9e+b0EghpFdD0jPDaPZh5JPIU/cv04LKslgtn3itXyv5qRFfO5i+tI9bfBmGsIQz52CEX158azyIu/WqtWaVFDTRbv+AinSad5Xw6lw0rCu/qzzJ5g7rXuH5MzIM+36hL+ev43JJ6N8A/5P7PMEopw31Di7ThmDLznmN7FYKFjj8PaRfZ3AGSNix3NxwR2nfPo9jgeNPlH1HcBPpjfEA== 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=xhPJoDmoeN0YK38ACQZk7Cbgh9xLla6+XTT/w58I/3w=; b=kZl7kBYWmzOSwn2dtOnqdwqsVwKV2h0EFwlZAYmNSyxx6wxUItJ9G5PARHIbxILI7ZTGRTFCvH43Z8JAPJRdyzRQCLV57AmQ5zjmixNR1Ct40tZzXzTRQIr/8tuPJyc0k1Iwbp9io8igDI7CA7q2sIOFs2DFMO5BnDyt4wix6LrGE0+h0GGWHXlXuqIDjr3zGlLm18u71TkJF91Mjca9yobS+viSs6KeygjDWIOSNUOs/9KWka/5B30an73XwNivM4Ifb3mqaFQS1tY3+VQT1mr+Hg301HNnC1iPp1Lxsx6VoTREbYA3r6+r1fT/xKi7t6Z7qco85FcBjixaKF4O5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=redhat.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject 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=xhPJoDmoeN0YK38ACQZk7Cbgh9xLla6+XTT/w58I/3w=; b=UpRcpUQzRO6OZOi8AJVGSbgE23YW0a/BguIKEZnj2omM6GsYNf8oOYJiTZBplNrEFgys9UChi5RGlG7oqi3Z8ok34xqbgQvhWrvSyZnE2Gu5Shqv1EKknZXUeuIgjuRyy0G4dSKujFLXdfdwyeCXIziGsvuHJODdxPppWsTyJX+QO/LjDtxbsL3ETHe+6P+V/Fzen4crZYI30xz5IAKcUR6W4nSUoH4m9hjuhAX8zfqAu5+Lfq0/xVqdvouut7I1W6uz6Lx7D86w8lKR89Kd0SGEfznGbsBTEFch2muBpcWqLL3YpNnrl4crDNSeimTnOPM4bNJgTIcdz3OD6918IA== Received: from BN7PR06CA0066.namprd06.prod.outlook.com (2603:10b6:408:34::43) by CH2PR12MB4325.namprd12.prod.outlook.com (2603:10b6:610:a9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33; Wed, 25 Jan 2023 02:44:55 +0000 Received: from BN8NAM11FT094.eop-nam11.prod.protection.outlook.com (2603:10b6:408:34:cafe::ea) by BN7PR06CA0066.outlook.office365.com (2603:10b6:408:34::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33 via Frontend Transport; Wed, 25 Jan 2023 02:44:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT094.mail.protection.outlook.com (10.13.176.131) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6023.16 via Frontend Transport; Wed, 25 Jan 2023 02:44:55 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Tue, 24 Jan 2023 18:44:48 -0800 Received: from [10.110.48.28] (10.126.231.37) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Tue, 24 Jan 2023 18:44:47 -0800 Message-ID: <444e7208-0e34-b005-9b99-3e891be76e42@nvidia.com> Date: Tue, 24 Jan 2023 18:44:46 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH v2 13/13] mm/gup: move private gup FOLL_ flags to internal.h Content-Language: en-US To: Jason Gunthorpe CC: Alistair Popple , David Hildenbrand , David Howells , Christoph Hellwig , , "Mike Rapoport (IBM)" References: <13-v2-987e91b59705+36b-gup_tidy_jgg@nvidia.com> From: John Hubbard In-Reply-To: <13-v2-987e91b59705+36b-gup_tidy_jgg@nvidia.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.126.231.37] X-ClientProxiedBy: rnnvmail202.nvidia.com (10.129.68.7) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT094:EE_|CH2PR12MB4325:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d5df30f-d4c6-441a-af07-08dafe7e2444 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UgH4AhIxXRID3NNY/D7TfFrMllBOobz8gpphbfSn0rIlnbCR8JqBVQYPCTrZePNJWxbULL4rOMh8wPlC2LwV3orvMAnjGiizqE2zQsnqcUV6Gc8sNr4ZcRV4OTdamj91gZNmRbKdnQpruomTGWo6TXjzZrv4+q0vz7+WAvpzlJMT3vt9KqA/2YlBeQJ2laa8miszm5qdss+mWoGVasfNQscjQYD8l5++720xc8C+4SOhjbXBWGK1pGQGdKSDYXFOnDPWJWI4DHAjEcUx640MkQDJMj95JDRtkBPDMitlBfsPYv2TWCkZeQsAWXDD8GVrszcneIGVf2isvXChU1+mhNVCkh2cJvLF6MxNR00ciMWRMAfJVQ6Bt1SIphq8U/xOXHZYzML+lBmjbhtjFUnfjSPERMzEJppErxj3QKkJu5iXE2oOsG9DO1akzRLk56u9a08s4zYmsS9SGieCYOxwCvnwUC5b97dwxo6cQYz4vo1y6AuBrsiabhbjtX55NoGGLbdo0FJ6NpdbbzDDdhnoQemR0lU8N28joXNIMl05Tn5Tpo5IPSqtaRNRQJpyuj1lt4riOu4r48yLF3vxu8rWq3C+P/NVNpU41dIANpYqesfPK32P6y1CLj8pixZ6AYHZCYcxfMpI+/RVTtJ+Tcg9LMKdz3EzZdllP1BWNbMEfp46IUMZwutIjK+bs+bGbY0LZ0xh6x0fIJf33WRdl5/ZKkW+76hbo4XXVahXL2zHPtQ= X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(346002)(396003)(39860400002)(376002)(136003)(451199018)(40470700004)(46966006)(36840700001)(2616005)(41300700001)(36756003)(5660300002)(82740400003)(2906002)(7636003)(4326008)(82310400005)(356005)(86362001)(186003)(6862004)(83380400001)(36860700001)(31696002)(16576012)(40460700003)(478600001)(316002)(31686004)(40480700001)(53546011)(26005)(8676002)(70206006)(8936002)(54906003)(37006003)(336012)(6636002)(47076005)(426003)(70586007)(16526019)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2023 02:44:55.1974 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1d5df30f-d4c6-441a-af07-08dafe7e2444 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT094.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4325 X-Rspamd-Queue-Id: 6379A140003 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: i1m45aqfb4bxu5wy5fbe1wy46ojjgkea X-HE-Tag: 1674614698-428139 X-HE-Meta: U2FsdGVkX18i3ehsiw0eaVanJ05yXLjYiopMs4wXGhm9Q4Nczwhu3X9Z6EL8Qg3+HtwbnOP8Zhihb6FiKEO3yKlTQ0qLzccU+RqvQHBW5p3S1AO0JALw/afObbgg5QEEwTamwLSIGW48Ky9AQoxPq2nevLPGcuKwogGQXf0MNYA4QL8tg5LcW1FUgwCc9yNgraCjZIsE0mYNGwIBxwZ8RSYkJnL9MVyFtZZk6t0Sm4jgfMqW1TeyPVDlFxdW2xfnQ4La6jsmJy84nUz3kG4qSI9HdyBsmKVBSRbm/adybOygqLNXxPOrZhJBIeum+6QY/9YXwxNlRP2Cjxl3txNqXj7FyaGZFCmM6sQ16L9NHuKT12iPOMwgi3YeDwM2LWcM56ldAlzk0jidAONZg/f23dV7ZMVFmpmfS/rYyh7FMhn3bbKjZ5ttAiUPNNO/XjwfqU2kkoSvLUXKlSYI2CdyGkYqwy1+oJj36WRwddCT30WeFso4E7k/3X1oN7L8U8nW7Fnh96fXIWkSB4xsjqIstHfHBre8RQOEn6dkvhk/iO6Rtv4r7aBQpsYMb/k8frolxBK5M2YzyvbEGMi/TPz8VyFAM3ulvlthWqbbSj/wT2npq+KN2zg/yFpsbIbNUgaPZKNZHbdnvy3zB6P6hQUsJab7VZXZpfUbm2oM0ImG0i4/ocORLGIfzs5wfp+ytMMxie3SDRE+KGWgWpalezE3DSOY9AcIZMZVJyLG/0na6sej+IRnrTFdV4MzCgt1Q10DGNeoWsK/8wVlWGplR8dqI/9TLx/tj1LEjPQViSriacDCdWpWDwEv9EXlsg0b09+g+QS5hJ6ZcNR6ZM1lIjdvZaddrxIjVFfdUruiOp0AoRgOV//r72irVkb6FvZo8W7lblhcwJzWMRgquhx8uHJPOBx8w3+h5U50diKHkB7AGxAUWtKhT+7CauC+wDC1ibnd5SLAFTAZF/mLdw0AN1j N4V2098T kl91r/CT9AYX8qKxdw2Itxkg4tXIxfa4hu8vZiWwNAiG76Il1eq7NRX6315/UQIcSA08djtmq2X95bpr7yf7sYZXZLOF+FB7XZf5i0llDKb81n1onGVdIW/m33ql7gfFUSUVbwCDmjsI/sUV1OiR9oa4g139gb4d6K1zryXY9ugfsA/mTP0A2iyBmcpD5VVBfSdkbthu1PxSD3h/JffLWykJZxS7hYQKLeqbU3Dz/4JdDDRcyc619p0COksVCGUyfqi2Yfnu3HuaqnLET8vnFA7kGumIDvU+QxWVTkOaLwFr71vq2VfG5KI5e+SGBMxF4uoMCtCgLm3GDcD8/2KpYME40lbaXu6WZa7h7PW3gW9CWNF4XEA3r3mfZLdg+6RPVKK60zpx7v3u3aGcJ0yfe0HRSWZL0JZ2At49fkaHycmrGpIJc9cn8NLaT2yucD6mFU/y5b8q86OEJ9csW6fWvFReqTA== 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 1/24/23 12:34, Jason Gunthorpe wrote: > Move the flags that should not/are not used outside gup.c and related into > mm/internal.h to discourage driver abuse. > > To make this more maintainable going forward compact the two FOLL ranges > with new bit numbers from 0 to 11 and 16 to 21, using shifts so it is > explict. > > Switch to an enum so the whole thing is easier to read. > > Cc: David Howells > Cc: Christoph Hellwig > Signed-off-by: Jason Gunthorpe > --- > include/linux/mm_types.h | 57 ++++++++++++++++++++++++---------------- > mm/internal.h | 15 +++++++++++ > 2 files changed, 50 insertions(+), 22 deletions(-) Reviewed-by: John Hubbard thanks, -- John Hubbard NVIDIA > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 518617431f8085..dbfc3a7e9559b4 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -1039,9 +1039,6 @@ typedef unsigned int __bitwise zap_flags_t; > * FOLL_PIN and FOLL_LONGTERM may be used in various combinations with each > * other. Here is what they mean, and how to use them: > * > - * FOLL_LONGTERM indicates that the page will be held for an indefinite time > - * period _often_ under userspace control. This is in contrast to > - * iov_iter_get_pages(), whose usages are transient. > * > * FIXME: For pages which are part of a filesystem, mappings are subject to the > * lifetime enforced by the filesystem and we need guarantees that longterm > @@ -1085,24 +1082,40 @@ typedef unsigned int __bitwise zap_flags_t; > * Please see Documentation/core-api/pin_user_pages.rst for more information. > */ > > -#define FOLL_WRITE 0x01 /* check pte is writable */ > -#define FOLL_TOUCH 0x02 /* mark page accessed */ > -#define FOLL_GET 0x04 /* do get_page on page */ > -#define FOLL_DUMP 0x08 /* give error on hole if it would be zero */ > -#define FOLL_FORCE 0x10 /* get_user_pages read/write w/o permission */ > -#define FOLL_NOWAIT 0x20 /* if a disk transfer is needed, start the IO > - * and return without waiting upon it */ > -#define FOLL_NOFAULT 0x80 /* do not fault in pages */ > -#define FOLL_HWPOISON 0x100 /* check page is hwpoisoned */ > -#define FOLL_TRIED 0x800 /* a retry, previous pass started an IO */ > -#define FOLL_REMOTE 0x2000 /* we are working on non-current tsk/mm */ > -#define FOLL_ANON 0x8000 /* don't do file mappings */ > -#define FOLL_LONGTERM 0x10000 /* mapping lifetime is indefinite: see below */ > -#define FOLL_SPLIT_PMD 0x20000 /* split huge pmd before returning */ > -#define FOLL_PIN 0x40000 /* pages must be released via unpin_user_page */ > -#define FOLL_FAST_ONLY 0x80000 /* gup_fast: prevent fall-back to slow gup */ > -#define FOLL_PCI_P2PDMA 0x100000 /* allow returning PCI P2PDMA pages */ > -#define FOLL_INTERRUPTIBLE 0x200000 /* allow interrupts from generic signals */ > -#define FOLL_UNLOCKABLE 0x400000 /* allow unlocking the mmap lock (internal only) */ > +enum { > + /* check pte is writable */ > + FOLL_WRITE = 1 << 0, > + /* do get_page on page */ > + FOLL_GET = 1 << 1, > + /* give error on hole if it would be zero */ > + FOLL_DUMP = 1 << 2, > + /* get_user_pages read/write w/o permission */ > + FOLL_FORCE = 1 << 3, > + /* > + * if a disk transfer is needed, start the IO and return without waiting > + * upon it > + */ > + FOLL_NOWAIT = 1 << 4, > + /* do not fault in pages */ > + FOLL_NOFAULT = 1 << 5, > + /* check page is hwpoisoned */ > + FOLL_HWPOISON = 1 << 6, > + /* don't do file mappings */ > + FOLL_ANON = 1 << 7, > + /* > + * FOLL_LONGTERM indicates that the page will be held for an indefinite > + * time period _often_ under userspace control. This is in contrast to > + * iov_iter_get_pages(), whose usages are transient. > + */ > + FOLL_LONGTERM = 1 << 8, > + /* split huge pmd before returning */ > + FOLL_SPLIT_PMD = 1 << 9, > + /* allow returning PCI P2PDMA pages */ > + FOLL_PCI_P2PDMA = 1 << 10, > + /* allow interrupts from generic signals */ > + FOLL_INTERRUPTIBLE = 1 << 11, > + > + /* See also internal only FOLL flags in mm/internal.h */ > +}; > > #endif /* _LINUX_MM_TYPES_H */ > diff --git a/mm/internal.h b/mm/internal.h > index 5c1310b98db64d..673b4b1d5f4c79 100644 > --- a/mm/internal.h > +++ b/mm/internal.h > @@ -854,6 +854,21 @@ int migrate_device_coherent_page(struct page *page); > struct folio *try_grab_folio(struct page *page, int refs, unsigned int flags); > int __must_check try_grab_page(struct page *page, unsigned int flags); > > +enum { > + /* mark page accessed */ > + FOLL_TOUCH = 1 << 16, > + /* a retry, previous pass started an IO */ > + FOLL_TRIED = 1 << 17, > + /* we are working on non-current tsk/mm */ > + FOLL_REMOTE = 1 << 18, > + /* pages must be released via unpin_user_page */ > + FOLL_PIN = 1 << 19, > + /* gup_fast: prevent fall-back to slow gup */ > + FOLL_FAST_ONLY = 1 << 20, > + /* allow unlocking the mmap lock */ > + FOLL_UNLOCKABLE = 1 << 21, > +}; > + > /* > * Indicates for which pages that are write-protected in the page table, > * whether GUP has to trigger unsharing via FAULT_FLAG_UNSHARE such that the