Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp5530328yba; Mon, 13 May 2019 12:29:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqzpZMMl5p/GdfqXuyEXen94Ul5+rt0JjAqwgGz54xN/N1tPc+yPJQshBFaKv7LXPZEu3zGR X-Received: by 2002:a63:9548:: with SMTP id t8mr34201275pgn.256.1557775789325; Mon, 13 May 2019 12:29:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557775789; cv=none; d=google.com; s=arc-20160816; b=Xm2nNGAQA9LzzNnjUinEn4jVAc/7BNsO4zyv7L+0NCqD+0YyWw+NeBupsL5xob9Xen SEuQgIvnSGj3CuTfGt2zYXMbqRZoasPmrnt3NQidOho6kGt0PobmZXU9/x3nNEVChVaK R+R48URs4YvpKR0LLxu949xypr0NcE3lcRcfCNIigLBNDVnzAOE1i8uThORgz3PGSrVG D8di/XGx7q0s1iN2gxMYEInvitLbzvC6S6ZO0dYZC2lmqD+dNXQ+mK8ce165aAPPeTYc KbS3VYJ3lu8KQmDpYRsMHvxe6Dxl26YO8PkhrcQHN1QDVUs9XcsawZudHsDocgKwRxxt 1qDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:subject:user-agent:message-id :references:cc:in-reply-to:from:to:content-transfer-encoding :mime-version; bh=G8cn1BHed07Pt9rIUGRIQeKs6+HNqwkc/XpWoFrtb1I=; b=OTC1ZYrQGNye/m5q6Y6eyWUG02VLhQd21QZSUqjP6Shlu6VqSEZKy076hhF5EsdWrw yXW0Qb7BwKfEQZ2mSCOrGOU+eBErUa9BNlAMwDodsPU8FFth4ED8oEkP07ceslSf7HED qfRn7M6xxwHak2GFC0h/dFEGL6+nP5qsdWaxCQTjrsZshNpxr7wAn/6KlGoAbsA7SQr7 y8Zobz17KuB0v4AocQon1482suYJ4fGXkjDZGsMCA/teIHd/8zU0ba8oEmiGNSEu5YFJ gT4ZpafsvZePjgyjgYgXOzdel92bCtRlw2PBEt/1RAhTlj3SAMicD6zGb8ChcJnIhdVT 2VzQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q18si17456831pgj.289.2019.05.13.12.29.32; Mon, 13 May 2019 12:29:49 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730890AbfEMQqk convert rfc822-to-8bit (ORCPT + 99 others); Mon, 13 May 2019 12:46:40 -0400 Received: from mail.fireflyinternet.com ([109.228.58.192]:61776 "EHLO fireflyinternet.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728347AbfEMQqj (ORCPT ); Mon, 13 May 2019 12:46:39 -0400 X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from localhost (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP (TLS) id 16543216-1500050 for multiple; Mon, 13 May 2019 17:46:32 +0100 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT To: Daniel Vetter , Steven Price From: Chris Wilson In-Reply-To: <0b7f0b7f-3e14-f5bb-368a-08037c2a8529@arm.com> Cc: David Airlie , Alyssa Rosenzweig , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Tomeu Vizoso References: <20190513143244.16478-1-steven.price@arm.com> <20190513143921.GP17751@phenom.ffwll.local> <155775884217.2165.11223399053598674062@skylake-alporthouse-com> <0b7f0b7f-3e14-f5bb-368a-08037c2a8529@arm.com> Message-ID: <155776599144.2165.15056323416635154840@skylake-alporthouse-com> User-Agent: alot/0.6 Subject: Re: [PATCH] drm/panfrost: Use drm_gem_dump_map_offset() Date: Mon, 13 May 2019 17:46:31 +0100 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Steven Price (2019-05-13 16:14:01) > On 13/05/2019 15:47, Chris Wilson wrote: > > Quoting Daniel Vetter (2019-05-13 15:39:21) > >> On Mon, May 13, 2019 at 03:32:44PM +0100, Steven Price wrote: > >>> panfrost_ioctl_mmap_bo() contains a reimplementation of > >>> drm_gem_dump_map_offset() but with a bug - it allows mapping imported > >>> objects (without going through the exporter). Fix this by switching to > >>> use the generic drm_gem_dump_map_offset() function instead which has the > >>> bonus of simplifying the code. > >> > >> gem_dumb stuff is for kms drivers, panfrost is a render driver. We're > >> generally trying to separate these two worlds somewhat cleanly. > >> > >> I think it'd be good to have a non-dumb version of this in the core, and > >> use that. Or upgrade the dumb version to be that helper for everyone (and > >> drop the _dumb). > > I'm slightly confused by what you think is the best course of action here. > > I can create a patch dropping the '_dumb' from drm_gem_dump_map_offset() > if that's the objection. Or do you want a helper function with two > callers (the 'dump' and the 'shmem' versions)? > > > More specifically, since panfrost is using the drm_gem_shmem helper and > > vm_ops, it too can provide the wrapper as it is the drm_gem_shmem layer > > that implies that trying to mmap an imported object is an issue as that > > is not a universal problem. > mmap'ing an imported object isn't a problem as such. But rather than > going behind the exporter's back we would need to call dma_buf_mmap() to > ensure that the exporter can do whatever is necessary. > > I could add a wrapper in drm_gem_shmem_helper, but I'm not sure what the > benefit of a wrapper here is? No, my point is that the pagefaulting is being provided by drm_gem_shmem and that is relying on direct access to struct page, hence that is imposing the restriction that it can only handle its own shmem objects. The driver should not guess the helper, but ask the helper if it can perform an mmap of this object, and since this object is not an shmem object it will say no. Different drivers can use their HW to fault in indirect access to dmabuf (treating the dmabuf as a conveyance of a sglist and not struct page) and so do not need to different/reject foreign objects from their specialised mmap routines and are oblivious to them. -Chris