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 89A15C54E94 for ; Thu, 26 Jan 2023 16:35:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F17466B0072; Thu, 26 Jan 2023 11:35:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EC5CF900002; Thu, 26 Jan 2023 11:35:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CF19B8E0001; Thu, 26 Jan 2023 11:35:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id BC64E6B0072 for ; Thu, 26 Jan 2023 11:35:44 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 7296EAB4D9 for ; Thu, 26 Jan 2023 16:35:44 +0000 (UTC) X-FDA: 80397501408.03.441D039 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2044.outbound.protection.outlook.com [40.107.101.44]) by imf19.hostedemail.com (Postfix) with ESMTP id 71CCF1A000F for ; Thu, 26 Jan 2023 16:35:41 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=X8LPone8; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf19.hostedemail.com: domain of jgg@nvidia.com designates 40.107.101.44 as permitted sender) smtp.mailfrom=jgg@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=1674750941; 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=xms65tKg3eYffl+pR0s/CaFjPFLy+yZu0VY5Fr8Zgb4=; b=gFDAxJDAfNs+Oh7Zco2EZAH3SG1XvlYr2vvfijYTf2JqB0m8tnZONU4BD4H3XFA1l82SsN XMMwOrUg1IVDs5QxJpRi45Q66IaYbt785/4BHb2c9iomwnjKsJ/7+wxiXGQ/BI493JERwr GpmXLcbKJ3u2CzKHIKq7kW5pn3hQsHE= ARC-Authentication-Results: i=2; imf19.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=X8LPone8; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf19.hostedemail.com: domain of jgg@nvidia.com designates 40.107.101.44 as permitted sender) smtp.mailfrom=jgg@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1674750941; a=rsa-sha256; cv=pass; b=4i9K81cy9mSXSLlNxapjnE/VKYl/wTupZ4/skrPq9ymX3ysBAL+UYycwuf1ixLdpRkaTF6 K87JvVF8GVgYz1sNd6XLezuH+EPpgQ2pkdXrnaay0gc2Mn0ZCeA11i+PNErCIqfQ19j9UO 62pax+XkcTNQgvV4dqLGyOaFGAhpYms= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a5gNSdeApWA91mWfq8bYHezZxcdPiu6jp44ixf5HIFIg3gse1lz4oMPwgCmdbs8cGw4XC28hvJxww9hSHY8TkAVKFVaxqPsaLJjGuEb7ypLi4g2Q71CzVaMQuqKkCKdddEf1JFj/poOQQVSB7sNZz7q6PwSDxMShenji6IR2RA1EqB2vTKAS/Bbf3ZBM4LTOyksH1MvxQArUcjycO7quj1C3a0OY+ihUi6W1FpaZESabRFe96OZA2q5S6rvHB2YMlK1odZS2dAf2bOh+hnaGnK6ShDiIMbrRyoEVWoqP+qEig4hEBp2XHJNGHyZEYYfxlfr5YWv+5RFc0CVW+tAfwg== 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=xms65tKg3eYffl+pR0s/CaFjPFLy+yZu0VY5Fr8Zgb4=; b=n3EUBxloIPLqCXYUg6AT/duCWbOQQDqre6o+w2Cts1UIZEd6HU6Of+aigTkM4jqKk4bOnq9dQTvoeMvJCLYIHgGZ3ONbr9AWhFHV4hiqYLL75k2MHdp7p3zJS7pjMArMIDkgl1/npIpU4le7ANa8gmLO0IMo07OB6p5s5mdlkaFW5b99bx18nydF5RYUJYtr/3I1otBVPN3QoxwEflmHkho4dIpQI/CgSvWKK0VUFU9wxmDFtZkqjfXSJNULm4dVY72BNVfsMYHxHekQgrSQBiCzyU5sp+gBxuuUtZbPF/XgMEkzU0dg6FANcqbyg9LSjdkKO9JuwjFh7uX17wN3SQ== 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=xms65tKg3eYffl+pR0s/CaFjPFLy+yZu0VY5Fr8Zgb4=; b=X8LPone8PlQfhH9gNTCaJM/0Q4G469BrfuXFMt5kK8XeEaNMvlx+MOGYg2tMvo//iySpMxb7uJA1ZUiwmQEGrrj7eEAa56xutbgH3SrSnEEDC1viudhgM2W4ap+DxyAC9kkY3hXgcWnm8vk/qTzbPv1y7dvhZsFXWtXmOXBmsTsIMAZV9b/SeJs/j9aI8pwKW8/YnpTHYqqpif1Dtc6CTYHFi1x1+ijN7HFYQLrFT22do9/VvT4Whl0tDBaISYzJAUw3EBojMo4jf8lWuD2I/5sEAMEhT9ukh28P3Zve8Y/6OJTQwQ17UCb4eIYOvzUQfhVNfq6c3sDsRciW1HybFQ== Received: from LV2PR12MB5869.namprd12.prod.outlook.com (2603:10b6:408:176::16) by CH0PR12MB5074.namprd12.prod.outlook.com (2603:10b6:610:e1::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.21; Thu, 26 Jan 2023 16:35:38 +0000 Received: from LV2PR12MB5869.namprd12.prod.outlook.com ([fe80::3cb3:2fce:5c8f:82ee]) by LV2PR12MB5869.namprd12.prod.outlook.com ([fe80::3cb3:2fce:5c8f:82ee%4]) with mapi id 15.20.6043.021; Thu, 26 Jan 2023 16:35:38 +0000 Date: Thu, 26 Jan 2023 12:35:37 -0400 From: Jason Gunthorpe To: Claudio Imbrenda Cc: David Hildenbrand , Alistair Popple , David Howells , Christoph Hellwig , John Hubbard , linux-mm@kvack.org, "Mike Rapoport (IBM)" , Christian Borntraeger , Janosch Frank Subject: Re: [PATCH v2 13/13] mm/gup: move private gup FOLL_ flags to internal.h Message-ID: References: <13-v2-987e91b59705+36b-gup_tidy_jgg@nvidia.com> <20230126154148.2442e4cd@p-imbrenda> <7388b6a6-85f5-2e61-e3dc-54de531308d0@redhat.com> <20230126163902.16898798@p-imbrenda> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230126163902.16898798@p-imbrenda> X-ClientProxiedBy: MN2PR19CA0018.namprd19.prod.outlook.com (2603:10b6:208:178::31) To LV2PR12MB5869.namprd12.prod.outlook.com (2603:10b6:408:176::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV2PR12MB5869:EE_|CH0PR12MB5074:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f2b0eee-d6be-4e7c-5549-08daffbb5b15 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8HKsHLjXsesnuJNG4vJlZRoEKjdQRZ5h2NLkNfdgVbV8OKSo4Sa0f4xheaxVH66yi6quIGFZn4jSL248dbLLhlpS4l/ot3zPd9Mx8Cr60x65QJAhdnkZg5O2Qb9QCN5HXaCy6vdlp167q9g6PHG4T37LEt2hDXN5PjLMIX9SKUT39EwHCpTh+IT6xywQ6WiSli/SlezRPjj9y+Y/KXLyGFbAdrS5WTIgLIdEVBuodJXQxPuOtWqU075jECb1BfVI+QaWyeSOiqlUmt5O8H2nO10OezNI4QOSKsl4wU/FhOxTxPp7IvyUX+w1wkYyfvVkGaa9y0ZHmKYs+rfiYbu6EyzWHCwJBWn3BSFBapoPXz2tnHcCDOdfButlGJWgFH6evcyTRES2xel2BPBkz/sfoAfkT6fJFD+kcW2C1nQGYN3aqihQ5lc8Cdk3R/B4LXQgUtFdMpDBpu+7AXJQ/wR62puCsEwNDxQpNZphV5p2UDqVrFDm46GvyxDivkoWH5StpMgH4Z65p4Q5uz0tV7lIRhNb86OZExHyWUAvI+8gQtCDgTJw2ntnHYouCvCadTZewAtq9NG7O7sI3liBi19cl0t/NQ0XM4C2WzO6pdyiQRvL7Y2Axp7F1gJ7UW5812HNTK8LjXK417wX+GdKx+cxBg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV2PR12MB5869.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(396003)(346002)(39860400002)(136003)(376002)(366004)(451199018)(86362001)(186003)(6512007)(478600001)(26005)(316002)(54906003)(66476007)(66556008)(4326008)(66946007)(8676002)(6916009)(38100700002)(2616005)(41300700001)(36756003)(8936002)(83380400001)(6506007)(6486002)(5660300002)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?75l3i9f+R/0A2wIjG4fQufU9DKip9Bg+JHtMpV67zMDiSIdJ4iBnUHCPA/Jh?= =?us-ascii?Q?B5ulZY7swm3UhrLxs4S1NXW7j/s10LAyUSX9nrhNkY4Q4I9kH0BH/HJMw6Pm?= =?us-ascii?Q?TL6qEF9CDdGR4xoBvSQJ3rnND9s2SM3/QHQ38UogO3I4bSmyQ402yPMU4QsV?= =?us-ascii?Q?iYx2FpnoYdqRg6DFu1Yf2Yu0u6BJ3cTGbNg4YtlDl+rXc4Mr8qTnhmZnGDU/?= =?us-ascii?Q?cR8IAJXoo3Auu6I2s5w2QyIMs/M+irJQ551r3Hz2Px17Mv3iJ5IJU1HT5ltM?= =?us-ascii?Q?eVz1eHMFalsK1dK3O7aN5Kx3itW1E+oJPhP8RAs1ang0y0eZNtUFE7M+/ste?= =?us-ascii?Q?HyY1Iw29vu+bZVvqMKMuVcJpozjhz51Qzwrt5PAmCV+uNl/SdMSZe4C8DIsk?= =?us-ascii?Q?KNFGtIjvgyaT7Wlbx/SyshWLGOeHBlujQxNZKDXRmf4yDoMhSoXEbf23p+Rq?= =?us-ascii?Q?e9Rsup/cps8i18IC2qujwOjGxPJkLC3MLyq6C9LW0xoLXkz3isWLpibcaQiz?= =?us-ascii?Q?fzY3HJDxrWsKxqyOMgT2ZO8rgTdyFS0smkhucJknStNtx1wK9yn/oF2A4WM3?= =?us-ascii?Q?zKCU5kbOEuKZmK5D5hB3ZU4c7DsOEJDe844ssrozM2AS2O6SRxJfvWl8Gha/?= =?us-ascii?Q?Dr4FKLp7mNM0niaquGHCRVvqka/Ob45zcoYwXB5pmvpXaPMgn6cUWHSFmAVv?= =?us-ascii?Q?sndujT40PBZTGmbHMqHwXHSKlJ4T7mGmt7b88ZFhzpmCG4thewbo/oOdCKdl?= =?us-ascii?Q?CzObNN63Qvj6qVRyzeuUz5iAiey1xWapaJHlkR93zd5EyhVRWoWid23y5/UZ?= =?us-ascii?Q?aAdM36S00s0aZaFXjKkkcgqQdK9u43E1WMIRqGCZfQIiYqs6bcY3yL+W0vs6?= =?us-ascii?Q?K5uOJoD9qi92SSk5lqs0/8EJO5Kssuo2s9qJd41d21JSAjIeqU7NbD728xRx?= =?us-ascii?Q?aoabINYWF8frJ6hweIeD1orCczppTyNQvul4SpOVOm2zufV9udhpqTM/B3lC?= =?us-ascii?Q?zx0h0CS8V7faX2pEOQmUFN/I/oudsleQ3ix7AVosgtZOyonoW7DBw7pzwaRl?= =?us-ascii?Q?3puxvp6uLkcWnexdcLseUHnfrT4iHs1Z4af5lK40T31M3c8KV8RSQDmCxUhX?= =?us-ascii?Q?8QM7wJE6Alw8a6x0eFjD5Pv8Vv0wug1C+IGV716++CaICwnsVhLVfln6aucP?= =?us-ascii?Q?YRwecMO1h0Dbg367sB2w/PmocGdFYT8eoVMb+2Iq2WvYetHgfuPDj+wI84L8?= =?us-ascii?Q?4bquZuWD5QBuwOcKkvgpeYN8gxkYKByYjiozKnObhljJJdU+1xp2SfXWQP4x?= =?us-ascii?Q?YdOKWXbqWeWvVB3IhAT6lHKaUXgl+DaTGztY59qJOVZ8760eO/yEeJ/B1WQo?= =?us-ascii?Q?NRTEFGxVc3d2qF3K5F5NyS1AgIHtNE5AL7tNRJyPviOMMUFwYP9wf2dILZkj?= =?us-ascii?Q?owfaSCh0yKkB1YYj3o3ERsTEeAwBcc0r549B/wyvkAw2ChpZXtqvW1nlK2Mp?= =?us-ascii?Q?Lwq1//3isOXljHyXxMSOUzdKDAibEF4CUc8enqTLNCsi26v1XdPFClwLnSBP?= =?us-ascii?Q?NjQjSNel/0HFwb2ZhcHXg5EThyt88cdQ6emIeR/y?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f2b0eee-d6be-4e7c-5549-08daffbb5b15 X-MS-Exchange-CrossTenant-AuthSource: LV2PR12MB5869.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2023 16:35:38.0313 (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: XpUgJyoxExCN1GsUuosHrUaPOEV9xOTgVV5VXWtETCGr4fMqabkKpEAAlH+IyPfS X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5074 X-Rspamd-Queue-Id: 71CCF1A000F X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: oesuqx1yf1ryy7mhqowxs55ztb88frgi X-HE-Tag: 1674750941-921514 X-HE-Meta: U2FsdGVkX18gJAeRuBKeTooHZeG/EmeK7EZRMVUrZhuEoUnPGmtLDUi4HAjC5jujQf8FzhFhLrZWjWWYlc+tE2UZxUQJ4eCuzW+C8MThGns7ZRDCk+gXH14uicpyZT8LKdqGq81kVOZ/G7XyWFOPPPq+rDqqqrA+6CpLRF/epO1fkMdcRJUIpNGWaxigEX5UxsZvQbAXo8shGO6pCxa4nuO6/iGpm/OMoj4rYytQdf3FmATjLVRUX1uvD83sRsBIv9nZBEQFj1rx0+dPBFEbCWhOa+93RplHZ8+4lvWENFCbtfJlaHQzKC0iAm4CKq671HDETtdrgViWxGr3kvEvmClazZ0HhgCAjkGP78KzelElxye8p3G/CKS5w915scyY9oJgg4imh3Cv5Ti58JhAcyjfxcBJHqvudyj6kfYGMRUbKIVSpbRH9wE/4qk7Uaaqif4ul0WvVRQTIxqkEh++zL2UOcmiqtFblNbenmrNbNROXBYrthmn0V2BiM9eVbTzrKBLQym+o2b8ocoSh8ly12ulaO6lRMzx/Us6Q03Ox5WrILM8xaeEMEKsuM1fA3GQ/DQS3gjibLEi/NeKAipuwjFz+JWUbXsMNmFDxxx9uleoACDwKMls6qCEFIXb9VRLptqEXUNb6OV5tX5wmro8R+eGEkwU0rnuHhVu0rIoAr16eV0u7j8ec07pDD7T6yq+pgQx7Gb2h2zKTiIon6F550Ja0UYEa0QNAS5xCBsV6nFiWhMILbuR5gWRhmBOOAROFGWKwrafrIKjRo2FO1u2AbKAeIHuMI/FZHUDno1NXPu8PaeDuX78UEAH77cXYmdnykDmAMpgtt6X0EVL//35psZHlCcFRVimJsamjzp9fwc+uQI764xiA3EAQdEChBFpTg6R5hvL0KoNoazp302EkY4nMq+LFqDsEj0G9pryqn67wSEyAW9wzZNYELky6/ZfNfn5avFUTR+oBjGTEly KGszoXYq j0z8o+dVFq0d7/aTa6qMOTdd778Z7bA8juu6PKb0oIPTdwayQxqkJXoZRFm/ABjbXfFRwKmNRM2l+9s/kX2NQJZ9irVzJS+lANYqSSfNThunMsEJq0EluvpY1BY9cybo72TxouStEjCwJ9Y8KKjuI9xv7iPw9Jq5hLVC+aYf/vD89HphTxMRwL8hkS8Vs2Z7RHEfqqhGro2Y9NxSf67H7nMPKL6fSS9hIgNN421LkXOMyX2k6PZmhQ11nQ/Fc8ayXfRKnyV31yiUgjgxVLmE6nxFCbQ== 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 Thu, Jan 26, 2023 at 04:39:02PM +0100, Claudio Imbrenda wrote: > I can tell you that the original goal of that function is to make sure > that there are no extra references. in particular, we want to prevent > I/O of any kind to be ongoing while the page becomes secure. (the I/O > will fail and, depending on which device it was, the whole system might > end up in a rather unhappy state) Sure, but if there is concurrent IO you just try again right? It doesn't wait for refs to drop for instance. So make the lock_page work the same way: diff --git a/arch/s390/kernel/uv.c b/arch/s390/kernel/uv.c index 9f18a4af9c1319..847ee50b8672c6 100644 --- a/arch/s390/kernel/uv.c +++ b/arch/s390/kernel/uv.c @@ -193,20 +193,11 @@ static int expected_page_refs(struct page *page) } static int make_secure_pte(pte_t *ptep, unsigned long addr, - struct page *exp_page, struct uv_cb_header *uvcb) + struct page *page, struct uv_cb_header *uvcb) { pte_t entry = READ_ONCE(*ptep); - struct page *page; int expected, cc = 0; - if (!pte_present(entry)) - return -ENXIO; - if (pte_val(entry) & _PAGE_INVALID) - return -ENXIO; - - page = pte_page(entry); - if (page != exp_page) - return -ENXIO; if (PageWriteback(page)) return -EAGAIN; expected = expected_page_refs(page); @@ -304,17 +295,25 @@ int gmap_make_secure(struct gmap *gmap, unsigned long gaddr, void *uvcb) goto out; rc = -ENXIO; - page = follow_page(vma, uaddr, FOLL_WRITE); - if (IS_ERR_OR_NULL(page)) - goto out; - - lock_page(page); ptep = get_locked_pte(gmap->mm, uaddr, &ptelock); + + if (!pte_present(entry)) + goto out_unlock_pte; + if (pte_val(entry) & _PAGE_INVALID) + goto out_unlock_pte; + page = pte_page(entry); + + if (!trylock_page(page)) { + rc = -EAGAIN; + goto out_unlock_pte; + } + if (should_export_before_import(uvcb, gmap->mm)) uv_convert_from_secure(page_to_phys(page)); rc = make_secure_pte(ptep, uaddr, page, uvcb); - pte_unmap_unlock(ptep, ptelock); unlock_page(page); +out_unlock_pte: + pte_unmap_unlock(ptep, ptelock); out: mmap_read_unlock(gmap->mm);