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 4B65CC05027 for ; Thu, 26 Jan 2023 17:24:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 79EBC6B0072; Thu, 26 Jan 2023 12:24:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 74F118E0002; Thu, 26 Jan 2023 12:24:23 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5EFCA8E0001; Thu, 26 Jan 2023 12:24:23 -0500 (EST) 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 503626B0072 for ; Thu, 26 Jan 2023 12:24:23 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 2252F1A0410 for ; Thu, 26 Jan 2023 17:24:23 +0000 (UTC) X-FDA: 80397624006.21.8F29E38 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf18.hostedemail.com (Postfix) with ESMTP id 36F4A1C000C for ; Thu, 26 Jan 2023 17:24:20 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=K05cFIYh; spf=pass (imf18.hostedemail.com: domain of imbrenda@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=imbrenda@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674753860; 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=o7MvnhUvaTn+MNCbaJ2I68Rte0Bn3vPY12lJq0aCPN4=; b=jATUf4WeGbTgIXzLBdq4VpM5+MYTwrAbNCJE/ooq0IFTINk78XuGrD69TU0NlT7HI+F5Om LWB4kCoAeb9UjBm0PIOhEn0Np2m8NGkgMQBEZjMy9Xh+cUeIOeia0iozt8jWz+YF/rYQjJ YMFZrnVgXCF6A0iaaaEwu3JvX1DQgkk= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=K05cFIYh; spf=pass (imf18.hostedemail.com: domain of imbrenda@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=imbrenda@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674753860; a=rsa-sha256; cv=none; b=M2oKcobUshAPsKb+cUELnAJlfNOPEkLWWu/WtABQMkfGUBkhv7zkyBqXvoYoJup4GisCPu Hy9747ko7IvQQ83t8ayz5SJ+6qNoMGNYFn+BjvALPnjxEzmJrJgBItH5pE8ScygVle8z4K iyKcRntKbNnQi822r6nyXMZUL+O/G7E= Received: from pps.filterd (m0187473.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 30QFxRXQ011154; Thu, 26 Jan 2023 17:24:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=date : from : to : cc : subject : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=pp1; bh=o7MvnhUvaTn+MNCbaJ2I68Rte0Bn3vPY12lJq0aCPN4=; b=K05cFIYh27g4Lkz6mFgLLSlo4rA1PZCbPRXYQsSstjtZwwpTUian8g9n8cFxNkREp5R/ pOcuTNb9Hngko0CgVW1lVj9oR1oEMxxRuurIL0QFHiakwoUDqpNJw/lkbxrTBSYOyMH7 JwIhZ1Ei7wC33PxqU2FgUQx/Ojo2v/pGZoMJpaY2pO1GktIUx6gnPA8ReLSnWsd65Fom XHL/ckEfgEyRa8kuLtGmZGoKuT32KpLUaPAKQBlyQRrcSUf8o4icP20MpGZbdfrG1/My ThxsVy3o7osSYFrRp6rXFrfV7548jKcJ3eOvSLP+au8LzPlGjtmXePoTj8tBrE1dLY5M vw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3nbvn6t5js-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 26 Jan 2023 17:24:11 +0000 Received: from m0187473.ppops.net (m0187473.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 30QG0GN2015756; Thu, 26 Jan 2023 17:24:11 GMT Received: from ppma05fra.de.ibm.com (6c.4a.5195.ip4.static.sl-reverse.com [149.81.74.108]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3nbvn6t5j4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 26 Jan 2023 17:24:11 +0000 Received: from pps.filterd (ppma05fra.de.ibm.com [127.0.0.1]) by ppma05fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 30QE7oNk031975; Thu, 26 Jan 2023 17:24:08 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma05fra.de.ibm.com (PPS) with ESMTPS id 3n87p64rpm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 26 Jan 2023 17:24:08 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 30QHO4aF36241874 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 26 Jan 2023 17:24:04 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 301F92004B; Thu, 26 Jan 2023 17:24:04 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BC94020043; Thu, 26 Jan 2023 17:24:03 +0000 (GMT) Received: from p-imbrenda (unknown [9.152.224.56]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 26 Jan 2023 17:24:03 +0000 (GMT) Date: Thu, 26 Jan 2023 18:24:01 +0100 From: Claudio Imbrenda To: Jason Gunthorpe 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: <20230126182401.2e1fd3b0@p-imbrenda> In-Reply-To: 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> Organization: IBM X-Mailer: Claws Mail 4.1.1 (GTK 3.24.35; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: xS-wnvfJ696eGfnYUqe-_fAPYMIY-ekQ X-Proofpoint-ORIG-GUID: lXts8mgwTIItjcw6nuGWj-R0a215KZYe X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-01-26_07,2023-01-26_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 bulkscore=0 phishscore=0 mlxscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=843 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301260164 X-Rspamd-Queue-Id: 36F4A1C000C X-Stat-Signature: tuk5xkcrnut1oc3qt1kexd6jqo5eh8tz X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1674753860-222790 X-HE-Meta: U2FsdGVkX18A3wSPkE7WvZaKN3L3mDdXJwlK6yqqGMGnwmQ1KUY4gF0uNS47cICfG4L/ZtedRjZ+P25cnhpmnoiqjm5rapVNnIBDr6DHlN2bErQ1XmeprjgK+iNchQ8DBrR/BLvXCnD3d65Vk//xPcYvF/LvTUy55VBwA37wAtyWcK3LgwfQv1KRNekekZ6lBJC4Yj3105QhXurVrwcodOxMz6l0thHuXQoSK3rke50gKUtEB9kJZr7skngphmM0PDaS9KYx8G1fX0EK3kY7wFyLsXKBeIjKUdp7Cs2rOl3QCDfzryWvqwtxzPKlJAnBhDq/mzdqd72gONfQZNLcpki7hY8zDfEMw6rdLNW8tEJ6hZLU0+uojFsisZISk4lF9dbpHKrEwmJHdvjFmP7D1kQ4q6IMImmjLbHx08p67lLFoROfwGmyl51Z3n8f+/30wweD3TEgi8GmbKV+yGxbY0gZeNj7Rum2hKJVsdR6CtOpaiqlCFtJ9BcGVvSOtxsbtKDsSzU3JDAfDEQZUb6G+LtX5R6bKuz1d/n+zvwgKZNBiLU1wMmeqiz7YAxZ5iQ/oXNgYP9ylYCbljr9GD707DrSIbp6ipqFSZfVYAuoGGG7oDgP9YoBLnsm/N59OJPrd1PTb7qSuIoqYPM1BU4ANycgCNMGkbI8vQ1OIsImdk9UyycLKX2bXvUBRyQXuvHKeKOS8KIfQQz/hUSfi+7DEvKSNaRmPFBnupcKasQDixwzTETNU/azuElx6pefYH2CvEZQq/OPwQLgN3jyVYQw+M5F8i34QALXlf+m5wqyu1NgM4SS2ZZcydQ+Io7D8fcTFNyhr+Eu9kUOmNamksjGLRb4xEvhx/4MaiYcw2LTe/kD4mJ2GLUPMyDMQdab0t6mhtyFPoBUoot0pKsK5oI7rh3g9k2eyl4IZ9o6VlO8ASkOtR3LxWJLXkSJSBiyQU6s2e4QW8EJ688zkgbJ52Q QTTJJkUy A4CbdtzcjIR/MWC7B+uF08XOb3sgzNYtLVXVXKm0feem60uR0iE7oxoNi5HjfHYgf2x5aIkPtpSzOscn3tFhHbQINif8CELltOaaxZiUjwRJuncmfy9R46Vn8mKNfJ9Eycqjg7/KpXgf4y9oF36ZgsoLZ89KLJWzEl4cQWl74rgrVR8K8v1IMDwUgotaz7kCzFsrt7XG566JG1/8CUKbmWJuPHFE8JcUSCJoY/RglasWo5FQ8OtbQoQhPN0W8jOS2lEuh 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, 26 Jan 2023 12:35:37 -0400 Jason Gunthorpe wrote: > 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: I'll need to think carefully about this. I remember that there were good reasons to do things the way we did, so I want to make sure we don't break something by changing things around. > > 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); >