Skip to content

Commit ca5c8a4

Browse files
committed
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Pull drm update from Dave Airlie: "Exynos and Radeon mostly, with a dma-buf and ttm fix thrown in. It's a bit big but its mostly exynos license fix ups and I'd rather not hold those up since its legally stuff. Radeon has a couple of fixes from dma engine work, TTM is just a locking fix, and dma-buf fix has been hanging around and I finally got a chance to review it." * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (30 commits) drm/ttm: fix fence locking in ttm_buffer_object_transfer drm/prime: drop reference on imported dma-buf come from gem drm/radeon: add quirk for d3 delay during switcheroo poweron for apple macbooks drm/exynos: move finish page flip to a common place drm/exynos: fimd: modify condition in fimd resume drm/radeon: fix DMA CS parser for r6xx linear copy packet drm/radeon: split r6xx and r7xx copy_dma functions drm/exynos: Use devm_clk_get in exynos_drm_gsc.c drm/exynos: Remove redundant NULL check in exynos_drm_gsc.c drm/exynos: Remove explicit freeing using devm_* APIs in exynos_drm_gsc.c drm/exynos: Use devm_clk_get in exynos_drm_rotator.c drm/exynos: Remove redundant NULL check in exynos_drm_rotator.c drm/exynos: Remove unnecessary devm_* freeing APIs in exynos_drm_rotator.c drm/exynos: Use devm_clk_get in exynos_drm_fimc.c drm/exynos: Remove redundant NULL check drm/exynos: Remove explicit freeing using devm_* APIs in exynos_drm_fimc.c drm/exynos: Use devm_kzalloc in exynos_drm_ipp.c drm/exynos: fix gem buffer allocation type checking drm/exynos: remove needless parenthesis. drm/exynos: fix incorrect interrupt induced by m2m operation. ...
2 parents ed2c891 + e8e8962 commit ca5c8a4

48 files changed

Lines changed: 447 additions & 828 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

drivers/gpu/drm/exynos/exynos_drm_buf.c

Lines changed: 53 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,10 @@
33
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
44
* Author: Inki Dae <[email protected]>
55
*
6-
* Permission is hereby granted, free of charge, to any person obtaining a
7-
* copy of this software and associated documentation files (the "Software"),
8-
* to deal in the Software without restriction, including without limitation
9-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
10-
* and/or sell copies of the Software, and to permit persons to whom the
11-
* Software is furnished to do so, subject to the following conditions:
12-
*
13-
* The above copyright notice and this permission notice (including the next
14-
* paragraph) shall be included in all copies or substantial portions of the
15-
* Software.
16-
*
17-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20-
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21-
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22-
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23-
* OTHER DEALINGS IN THE SOFTWARE.
6+
* This program is free software; you can redistribute it and/or modify it
7+
* under the terms of the GNU General Public License as published by the
8+
* Free Software Foundation; either version 2 of the License, or (at your
9+
* option) any later version.
2410
*/
2511

2612
#include <drm/drmP.h>
@@ -29,6 +15,7 @@
2915
#include "exynos_drm_drv.h"
3016
#include "exynos_drm_gem.h"
3117
#include "exynos_drm_buf.h"
18+
#include "exynos_drm_iommu.h"
3219

3320
static int lowlevel_buffer_allocate(struct drm_device *dev,
3421
unsigned int flags, struct exynos_drm_gem_buf *buf)
@@ -51,7 +38,7 @@ static int lowlevel_buffer_allocate(struct drm_device *dev,
5138
* region will be allocated else physically contiguous
5239
* as possible.
5340
*/
54-
if (flags & EXYNOS_BO_CONTIG)
41+
if (!(flags & EXYNOS_BO_NONCONTIG))
5542
dma_set_attr(DMA_ATTR_FORCE_CONTIGUOUS, &buf->dma_attrs);
5643

5744
/*
@@ -66,14 +53,45 @@ static int lowlevel_buffer_allocate(struct drm_device *dev,
6653
dma_set_attr(attr, &buf->dma_attrs);
6754
dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, &buf->dma_attrs);
6855

69-
buf->pages = dma_alloc_attrs(dev->dev, buf->size,
70-
&buf->dma_addr, GFP_KERNEL, &buf->dma_attrs);
71-
if (!buf->pages) {
72-
DRM_ERROR("failed to allocate buffer.\n");
73-
return -ENOMEM;
56+
nr_pages = buf->size >> PAGE_SHIFT;
57+
58+
if (!is_drm_iommu_supported(dev)) {
59+
dma_addr_t start_addr;
60+
unsigned int i = 0;
61+
62+
buf->pages = kzalloc(sizeof(struct page) * nr_pages,
63+
GFP_KERNEL);
64+
if (!buf->pages) {
65+
DRM_ERROR("failed to allocate pages.\n");
66+
return -ENOMEM;
67+
}
68+
69+
buf->kvaddr = dma_alloc_attrs(dev->dev, buf->size,
70+
&buf->dma_addr, GFP_KERNEL,
71+
&buf->dma_attrs);
72+
if (!buf->kvaddr) {
73+
DRM_ERROR("failed to allocate buffer.\n");
74+
kfree(buf->pages);
75+
return -ENOMEM;
76+
}
77+
78+
start_addr = buf->dma_addr;
79+
while (i < nr_pages) {
80+
buf->pages[i] = phys_to_page(start_addr);
81+
start_addr += PAGE_SIZE;
82+
i++;
83+
}
84+
} else {
85+
86+
buf->pages = dma_alloc_attrs(dev->dev, buf->size,
87+
&buf->dma_addr, GFP_KERNEL,
88+
&buf->dma_attrs);
89+
if (!buf->pages) {
90+
DRM_ERROR("failed to allocate buffer.\n");
91+
return -ENOMEM;
92+
}
7493
}
7594

76-
nr_pages = buf->size >> PAGE_SHIFT;
7795
buf->sgt = drm_prime_pages_to_sg(buf->pages, nr_pages);
7896
if (!buf->sgt) {
7997
DRM_ERROR("failed to get sg table.\n");
@@ -92,6 +110,9 @@ static int lowlevel_buffer_allocate(struct drm_device *dev,
92110
(dma_addr_t)buf->dma_addr, &buf->dma_attrs);
93111
buf->dma_addr = (dma_addr_t)NULL;
94112

113+
if (!is_drm_iommu_supported(dev))
114+
kfree(buf->pages);
115+
95116
return ret;
96117
}
97118

@@ -114,8 +135,14 @@ static void lowlevel_buffer_deallocate(struct drm_device *dev,
114135
kfree(buf->sgt);
115136
buf->sgt = NULL;
116137

117-
dma_free_attrs(dev->dev, buf->size, buf->pages,
138+
if (!is_drm_iommu_supported(dev)) {
139+
dma_free_attrs(dev->dev, buf->size, buf->kvaddr,
118140
(dma_addr_t)buf->dma_addr, &buf->dma_attrs);
141+
kfree(buf->pages);
142+
} else
143+
dma_free_attrs(dev->dev, buf->size, buf->pages,
144+
(dma_addr_t)buf->dma_addr, &buf->dma_attrs);
145+
119146
buf->dma_addr = (dma_addr_t)NULL;
120147
}
121148

drivers/gpu/drm/exynos/exynos_drm_buf.h

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,10 @@
33
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
44
* Author: Inki Dae <[email protected]>
55
*
6-
* Permission is hereby granted, free of charge, to any person obtaining a
7-
* copy of this software and associated documentation files (the "Software"),
8-
* to deal in the Software without restriction, including without limitation
9-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
10-
* and/or sell copies of the Software, and to permit persons to whom the
11-
* Software is furnished to do so, subject to the following conditions:
12-
*
13-
* The above copyright notice and this permission notice (including the next
14-
* paragraph) shall be included in all copies or substantial portions of the
15-
* Software.
16-
*
17-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20-
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21-
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22-
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23-
* OTHER DEALINGS IN THE SOFTWARE.
6+
* This program is free software; you can redistribute it and/or modify it
7+
* under the terms of the GNU General Public License as published by the
8+
* Free Software Foundation; either version 2 of the License, or (at your
9+
* option) any later version.
2410
*/
2511

2612
#ifndef _EXYNOS_DRM_BUF_H_

drivers/gpu/drm/exynos/exynos_drm_connector.c

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,10 @@
55
* Joonyoung Shim <[email protected]>
66
* Seung-Woo Kim <[email protected]>
77
*
8-
* Permission is hereby granted, free of charge, to any person obtaining a
9-
* copy of this software and associated documentation files (the "Software"),
10-
* to deal in the Software without restriction, including without limitation
11-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
12-
* and/or sell copies of the Software, and to permit persons to whom the
13-
* Software is furnished to do so, subject to the following conditions:
14-
*
15-
* The above copyright notice and this permission notice (including the next
16-
* paragraph) shall be included in all copies or substantial portions of the
17-
* Software.
18-
*
19-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22-
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23-
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24-
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25-
* OTHER DEALINGS IN THE SOFTWARE.
8+
* This program is free software; you can redistribute it and/or modify it
9+
* under the terms of the GNU General Public License as published by the
10+
* Free Software Foundation; either version 2 of the License, or (at your
11+
* option) any later version.
2612
*/
2713

2814
#include <drm/drmP.h>

drivers/gpu/drm/exynos/exynos_drm_connector.h

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,10 @@
55
* Joonyoung Shim <[email protected]>
66
* Seung-Woo Kim <[email protected]>
77
*
8-
* Permission is hereby granted, free of charge, to any person obtaining a
9-
* copy of this software and associated documentation files (the "Software"),
10-
* to deal in the Software without restriction, including without limitation
11-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
12-
* and/or sell copies of the Software, and to permit persons to whom the
13-
* Software is furnished to do so, subject to the following conditions:
14-
*
15-
* The above copyright notice and this permission notice (including the next
16-
* paragraph) shall be included in all copies or substantial portions of the
17-
* Software.
18-
*
19-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22-
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23-
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24-
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25-
* OTHER DEALINGS IN THE SOFTWARE.
8+
* This program is free software; you can redistribute it and/or modify it
9+
* under the terms of the GNU General Public License as published by the
10+
* Free Software Foundation; either version 2 of the License, or (at your
11+
* option) any later version.
2612
*/
2713

2814
#ifndef _EXYNOS_DRM_CONNECTOR_H_

drivers/gpu/drm/exynos/exynos_drm_core.c

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,10 @@
66
* Joonyoung Shim <[email protected]>
77
* Seung-Woo Kim <[email protected]>
88
*
9-
* Permission is hereby granted, free of charge, to any person obtaining a
10-
* copy of this software and associated documentation files (the "Software"),
11-
* to deal in the Software without restriction, including without limitation
12-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
13-
* and/or sell copies of the Software, and to permit persons to whom the
14-
* Software is furnished to do so, subject to the following conditions:
15-
*
16-
* The above copyright notice and this permission notice (including the next
17-
* paragraph) shall be included in all copies or substantial portions of the
18-
* Software.
19-
*
20-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23-
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24-
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25-
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26-
* OTHER DEALINGS IN THE SOFTWARE.
9+
* This program is free software; you can redistribute it and/or modify it
10+
* under the terms of the GNU General Public License as published by the
11+
* Free Software Foundation; either version 2 of the License, or (at your
12+
* option) any later version.
2713
*/
2814

2915
#include <drm/drmP.h>

drivers/gpu/drm/exynos/exynos_drm_crtc.c

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,10 @@
66
* Joonyoung Shim <[email protected]>
77
* Seung-Woo Kim <[email protected]>
88
*
9-
* Permission is hereby granted, free of charge, to any person obtaining a
10-
* copy of this software and associated documentation files (the "Software"),
11-
* to deal in the Software without restriction, including without limitation
12-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
13-
* and/or sell copies of the Software, and to permit persons to whom the
14-
* Software is furnished to do so, subject to the following conditions:
15-
*
16-
* The above copyright notice and this permission notice (including the next
17-
* paragraph) shall be included in all copies or substantial portions of the
18-
* Software.
19-
*
20-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23-
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24-
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25-
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26-
* OTHER DEALINGS IN THE SOFTWARE.
9+
* This program is free software; you can redistribute it and/or modify it
10+
* under the terms of the GNU General Public License as published by the
11+
* Free Software Foundation; either version 2 of the License, or (at your
12+
* option) any later version.
2713
*/
2814

2915
#include <drm/drmP.h>
@@ -407,3 +393,33 @@ void exynos_drm_crtc_disable_vblank(struct drm_device *dev, int crtc)
407393
exynos_drm_fn_encoder(private->crtc[crtc], &crtc,
408394
exynos_drm_disable_vblank);
409395
}
396+
397+
void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int crtc)
398+
{
399+
struct exynos_drm_private *dev_priv = dev->dev_private;
400+
struct drm_pending_vblank_event *e, *t;
401+
struct timeval now;
402+
unsigned long flags;
403+
404+
DRM_DEBUG_KMS("%s\n", __FILE__);
405+
406+
spin_lock_irqsave(&dev->event_lock, flags);
407+
408+
list_for_each_entry_safe(e, t, &dev_priv->pageflip_event_list,
409+
base.link) {
410+
/* if event's pipe isn't same as crtc then ignore it. */
411+
if (crtc != e->pipe)
412+
continue;
413+
414+
do_gettimeofday(&now);
415+
e->event.sequence = 0;
416+
e->event.tv_sec = now.tv_sec;
417+
e->event.tv_usec = now.tv_usec;
418+
419+
list_move_tail(&e->base.link, &e->base.file_priv->event_list);
420+
wake_up_interruptible(&e->base.file_priv->event_wait);
421+
drm_vblank_put(dev, crtc);
422+
}
423+
424+
spin_unlock_irqrestore(&dev->event_lock, flags);
425+
}

drivers/gpu/drm/exynos/exynos_drm_crtc.h

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,10 @@
66
* Joonyoung Shim <[email protected]>
77
* Seung-Woo Kim <[email protected]>
88
*
9-
* Permission is hereby granted, free of charge, to any person obtaining a
10-
* copy of this software and associated documentation files (the "Software"),
11-
* to deal in the Software without restriction, including without limitation
12-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
13-
* and/or sell copies of the Software, and to permit persons to whom the
14-
* Software is furnished to do so, subject to the following conditions:
15-
*
16-
* The above copyright notice and this permission notice (including the next
17-
* paragraph) shall be included in all copies or substantial portions of the
18-
* Software.
19-
*
20-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23-
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24-
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25-
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26-
* OTHER DEALINGS IN THE SOFTWARE.
9+
* This program is free software; you can redistribute it and/or modify it
10+
* under the terms of the GNU General Public License as published by the
11+
* Free Software Foundation; either version 2 of the License, or (at your
12+
* option) any later version.
2713
*/
2814

2915
#ifndef _EXYNOS_DRM_CRTC_H_
@@ -32,5 +18,6 @@
3218
int exynos_drm_crtc_create(struct drm_device *dev, unsigned int nr);
3319
int exynos_drm_crtc_enable_vblank(struct drm_device *dev, int crtc);
3420
void exynos_drm_crtc_disable_vblank(struct drm_device *dev, int crtc);
21+
void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int crtc);
3522

3623
#endif

drivers/gpu/drm/exynos/exynos_drm_dmabuf.c

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,10 @@
33
* Copyright (c) 2012 Samsung Electronics Co., Ltd.
44
* Author: Inki Dae <[email protected]>
55
*
6-
* Permission is hereby granted, free of charge, to any person obtaining a
7-
* copy of this software and associated documentation files (the "Software"),
8-
* to deal in the Software without restriction, including without limitation
9-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
10-
* and/or sell copies of the Software, and to permit persons to whom the
11-
* Software is furnished to do so, subject to the following conditions:
12-
*
13-
* The above copyright notice and this permission notice (including the next
14-
* paragraph) shall be included in all copies or substantial portions of the
15-
* Software.
16-
*
17-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20-
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21-
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22-
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23-
* OTHER DEALINGS IN THE SOFTWARE.
6+
* This program is free software; you can redistribute it and/or modify it
7+
* under the terms of the GNU General Public License as published by the
8+
* Free Software Foundation; either version 2 of the License, or (at your
9+
* option) any later version.
2410
*/
2511

2612
#include <drm/drmP.h>
@@ -222,7 +208,7 @@ struct dma_buf *exynos_dmabuf_prime_export(struct drm_device *drm_dev,
222208
struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj);
223209

224210
return dma_buf_export(exynos_gem_obj, &exynos_dmabuf_ops,
225-
exynos_gem_obj->base.size, 0600);
211+
exynos_gem_obj->base.size, flags);
226212
}
227213

228214
struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev,
@@ -246,7 +232,12 @@ struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev,
246232

247233
/* is it from our device? */
248234
if (obj->dev == drm_dev) {
235+
/*
236+
* Importing dmabuf exported from out own gem increases
237+
* refcount on gem itself instead of f_count of dmabuf.
238+
*/
249239
drm_gem_object_reference(obj);
240+
dma_buf_put(dma_buf);
250241
return obj;
251242
}
252243
}

0 commit comments

Comments
 (0)