Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3939797yba; Wed, 17 Apr 2019 00:49:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqxEXZ3oKjH3RW5kVQij6NWzs3sRqOjj1yQYHgxSv2hVlPnZS+iObyih98mvWUuQpAwVi8AZ X-Received: by 2002:a63:4f1c:: with SMTP id d28mr78705510pgb.144.1555487388232; Wed, 17 Apr 2019 00:49:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555487388; cv=none; d=google.com; s=arc-20160816; b=jlQIuLVYbTbql5XW0xJzTa6Qyv8ruKDM777CMklHCr7opeyk1qEAi/TB2h6zUQlNSj qA5I6FkrMittNTPBIgMoFBV7bWpQVOxcd3GIwBhevPFmcNxXUN9y/rNJNx85KwZiT71b PpboMglQAkXsSjpkXX2RGB3mQ8eFhsw6+s+tPRomPXVDUQaZ7kd0l5TPu4xnRq/KHYTb IfatbyMJw7134Q2tcnNYeO0UaTLRPQSmkyONtJBCa+bDqjJKLKMYtxqaLsT6NY2tQ1K6 +Q54o7ZszDtUTHbbWeEc9bqAuqsGFxICfIloF3g4YOlTIy2S5iCkXJQFRy8ay4fTff2i CXUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:content-transfer-encoding :mime-version:references:in-reply-to:subject:cc:to:from:date; bh=dnFRKU3ANRtu1gxjzPx3GM9YueGSX27NLTEmOlScmg4=; b=C8nOVf7S8POV3/C/eidYZasmfNiSwkeCofGyJPhvhtbtILuFU7VIM/J6GbfaMWwyLk MsGPWdQED1n8HdcZiUm3siZIB4mRHo80zHPs+slaDXAw56qhjCc9N5FqTh/0E8D9jD9Z /lsR4e2mwXOVt1BoUTC/BJ7W68A/GwziDyyQ06AsiWNrAf5QqMuVwzhJuunYzRgZmHhg msP9yTdbk1Nq8F6UAICmpqrI6WINfWnpQ5uGseZ9moIlM9VhLaDTib4rqn3tFRk3WVvE zpgPAH1cgkZmyBBDfa9sISuRGsGeZadwWk+uagjBeUO6tpOXSwphYbW0IMY/H/xOU27y kU+Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v77si53049026pfa.219.2019.04.17.00.49.33; Wed, 17 Apr 2019 00:49:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729237AbfDQHr3 (ORCPT + 99 others); Wed, 17 Apr 2019 03:47:29 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:57232 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726237AbfDQHr2 (ORCPT ); Wed, 17 Apr 2019 03:47:28 -0400 Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x3H7lJ0G021524 for ; Wed, 17 Apr 2019 03:47:27 -0400 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0a-001b2d01.pphosted.com with ESMTP id 2rwxmnujjx-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 17 Apr 2019 03:47:26 -0400 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 17 Apr 2019 08:46:44 +0100 Received: from b06cxnps3074.portsmouth.uk.ibm.com (9.149.109.194) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Wed, 17 Apr 2019 08:46:40 +0100 Received: from b06wcsmtp001.portsmouth.uk.ibm.com (b06wcsmtp001.portsmouth.uk.ibm.com [9.149.105.160]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x3H7kdIP61669394 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Apr 2019 07:46:39 GMT Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7D338A405C; Wed, 17 Apr 2019 07:46:39 +0000 (GMT) Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 34B77A4054; Wed, 17 Apr 2019 07:46:39 +0000 (GMT) Received: from mschwideX1 (unknown [9.145.37.72]) by b06wcsmtp001.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 17 Apr 2019 07:46:39 +0000 (GMT) Date: Wed, 17 Apr 2019 09:46:37 +0200 From: Martin Schwidefsky To: Linus Torvalds Cc: Christoph Hellwig , Linux List Kernel Mailing , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, linux-s390 Subject: Re: Linux 5.1-rc5 In-Reply-To: References: <20190415051919.GA31481@infradead.org> <20190416110906.6c773aff@mschwideX1> <20190416140658.2cb73a3f@mschwideX1> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 x-cbid: 19041707-4275-0000-0000-00000328C1CC X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19041707-4276-0000-0000-00003837F61B Message-Id: <20190417094637.51ad4c67@mschwideX1> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-04-17_04:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=683 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904170053 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 16 Apr 2019 09:49:46 -0700 Linus Torvalds wrote: > On Tue, Apr 16, 2019 at 9:16 AM Linus Torvalds > wrote: > > > > We actually already *have* this function. > > > > It's called "gup_fast_permitted()" and it's used by x86-64 to verify > > the proper address range. Exactly like s390 needs.. > > > > Could you please use that instead? > > IOW, something like the attached. > > Obviously untested. And maybe 'current' isn't declared in > , in which case you'd need to modify it to instead make > the inline function be "s390_gup_fast_permitted()" that takes a > pointer to the mm, and do something like > > #define gup_fast_permitted(start, pages) \ > s390_gup_fast_permitted(current->mm, start, pages) > > instead. > > But I think you get the idea.. Nice, I did not realize that gup_fast_permitted is a platform override-able function. So that part is doable in arch/s390. But I spoke to soon, I got my first crash and realized that the common gup code is not usable as it is. The reason is this e.g. this sequence: pgdp = pgd_offset(current->mm, addr); pgd_t pgd = READ_ONCE(*pgdp); /* some checking on pgd */ gup_p4d_range(pgd, addr, next, write, pages, nr); p4dp = p4d_offset(&pgd, addr); p4d_t p4d = READ_ONCE(*p4dp); /* some checking on p4d */ gup_pud_range(p4d, addr, next, write, pages, nr); pudp = pud_offset(&p4d, addr); pud_t pud = READ_ONCE(*pudp); /* some checking on pud */ gup_pmd_range(pud, addr, next, write, pages, nr; Each step along the way will read the page table entry and pass the table entry to the next function. This clashes with the page table folding on s390. The s390 gup code looks more like this: pgdp = pgd_offset(current->mm, addr); /* some checking on pgd */ pgd_t pgd = READ_ONCE(*pgdp); gup_p4d_range(pgdp, pgd, addr, next, write, pages, &nr); p4dp = p4d_offset(pgdp, addr); p4d_t p4d = READ_ONCE(*p4dp); /* some checking on p4d */ gup_pud_range(p4dp, p4d, addr, next, write, pages, nr); pudp = pud_offset(p4dp, addr); pud_t pud = READ_ONCE(*pudp); /* some checking on pud */ gup_pmd_range(pudp, pud, addr, next, write, pages, nr; There are magic dereferences in the s390 versions of p4d_offset, pud_offset and pmd_offset functions. To make this work the pointer passed to these functions may not be the local copy of the already dereferenced table entry. I'll cook up a patch for the common code. -- blue skies, Martin. "Reality continues to ruin my life." - Calvin.