<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/gpu/drm, branch v4.9-rc8</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>Merge tag 'drm-intel-fixes-2016-12-01' of git://anongit.freedesktop.org/git/drm-intel into drm-fixes</title>
<updated>2016-12-03T20:31:26+00:00</updated>
<author>
<name>Dave Airlie</name>
<email>airlied@redhat.com</email>
</author>
<published>2016-12-03T20:31:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ab7cd8d83e5dba13027de66f1b008b08b30b71a4'/>
<id>ab7cd8d83e5dba13027de66f1b008b08b30b71a4</id>
<content type='text'>
2 intel fixes.

* tag 'drm-intel-fixes-2016-12-01' of git://anongit.freedesktop.org/git/drm-intel:
  drm/i915: drop the struct_mutex when wedged or trying to reset
  drm/i915: Don't touch NULL sg on i915_gem_object_get_pages_gtt() error
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
2 intel fixes.

* tag 'drm-intel-fixes-2016-12-01' of git://anongit.freedesktop.org/git/drm-intel:
  drm/i915: drop the struct_mutex when wedged or trying to reset
  drm/i915: Don't touch NULL sg on i915_gem_object_get_pages_gtt() error
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'drm-misc-fixes-2016-11-30' of git://anongit.freedesktop.org/git/drm-misc into drm-fixes</title>
<updated>2016-12-01T00:00:14+00:00</updated>
<author>
<name>Dave Airlie</name>
<email>airlied@redhat.com</email>
</author>
<published>2016-12-01T00:00:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=83fb8b055544a25ceeac34a666a2149331ea94bf'/>
<id>83fb8b055544a25ceeac34a666a2149331ea94bf</id>
<content type='text'>
single drm fix.

* tag 'drm-misc-fixes-2016-11-30' of git://anongit.freedesktop.org/git/drm-misc:
  drm: Don't call drm_for_each_crtc with a non-KMS driver
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
single drm fix.

* tag 'drm-misc-fixes-2016-11-30' of git://anongit.freedesktop.org/git/drm-misc:
  drm: Don't call drm_for_each_crtc with a non-KMS driver
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/i915: drop the struct_mutex when wedged or trying to reset</title>
<updated>2016-11-30T10:09:26+00:00</updated>
<author>
<name>Matthew Auld</name>
<email>matthew.auld@intel.com</email>
</author>
<published>2016-11-28T10:36:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e411072d5740a49cdc9d0713798c30440757e451'/>
<id>e411072d5740a49cdc9d0713798c30440757e451</id>
<content type='text'>
We grab the struct_mutex in intel_crtc_page_flip, but if we are wedged
or a reset is in progress we bail early but never seem to actually
release the lock.

Fixes: 7f1847ebf48b ("drm/i915: Simplify checking of GPU reset_counter in display pageflips")
Cc: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Signed-off-by: Matthew Auld &lt;matthew.auld@intel.com&gt;
Link: http://patchwork.freedesktop.org/patch/msgid/20161128103648.9235-1-matthew.auld@intel.com
Reviewed-by: Joonas Lahtinen &lt;joonas.lahtinen@linux.intel.com&gt;
Reviewed-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Signed-off-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v4.7+
(cherry picked from commit ddbb271aea87fc6004d3c8bcdb0710e980c7ec85)
Signed-off-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We grab the struct_mutex in intel_crtc_page_flip, but if we are wedged
or a reset is in progress we bail early but never seem to actually
release the lock.

Fixes: 7f1847ebf48b ("drm/i915: Simplify checking of GPU reset_counter in display pageflips")
Cc: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Signed-off-by: Matthew Auld &lt;matthew.auld@intel.com&gt;
Link: http://patchwork.freedesktop.org/patch/msgid/20161128103648.9235-1-matthew.auld@intel.com
Reviewed-by: Joonas Lahtinen &lt;joonas.lahtinen@linux.intel.com&gt;
Reviewed-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Signed-off-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v4.7+
(cherry picked from commit ddbb271aea87fc6004d3c8bcdb0710e980c7ec85)
Signed-off-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/i915: Don't touch NULL sg on i915_gem_object_get_pages_gtt() error</title>
<updated>2016-11-30T10:07:05+00:00</updated>
<author>
<name>Chris Wilson</name>
<email>chris@chris-wilson.co.uk</email>
</author>
<published>2016-11-14T11:29:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2420489bcb8910188578acc0c11c75445c2e4b92'/>
<id>2420489bcb8910188578acc0c11c75445c2e4b92</id>
<content type='text'>
On the DMA mapping error path, sg may be NULL (it has already been
marked as the last scatterlist entry), and we should avoid dereferencing
it again.

Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Fixes: e227330223a7 ("drm/i915: avoid leaking DMA mappings")
Signed-off-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Cc: Imre Deak &lt;imre.deak@intel.com&gt;
Cc: stable@vger.kernel.org
Link: http://patchwork.freedesktop.org/patch/msgid/20161114112930.2033-1-chris@chris-wilson.co.uk
Reviewed-by: Matthew Auld &lt;matthew.auld@intel.com&gt;
(cherry picked from commit b17993b7b29612369270567643bcff814f4b3d7f)
Signed-off-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On the DMA mapping error path, sg may be NULL (it has already been
marked as the last scatterlist entry), and we should avoid dereferencing
it again.

Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Fixes: e227330223a7 ("drm/i915: avoid leaking DMA mappings")
Signed-off-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Cc: Imre Deak &lt;imre.deak@intel.com&gt;
Cc: stable@vger.kernel.org
Link: http://patchwork.freedesktop.org/patch/msgid/20161114112930.2033-1-chris@chris-wilson.co.uk
Reviewed-by: Matthew Auld &lt;matthew.auld@intel.com&gt;
(cherry picked from commit b17993b7b29612369270567643bcff814f4b3d7f)
Signed-off-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm: Don't call drm_for_each_crtc with a non-KMS driver</title>
<updated>2016-11-30T09:13:00+00:00</updated>
<author>
<name>Michel Dänzer</name>
<email>michel.daenzer@amd.com</email>
</author>
<published>2016-11-30T08:30:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e94bd1736f1f60e916a85a80c0b0ebeaae36cce5'/>
<id>e94bd1736f1f60e916a85a80c0b0ebeaae36cce5</id>
<content type='text'>
Fixes oops if userspace calls DRM_IOCTL_GET_CAP for
 DRM_CAP_PAGE_FLIP_TARGET on a non-KMS device node. (Normal userspace
doesn't do that, discovered by syzkaller)

Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Fixes: f837297ad824 ("drm: Add DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags v2")
Cc: stable@vger.kernel.org
Signed-off-by: Michel Dänzer &lt;michel.daenzer@amd.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Link: http://patchwork.freedesktop.org/patch/msgid/20161130083002.1520-1-michel@daenzer.net
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes oops if userspace calls DRM_IOCTL_GET_CAP for
 DRM_CAP_PAGE_FLIP_TARGET on a non-KMS device node. (Normal userspace
doesn't do that, discovered by syzkaller)

Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Fixes: f837297ad824 ("drm: Add DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags v2")
Cc: stable@vger.kernel.org
Signed-off-by: Michel Dänzer &lt;michel.daenzer@amd.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Link: http://patchwork.freedesktop.org/patch/msgid/20161130083002.1520-1-michel@daenzer.net
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-upstream/hdlcd' of git://linux-arm.org/linux-ld into drm-fixes</title>
<updated>2016-11-30T04:17:13+00:00</updated>
<author>
<name>Dave Airlie</name>
<email>airlied@redhat.com</email>
</author>
<published>2016-11-30T04:17:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b14fd8efb4805ff9a3218ba16f99b58778c4441e'/>
<id>b14fd8efb4805ff9a3218ba16f99b58778c4441e</id>
<content type='text'>
Thanks for pulling the previous patch for HDLCD. Unfortunately,
yesterday Robin Murphy discovered another issue while playing with
CMA allocation sizes, which he has submitted a fix for.

* 'for-upstream/hdlcd' of git://linux-arm.org/linux-ld:
  drm: hdlcd: Fix cleanup order
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Thanks for pulling the previous patch for HDLCD. Unfortunately,
yesterday Robin Murphy discovered another issue while playing with
CMA allocation sizes, which he has submitted a fix for.

* 'for-upstream/hdlcd' of git://linux-arm.org/linux-ld:
  drm: hdlcd: Fix cleanup order
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/radeon: fix check for port PM availability</title>
<updated>2016-11-29T14:24:13+00:00</updated>
<author>
<name>Alex Deucher</name>
<email>alexander.deucher@amd.com</email>
</author>
<published>2016-11-28T22:23:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=bcfdd5d5105087e6f33dfeb08a1ca6b2c0287b61'/>
<id>bcfdd5d5105087e6f33dfeb08a1ca6b2c0287b61</id>
<content type='text'>
The ATPX method does not always exist on the dGPU, it may be located at
the iGPU. The parent device of the iGPU is the root port for which
bridge_d3 is false. This accidentally enables the legacy PM method which
conflicts with port PM and prevented the dGPU from powering on.

Ported from amdgpu commit:
drm/amdgpu: fix check for port PM availability
from Peter Wu.

Fixes: d3ac31f3b4bf9fad (drm/radeon: fix power state when port pm is unavailable (v2))
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: Peter Wu &lt;peter@lekensteyn.nl&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 4.8+
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The ATPX method does not always exist on the dGPU, it may be located at
the iGPU. The parent device of the iGPU is the root port for which
bridge_d3 is false. This accidentally enables the legacy PM method which
conflicts with port PM and prevented the dGPU from powering on.

Ported from amdgpu commit:
drm/amdgpu: fix check for port PM availability
from Peter Wu.

Fixes: d3ac31f3b4bf9fad (drm/radeon: fix power state when port pm is unavailable (v2))
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: Peter Wu &lt;peter@lekensteyn.nl&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 4.8+
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/amdgpu: fix check for port PM availability</title>
<updated>2016-11-29T14:23:39+00:00</updated>
<author>
<name>Peter Wu</name>
<email>peter@lekensteyn.nl</email>
</author>
<published>2016-11-26T14:05:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=7ac33e47d5769632010e537964c7e45498f8dc26'/>
<id>7ac33e47d5769632010e537964c7e45498f8dc26</id>
<content type='text'>
The ATPX method does not always exist on the dGPU, it may be located at
the iGPU. The parent device of the iGPU is the root port for which
bridge_d3 is false. This accidentally enables the legacy PM method which
conflicts with port PM and prevented the dGPU from powering on.

Fixes: 1db4496f167b ("drm/amdgpu: fix power state when port pm is unavailable")

Reported-and-tested-by: Mike Lothian &lt;mike@fireburn.co.uk&gt;
Signed-off-by: Peter Wu &lt;peter@lekensteyn.nl&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 4.8+
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The ATPX method does not always exist on the dGPU, it may be located at
the iGPU. The parent device of the iGPU is the root port for which
bridge_d3 is false. This accidentally enables the legacy PM method which
conflicts with port PM and prevented the dGPU from powering on.

Fixes: 1db4496f167b ("drm/amdgpu: fix power state when port pm is unavailable")

Reported-and-tested-by: Mike Lothian &lt;mike@fireburn.co.uk&gt;
Signed-off-by: Peter Wu &lt;peter@lekensteyn.nl&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 4.8+
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/amd/powerplay: initialize the soft_regs offset in struct smu7_hwmgr</title>
<updated>2016-11-28T23:22:37+00:00</updated>
<author>
<name>Rex Zhu</name>
<email>Rex.Zhu@amd.com</email>
</author>
<published>2016-11-24T05:33:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b64268d8a3f623c9b88676ad3dfacc95cfcfc62f'/>
<id>b64268d8a3f623c9b88676ad3dfacc95cfcfc62f</id>
<content type='text'>
This could lead to mclk dpm problems on some boards.

Signed-off-by: Rex Zhu &lt;Rex.Zhu@amd.com&gt;
Ack-by: Tom St Denis &lt;tom.stdenis@amd.com&gt;
Reviewed-by: Huang Rui &lt;ray.huang@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This could lead to mclk dpm problems on some boards.

Signed-off-by: Rex Zhu &lt;Rex.Zhu@amd.com&gt;
Ack-by: Tom St Denis &lt;tom.stdenis@amd.com&gt;
Reviewed-by: Huang Rui &lt;ray.huang@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm: hdlcd: Fix cleanup order</title>
<updated>2016-11-25T15:51:57+00:00</updated>
<author>
<name>Robin Murphy</name>
<email>robin.murphy@arm.com</email>
</author>
<published>2016-11-24T14:40:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=747e5a5ff2a2ae84715c33d6679ac3c5220a3aec'/>
<id>747e5a5ff2a2ae84715c33d6679ac3c5220a3aec</id>
<content type='text'>
If hdlcd_drm_bind() fails at drm_fbdev_cma_init(), its cleanup will call
drm_mode_config_cleanup() as if to balance drm_mode_config_reset(). The
net result is that drm_connector_cleanup() will clean up the active
connectors long before component_unbind_all() gets called, so when the
connector later tries to clean up itself after being unbound, Bad Things
can happen:

[    4.121888] Unable to handle kernel NULL pointer dereference at
virtual address 00000000
[    4.129951] pgd = ffffff80091e0000
[    4.133345] [00000000] *pgd=00000009ffffe003, *pud=00000009ffffe003,
*pmd=0000000000000000
[    4.141613] Internal error: Oops: 96000005 [#1] PREEMPT SMP
[    4.147144] Modules linked in:
[    4.150188] CPU: 0 PID: 122 Comm: kworker/u12:2 Not tainted
4.8.0-rc2+ #989
[    4.157097] Hardware name: ARM Juno development board (r1) (DT)
[    4.162981] Workqueue: deferwq deferred_probe_work_func
[    4.168173] task: ffffffc975d93200 task.stack: ffffffc975dac000
[    4.174055] PC is at drm_connector_cleanup+0x58/0x1c0
[    4.179074] LR is at tda998x_unbind+0x24/0x40
[    4.183401] pc : [&lt;ffffff80084c46f0&gt;] lr : [&lt;ffffff800850414c&gt;]
pstate: 00000045
[    4.190750] sp : ffffffc975dafa10
[    4.194041] x29: ffffffc975dafa10 x28: ffffffc9768152a8
[    4.199325] x27: ffffffc97ff46450 x26: ffffff8008d99000
[    4.204608] x25: dead000000000100 x24: dead000000000200
[    4.209891] x23: ffffffc976bf91e8 x22: 0000000000000000
[    4.215172] x21: ffffffc976bf9170 x20: ffffffc976bf9170
[    4.220454] x19: ffffffc976bf9018 x18: 0000000000000000
[    4.225737] x17: 0000000074ce71ee x16: 000000008ff5d35f
[    4.231019] x15: ffffffc97681e91c x14: ffffffffffffffff
[    4.236301] x13: ffffffc97681e185 x12: 0000000000000038
[    4.241583] x11: 0101010101010101 x10: 0000000000000000
[    4.246866] x9 : 0000000040000000 x8 : 0000000000210d00
[    4.252148] x7 : ffffffc97fea8c00 x6 : 000000000000001b
[    4.257430] x5 : ffffff80084b7b8c x4 : 0000000000000080
[    4.262712] x3 : ffffff8008504128 x2 : ffffffc975df3800
[    4.267993] x1 : 0000000000000000 x0 : 0000000000000000
...
[    4.750937] [&lt;ffffff80084c46f0&gt;] drm_connector_cleanup+0x58/0x1c0
[    4.756990] [&lt;ffffff800850414c&gt;] tda998x_unbind+0x24/0x40
[    4.762354] [&lt;ffffff8008507918&gt;] component_unbind.isra.4+0x28/0x50
[    4.768492] [&lt;ffffff8008507a0c&gt;] component_unbind_all+0xcc/0xd8
[    4.774373] [&lt;ffffff80084d5adc&gt;] hdlcd_drm_bind+0x234/0x418
[    4.779909] [&lt;ffffff8008507b58&gt;] try_to_bring_up_master+0x140/0x1a0
[    4.786133] [&lt;ffffff8008507c50&gt;] component_add+0x98/0x170
[    4.791496] [&lt;ffffff8008504b90&gt;] tda998x_probe+0x18/0x20
[    4.796774] [&lt;ffffff80086bf914&gt;] i2c_device_probe+0x164/0x258
[    4.802481] [&lt;ffffff800850d094&gt;] driver_probe_device+0x204/0x2b0
[    4.808447] [&lt;ffffff800850d28c&gt;] __device_attach_driver+0x9c/0xf8
[    4.814498] [&lt;ffffff800850b108&gt;] bus_for_each_drv+0x58/0x98
[    4.820033] [&lt;ffffff800850cd64&gt;] __device_attach+0xc4/0x138
[    4.825567] [&lt;ffffff800850d338&gt;] device_initial_probe+0x10/0x18
[    4.831446] [&lt;ffffff800850c124&gt;] bus_probe_device+0x94/0xa0
[    4.836981] [&lt;ffffff800850c5b0&gt;] deferred_probe_work_func+0x78/0xb0
[    4.843207] [&lt;ffffff80080d2998&gt;] process_one_work+0x118/0x378
[    4.848914] [&lt;ffffff80080d2c40&gt;] worker_thread+0x48/0x498
[    4.854276] [&lt;ffffff80080d8918&gt;] kthread+0xd0/0xe8
[    4.859036] [&lt;ffffff8008082e90&gt;] ret_from_fork+0x10/0x40
[    4.864314] Code: f2fbd5b9 f2fbd5b8 f8478ee0 eb17001f (f9400013)
[    4.870472] ---[ end trace a643cfe4ce1d838b ]---

Fix this by moving the drm_mode_config_cleanup() much later such that it
correctly balances drm_mode_config_init().

Suggested-by: Russell King &lt;linux@armlinux.org.uk&gt;
Signed-off-by: Robin Murphy &lt;robin.murphy@arm.com&gt;
Signed-off-by: Liviu Dudau &lt;Liviu.Dudau@arm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If hdlcd_drm_bind() fails at drm_fbdev_cma_init(), its cleanup will call
drm_mode_config_cleanup() as if to balance drm_mode_config_reset(). The
net result is that drm_connector_cleanup() will clean up the active
connectors long before component_unbind_all() gets called, so when the
connector later tries to clean up itself after being unbound, Bad Things
can happen:

[    4.121888] Unable to handle kernel NULL pointer dereference at
virtual address 00000000
[    4.129951] pgd = ffffff80091e0000
[    4.133345] [00000000] *pgd=00000009ffffe003, *pud=00000009ffffe003,
*pmd=0000000000000000
[    4.141613] Internal error: Oops: 96000005 [#1] PREEMPT SMP
[    4.147144] Modules linked in:
[    4.150188] CPU: 0 PID: 122 Comm: kworker/u12:2 Not tainted
4.8.0-rc2+ #989
[    4.157097] Hardware name: ARM Juno development board (r1) (DT)
[    4.162981] Workqueue: deferwq deferred_probe_work_func
[    4.168173] task: ffffffc975d93200 task.stack: ffffffc975dac000
[    4.174055] PC is at drm_connector_cleanup+0x58/0x1c0
[    4.179074] LR is at tda998x_unbind+0x24/0x40
[    4.183401] pc : [&lt;ffffff80084c46f0&gt;] lr : [&lt;ffffff800850414c&gt;]
pstate: 00000045
[    4.190750] sp : ffffffc975dafa10
[    4.194041] x29: ffffffc975dafa10 x28: ffffffc9768152a8
[    4.199325] x27: ffffffc97ff46450 x26: ffffff8008d99000
[    4.204608] x25: dead000000000100 x24: dead000000000200
[    4.209891] x23: ffffffc976bf91e8 x22: 0000000000000000
[    4.215172] x21: ffffffc976bf9170 x20: ffffffc976bf9170
[    4.220454] x19: ffffffc976bf9018 x18: 0000000000000000
[    4.225737] x17: 0000000074ce71ee x16: 000000008ff5d35f
[    4.231019] x15: ffffffc97681e91c x14: ffffffffffffffff
[    4.236301] x13: ffffffc97681e185 x12: 0000000000000038
[    4.241583] x11: 0101010101010101 x10: 0000000000000000
[    4.246866] x9 : 0000000040000000 x8 : 0000000000210d00
[    4.252148] x7 : ffffffc97fea8c00 x6 : 000000000000001b
[    4.257430] x5 : ffffff80084b7b8c x4 : 0000000000000080
[    4.262712] x3 : ffffff8008504128 x2 : ffffffc975df3800
[    4.267993] x1 : 0000000000000000 x0 : 0000000000000000
...
[    4.750937] [&lt;ffffff80084c46f0&gt;] drm_connector_cleanup+0x58/0x1c0
[    4.756990] [&lt;ffffff800850414c&gt;] tda998x_unbind+0x24/0x40
[    4.762354] [&lt;ffffff8008507918&gt;] component_unbind.isra.4+0x28/0x50
[    4.768492] [&lt;ffffff8008507a0c&gt;] component_unbind_all+0xcc/0xd8
[    4.774373] [&lt;ffffff80084d5adc&gt;] hdlcd_drm_bind+0x234/0x418
[    4.779909] [&lt;ffffff8008507b58&gt;] try_to_bring_up_master+0x140/0x1a0
[    4.786133] [&lt;ffffff8008507c50&gt;] component_add+0x98/0x170
[    4.791496] [&lt;ffffff8008504b90&gt;] tda998x_probe+0x18/0x20
[    4.796774] [&lt;ffffff80086bf914&gt;] i2c_device_probe+0x164/0x258
[    4.802481] [&lt;ffffff800850d094&gt;] driver_probe_device+0x204/0x2b0
[    4.808447] [&lt;ffffff800850d28c&gt;] __device_attach_driver+0x9c/0xf8
[    4.814498] [&lt;ffffff800850b108&gt;] bus_for_each_drv+0x58/0x98
[    4.820033] [&lt;ffffff800850cd64&gt;] __device_attach+0xc4/0x138
[    4.825567] [&lt;ffffff800850d338&gt;] device_initial_probe+0x10/0x18
[    4.831446] [&lt;ffffff800850c124&gt;] bus_probe_device+0x94/0xa0
[    4.836981] [&lt;ffffff800850c5b0&gt;] deferred_probe_work_func+0x78/0xb0
[    4.843207] [&lt;ffffff80080d2998&gt;] process_one_work+0x118/0x378
[    4.848914] [&lt;ffffff80080d2c40&gt;] worker_thread+0x48/0x498
[    4.854276] [&lt;ffffff80080d8918&gt;] kthread+0xd0/0xe8
[    4.859036] [&lt;ffffff8008082e90&gt;] ret_from_fork+0x10/0x40
[    4.864314] Code: f2fbd5b9 f2fbd5b8 f8478ee0 eb17001f (f9400013)
[    4.870472] ---[ end trace a643cfe4ce1d838b ]---

Fix this by moving the drm_mode_config_cleanup() much later such that it
correctly balances drm_mode_config_init().

Suggested-by: Russell King &lt;linux@armlinux.org.uk&gt;
Signed-off-by: Robin Murphy &lt;robin.murphy@arm.com&gt;
Signed-off-by: Liviu Dudau &lt;Liviu.Dudau@arm.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
