Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1614483 > unrolled thread
| Started by | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| First post | 2017-04-01 13:40 +0200 |
| Last post | 2017-04-05 12:30 +0200 |
| Articles | 15 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH v2 0/9] drm: rockchip: Fix rockchip drm unbind crash error Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
[PATCH v2 9/9] drm/rockchip: cdn-dp: Don't unregister audio dev when unbinding Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
[PATCH v2 3/9] drm: bridge: analogix: Destroy connector when unbinding Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
[PATCH v2 2/9] drm: bridge: analogix: Unregister dp aux when unbinding Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
[PATCH v2 7/9] drm/rockchip: Force disable all crtc when unload Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
Re: [PATCH v2 7/9] drm/rockchip: Force disable all crtc when unload Daniel Vetter <daniel@ffwll.ch> - 2017-04-03 10:00 +0200
Re: [PATCH v2 7/9] drm/rockchip: Force disable all crtc when unload jeffy <jeffy.chen@rock-chips.com> - 2017-04-05 12:30 +0200
[PATCH v2 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
Re: [PATCH v2 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered Daniel Vetter <daniel@ffwll.ch> - 2017-04-03 09:50 +0200
Re: [PATCH v2 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered jeffy <jeffy.chen@rock-chips.com> - 2017-04-05 03:30 +0200
[PATCH v2 1/9] drm: bridge: analogix: Detach panel when unbinding analogix dp Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
[PATCH v2 4/9] drm/rockchip: cdn-dp: Don't try to release firmware when not loaded Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
[PATCH v2 6/9] drm/rockchip: Reoder unload sequence Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 13:40 +0200
Re: [PATCH v2 6/9] drm/rockchip: Reoder unload sequence Sean Paul <seanpaul@chromium.org> - 2017-04-04 21:50 +0200
Re: [PATCH v2 6/9] drm/rockchip: Reoder unload sequence jeffy <jeffy.chen@rock-chips.com> - 2017-04-05 12:30 +0200
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 0/9] drm: rockchip: Fix rockchip drm unbind crash error |
| Message-ID | <trpxT-1Z6-5@gated-at.bofh.it> |
Verified on rk3399 chromebook kevin: 1/ stop ui && pkill -9 frecon 2/ unbind/bind drm Changes in v2: Fix some commit messages. Jeffy Chen (9): drm: bridge: analogix: Detach panel when unbinding analogix dp drm: bridge: analogix: Unregister dp aux when unbinding drm: bridge: analogix: Destroy connector when unbinding drm/rockchip: cdn-dp: Don't try to release firmware when not loaded drm/rockchip: vop: Enable pm domain when resetting vop drm/rockchip: Reoder unload sequence drm/rockchip: Force disable all crtc when unload drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered drm/rockchip: cdn-dp: Don't unregister audio dev when unbinding drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 4 +++ drivers/gpu/drm/rockchip/cdn-dp-core.c | 10 ++++--- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 7 +++-- drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 8 ++++++ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 31 +++++++++++++++------- 5 files changed, 44 insertions(+), 16 deletions(-) -- 2.1.4
[toc] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 9/9] drm/rockchip: cdn-dp: Don't unregister audio dev when unbinding |
| Message-ID | <trpxU-1Z6-7@gated-at.bofh.it> |
| In reply to | #1614483 |
In current sound framework, there's no way to unbind dai link after
unregister codec.
So move unregister codec to driver remove for now.
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
Changes in v2: None
drivers/gpu/drm/rockchip/cdn-dp-core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index a97f3f4..1deab9f 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -1091,8 +1091,6 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
goto err_free_connector;
}
- cdn_dp_audio_codec_init(dp, dev);
-
for (i = 0; i < dp->ports; i++) {
port = dp->port[i];
@@ -1127,7 +1125,6 @@ static void cdn_dp_unbind(struct device *dev, struct device *master, void *data)
struct drm_connector *connector = &dp->connector;
cancel_work_sync(&dp->event_work);
- platform_device_unregister(dp->audio_pdev);
cdn_dp_encoder_disable(encoder);
encoder->funcs->destroy(encoder);
connector->funcs->destroy(connector);
@@ -1220,6 +1217,8 @@ static int cdn_dp_probe(struct platform_device *pdev)
mutex_init(&dp->lock);
dev_set_drvdata(dev, dp);
+ cdn_dp_audio_codec_init(dp, dev);
+
return component_add(dev, &cdn_dp_component_ops);
}
@@ -1227,6 +1226,7 @@ static int cdn_dp_remove(struct platform_device *pdev)
{
struct cdn_dp_device *dp = platform_get_drvdata(pdev);
+ platform_device_unregister(dp->audio_pdev);
cdn_dp_suspend(dp->dev);
component_del(&pdev->dev, &cdn_dp_component_ops);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 3/9] drm: bridge: analogix: Destroy connector when unbinding |
| Message-ID | <trpxU-1Z6-15@gated-at.bofh.it> |
| In reply to | #1614483 |
Normally we do this in drm_mode_config_cleanup. But analogix dp's
connector is allocated in bind, and freed after unbind. So we need
to destroy it in unbind to avoid further access.
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
Changes in v2: None
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index ec47fc2..084ee8f 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1439,6 +1439,7 @@ void analogix_dp_unbind(struct device *dev, struct device *master,
struct analogix_dp_device *dp = dev_get_drvdata(dev);
analogix_dp_bridge_disable(dp->bridge);
+ dp->connector.funcs->destroy(&dp->connector);
if (dp->plat_data->panel) {
if (drm_panel_unprepare(dp->plat_data->panel))
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 2/9] drm: bridge: analogix: Unregister dp aux when unbinding |
| Message-ID | <trpxU-1Z6-17@gated-at.bofh.it> |
| In reply to | #1614483 |
The dp aux is registered when binding analogix dp.
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
Changes in v2: None
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index a3db290..ec47fc2 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1447,6 +1447,7 @@ void analogix_dp_unbind(struct device *dev, struct device *master,
DRM_ERROR("failed to detach the panel\n");
}
+ drm_dp_aux_unregister(&dp->aux);
pm_runtime_disable(dev);
}
EXPORT_SYMBOL_GPL(analogix_dp_unbind);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 7/9] drm/rockchip: Force disable all crtc when unload |
| Message-ID | <trpxU-1Z6-19@gated-at.bofh.it> |
| In reply to | #1614483 |
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- Changes in v2: None drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index a5d83cb..5dbf011 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -246,6 +246,7 @@ static void rockchip_drm_unbind(struct device *dev) rockchip_drm_fbdev_fini(drm_dev); drm_kms_helper_poll_fini(drm_dev); + drm_crtc_force_disable_all(drm_dev); drm_vblank_cleanup(drm_dev); component_unbind_all(dev, drm_dev); drm_mode_config_cleanup(drm_dev); -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Daniel Vetter <daniel@ffwll.ch> |
|---|---|
| Date | 2017-04-03 10:00 +0200 |
| Subject | Re: [PATCH v2 7/9] drm/rockchip: Force disable all crtc when unload |
| Message-ID | <ts545-3XB-11@gated-at.bofh.it> |
| In reply to | #1614487 |
On Sat, Apr 1, 2017 at 1:35 PM, Jeffy Chen <jeffy.chen@rock-chips.com> wrote: > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > index a5d83cb..5dbf011 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > @@ -246,6 +246,7 @@ static void rockchip_drm_unbind(struct device *dev) > rockchip_drm_fbdev_fini(drm_dev); > drm_kms_helper_poll_fini(drm_dev); > > + drm_crtc_force_disable_all(drm_dev); This will result in a WARN_ON in latest drm-next because rockchip is atomic, and this helper is for legacy kms drivers. You want to use drm_atomic_helper_shutdown here. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch
[toc] | [prev] | [next] | [standalone]
| From | jeffy <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-05 12:30 +0200 |
| Subject | Re: [PATCH v2 7/9] drm/rockchip: Force disable all crtc when unload |
| Message-ID | <tsQmm-1oW-21@gated-at.bofh.it> |
| In reply to | #1614947 |
Hi Daniel, On 04/03/2017 03:58 PM, Daniel Vetter wrote: > On Sat, Apr 1, 2017 at 1:35 PM, Jeffy Chen <jeffy.chen@rock-chips.com> wrote: >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c >> index a5d83cb..5dbf011 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c >> @@ -246,6 +246,7 @@ static void rockchip_drm_unbind(struct device *dev) >> rockchip_drm_fbdev_fini(drm_dev); >> drm_kms_helper_poll_fini(drm_dev); >> >> + drm_crtc_force_disable_all(drm_dev); > > This will result in a WARN_ON in latest drm-next because rockchip is > atomic, and this helper is for legacy kms drivers. You want to use > drm_atomic_helper_shutdown here. > -Daniel > oops, thanx for the notice.
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered |
| Message-ID | <trpxU-1Z6-25@gated-at.bofh.it> |
| In reply to | #1614483 |
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
Changes in v2: None
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
index df9e570..2bf8024 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
@@ -184,6 +184,9 @@ static int rockchip_gem_alloc_buf(struct rockchip_gem_object *rk_obj,
struct drm_device *drm = obj->dev;
struct rockchip_drm_private *private = drm->dev_private;
+ if (!drm->registered)
+ return -ENODEV;
+
if (private->domain)
return rockchip_gem_alloc_iommu(rk_obj, alloc_kmap);
else
@@ -208,6 +211,11 @@ static void rockchip_gem_free_dma(struct rockchip_gem_object *rk_obj)
static void rockchip_gem_free_buf(struct rockchip_gem_object *rk_obj)
{
+ struct drm_device *drm = rk_obj->base.dev;
+
+ if (!drm->registered)
+ return;
+
if (rk_obj->pages)
rockchip_gem_free_iommu(rk_obj);
else
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Daniel Vetter <daniel@ffwll.ch> |
|---|---|
| Date | 2017-04-03 09:50 +0200 |
| Subject | Re: [PATCH v2 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered |
| Message-ID | <ts4Up-3Uo-5@gated-at.bofh.it> |
| In reply to | #1614490 |
On Sat, Apr 01, 2017 at 07:35:28PM +0800, Jeffy Chen wrote:
> Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
> ---
>
> Changes in v2: None
Wut? How is this even possible? If you haven't registered the driver yet,
there's no way for userspace to call allocation functions. Anything else
is a driver bug that should be handled by fixing the driver load sequence.
The only thing I can imagine is that you init the fbdev stuff too early,
in that case pls fix that. Not apply this duct-tape here.
Thanks, Daniel
>
> drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
> index df9e570..2bf8024 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
> @@ -184,6 +184,9 @@ static int rockchip_gem_alloc_buf(struct rockchip_gem_object *rk_obj,
> struct drm_device *drm = obj->dev;
> struct rockchip_drm_private *private = drm->dev_private;
>
> + if (!drm->registered)
> + return -ENODEV;
> +
> if (private->domain)
> return rockchip_gem_alloc_iommu(rk_obj, alloc_kmap);
> else
> @@ -208,6 +211,11 @@ static void rockchip_gem_free_dma(struct rockchip_gem_object *rk_obj)
>
> static void rockchip_gem_free_buf(struct rockchip_gem_object *rk_obj)
> {
> + struct drm_device *drm = rk_obj->base.dev;
> +
> + if (!drm->registered)
> + return;
> +
> if (rk_obj->pages)
> rockchip_gem_free_iommu(rk_obj);
> else
> --
> 2.1.4
>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
[toc] | [prev] | [next] | [standalone]
| From | jeffy <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-05 03:30 +0200 |
| Subject | Re: [PATCH v2 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered |
| Message-ID | <tsHVM-4j1-9@gated-at.bofh.it> |
| In reply to | #1614942 |
Hi Daniel,
On 04/03/2017 03:41 PM, Daniel Vetter wrote:
> On Sat, Apr 01, 2017 at 07:35:28PM +0800, Jeffy Chen wrote:
>> Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
>> ---
>>
>> Changes in v2: None
>
> Wut? How is this even possible? If you haven't registered the driver yet,
> there's no way for userspace to call allocation functions. Anything else
> is a driver bug that should be handled by fixing the driver load sequence.
> The only thing I can imagine is that you init the fbdev stuff too early,
> in that case pls fix that. Not apply this duct-tape here.
after unbind drm drivers, userspace may still have the chance to call
gem ioctls before we call drm_dev_register again. and we can add a
sanity check here to avoid invalid access.
i'll try to make a better commit message in next version soon, thanx for
reply.
>
> Thanks, Daniel
>
>>
>> drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 8 ++++++++
>> 1 file changed, 8 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
>> index df9e570..2bf8024 100644
>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
>> @@ -184,6 +184,9 @@ static int rockchip_gem_alloc_buf(struct rockchip_gem_object *rk_obj,
>> struct drm_device *drm = obj->dev;
>> struct rockchip_drm_private *private = drm->dev_private;
>>
>> + if (!drm->registered)
>> + return -ENODEV;
>> +
>> if (private->domain)
>> return rockchip_gem_alloc_iommu(rk_obj, alloc_kmap);
>> else
>> @@ -208,6 +211,11 @@ static void rockchip_gem_free_dma(struct rockchip_gem_object *rk_obj)
>>
>> static void rockchip_gem_free_buf(struct rockchip_gem_object *rk_obj)
>> {
>> + struct drm_device *drm = rk_obj->base.dev;
>> +
>> + if (!drm->registered)
>> + return;
>> +
>> if (rk_obj->pages)
>> rockchip_gem_free_iommu(rk_obj);
>> else
>> --
>> 2.1.4
>>
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 1/9] drm: bridge: analogix: Detach panel when unbinding analogix dp |
| Message-ID | <trpxU-1Z6-27@gated-at.bofh.it> |
| In reply to | #1614483 |
The panel is attached when binding analogix dp.
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
Changes in v2:
Fix some commit messages.
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index e7cd105..a3db290 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1443,6 +1443,8 @@ void analogix_dp_unbind(struct device *dev, struct device *master,
if (dp->plat_data->panel) {
if (drm_panel_unprepare(dp->plat_data->panel))
DRM_ERROR("failed to turnoff the panel\n");
+ if (drm_panel_detach(dp->plat_data->panel))
+ DRM_ERROR("failed to detach the panel\n");
}
pm_runtime_disable(dev);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 4/9] drm/rockchip: cdn-dp: Don't try to release firmware when not loaded |
| Message-ID | <trpxU-1Z6-29@gated-at.bofh.it> |
| In reply to | #1614483 |
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- Changes in v2: None drivers/gpu/drm/rockchip/cdn-dp-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c index fd79a70..a97f3f4 100644 --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c @@ -1052,6 +1052,7 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data) dp->connected = false; dp->active = false; dp->active_port = -1; + dp->fw_loaded = false; INIT_WORK(&dp->event_work, cdn_dp_pd_event_work); @@ -1132,7 +1133,8 @@ static void cdn_dp_unbind(struct device *dev, struct device *master, void *data) connector->funcs->destroy(connector); pm_runtime_disable(dev); - release_firmware(dp->fw); + if (dp->fw_loaded) + release_firmware(dp->fw); kfree(dp->edid); dp->edid = NULL; } -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 13:40 +0200 |
| Subject | [PATCH v2 6/9] drm/rockchip: Reoder unload sequence |
| Message-ID | <trpxV-1Z6-33@gated-at.bofh.it> |
| In reply to | #1614483 |
We should not cleanup iommu before cleanup other resources. Reorder unload sequence, follow exynos drm. Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- Changes in v2: None drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index b360e62..a5d83cb 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -244,11 +244,13 @@ static void rockchip_drm_unbind(struct device *dev) struct drm_device *drm_dev = dev_get_drvdata(dev); rockchip_drm_fbdev_fini(drm_dev); - drm_vblank_cleanup(drm_dev); drm_kms_helper_poll_fini(drm_dev); + + drm_vblank_cleanup(drm_dev); component_unbind_all(dev, drm_dev); - rockchip_iommu_cleanup(drm_dev); drm_mode_config_cleanup(drm_dev); + rockchip_iommu_cleanup(drm_dev); + drm_dev->dev_private = NULL; drm_dev_unregister(drm_dev); drm_dev_unref(drm_dev); -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Sean Paul <seanpaul@chromium.org> |
|---|---|
| Date | 2017-04-04 21:50 +0200 |
| Subject | Re: [PATCH v2 6/9] drm/rockchip: Reoder unload sequence |
| Message-ID | <tsCCL-RD-61@gated-at.bofh.it> |
| In reply to | #1614495 |
On Sat, Apr 01, 2017 at 07:35:26PM +0800, Jeffy Chen wrote: > We should not cleanup iommu before cleanup other resources. > > Reorder unload sequence, follow exynos drm. This doesn't match the cleanup sequence in rockchip_drm_bind. Also make sure that you're unwinding the setup sequence when you cleanup (ie: take a close look at how you set things up and reverse it for cleanup). Sean > > Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> > --- > > Changes in v2: None > > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > index b360e62..a5d83cb 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > @@ -244,11 +244,13 @@ static void rockchip_drm_unbind(struct device *dev) > struct drm_device *drm_dev = dev_get_drvdata(dev); > > rockchip_drm_fbdev_fini(drm_dev); > - drm_vblank_cleanup(drm_dev); > drm_kms_helper_poll_fini(drm_dev); > + > + drm_vblank_cleanup(drm_dev); > component_unbind_all(dev, drm_dev); > - rockchip_iommu_cleanup(drm_dev); > drm_mode_config_cleanup(drm_dev); > + rockchip_iommu_cleanup(drm_dev); > + > drm_dev->dev_private = NULL; > drm_dev_unregister(drm_dev); > drm_dev_unref(drm_dev); > -- > 2.1.4 > -- Sean Paul, Software Engineer, Google / Chromium OS
[toc] | [prev] | [next] | [standalone]
| From | jeffy <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-05 12:30 +0200 |
| Subject | Re: [PATCH v2 6/9] drm/rockchip: Reoder unload sequence |
| Message-ID | <tsQmm-1oW-5@gated-at.bofh.it> |
| In reply to | #1616364 |
Hi Sean, On 04/05/2017 03:44 AM, Sean Paul wrote: > On Sat, Apr 01, 2017 at 07:35:26PM +0800, Jeffy Chen wrote: >> We should not cleanup iommu before cleanup other resources. >> >> Reorder unload sequence, follow exynos drm. > > This doesn't match the cleanup sequence in rockchip_drm_bind. Also make sure > that you're unwinding the setup sequence when you cleanup (ie: take a close look > at how you set things up and reverse it for cleanup). ok, will reoder the bind sequence too, thanx. > > Sean > >> >> Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> >> --- >> >> Changes in v2: None >> >> drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 6 ++++-- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c >> index b360e62..a5d83cb 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c >> @@ -244,11 +244,13 @@ static void rockchip_drm_unbind(struct device *dev) >> struct drm_device *drm_dev = dev_get_drvdata(dev); >> >> rockchip_drm_fbdev_fini(drm_dev); >> - drm_vblank_cleanup(drm_dev); >> drm_kms_helper_poll_fini(drm_dev); >> + >> + drm_vblank_cleanup(drm_dev); >> component_unbind_all(dev, drm_dev); >> - rockchip_iommu_cleanup(drm_dev); >> drm_mode_config_cleanup(drm_dev); >> + rockchip_iommu_cleanup(drm_dev); >> + >> drm_dev->dev_private = NULL; >> drm_dev_unregister(drm_dev); >> drm_dev_unref(drm_dev); >> -- >> 2.1.4 >> >
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web