mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-08-02 07:27:49 +00:00
Allwinner: H6: Fix OrangePi 3 ethernet
This commit is contained in:
parent
b2ff85b191
commit
226a083489
@ -327,7 +327,7 @@ index eb379cd402ac..b5dc419d92de 100644
|
|||||||
+&emac {
|
+&emac {
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <&ext_rgmii_pins>;
|
+ pinctrl-0 = <&ext_rgmii_pins>;
|
||||||
+ phy-mode = "rgmii";
|
+ phy-mode = "rgmii-txid";
|
||||||
+ phy-handle = <&ext_rgmii_phy>;
|
+ phy-handle = <&ext_rgmii_phy>;
|
||||||
+ /*
|
+ /*
|
||||||
+ * The board uses 2.5V RGMII signalling. Power sequence to enable
|
+ * The board uses 2.5V RGMII signalling. Power sequence to enable
|
||||||
|
@ -0,0 +1,82 @@
|
|||||||
|
commit 7dd307db3ce5c2de23eada9b8ba2272a470b27bd
|
||||||
|
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||||
|
Date: Tue Oct 27 22:17:48 2020 +0100
|
||||||
|
|
||||||
|
drm/shme-helpers: Fix dma_buf_mmap forwarding bug
|
||||||
|
|
||||||
|
When we forward an mmap to the dma_buf exporter, they get to own
|
||||||
|
everything. Unfortunately drm_gem_mmap_obj() overwrote
|
||||||
|
vma->vm_private_data after the driver callback, wreaking the
|
||||||
|
exporter complete. This was noticed because vb2_common_vm_close blew
|
||||||
|
up on mali gpu with panfrost.
|
||||||
|
|
||||||
|
Unfortunately drm_gem_mmap_obj also acquires a surplus reference that
|
||||||
|
we need to drop in shmem helpers, which is a bit of a mislayer
|
||||||
|
situation. Maybe the entire dma_buf_mmap forwarding should be pulled
|
||||||
|
into core gem code.
|
||||||
|
|
||||||
|
Note that the only two other drivers which forward mmap in their own
|
||||||
|
code (etnaviv and exynos) get this somewhat right by overwriting the
|
||||||
|
gem mmap code. But they seem to still have the leak. This might be a
|
||||||
|
good excuse to move these drivers over to shmem helpers completely.
|
||||||
|
|
||||||
|
Cc: Christian König <christian.koenig@amd.com>
|
||||||
|
Cc: Sumit Semwal <sumit.semwal@linaro.org>
|
||||||
|
Cc: Lucas Stach <l.stach@pengutronix.de>
|
||||||
|
Cc: Russell King <linux+etnaviv@armlinux.org.uk>
|
||||||
|
Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
|
||||||
|
Cc: Inki Dae <inki.dae@samsung.com>
|
||||||
|
Cc: Joonyoung Shim <jy0922.shim@samsung.com>
|
||||||
|
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
|
||||||
|
Cc: Kyungmin Park <kyungmin.park@samsung.com>
|
||||||
|
Fixes: 26d3ac3cb04d ("drm/shmem-helpers: Redirect mmap for imported dma-buf")
|
||||||
|
Cc: Boris Brezillon <boris.brezillon@collabora.com>
|
||||||
|
Cc: Thomas Zimmermann <tzimmermann@suse.de>
|
||||||
|
Cc: Gerd Hoffmann <kraxel@redhat.com>
|
||||||
|
Cc: Rob Herring <robh@kernel.org>
|
||||||
|
Cc: dri-devel@lists.freedesktop.org
|
||||||
|
Cc: linux-media@vger.kernel.org
|
||||||
|
Cc: linaro-mm-sig@lists.linaro.org
|
||||||
|
Cc: <stable@vger.kernel.org> # v5.9+
|
||||||
|
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
||||||
|
|
||||||
|
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
|
||||||
|
index 1da67d34e55d..d586068f5509 100644
|
||||||
|
--- a/drivers/gpu/drm/drm_gem.c
|
||||||
|
+++ b/drivers/gpu/drm/drm_gem.c
|
||||||
|
@@ -1076,6 +1076,8 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
|
||||||
|
*/
|
||||||
|
drm_gem_object_get(obj);
|
||||||
|
|
||||||
|
+ vma->vm_private_data = obj;
|
||||||
|
+
|
||||||
|
if (obj->funcs && obj->funcs->mmap) {
|
||||||
|
ret = obj->funcs->mmap(obj, vma);
|
||||||
|
if (ret) {
|
||||||
|
@@ -1096,8 +1098,6 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
|
||||||
|
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
||||||
|
}
|
||||||
|
|
||||||
|
- vma->vm_private_data = obj;
|
||||||
|
-
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(drm_gem_mmap_obj);
|
||||||
|
diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c
|
||||||
|
index fb11df7aced5..8233bda4692f 100644
|
||||||
|
--- a/drivers/gpu/drm/drm_gem_shmem_helper.c
|
||||||
|
+++ b/drivers/gpu/drm/drm_gem_shmem_helper.c
|
||||||
|
@@ -598,8 +598,13 @@ int drm_gem_shmem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
|
||||||
|
/* Remove the fake offset */
|
||||||
|
vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
|
||||||
|
|
||||||
|
- if (obj->import_attach)
|
||||||
|
+ if (obj->import_attach) {
|
||||||
|
+ /* Drop the reference drm_gem_mmap_obj() acquired.*/
|
||||||
|
+ drm_gem_object_put(obj);
|
||||||
|
+ vma->vm_private_data = NULL;
|
||||||
|
+
|
||||||
|
return dma_buf_mmap(obj->dma_buf, vma, 0);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
shmem = to_drm_gem_shmem_obj(obj);
|
Loading…
x
Reference in New Issue
Block a user