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 X-Spam-Level: X-Spam-Status: No, score=-5.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52751C4727D for ; Thu, 24 Sep 2020 17:55:42 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CDA4C20738 for ; Thu, 24 Sep 2020 17:55:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="KVs8VPfx" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CDA4C20738 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 3F9016B005D; Thu, 24 Sep 2020 13:55:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3CEBC6B0062; Thu, 24 Sep 2020 13:55:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2BE316B0068; Thu, 24 Sep 2020 13:55:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0084.hostedemail.com [216.40.44.84]) by kanga.kvack.org (Postfix) with ESMTP id 163856B005D for ; Thu, 24 Sep 2020 13:55:41 -0400 (EDT) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id D206145D8 for ; Thu, 24 Sep 2020 17:55:40 +0000 (UTC) X-FDA: 77298707640.06.level25_26119d827161 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin06.hostedemail.com (Postfix) with ESMTP id B695A101B6794 for ; Thu, 24 Sep 2020 17:55:40 +0000 (UTC) X-HE-Tag: level25_26119d827161 X-Filterd-Recvd-Size: 5988 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by imf23.hostedemail.com (Postfix) with ESMTP for ; Thu, 24 Sep 2020 17:55:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600970138; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=5ClAO9/rtMU5sQd9Xp4+E5kyKR/mhYS+71Ql/VjPPsQ=; b=KVs8VPfx4wdPfp9i5kSiQBDFh515a6zL6WfFDoNrIfsOjbQ/dRKGdD9eNsSgy030rTCDDC ye5QnJTdDC6iqm2fRS1EiCCSuvo1I9s5lPRSz8rZjlcXJlYvjNV0MobPIaMWxl6uTwsoVa JNWznPejLdbk0QJflVZCSm4qfP+GMzI= Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-563-ziz1SaNqMjOba4_QZrUP0w-1; Thu, 24 Sep 2020 13:55:35 -0400 X-MC-Unique: ziz1SaNqMjOba4_QZrUP0w-1 Received: by mail-qt1-f200.google.com with SMTP id e6so3022840qtg.13 for ; Thu, 24 Sep 2020 10:55:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=5ClAO9/rtMU5sQd9Xp4+E5kyKR/mhYS+71Ql/VjPPsQ=; b=nDq2MTpEwtPmvAG920ceqW3XYB3+lmZDB+jrqSVtZFGoipU5s/Utbwz/yp6toBBTtH fxHCwOtrM1UO9Z6YUqCvnZkzXqB6rIaZq5NJZx7RjgQZLD2fhpJGJouiMF4OEy9C3Jh8 vz44vKtAfiZ0R/l0TG7kJPYMmTF8aX+DZLFuGCWHWQby+tuQV3DAv5oHHmgCkaRjdG6s cKw8IvG1HkYr3iuR2SELUBBLSeTedF9beq4/hesqinD5VOHo/8/3mXLlmnNXjd2ZlGvP ZupmwaSxRB+P+PeIp3JRFkuihRKN+i2pqEEfDiH7m0dIOz6j4h6Qussihf9yXvXPN/EF iumQ== X-Gm-Message-State: AOAM530uFJ+dvtGWpNVU97al3WLozG30EPuwIS2M99+4MG9tCnAx87MT K0iL6GOv41JZpuFGGmoUJ1nJ4vwzDxJC9tHp2I1B7oypwFOcXo5xyDG6eu1inEFrfM9AMRDImqK rqGBDLWIYX5M= X-Received: by 2002:a37:cd5:: with SMTP id 204mr230106qkm.303.1600970134504; Thu, 24 Sep 2020 10:55:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzSX4aE/PDsFbydVy5j0qbhmvcf/zPbMUXgOKfhUZVfLgyDoQnDeX5yi7cXkFzkVEYCYycIoA== X-Received: by 2002:a37:cd5:: with SMTP id 204mr230076qkm.303.1600970134154; Thu, 24 Sep 2020 10:55:34 -0700 (PDT) Received: from xz-x1 (bras-vprn-toroon474qw-lp130-11-70-53-122-15.dsl.bell.ca. [70.53.122.15]) by smtp.gmail.com with ESMTPSA id v16sm118868qkg.37.2020.09.24.10.55.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2020 10:55:33 -0700 (PDT) Date: Thu, 24 Sep 2020 13:55:31 -0400 From: Peter Xu To: Jason Gunthorpe Cc: John Hubbard , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Jan Kara , Michal Hocko , Kirill Tkhai , Kirill Shutemov , Hugh Dickins , Christoph Hellwig , Andrea Arcangeli , Oleg Nesterov , Leon Romanovsky , Linus Torvalds , Jann Horn Subject: Re: [PATCH 1/5] mm: Introduce mm_struct.has_pinned Message-ID: <20200924175531.GH79898@xz-x1> References: <20200921211744.24758-2-peterx@redhat.com> <224908c1-5d0f-8e01-baa9-94ec2374971f@nvidia.com> <20200922151736.GD19098@xz-x1> <20200922161046.GB731578@ziepe.ca> <20200922175415.GI19098@xz-x1> <20200922191116.GK8409@ziepe.ca> <20200923002735.GN19098@xz-x1> <20200923170759.GA9916@ziepe.ca> <20200924143517.GD79898@xz-x1> <20200924165152.GE9916@ziepe.ca> MIME-Version: 1.0 In-Reply-To: <20200924165152.GE9916@ziepe.ca> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=peterx@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline 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, Sep 24, 2020 at 01:51:52PM -0300, Jason Gunthorpe wrote: > > Regarding the solution here, I think we can also cover read-only fast-gup too > > in the future - IIUC what we need to do is to make it pte_protnone() instead of > > pte_wrprotect(), then in the fault handler we should identify this special > > pte_protnone() against numa balancing (change_prot_numa()). I think it should > > work fine too, iiuc, because I don't think we should migrate a page at all if > > it's pinned for any reason... [1] > > With your COW breaking patch the read only fast-gup should break the > COW because of the write protect, just like for the write side. Not > seeing why we need to do something more? Consider this sequence of a parent process managed to fork() a child: buf = malloc(); // RDONLY gup pin_user_pages(buf, !WRITE); // pte of buf duplicated on both sides fork(); mprotect(buf, WRITE); *buf = 1; // buf page replaced as cow triggered Currently when fork() we'll happily share a pinned read-only page with the child by copying the pte directly. However it also means that starting from this point, the child started to share this pinned page with the parent. Then if we can somehow trigger a "page unshare"/"cow", problem could occur. In this case I'm using cow (by another mprotect() to trigger). However I'm not sure whether this is the only way to replace the pinned page for the parent. As a summary: imho the important thing is we should not allow any kind of sharing of any dma page, even it's pinned for read. If my above understanding is correct - Above [1] may provide a solution for us (in the future) when we want to block read-only fast-gup too in this patch just like how we do that using wrprotect(). -- Peter Xu