From patchwork Thu Jan 18 21:44:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Li, Samuel" X-Patchwork-Id: 10174621 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1B5156055D for ; Fri, 19 Jan 2018 06:26:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0A9F228571 for ; Fri, 19 Jan 2018 06:26:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EA976285CE; Fri, 19 Jan 2018 06:26:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_MED, RCVD_IN_SORBS_WEB, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 3D5D928571 for ; Fri, 19 Jan 2018 06:26:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4666A6E8E5; Fri, 19 Jan 2018 06:23:01 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0088.outbound.protection.outlook.com [104.47.38.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 69F4C6E00E; Thu, 18 Jan 2018 21:44:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=wi9UUxcLFmCUUx5b5PaUqbM5mUGaORRE0TFPr+2/rvY=; b=aQVFogrr4uwVZCC6AyPxo6TtI0TxzEoLtmp//tfiM9yJCGTHryqi7thYYT43GaRFm5F+3yxSoh9yQC34JC/3HwbcfylUW5JN/kwcwUgy6p49zF1N2zWBqAI3cmziSrYMhr1CjmeKuZ2oS/VJX6Y1v2qbLJcpjJL/8m+kwkSvjDI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Samuel.Li@amd.com; Received: from lnx-1cv4-4-107.amd.com (165.204.55.251) by SN1PR12MB0510.namprd12.prod.outlook.com (10.162.105.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Thu, 18 Jan 2018 21:44:50 +0000 From: Samuel Li To: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH v2 1/1] drm: add kernel doc for exported gem dmabuf_ops Date: Thu, 18 Jan 2018 16:44:20 -0500 Message-Id: <1516311860-24949-1-git-send-email-Samuel.Li@amd.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [165.204.55.251] X-ClientProxiedBy: BN4PR10CA0008.namprd10.prod.outlook.com (10.164.240.18) To SN1PR12MB0510.namprd12.prod.outlook.com (10.162.105.154) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 59e4bde5-dddc-4dfd-e254-08d55ebcb3dd X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:SN1PR12MB0510; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0510; 3:wIxUnoFkSWyrhCEUMAQhnNdlBk+hL27d9/2Nh4pB+K9YBMHE0XhYmcde7s2P4TIrZ23i0FQsuIXyFM5WgRP2Syck3/hTJPNFsOMhdWKQWqi7lgwn6nO4yxqRC4znTn9rcuTwNjw8lbVC+eRCY9HZroSO6YzEII8tXM48scFiLDtS/8DSHVKvzRfq2IHrP4aihj4hRBVhJAz09OflgK4rKHTQozFaWqKdISHSr5cb/Aj0udZCviaTALxqFNgl3Ckv; 25:5YuZjGv+yE0fyZZ/8+vlCEtomZZ+TG+U5ePamoV/I9s0ujzPeooOQkU6Czn5so7ksesGxvjkwTTacjwYBeHVJEfMD+UjSKGCSpjM7Yxx4BKSWyPNkJ9OIfUG00xMDVmX1V/U4VyRcfZIR81C41Cn/0EC0oldZgwCnzndD8NQIjvdjTkjEeMonjwN+8eU0IoKdXPaR+fQ6J73Lpzz+TagG0cdiRmO0kj8eWeglGsm3iCJr6UXNH4eNO5MV50DCRE/XV8c4YODvzRwsSyb+b7E+PS0/OZ4nFOLNx88UFU5Nd5cl3rT0VZdivu/ubATxUOuhpBqslMivbgppadym+EvVg==; 31:hix9zXx94F+h8yGI4aI6Jopfp/fv50hD3rZhz9y66W+Dd75WAy+jpwBbQMyT4t0OntGwFmkV1LNOHSGOR0HF6HqdVu5ndTXdjeuTgwKBTmbyOvm54m/ITRwRP63pvHkJZywZbs1tm+bHo+DY4zVLS7gpla+eEqV72D6tUoV6U8JK0wEGho5GwChb4IHY1o7NodZ+KKuq9SnxtUiP+oQns1zcTEaECaSIZleLGFlEsFQ= X-MS-TrafficTypeDiagnostic: SN1PR12MB0510: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0510; 20:xz0HW3nXT0cFSiJuxgkP1La2Luvv6hcqgPnzYFY7GXXvpErBcAKm4KImwAOwnupQ3Yrl9y19ceFtk55jS/vVIGSRmVM0A2LF5Zq+7GLsYXvdgH8A65wEbob5xaWtzP6wMDkOx2gIRGflliFGjm5rFH/oIZmi4bvhmWHZvemLjXAQEvNjZj82CTkmd2kAMRU+QWw2hKvfoqKVh1eP0bux/K67KBQfq9JFdL3+m5wZV/sa44NpdPTctjcXztGY/jhj9h77ytazQWLBSbBrxZDWQHdN3Gcdq6SPSx3PyOvCwz4/22XbOUzlXmBBlbI9vSotkhc8ScITS1i5H8PK7JM3VmVzAF4n0lj6bA1nATL/W4uogot0uAqSYuvhp7/zYwQr/wPsVe9a94i99Ht+48OI7TyioJFmxVTUIFaFdUHo+xDszXs9ZG4t08MhDgOYWlA6vtdmBEwNlsGRzq55h476DwmLf/UgFeSKTJGmEhu5MIZ34nm3G4O5oKOtozUTJVgs; 4:bQxUEYV/qI5LYhd8I0YGr3jYLAm8OBbwACqkJCynh6x1z48UDJO4Xm8CM1gMAVE0tGRxEG6N6b0QBJ710QzuexzZbcyNaTG3+eoWczaFZh6QKFb2O61hEpfrqUbXzdHbPGwfB9jOmuxrAp0UxxW8SX95fX6oGkJxuWPG++z3PpXpJA6HXYX+00ZQ9Wt15+kMgq5AxqNQapu3IBeveZN9xGec/zhkrXvUxFhDiCpj8a72H77ivS09QnbRATb7CmnuaR8pEjDbT3KtQWj5Ff/AkiW3JZnBZAD63Qioqu2EU5JCnwGnbZOQh1IbM676Dphp X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231023)(2400067)(944501161)(10201501046)(6055026)(6041268)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:SN1PR12MB0510; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:SN1PR12MB0510; X-Forefront-PRVS: 05568D1FF7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(346002)(396003)(39380400002)(376002)(39860400002)(189003)(199004)(5890100001)(105586002)(68736007)(97736004)(66066001)(16586007)(53416004)(8936002)(36756003)(16526018)(8676002)(50226002)(81156014)(72206003)(53936002)(478600001)(86362001)(316002)(50466002)(26005)(6486002)(48376002)(81166006)(7696005)(25786009)(4326008)(51416003)(5660300001)(52116002)(6666003)(2906002)(6116002)(386003)(59450400001)(450100002)(7736002)(3846002)(305945005)(47776003)(106356001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0510; H:lnx-1cv4-4-107.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR12MB0510; 23:Hi8274hKj4w7ivtzyQFnT4tP/9tblMJm2oaZOJDg1?= =?us-ascii?Q?mJ+8AlT68TuwDkOlXGxJg/VNlK6SvqhkGSDESI1rVK9OsL8bowVdXcCf6lQb?= =?us-ascii?Q?76YH8KoxMpEYFthA0ghdZ+ds0Yi6WTQIp6pdwVaLYLcAh4eHmCp1lH1MbGVK?= =?us-ascii?Q?EUhOknIVaj9ElbF9rNYpRscEUkc2xe+5HFQeH4VkzEOEJpdeHXEKJ6UfLmDZ?= =?us-ascii?Q?CSqKlLsMrVxTr+NHslTwFCNsh5g77dsJ71u4YJHUixNO/wVMehyDF3zrDRVH?= =?us-ascii?Q?5//SmM6U4/oYGoFRnRmOyvm8ZpSRyEdNpRIgfz4fo2+OaTO8ePJhXy/1zvYc?= =?us-ascii?Q?K/eGGCDP56F41j6NKZg0hdxOSjhslqjvP1ZnDT21AlI5cni7m+sha9eOPheI?= =?us-ascii?Q?HyPwtwW0TojbjAXVwqbclU6gjFozwUOhDV26Pyy0yPtbpYFTIX/7/GMkOj1Q?= =?us-ascii?Q?Vvi2XsY1bWgwqD54Jdd5O1cxLgMa/jDgsi4i89b72x11frNZyFUJXUfkuLJL?= =?us-ascii?Q?twUSaqxYBsujc08Yh4C3olN0Tc2nfszwM07H/f387MsKM8MNPLbEKzApqdWG?= =?us-ascii?Q?IeZUfTvhFqBZtbIWBTUhiknK9hX5FFnc/7xjXseNIHl+lfOdVtnUqoZMDy6N?= =?us-ascii?Q?/WbkC4P/pgc6WHAEqa//UhoOLWr8lC5QECf461QxCNZTo6s1I0d9tWa78f2q?= =?us-ascii?Q?HlvPilA4VmUm9RikfnMYBz2u4PrLcFDeBFny9SPmKGki49e8+2OuJ2RuYjAE?= =?us-ascii?Q?FoWYDAAvT2YM9EndIoGZgg0K1yyn7nX/b2p/bklkpyyA/+eC9DUuz7NZky2F?= =?us-ascii?Q?z8WGu7sT0QiPTjmzdF6hQ0Os2rk+97Bp14m11XnkHnLPJ4ysV2bAV4MsB0GF?= =?us-ascii?Q?4id7mCDTim7Gk3KwkcIxlRC1A2TeCVX+8GHS3jmR4gHJxMx62y2drtAT/hMi?= =?us-ascii?Q?s0l1H6nczJOtITpUMWYt3VHrego3g7ClemncKj/knC6exBuItp9csFogoYa9?= =?us-ascii?Q?2BISqRR+beuhgqjRDZzE0lu1CwJP+gGTWkHDNwmCJdBxAMMTvup2MNfczGxz?= =?us-ascii?Q?9F6IIm6K+p67R8B7k1iv8mevOvwIzvwFZ30NyU4BgDu5CkwuYzzorycojS9/?= =?us-ascii?Q?k/a5jNiIdc=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0510; 6:7fJ9nZ9i9q23g8zW3YjOR4Nw3iziwnptqnUz/n93VtdmXy8EH4NbTgA3ld0ZrYCM9HMpLmBpSANpftZlLGpT5O11qno6HO76aIs0wAVhZAb1jIZ4kfdCaWtPVN3MyqdbPzkv7t7f1f4ABcCARtKZxzA/QnKJpPq7vMjeA7B5FSHmEpaRPtHiHEmH8SVY44f8CH6hqP/oIVkewDKBP5HtxumeyEXIZ4TojfgSUAAWG95lkkWObZAfPd6WA6jvmXse8NLIxeZHNjuxMX62zpEg9vflHNWW1lnGBfXUmjZSQdGzqRN058eWQQLf5AAikldZxsDeqR/TUHHMjcKAhxJeN26z5PnrfTo8STpc+RM7QlA=; 5:K4R/1gGWfCstroXDHEzrhlIU8gJOyCy16yhaA21eChZzvYFwlr9BqFD2Yt6EPF3AqJbRx8zw/cRzAwmwu+VjiqcGWrei5vNtWOB2McBQYA7+iHhHJxImiot0vzuxfSxN9rsPeYvQ9RRhPhp7lZ6IiJCi5T4rjR/8fRHys/EoXFM=; 24:QqmI3LtMPeUaQF8ytCRykI/DlQcJ5P4L66AAogT2huDbStA6wX+Pdm5bZTx91a8PZi4ZPpnXfM7jnAVuzN7CobUQxQEGTRnI5Op348jQj28=; 7:7/NYCeG0rCHtHlQV5bY92MDRaPIbPD60gkd/SNit+fxspNfKEQMiDESx4pjfTytlO0mXbMSCAIy3P0/9nSWlkgHdz1YHNFzolCH6U5cURHiCjBEB8oyZCtd63fSM6hLR7c3fB4vOgwNIJIbKyY7ee8gIMPskL2GzU/UlwWJXspi9T6K6KXopePH3z9AEp066er6KtnvlgCJz0EkTmRXzr8wCFZCIL9Iq5izqkubYyxF4QmKV41Wb/Xzb676AO6EY SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0510; 20:wBEt+OpUdbgvA3qE5QCBMxHYKOS2z/cWJSCLQsC2J9UXzRmr18JVOBBqYqTr527oSzpyIyVwczlhk0KjPAQiq2qSHygdOZc9BI27u1nlK530MXQbKo+vN0zDAEmJs6yOOP1VELd/qcaYZcjNYb9jlEYZDBpWdPJCvz0+7vp2VbSLZf1TuxArdic043CJy+eZBJnrG3gHDJGz81K8VTsg9PIQBGtCNiPzUxawguDHXRKV/V2IZCBIm8P5JF/Y/yV6 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2018 21:44:50.4506 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 59e4bde5-dddc-4dfd-e254-08d55ebcb3dd X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0510 Cc: Samuel Li X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Samuel Li Reviewed-by: Daniel Vetter Reviewed-by: Christian König --- drivers/gpu/drm/drm_prime.c | 88 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index ca09ce7..e82a976 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@ -73,6 +73,9 @@ * Drivers should detect this situation and return back the gem object * from the dma-buf private. Prime will do this automatically for drivers that * use the drm_gem_prime_{import,export} helpers. + * + * GEM struct &dma_buf_ops symbols are now exported. They can be resued by + * drivers which implement GEM interface. */ struct drm_prime_member { @@ -180,6 +183,18 @@ static int drm_prime_lookup_buf_handle(struct drm_prime_file_private *prime_fpri return -ENOENT; } +/** + * drm_gem_map_attach - dma_buf attach implementation for GEM + * @dma_buf: buffer to attach device to + * @target_dev: not used + * @attach: buffer attachment data + * + * Allocates &drm_prime_attachment and calls &drm_driver.gem_prime_pin for + * device specific attachment. This can be used as the &dma_buf_ops.attach + * callback. + * + * Returns 0 on success, negative error code on failure. + */ int drm_gem_map_attach(struct dma_buf *dma_buf, struct device *target_dev, struct dma_buf_attachment *attach) { @@ -201,6 +216,14 @@ int drm_gem_map_attach(struct dma_buf *dma_buf, struct device *target_dev, } EXPORT_SYMBOL(drm_gem_map_attach); +/** + * drm_gem_map_detach - dma_buf detach implementation for GEM + * @dma_buf: buffer to detach from + * @attach: attachment to be detached + * + * Cleans up &dma_buf_attachment. This can be used as the &dma_buf_ops.detach + * callback. + */ void drm_gem_map_detach(struct dma_buf *dma_buf, struct dma_buf_attachment *attach) { @@ -255,6 +278,18 @@ void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpr } } +/** + * drm_gem_map_dma_buf - map_dma_buf implementation for GEM + * @attach: attachment whose scatterlist is to be returned + * @dir: direction of DMA transfer + * + * Calls &drm_driver.gem_prime_get_sg_table and then maps the scatterlist. This + * can be used as the &dma_buf_ops.map_dma_buf callback. + * + * Returns sg_table containing the scatterlist to be returned; returns ERR_PTR + * on error. May return -EINTR if it is interrupted by a signal. + */ + struct sg_table *drm_gem_map_dma_buf(struct dma_buf_attachment *attach, enum dma_data_direction dir) { @@ -294,6 +329,12 @@ struct sg_table *drm_gem_map_dma_buf(struct dma_buf_attachment *attach, } EXPORT_SYMBOL(drm_gem_map_dma_buf); +/** + * drm_gem_unmap_dma_buf - unmap_dma_buf implementation for GEM + * + * Not implemented. The unmap is done at drm_gem_map_detach(). This can be + * used as the &dma_buf_ops.unmap_dma_buf callback. + */ void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach, struct sg_table *sgt, enum dma_data_direction dir) @@ -351,6 +392,15 @@ void drm_gem_dmabuf_release(struct dma_buf *dma_buf) } EXPORT_SYMBOL(drm_gem_dmabuf_release); +/** + * drm_gem_dmabuf_vmap - dma_buf vmap implementation for GEM + * @dma_buf: buffer to be mapped + * + * Sets up a kernel virtual mapping. This can be used as the &dma_buf_ops.vmap + * callback. + * + * Returns the kernel virtual address. + */ void *drm_gem_dmabuf_vmap(struct dma_buf *dma_buf) { struct drm_gem_object *obj = dma_buf->priv; @@ -360,6 +410,14 @@ void *drm_gem_dmabuf_vmap(struct dma_buf *dma_buf) } EXPORT_SYMBOL(drm_gem_dmabuf_vmap); +/** + * drm_gem_dmabuf_vunmap - dma_buf vunmap implementation for GEM + * @dma_buf: buffer to be unmapped + * @vaddr: the virtual address of the buffer + * + * Releases a kernel virtual mapping. This can be used as the + * &dma_buf_ops.vunmap callback. + */ void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr) { struct drm_gem_object *obj = dma_buf->priv; @@ -369,6 +427,11 @@ void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr) } EXPORT_SYMBOL(drm_gem_dmabuf_vunmap); +/** + * drm_gem_dmabuf_kmap_atomic - map_atomic implementation for GEM + * + * Not implemented. This can be used as the &dma_buf_ops.map_atomic callback. + */ void *drm_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf, unsigned long page_num) { @@ -376,6 +439,11 @@ void *drm_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf, } EXPORT_SYMBOL(drm_gem_dmabuf_kmap_atomic); +/** + * drm_gem_dmabuf_kunmap_atomic - unmap_atomic implementation for GEM + * + * Not implemented. This can be used as the &dma_buf_ops.unmap_atomic callback. + */ void drm_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf, unsigned long page_num, void *addr) { @@ -383,12 +451,22 @@ void drm_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf, } EXPORT_SYMBOL(drm_gem_dmabuf_kunmap_atomic); +/** + * drm_gem_dmabuf_kmap - map implementation for GEM + * + * Not implemented. This can be used as the &dma_buf_ops.map callback. + */ void *drm_gem_dmabuf_kmap(struct dma_buf *dma_buf, unsigned long page_num) { return NULL; } EXPORT_SYMBOL(drm_gem_dmabuf_kmap); +/** + * drm_gem_dmabuf_kunmap - unmap implementation for GEM + * + * Not implemented. This can be used as the &dma_buf_ops.unmap callback. + */ void drm_gem_dmabuf_kunmap(struct dma_buf *dma_buf, unsigned long page_num, void *addr) { @@ -396,6 +474,16 @@ void drm_gem_dmabuf_kunmap(struct dma_buf *dma_buf, unsigned long page_num, } EXPORT_SYMBOL(drm_gem_dmabuf_kunmap); +/** + * drm_gem_dmabuf_mmap - dma_buf mmap implementation for GEM + * @dma_buf: buffer to be mapped + * @vma: virtual address range + * + * Provides memory mapping for the buffer. This can be used as the + * &dma_buf_ops.mmap callback. + * + * Returns 0 on success or a negative error code on failure. + */ int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma) { struct drm_gem_object *obj = dma_buf->priv;