[drm/fb-helper] BUG: unable to handle kernel paging request at 95d24c70
Thierry Reding
treding at nvidia.com
Fri Dec 19 02:15:44 PST 2014
On Thu, Dec 18, 2014 at 06:04:45PM -0800, Fengguang Wu wrote:
>
> Hi Thierry,
>
> FYI, here is another bisect result.
Thanks. Looking at the cirrus driver more closely it already employs the
big hammer upon failure and ends up calling drm_fb_helper_fini() via the
cirrus_driver_unload() call in cirrus_driver_load()'s cleanup path.
> commit 7bf2844ed14de049a4ccec26eb3d8b4c3d5c1971
> Author: Thierry Reding <treding at nvidia.com>
> AuthorDate: Wed Dec 17 16:39:59 2014 +0100
> Commit: Daniel Vetter <daniel.vetter at ffwll.ch>
> CommitDate: Wed Dec 17 22:05:08 2014 +0100
>
> drm/fb-helper: Propagate errors from initial config failure
>
> Make drm_fb_helper_initial_config() return an int rather than a bool so
> that the error can be properly propagated. While at it, update drivers
> to propagate errors further rather than just ignore them.
>
> Cc: David Airlie <airlied at linux.ie>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: Patrik Jakobsson <patrik.r.jakobsson at gmail.com>
> Cc: Rob Clark <robdclark at gmail.com>
> Cc: Tomi Valkeinen <tomi.valkeinen at ti.com>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Cc: Christian König <christian.koenig at amd.com>
> Cc: Ben Skeggs <bskeggs at redhat.com>
> Signed-off-by: Thierry Reding <treding at nvidia.com>
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> Reviewed-by: Patrik Jakobsson <patrik.r.jakobsson at gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Using the attached patch on top of this I can no longer reproduce either
this or the earlier result. I'll send a revised patch with this squashed
in.
Thanks,
Thierry
-------------- next part --------------
diff --git a/drivers/gpu/drm/cirrus/cirrus_fbdev.c b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
index 0682210b068b..f7e8c6530beb 100644
--- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
+++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
@@ -318,26 +318,20 @@ int cirrus_fbdev_init(struct cirrus_device *cdev)
ret = drm_fb_helper_init(cdev->dev, &gfbdev->helper,
cdev->num_crtc, CIRRUSFB_CONN_LIMIT);
if (ret)
- goto free;
+ return ret;
ret = drm_fb_helper_single_add_all_connectors(&gfbdev->helper);
if (ret)
- goto fini;
+ return ret;
/* disable all the possible outputs/crtcs before entering KMS mode */
drm_helper_disable_unused_functions(cdev->dev);
ret = drm_fb_helper_initial_config(&gfbdev->helper, bpp_sel);
if (ret)
- goto fini;
+ return ret;;
return 0;
-
-free:
- kfree(gfbdev);
-fini:
- drm_fb_helper_fini(&gfbdev->helper);
- return ret;
}
void cirrus_fbdev_fini(struct cirrus_device *cdev)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20141219/2a2d4b23/attachment-0001.sig>
More information about the dri-devel
mailing list