From: "Heiko Stübner" <heiko@sntech.de>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Douglas Anderson <dianders@chromium.org>,
linux-samsung-soc@vger.kernel.org, Lin Huang <hl@rock-chips.com>,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
dri-devel@lists.freedesktop.org, Tomasz Figa <tfiga@chromium.org>,
linux-rockchip@lists.infradead.org,
Thierry Escande <thierry.escande@collabora.com>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Enric Balletbo i Serra <enric.balletbo@collabora.com>,
Thierry Reding <thierry.reding@gmail.com>,
Zain Wang <wzz@rock-chips.com>, Haixia Shi <hshi@chromium.org>
Subject: Re: [PATCH 2/3] drm/bridge: analogix_dp: Postpone enabling runtime power management
Date: Mon, 05 Mar 2018 13:44:12 +0100 [thread overview]
Message-ID: <1891086.K6dugOe5Z7@diego> (raw)
In-Reply-To: <20180305085741.18896-3-m.szyprowski@samsung.com>
Am Montag, 5. März 2018, 09:57:40 CET schrieb Marek Szyprowski:
> Enabling runtime power management early in analogix_dp_bind() causes
> following kernel NULL pointer dereference:
>
> Unable to handle kernel NULL pointer dereference at virtual address 000007d8
> pgd = 28ffa2e4
> [000007d8] *pgd=00000000
> Internal error: Oops: 5 [#1] PREEMPT SMP ARM
> Modules linked in:
> CPU: 6 PID: 69 Comm: kworker/6:1 Not tainted 4.16.0-rc1-00062-ge25751974ba8
> #3622 Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
> Workqueue: events deferred_probe_work_func
> PC is at analogix_dp_resume+0x8/0xc0
> LR is at pm_generic_runtime_resume+0x2c/0x38
> pc : [<c0531b98>] lr : [<c0543fec>] psr: a0000113
> sp : ee13fbd8 ip : 0000001a fp : 00000001
> r10: ee0eb080 r9 : c0552bd8 r8 : c0fb1d98
> r7 : eebb1010 r6 : eeae9808 r5 : 00000000 r4 : d4850415
> r3 : ee0ed010 r2 : b2d05e00 r1 : 00000000 r0 : 00000000
> Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
> Control: 10c5387d Table: 2000406a DAC: 00000051
> Process kworker/6:1 (pid: 69, stack limit = 0x913205b4)
> Stack: (0xee13fbd8 to 0xee140000)
> ...
> [<c0531b98>] (analogix_dp_resume) from [<c0543fec>]
> (pm_generic_runtime_resume+0x2c/0x38) [<c0543fec>]
> (pm_generic_runtime_resume) from [<c054ffb4>]
> (__genpd_runtime_resume+0x2c/0x8c) [<c054ffb4>] (__genpd_runtime_resume)
> from [<c0552d24>] (genpd_runtime_resume+0x14c/0x258) [<c0552d24>]
> (genpd_runtime_resume) from [<c0547798>] (__rpm_callback+0x134/0x214)
> [<c0547798>] (__rpm_callback) from [<c0547898>] (rpm_callback+0x20/0x80)
> [<c0547898>] (rpm_callback) from [<c0546ff4>] (rpm_resume+0x3a0/0x734)
> [<c0546ff4>] (rpm_resume) from [<c05475ec>] (__pm_runtime_resume+0x64/0x9c)
> [<c05475ec>] (__pm_runtime_resume) from [<c053b95c>]
> (__device_attach+0x8c/0x134) [<c053b95c>] (__device_attach) from
> [<c053ad08>] (bus_probe_device+0x88/0x90) [<c053ad08>] (bus_probe_device)
> from [<c05390d0>] (device_add+0x3a8/0x580) [<c05390d0>] (device_add) from
> [<c06764c4>] (i2c_register_adapter+0xd4/0x3ec) [<c06764c4>]
> (i2c_register_adapter) from [<c05321c8>] (analogix_dp_bind+0x2a0/0x410)
> [<c05321c8>] (analogix_dp_bind) from [<c0528e90>]
> (exynos_dp_bind+0x9c/0x12c) [<c0528e90>] (exynos_dp_bind) from [<c0535bc4>]
> (component_bind_all+0xfc/0x258) [<c0535bc4>] (component_bind_all) from
> [<c0522ee8>] (exynos_drm_bind+0x15c/0x28c) [<c0522ee8>] (exynos_drm_bind)
> from [<c0536378>] (try_to_bring_up_master+0x1b8/0x29c) [<c0536378>]
> (try_to_bring_up_master) from [<c05364fc>] (component_add+0xa0/0x170)
> [<c05364fc>] (component_add) from [<c0528fe4>] (exynos_dp_probe+0x64/0xb8)
> [<c0528fe4>] (exynos_dp_probe) from [<c053debc>]
> (platform_drv_probe+0x50/0xb0) [<c053debc>] (platform_drv_probe) from
> [<c053bd18>] (driver_probe_device+0x2b8/0x4a0) [<c053bd18>]
> (driver_probe_device) from [<c0539e4c>] (bus_for_each_drv+0x44/0x8c)
> [<c0539e4c>] (bus_for_each_drv) from [<c053b970>]
> (__device_attach+0xa0/0x134) [<c053b970>] (__device_attach) from
> [<c053ad08>] (bus_probe_device+0x88/0x90) [<c053ad08>] (bus_probe_device)
> from [<c053b258>] (deferred_probe_work_func+0x3c/0x168) [<c053b258>]
> (deferred_probe_work_func) from [<c014352c>] (process_one_work+0x1d0/0x7bc)
> [<c014352c>] (process_one_work) from [<c0143b84>]
> (worker_thread+0x34/0x4dc) [<c0143b84>] (worker_thread) from [<c014a30c>]
> (kthread+0x128/0x164) [<c014a30c>] (kthread) from [<c01010b4>]
> (ret_from_fork+0x14/0x20) Exception stack(0xee13ffb0 to 0xee13fff8)
> ffa0: 00000000 00000000 00000000
> 00000000 ffc0: 00000000 00000000 00000000 00000000 00000000 00000000
> 00000000 00000000 ffe0: 00000000 00000000 00000000 00000000 00000013
> 00000000
> Code: e2800e37 eafee601 e92d4070 e1a05000 (e59067d8)
> ---[ end trace bf6046013df7cab2 ]---
>
> This oops happens, because analogix_dp_bind() calls drm_dp_aux_register()
> which registers i2c adapter. I2C core tries to runtime get i2c host
> device during registration. This ends in analogix_dp_resume(), but dp
> context is NULL there. dp context is set in exynos_dp_bind() after
> executing analogix_dp_bind(). Fix this issue by postponing enabling runtime
> power management after drm_dp_aux_register().
>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
on top of current drm-misc-next on rk3288 and rk3399
Tested-by: Heiko Stuebner <heiko@sntech.de>
and the actual change also looks sane of course, so
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-03-05 12:44 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20180305085803eucas1p2ff8ab6037f5158ab338bfe5e6d7d8ccd@eucas1p2.samsung.com>
2018-03-05 8:57 ` [PATCH 0/3] Analogix DP fixes for Chromebook2 Peach-Pit (Exynos5420) Marek Szyprowski
2018-03-05 8:57 ` [PATCH 1/3] drm/bridge: analogix_dp: Don't power bridge in analogix_dp_bind Marek Szyprowski
2018-03-05 12:39 ` Heiko Stübner
2018-03-05 8:57 ` [PATCH 2/3] drm/bridge: analogix_dp: Postpone enabling runtime power management Marek Szyprowski
2018-03-05 12:44 ` Heiko Stübner [this message]
2018-03-05 8:57 ` [PATCH 3/3] drm/bridge: analogix_dp: Don't create useless connectors Marek Szyprowski
2018-03-05 12:46 ` Heiko Stübner
2018-03-07 15:31 ` [PATCH 0/3] Analogix DP fixes for Chromebook2 Peach-Pit (Exynos5420) Andrzej Hajda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1891086.K6dugOe5Z7@diego \
--to=heiko@sntech.de \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=b.zolnierkie@samsung.com \
--cc=dianders@chromium.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=enric.balletbo@collabora.com \
--cc=hl@rock-chips.com \
--cc=hshi@chromium.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=tfiga@chromium.org \
--cc=thierry.escande@collabora.com \
--cc=thierry.reding@gmail.com \
--cc=wzz@rock-chips.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox