From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH] drm/vma-manager: Don't unmap COW'd pages when zapping bo ptes Date: Wed, 20 Nov 2013 11:38:02 +0100 Message-ID: <528C910A.8050107@vmware.com> References: <1384941349-3550-1-git-send-email-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from smtp-outbound-1.vmware.com (smtp-outbound-1.vmware.com [208.91.2.12]) by gabe.freedesktop.org (Postfix) with ESMTP id CC0BF1057CF for ; Wed, 20 Nov 2013 02:38:06 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org To: David Herrmann Cc: linux-graphics-maintainer@vmware.com, "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org On 11/20/2013 11:14 AM, David Herrmann wrote: > Hi > > On Wed, Nov 20, 2013 at 10:55 AM, Thomas Hellstrom > wrote: >> Not sure if there are any user-space users of private bo mappings, but >> if there are, or will be, zapping the COW'd pages when, for example, >> moving a bo would confuse the user immensely since the net effect for the >> user would be that pages written to would lose their contents. > You're only talking about moving bos, but what happens when you evict > a bo? You *must* clear COW mappings, too. Otherwise, they might still > get read-access to the evicted bo. Hmm. When I talk about COW'd pages, I mean individual anonymous pages. If there is a COW mapping left in a VMA, it points to an anonymous page and will never access the evicted bo. All (read-only-enabled) ptes pointing to the evicted bo would still be zapped, so I'm afraid I don't understand your comment? > > Note that we currently cause SIGBUS on access to mmap'd bos if they > are evicted and cannot be restored (think: user-space mapped the > VESA-FB but a real driver took over). So maybe we want two independent > helpers here? It shouldn't be needed. Thanks, Thomas > > Thanks > David > >> Signed-off-by: Thomas Hellstrom >> --- >> include/drm/drm_vma_manager.h | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/include/drm/drm_vma_manager.h b/include/drm/drm_vma_manager.h >> index c18a593..347077d 100644 >> --- a/include/drm/drm_vma_manager.h >> +++ b/include/drm/drm_vma_manager.h >> @@ -231,9 +231,9 @@ static inline void drm_vma_node_unmap(struct drm_vma_offset_node *node, >> struct address_space *file_mapping) >> { >> if (file_mapping && drm_vma_node_has_offset(node)) >> - unmap_mapping_range(file_mapping, >> - drm_vma_node_offset_addr(node), >> - drm_vma_node_size(node) << PAGE_SHIFT, 1); >> + unmap_shared_mapping_range >> + (file_mapping, drm_vma_node_offset_addr(node), >> + drm_vma_node_size(node) << PAGE_SHIFT); >> } >> >> /** >> -- >> 1.7.10.4