<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/gpu/drm, branch v4.8-rc2</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>drm/cirrus: Fix NULL pointer dereference when registering the fbdev</title>
<updated>2016-08-09T03:01:47+00:00</updated>
<author>
<name>Boris Brezillon</name>
<email>boris.brezillon@free-electrons.com</email>
</author>
<published>2016-08-09T00:16:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=36e9d08b58f44c3a02974c405ccaaa6ecfaf05b8'/>
<id>36e9d08b58f44c3a02974c405ccaaa6ecfaf05b8</id>
<content type='text'>
cirrus_modeset_init() is initializing/registering the emulated fbdev
and, since commit c61b93fe51b1 ("drm/atomic: Fix remaining places where
!funcs-&gt;best_encoder is valid"), DRM internals can access/test some of
the fields in mode_config-&gt;funcs as part of the fbdev registration
process.
Make sure dev-&gt;mode_config.funcs is properly set to avoid dereferencing
a NULL pointer.

Reported-by: Mike Marshall &lt;hubcap@omnibond.com&gt;
Reported-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
Fixes: c61b93fe51b1 ("drm/atomic: Fix remaining places where !funcs-&gt;best_encoder is valid")
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
cirrus_modeset_init() is initializing/registering the emulated fbdev
and, since commit c61b93fe51b1 ("drm/atomic: Fix remaining places where
!funcs-&gt;best_encoder is valid"), DRM internals can access/test some of
the fields in mode_config-&gt;funcs as part of the fbdev registration
process.
Make sure dev-&gt;mode_config.funcs is properly set to avoid dereferencing
a NULL pointer.

Reported-by: Mike Marshall &lt;hubcap@omnibond.com&gt;
Reported-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@free-electrons.com&gt;
Fixes: c61b93fe51b1 ("drm/atomic: Fix remaining places where !funcs-&gt;best_encoder is valid")
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/edid: Set 8 bpc color depth for displays with "DFP 1.x compliant TMDS".</title>
<updated>2016-08-08T22:56:04+00:00</updated>
<author>
<name>Mario Kleiner</name>
<email>mario.kleiner.de@gmail.com</email>
</author>
<published>2016-07-06T10:05:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=210a021dab639694600450c14b877bf3e3240adc'/>
<id>210a021dab639694600450c14b877bf3e3240adc</id>
<content type='text'>
According to E-EDID spec 1.3, table 3.9, a digital video sink with the
"DFP 1.x compliant TMDS" bit set is "signal compatible with VESA DFP 1.x
TMDS CRGB, 1 pixel / clock, up to 8 bits / color MSB aligned".

For such displays, the DFP spec 1.0, section 3.10 "EDID support" says:

"If the DFP monitor only supports EDID 1.X (1.1, 1.2, etc.)
 without extensions, the host will make the following assumptions:

 1. 24-bit MSB-aligned RGB TFT
 2. DE polarity is active high
 3. H and V syncs are active high
 4. Established CRT timings will be used
 5. Dithering will not be enabled on the host"

So if we don't know the bit depth of the display from additional
colorimetry info we should assume 8 bpc / 24 bpp by default.

This patch adds info-&gt;bpc = 8 assignement for that case.

Signed-off-by: Mario Kleiner &lt;mario.kleiner.de@gmail.com&gt;
Cc: Jani Nikula &lt;jani.nikula@intel.com&gt;
Cc: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Cc: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
According to E-EDID spec 1.3, table 3.9, a digital video sink with the
"DFP 1.x compliant TMDS" bit set is "signal compatible with VESA DFP 1.x
TMDS CRGB, 1 pixel / clock, up to 8 bits / color MSB aligned".

For such displays, the DFP spec 1.0, section 3.10 "EDID support" says:

"If the DFP monitor only supports EDID 1.X (1.1, 1.2, etc.)
 without extensions, the host will make the following assumptions:

 1. 24-bit MSB-aligned RGB TFT
 2. DE polarity is active high
 3. H and V syncs are active high
 4. Established CRT timings will be used
 5. Dithering will not be enabled on the host"

So if we don't know the bit depth of the display from additional
colorimetry info we should assume 8 bpc / 24 bpp by default.

This patch adds info-&gt;bpc = 8 assignement for that case.

Signed-off-by: Mario Kleiner &lt;mario.kleiner.de@gmail.com&gt;
Cc: Jani Nikula &lt;jani.nikula@intel.com&gt;
Cc: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Cc: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/i915/dp: Revert "drm/i915/dp: fall back to 18 bpp when sink capability is unknown"</title>
<updated>2016-08-08T22:56:01+00:00</updated>
<author>
<name>Mario Kleiner</name>
<email>mario.kleiner.de@gmail.com</email>
</author>
<published>2016-07-06T10:05:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=196f954e250943df414efd3d632254c29be38e59'/>
<id>196f954e250943df414efd3d632254c29be38e59</id>
<content type='text'>
This reverts commit 013dd9e03872
("drm/i915/dp: fall back to 18 bpp when sink capability is unknown")

This commit introduced a regression into stable kernels,
as it reduces output color depth to 6 bpc for any video
sink connected to a Displayport connector if that sink
doesn't report a specific color depth via EDID, or if
our EDID parser doesn't actually recognize the proper
bpc from EDID.

Affected are active DisplayPort-&gt;VGA converters and
active DisplayPort-&gt;DVI converters. Both should be
able to handle 8 bpc, but are degraded to 6 bpc with
this patch.

The reverted commit was meant to fix
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=105331

A followup patch implements a fix for that specific bug,
which is caused by a faulty EDID of the affected DP panel
by adding a new EDID quirk for that panel.

DP 18 bpp fallback handling and other improvements to
DP sink bpc detection will be handled for future
kernels in a separate series of patches.

Please backport to stable.

Signed-off-by: Mario Kleiner &lt;mario.kleiner.de@gmail.com&gt;
Acked-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
Cc: stable@vger.kernel.org
Cc: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Cc: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 013dd9e03872
("drm/i915/dp: fall back to 18 bpp when sink capability is unknown")

This commit introduced a regression into stable kernels,
as it reduces output color depth to 6 bpc for any video
sink connected to a Displayport connector if that sink
doesn't report a specific color depth via EDID, or if
our EDID parser doesn't actually recognize the proper
bpc from EDID.

Affected are active DisplayPort-&gt;VGA converters and
active DisplayPort-&gt;DVI converters. Both should be
able to handle 8 bpc, but are degraded to 6 bpc with
this patch.

The reverted commit was meant to fix
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=105331

A followup patch implements a fix for that specific bug,
which is caused by a faulty EDID of the affected DP panel
by adding a new EDID quirk for that panel.

DP 18 bpp fallback handling and other improvements to
DP sink bpc detection will be handled for future
kernels in a separate series of patches.

Please backport to stable.

Signed-off-by: Mario Kleiner &lt;mario.kleiner.de@gmail.com&gt;
Acked-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
Cc: stable@vger.kernel.org
Cc: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Cc: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/edid: Add 6 bpc quirk for display AEO model 0.</title>
<updated>2016-08-08T22:56:00+00:00</updated>
<author>
<name>Mario Kleiner</name>
<email>mario.kleiner.de@gmail.com</email>
</author>
<published>2016-07-06T10:05:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e10aec652f31ec61d6a0b4d00d8ef8d2b66fa0fd'/>
<id>e10aec652f31ec61d6a0b4d00d8ef8d2b66fa0fd</id>
<content type='text'>
Bugzilla https://bugzilla.kernel.org/show_bug.cgi?id=105331
reports that the "AEO model 0" display is driven with 8 bpc
without dithering by default, which looks bad because that
panel is apparently a 6 bpc DP panel with faulty EDID.

A fix for this was made by commit 013dd9e03872
("drm/i915/dp: fall back to 18 bpp when sink capability is unknown").

That commit triggers new regressions in precision for DP-&gt;DVI and
DP-&gt;VGA displays. A patch is out to revert that commit, but it will
revert video output for the AEO model 0 panel to 8 bpc without
dithering.

The EDID 1.3 of that panel, as decoded from the xrandr output
attached to that bugzilla bug report, is somewhat faulty, and beyond
other problems also sets the "DFP 1.x compliant TMDS" bit, which
according to DFP spec means to drive the panel with 8 bpc and
no dithering in absence of other colorimetry information.

Try to make the original bug reporter happy despite the
faulty EDID by adding a quirk to mark that panel as 6 bpc,
so 6 bpc output with dithering creates a nice picture.

Tested by injecting the edid from the fdo bug into a DP connector
via drm_kms_helper.edid_firmware and verifying the 6 bpc + dithering
is selected.

This patch should be backported to stable.

Signed-off-by: Mario Kleiner &lt;mario.kleiner.de@gmail.com&gt;
Cc: stable@vger.kernel.org
Cc: Jani Nikula &lt;jani.nikula@intel.com&gt;
Cc: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Cc: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Bugzilla https://bugzilla.kernel.org/show_bug.cgi?id=105331
reports that the "AEO model 0" display is driven with 8 bpc
without dithering by default, which looks bad because that
panel is apparently a 6 bpc DP panel with faulty EDID.

A fix for this was made by commit 013dd9e03872
("drm/i915/dp: fall back to 18 bpp when sink capability is unknown").

That commit triggers new regressions in precision for DP-&gt;DVI and
DP-&gt;VGA displays. A patch is out to revert that commit, but it will
revert video output for the AEO model 0 panel to 8 bpc without
dithering.

The EDID 1.3 of that panel, as decoded from the xrandr output
attached to that bugzilla bug report, is somewhat faulty, and beyond
other problems also sets the "DFP 1.x compliant TMDS" bit, which
according to DFP spec means to drive the panel with 8 bpc and
no dithering in absence of other colorimetry information.

Try to make the original bug reporter happy despite the
faulty EDID by adding a quirk to mark that panel as 6 bpc,
so 6 bpc output with dithering creates a nice picture.

Tested by injecting the edid from the fdo bug into a DP connector
via drm_kms_helper.edid_firmware and verifying the 6 bpc + dithering
is selected.

This patch should be backported to stable.

Signed-off-by: Mario Kleiner &lt;mario.kleiner.de@gmail.com&gt;
Cc: stable@vger.kernel.org
Cc: Jani Nikula &lt;jani.nikula@intel.com&gt;
Cc: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Cc: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'drm-next-4.8' of git://people.freedesktop.org/~agd5f/linux into drm-next</title>
<updated>2016-08-08T06:45:33+00:00</updated>
<author>
<name>Dave Airlie</name>
<email>airlied@redhat.com</email>
</author>
<published>2016-08-08T06:45:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4872850a19bffe486d79cccde6b0a433a2f03d1f'/>
<id>4872850a19bffe486d79cccde6b0a433a2f03d1f</id>
<content type='text'>
A few fixes for amdgpu and ttm for 4.8
- fix a ttm regression caused by the new pipelining code
- fixes for mullins on amdgpu
- updated golden settings for amdgpu

* 'drm-next-4.8' of git://people.freedesktop.org/~agd5f/linux:
  drm/ttm: Wait for a BO to become idle before unbinding it from GTT
  drm/amdgpu: update golden setting of polaris10
  drm/amdgpu: update golden setting of stoney
  drm/amdgpu: update golden setting of polaris11
  drm/amdgpu: update golden setting of carrizo
  drm/amdgpu: update golden setting of iceland
  drm/amd/amdgpu: change pptable output format from ASCII to binary
  drm/amdgpu/ci: add mullins to default case for smc ucode
  drm/amdgpu/gmc7: add missing mullins case
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A few fixes for amdgpu and ttm for 4.8
- fix a ttm regression caused by the new pipelining code
- fixes for mullins on amdgpu
- updated golden settings for amdgpu

* 'drm-next-4.8' of git://people.freedesktop.org/~agd5f/linux:
  drm/ttm: Wait for a BO to become idle before unbinding it from GTT
  drm/amdgpu: update golden setting of polaris10
  drm/amdgpu: update golden setting of stoney
  drm/amdgpu: update golden setting of polaris11
  drm/amdgpu: update golden setting of carrizo
  drm/amdgpu: update golden setting of iceland
  drm/amd/amdgpu: change pptable output format from ASCII to binary
  drm/amdgpu/ci: add mullins to default case for smc ucode
  drm/amdgpu/gmc7: add missing mullins case
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'drm-intel-next-fixes-2016-08-05' of git://anongit.freedesktop.org/drm-intel into drm-next</title>
<updated>2016-08-08T06:16:26+00:00</updated>
<author>
<name>Dave Airlie</name>
<email>airlied@redhat.com</email>
</author>
<published>2016-08-08T06:16:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e8285cec4e6d6500d1ac25ec81ced56deffdb1fb'/>
<id>e8285cec4e6d6500d1ac25ec81ced56deffdb1fb</id>
<content type='text'>
3 intel fixes.

* tag 'drm-intel-next-fixes-2016-08-05' of git://anongit.freedesktop.org/drm-intel:
  drm/i915/fbdev: Check for the framebuffer before use
  drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB
  drm/i915: Wait up to 3ms for the pcu to ack the cdclk change request on SKL
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
3 intel fixes.

* tag 'drm-intel-next-fixes-2016-08-05' of git://anongit.freedesktop.org/drm-intel:
  drm/i915/fbdev: Check for the framebuffer before use
  drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB
  drm/i915: Wait up to 3ms for the pcu to ack the cdclk change request on SKL
</pre>
</div>
</content>
</entry>
<entry>
<title>drm: Paper over locking inversion after registration rework</title>
<updated>2016-08-08T06:08:25+00:00</updated>
<author>
<name>Daniel Vetter</name>
<email>daniel.vetter@ffwll.ch</email>
</author>
<published>2016-08-04T16:35:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5c6c201ccbaf9d3901f829441d457293f7ca8ef4'/>
<id>5c6c201ccbaf9d3901f829441d457293f7ca8ef4</id>
<content type='text'>
drm_connector_register_all requires a few too many locks because our
connector_list locking is busted. Add another FIXME+hack to work
around this. This should address the below lockdep splat:

======================================================
[ INFO: possible circular locking dependency detected ]
4.7.0-rc5+ #524 Tainted: G           O
-------------------------------------------------------
kworker/u8:0/6 is trying to acquire lock:
 (&amp;dev-&gt;mode_config.mutex){+.+.+.}, at: [&lt;ffffffff815afde0&gt;] drm_modeset_lock_all+0x40/0x120

but task is already holding lock:
 ((fb_notifier_list).rwsem){++++.+}, at: [&lt;ffffffff810ac195&gt;] __blocking_notifier_call_chain+0x35/0x70

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 ((fb_notifier_list).rwsem){++++.+}:
       [&lt;ffffffff810df611&gt;] lock_acquire+0xb1/0x200
       [&lt;ffffffff819a55b4&gt;] down_write+0x44/0x80
       [&lt;ffffffff810abf91&gt;] blocking_notifier_chain_register+0x21/0xb0
       [&lt;ffffffff814c7448&gt;] fb_register_client+0x18/0x20
       [&lt;ffffffff814c6c86&gt;] backlight_device_register+0x136/0x260
       [&lt;ffffffffa0127eb2&gt;] intel_backlight_device_register+0xa2/0x160 [i915]
       [&lt;ffffffffa00f46be&gt;] intel_connector_register+0xe/0x10 [i915]
       [&lt;ffffffffa0112bfb&gt;] intel_dp_connector_register+0x1b/0x80 [i915]
       [&lt;ffffffff8159dfea&gt;] drm_connector_register+0x4a/0x80
       [&lt;ffffffff8159fe44&gt;] drm_connector_register_all+0x64/0xf0
       [&lt;ffffffff815a2a64&gt;] drm_modeset_register_all+0x174/0x1c0
       [&lt;ffffffff81599b72&gt;] drm_dev_register+0xc2/0xd0
       [&lt;ffffffffa00621d7&gt;] i915_driver_load+0x1547/0x2200 [i915]
       [&lt;ffffffffa006d80f&gt;] i915_pci_probe+0x4f/0x70 [i915]
       [&lt;ffffffff814a2135&gt;] local_pci_probe+0x45/0xa0
       [&lt;ffffffff814a349b&gt;] pci_device_probe+0xdb/0x130
       [&lt;ffffffff815c07e3&gt;] driver_probe_device+0x223/0x440
       [&lt;ffffffff815c0ad5&gt;] __driver_attach+0xd5/0x100
       [&lt;ffffffff815be386&gt;] bus_for_each_dev+0x66/0xa0
       [&lt;ffffffff815c002e&gt;] driver_attach+0x1e/0x20
       [&lt;ffffffff815bf9be&gt;] bus_add_driver+0x1ee/0x280
       [&lt;ffffffff815c1810&gt;] driver_register+0x60/0xe0
       [&lt;ffffffff814a1a10&gt;] __pci_register_driver+0x60/0x70
       [&lt;ffffffffa01a905b&gt;] i915_init+0x5b/0x62 [i915]
       [&lt;ffffffff8100042d&gt;] do_one_initcall+0x3d/0x150
       [&lt;ffffffff811a935b&gt;] do_init_module+0x5f/0x1d9
       [&lt;ffffffff81124416&gt;] load_module+0x20e6/0x27e0
       [&lt;ffffffff81124d63&gt;] SYSC_finit_module+0xc3/0xf0
       [&lt;ffffffff81124dae&gt;] SyS_finit_module+0xe/0x10
       [&lt;ffffffff819a83a9&gt;] entry_SYSCALL_64_fastpath+0x1c/0xac

-&gt; #0 (&amp;dev-&gt;mode_config.mutex){+.+.+.}:
       [&lt;ffffffff810df0ac&gt;] __lock_acquire+0x10fc/0x1260
       [&lt;ffffffff810df611&gt;] lock_acquire+0xb1/0x200
       [&lt;ffffffff819a3097&gt;] mutex_lock_nested+0x67/0x3c0
       [&lt;ffffffff815afde0&gt;] drm_modeset_lock_all+0x40/0x120
       [&lt;ffffffff8158f79b&gt;] drm_fb_helper_restore_fbdev_mode_unlocked+0x2b/0x80
       [&lt;ffffffff8158f81d&gt;] drm_fb_helper_set_par+0x2d/0x50
       [&lt;ffffffffa0105f7a&gt;] intel_fbdev_set_par+0x1a/0x60 [i915]
       [&lt;ffffffff814c13c6&gt;] fbcon_init+0x586/0x610
       [&lt;ffffffff8154d16a&gt;] visual_init+0xca/0x130
       [&lt;ffffffff8154e611&gt;] do_bind_con_driver+0x1c1/0x3a0
       [&lt;ffffffff8154eaf6&gt;] do_take_over_console+0x116/0x180
       [&lt;ffffffff814bd3a7&gt;] do_fbcon_takeover+0x57/0xb0
       [&lt;ffffffff814c1e48&gt;] fbcon_event_notify+0x658/0x750
       [&lt;ffffffff810abcae&gt;] notifier_call_chain+0x3e/0xb0
       [&lt;ffffffff810ac1ad&gt;] __blocking_notifier_call_chain+0x4d/0x70
       [&lt;ffffffff810ac1e6&gt;] blocking_notifier_call_chain+0x16/0x20
       [&lt;ffffffff814c748b&gt;] fb_notifier_call_chain+0x1b/0x20
       [&lt;ffffffff814c86b1&gt;] register_framebuffer+0x251/0x330
       [&lt;ffffffff8158fa9f&gt;] drm_fb_helper_initial_config+0x25f/0x3f0
       [&lt;ffffffffa0106b48&gt;] intel_fbdev_initial_config+0x18/0x30 [i915]
       [&lt;ffffffff810adfd8&gt;] async_run_entry_fn+0x48/0x150
       [&lt;ffffffff810a3947&gt;] process_one_work+0x1e7/0x750
       [&lt;ffffffff810a3efb&gt;] worker_thread+0x4b/0x4f0
       [&lt;ffffffff810aad4f&gt;] kthread+0xef/0x110
       [&lt;ffffffff819a85ef&gt;] ret_from_fork+0x1f/0x40

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock((fb_notifier_list).rwsem);
                               lock(&amp;dev-&gt;mode_config.mutex);
                               lock((fb_notifier_list).rwsem);
  lock(&amp;dev-&gt;mode_config.mutex);

 *** DEADLOCK ***

6 locks held by kworker/u8:0/6:
 #0:  ("events_unbound"){.+.+.+}, at: [&lt;ffffffff810a38c9&gt;] process_one_work+0x169/0x750
 #1:  ((&amp;entry-&gt;work)){+.+.+.}, at: [&lt;ffffffff810a38c9&gt;] process_one_work+0x169/0x750
 #2:  (registration_lock){+.+.+.}, at: [&lt;ffffffff814c8487&gt;] register_framebuffer+0x27/0x330
 #3:  (console_lock){+.+.+.}, at: [&lt;ffffffff814c86ce&gt;] register_framebuffer+0x26e/0x330
 #4:  (&amp;fb_info-&gt;lock){+.+.+.}, at: [&lt;ffffffff814c78dd&gt;] lock_fb_info+0x1d/0x40
 #5:  ((fb_notifier_list).rwsem){++++.+}, at: [&lt;ffffffff810ac195&gt;] __blocking_notifier_call_chain+0x35/0x70

stack backtrace:
CPU: 2 PID: 6 Comm: kworker/u8:0 Tainted: G           O    4.7.0-rc5+ #524
Hardware name: Intel Corp. Broxton P/NOTEBOOK, BIOS APLKRVPA.X64.0138.B33.1606250842 06/25/2016
Workqueue: events_unbound async_run_entry_fn
 0000000000000000 ffff8800758577f0 ffffffff814507a5 ffffffff828b9900
 ffffffff828b9900 ffff880075857830 ffffffff810dc6fa ffff880075857880
 ffff88007584d688 0000000000000005 0000000000000006 ffff88007584d6b0
Call Trace:
 [&lt;ffffffff814507a5&gt;] dump_stack+0x67/0x92
 [&lt;ffffffff810dc6fa&gt;] print_circular_bug+0x1aa/0x200
 [&lt;ffffffff810df0ac&gt;] __lock_acquire+0x10fc/0x1260
 [&lt;ffffffff810df611&gt;] lock_acquire+0xb1/0x200
 [&lt;ffffffff815afde0&gt;] ? drm_modeset_lock_all+0x40/0x120
 [&lt;ffffffff815afde0&gt;] ? drm_modeset_lock_all+0x40/0x120
 [&lt;ffffffff819a3097&gt;] mutex_lock_nested+0x67/0x3c0
 [&lt;ffffffff815afde0&gt;] ? drm_modeset_lock_all+0x40/0x120
 [&lt;ffffffff810fa85f&gt;] ? rcu_read_lock_sched_held+0x7f/0x90
 [&lt;ffffffff81208218&gt;] ? kmem_cache_alloc_trace+0x248/0x2b0
 [&lt;ffffffff815afdc5&gt;] ? drm_modeset_lock_all+0x25/0x120
 [&lt;ffffffff815afde0&gt;] drm_modeset_lock_all+0x40/0x120
 [&lt;ffffffff8158f79b&gt;] drm_fb_helper_restore_fbdev_mode_unlocked+0x2b/0x80
 [&lt;ffffffff8158f81d&gt;] drm_fb_helper_set_par+0x2d/0x50
 [&lt;ffffffffa0105f7a&gt;] intel_fbdev_set_par+0x1a/0x60 [i915]
 [&lt;ffffffff814c13c6&gt;] fbcon_init+0x586/0x610
 [&lt;ffffffff8154d16a&gt;] visual_init+0xca/0x130
 [&lt;ffffffff8154e611&gt;] do_bind_con_driver+0x1c1/0x3a0
 [&lt;ffffffff8154eaf6&gt;] do_take_over_console+0x116/0x180
 [&lt;ffffffff814bd3a7&gt;] do_fbcon_takeover+0x57/0xb0
 [&lt;ffffffff814c1e48&gt;] fbcon_event_notify+0x658/0x750
 [&lt;ffffffff810abcae&gt;] notifier_call_chain+0x3e/0xb0
 [&lt;ffffffff810ac1ad&gt;] __blocking_notifier_call_chain+0x4d/0x70
 [&lt;ffffffff810ac1e6&gt;] blocking_notifier_call_chain+0x16/0x20
 [&lt;ffffffff814c748b&gt;] fb_notifier_call_chain+0x1b/0x20
 [&lt;ffffffff814c86b1&gt;] register_framebuffer+0x251/0x330
 [&lt;ffffffff815b7e8d&gt;] ? vga_switcheroo_client_fb_set+0x5d/0x70
 [&lt;ffffffff8158fa9f&gt;] drm_fb_helper_initial_config+0x25f/0x3f0
 [&lt;ffffffffa0106b48&gt;] intel_fbdev_initial_config+0x18/0x30 [i915]
 [&lt;ffffffff810adfd8&gt;] async_run_entry_fn+0x48/0x150
 [&lt;ffffffff810a3947&gt;] process_one_work+0x1e7/0x750
 [&lt;ffffffff810a38c9&gt;] ? process_one_work+0x169/0x750
 [&lt;ffffffff810a3efb&gt;] worker_thread+0x4b/0x4f0
 [&lt;ffffffff810a3eb0&gt;] ? process_one_work+0x750/0x750
 [&lt;ffffffff810aad4f&gt;] kthread+0xef/0x110
 [&lt;ffffffff819a85ef&gt;] ret_from_fork+0x1f/0x40
 [&lt;ffffffff810aac60&gt;] ? kthread_stop+0x2e0/0x2e0

v2: Rebase onto the right branch (hand-editing patches ftw) and add more
reporters.

Reported-by: Imre Deak &lt;imre.deak@intel.com&gt;
Cc: Imre Deak &lt;imre.deak@intel.com&gt;
Cc: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Acked-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Reported-by: Jiri Kosina &lt;jikos@kernel.org&gt;
Cc: Jiri Kosina &lt;jikos@kernel.org&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@intel.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
drm_connector_register_all requires a few too many locks because our
connector_list locking is busted. Add another FIXME+hack to work
around this. This should address the below lockdep splat:

======================================================
[ INFO: possible circular locking dependency detected ]
4.7.0-rc5+ #524 Tainted: G           O
-------------------------------------------------------
kworker/u8:0/6 is trying to acquire lock:
 (&amp;dev-&gt;mode_config.mutex){+.+.+.}, at: [&lt;ffffffff815afde0&gt;] drm_modeset_lock_all+0x40/0x120

but task is already holding lock:
 ((fb_notifier_list).rwsem){++++.+}, at: [&lt;ffffffff810ac195&gt;] __blocking_notifier_call_chain+0x35/0x70

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 ((fb_notifier_list).rwsem){++++.+}:
       [&lt;ffffffff810df611&gt;] lock_acquire+0xb1/0x200
       [&lt;ffffffff819a55b4&gt;] down_write+0x44/0x80
       [&lt;ffffffff810abf91&gt;] blocking_notifier_chain_register+0x21/0xb0
       [&lt;ffffffff814c7448&gt;] fb_register_client+0x18/0x20
       [&lt;ffffffff814c6c86&gt;] backlight_device_register+0x136/0x260
       [&lt;ffffffffa0127eb2&gt;] intel_backlight_device_register+0xa2/0x160 [i915]
       [&lt;ffffffffa00f46be&gt;] intel_connector_register+0xe/0x10 [i915]
       [&lt;ffffffffa0112bfb&gt;] intel_dp_connector_register+0x1b/0x80 [i915]
       [&lt;ffffffff8159dfea&gt;] drm_connector_register+0x4a/0x80
       [&lt;ffffffff8159fe44&gt;] drm_connector_register_all+0x64/0xf0
       [&lt;ffffffff815a2a64&gt;] drm_modeset_register_all+0x174/0x1c0
       [&lt;ffffffff81599b72&gt;] drm_dev_register+0xc2/0xd0
       [&lt;ffffffffa00621d7&gt;] i915_driver_load+0x1547/0x2200 [i915]
       [&lt;ffffffffa006d80f&gt;] i915_pci_probe+0x4f/0x70 [i915]
       [&lt;ffffffff814a2135&gt;] local_pci_probe+0x45/0xa0
       [&lt;ffffffff814a349b&gt;] pci_device_probe+0xdb/0x130
       [&lt;ffffffff815c07e3&gt;] driver_probe_device+0x223/0x440
       [&lt;ffffffff815c0ad5&gt;] __driver_attach+0xd5/0x100
       [&lt;ffffffff815be386&gt;] bus_for_each_dev+0x66/0xa0
       [&lt;ffffffff815c002e&gt;] driver_attach+0x1e/0x20
       [&lt;ffffffff815bf9be&gt;] bus_add_driver+0x1ee/0x280
       [&lt;ffffffff815c1810&gt;] driver_register+0x60/0xe0
       [&lt;ffffffff814a1a10&gt;] __pci_register_driver+0x60/0x70
       [&lt;ffffffffa01a905b&gt;] i915_init+0x5b/0x62 [i915]
       [&lt;ffffffff8100042d&gt;] do_one_initcall+0x3d/0x150
       [&lt;ffffffff811a935b&gt;] do_init_module+0x5f/0x1d9
       [&lt;ffffffff81124416&gt;] load_module+0x20e6/0x27e0
       [&lt;ffffffff81124d63&gt;] SYSC_finit_module+0xc3/0xf0
       [&lt;ffffffff81124dae&gt;] SyS_finit_module+0xe/0x10
       [&lt;ffffffff819a83a9&gt;] entry_SYSCALL_64_fastpath+0x1c/0xac

-&gt; #0 (&amp;dev-&gt;mode_config.mutex){+.+.+.}:
       [&lt;ffffffff810df0ac&gt;] __lock_acquire+0x10fc/0x1260
       [&lt;ffffffff810df611&gt;] lock_acquire+0xb1/0x200
       [&lt;ffffffff819a3097&gt;] mutex_lock_nested+0x67/0x3c0
       [&lt;ffffffff815afde0&gt;] drm_modeset_lock_all+0x40/0x120
       [&lt;ffffffff8158f79b&gt;] drm_fb_helper_restore_fbdev_mode_unlocked+0x2b/0x80
       [&lt;ffffffff8158f81d&gt;] drm_fb_helper_set_par+0x2d/0x50
       [&lt;ffffffffa0105f7a&gt;] intel_fbdev_set_par+0x1a/0x60 [i915]
       [&lt;ffffffff814c13c6&gt;] fbcon_init+0x586/0x610
       [&lt;ffffffff8154d16a&gt;] visual_init+0xca/0x130
       [&lt;ffffffff8154e611&gt;] do_bind_con_driver+0x1c1/0x3a0
       [&lt;ffffffff8154eaf6&gt;] do_take_over_console+0x116/0x180
       [&lt;ffffffff814bd3a7&gt;] do_fbcon_takeover+0x57/0xb0
       [&lt;ffffffff814c1e48&gt;] fbcon_event_notify+0x658/0x750
       [&lt;ffffffff810abcae&gt;] notifier_call_chain+0x3e/0xb0
       [&lt;ffffffff810ac1ad&gt;] __blocking_notifier_call_chain+0x4d/0x70
       [&lt;ffffffff810ac1e6&gt;] blocking_notifier_call_chain+0x16/0x20
       [&lt;ffffffff814c748b&gt;] fb_notifier_call_chain+0x1b/0x20
       [&lt;ffffffff814c86b1&gt;] register_framebuffer+0x251/0x330
       [&lt;ffffffff8158fa9f&gt;] drm_fb_helper_initial_config+0x25f/0x3f0
       [&lt;ffffffffa0106b48&gt;] intel_fbdev_initial_config+0x18/0x30 [i915]
       [&lt;ffffffff810adfd8&gt;] async_run_entry_fn+0x48/0x150
       [&lt;ffffffff810a3947&gt;] process_one_work+0x1e7/0x750
       [&lt;ffffffff810a3efb&gt;] worker_thread+0x4b/0x4f0
       [&lt;ffffffff810aad4f&gt;] kthread+0xef/0x110
       [&lt;ffffffff819a85ef&gt;] ret_from_fork+0x1f/0x40

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock((fb_notifier_list).rwsem);
                               lock(&amp;dev-&gt;mode_config.mutex);
                               lock((fb_notifier_list).rwsem);
  lock(&amp;dev-&gt;mode_config.mutex);

 *** DEADLOCK ***

6 locks held by kworker/u8:0/6:
 #0:  ("events_unbound"){.+.+.+}, at: [&lt;ffffffff810a38c9&gt;] process_one_work+0x169/0x750
 #1:  ((&amp;entry-&gt;work)){+.+.+.}, at: [&lt;ffffffff810a38c9&gt;] process_one_work+0x169/0x750
 #2:  (registration_lock){+.+.+.}, at: [&lt;ffffffff814c8487&gt;] register_framebuffer+0x27/0x330
 #3:  (console_lock){+.+.+.}, at: [&lt;ffffffff814c86ce&gt;] register_framebuffer+0x26e/0x330
 #4:  (&amp;fb_info-&gt;lock){+.+.+.}, at: [&lt;ffffffff814c78dd&gt;] lock_fb_info+0x1d/0x40
 #5:  ((fb_notifier_list).rwsem){++++.+}, at: [&lt;ffffffff810ac195&gt;] __blocking_notifier_call_chain+0x35/0x70

stack backtrace:
CPU: 2 PID: 6 Comm: kworker/u8:0 Tainted: G           O    4.7.0-rc5+ #524
Hardware name: Intel Corp. Broxton P/NOTEBOOK, BIOS APLKRVPA.X64.0138.B33.1606250842 06/25/2016
Workqueue: events_unbound async_run_entry_fn
 0000000000000000 ffff8800758577f0 ffffffff814507a5 ffffffff828b9900
 ffffffff828b9900 ffff880075857830 ffffffff810dc6fa ffff880075857880
 ffff88007584d688 0000000000000005 0000000000000006 ffff88007584d6b0
Call Trace:
 [&lt;ffffffff814507a5&gt;] dump_stack+0x67/0x92
 [&lt;ffffffff810dc6fa&gt;] print_circular_bug+0x1aa/0x200
 [&lt;ffffffff810df0ac&gt;] __lock_acquire+0x10fc/0x1260
 [&lt;ffffffff810df611&gt;] lock_acquire+0xb1/0x200
 [&lt;ffffffff815afde0&gt;] ? drm_modeset_lock_all+0x40/0x120
 [&lt;ffffffff815afde0&gt;] ? drm_modeset_lock_all+0x40/0x120
 [&lt;ffffffff819a3097&gt;] mutex_lock_nested+0x67/0x3c0
 [&lt;ffffffff815afde0&gt;] ? drm_modeset_lock_all+0x40/0x120
 [&lt;ffffffff810fa85f&gt;] ? rcu_read_lock_sched_held+0x7f/0x90
 [&lt;ffffffff81208218&gt;] ? kmem_cache_alloc_trace+0x248/0x2b0
 [&lt;ffffffff815afdc5&gt;] ? drm_modeset_lock_all+0x25/0x120
 [&lt;ffffffff815afde0&gt;] drm_modeset_lock_all+0x40/0x120
 [&lt;ffffffff8158f79b&gt;] drm_fb_helper_restore_fbdev_mode_unlocked+0x2b/0x80
 [&lt;ffffffff8158f81d&gt;] drm_fb_helper_set_par+0x2d/0x50
 [&lt;ffffffffa0105f7a&gt;] intel_fbdev_set_par+0x1a/0x60 [i915]
 [&lt;ffffffff814c13c6&gt;] fbcon_init+0x586/0x610
 [&lt;ffffffff8154d16a&gt;] visual_init+0xca/0x130
 [&lt;ffffffff8154e611&gt;] do_bind_con_driver+0x1c1/0x3a0
 [&lt;ffffffff8154eaf6&gt;] do_take_over_console+0x116/0x180
 [&lt;ffffffff814bd3a7&gt;] do_fbcon_takeover+0x57/0xb0
 [&lt;ffffffff814c1e48&gt;] fbcon_event_notify+0x658/0x750
 [&lt;ffffffff810abcae&gt;] notifier_call_chain+0x3e/0xb0
 [&lt;ffffffff810ac1ad&gt;] __blocking_notifier_call_chain+0x4d/0x70
 [&lt;ffffffff810ac1e6&gt;] blocking_notifier_call_chain+0x16/0x20
 [&lt;ffffffff814c748b&gt;] fb_notifier_call_chain+0x1b/0x20
 [&lt;ffffffff814c86b1&gt;] register_framebuffer+0x251/0x330
 [&lt;ffffffff815b7e8d&gt;] ? vga_switcheroo_client_fb_set+0x5d/0x70
 [&lt;ffffffff8158fa9f&gt;] drm_fb_helper_initial_config+0x25f/0x3f0
 [&lt;ffffffffa0106b48&gt;] intel_fbdev_initial_config+0x18/0x30 [i915]
 [&lt;ffffffff810adfd8&gt;] async_run_entry_fn+0x48/0x150
 [&lt;ffffffff810a3947&gt;] process_one_work+0x1e7/0x750
 [&lt;ffffffff810a38c9&gt;] ? process_one_work+0x169/0x750
 [&lt;ffffffff810a3efb&gt;] worker_thread+0x4b/0x4f0
 [&lt;ffffffff810a3eb0&gt;] ? process_one_work+0x750/0x750
 [&lt;ffffffff810aad4f&gt;] kthread+0xef/0x110
 [&lt;ffffffff819a85ef&gt;] ret_from_fork+0x1f/0x40
 [&lt;ffffffff810aac60&gt;] ? kthread_stop+0x2e0/0x2e0

v2: Rebase onto the right branch (hand-editing patches ftw) and add more
reporters.

Reported-by: Imre Deak &lt;imre.deak@intel.com&gt;
Cc: Imre Deak &lt;imre.deak@intel.com&gt;
Cc: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Acked-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Reported-by: Jiri Kosina &lt;jikos@kernel.org&gt;
Cc: Jiri Kosina &lt;jikos@kernel.org&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@intel.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm: rcar-du: Link HDMI encoder with bridge</title>
<updated>2016-08-08T05:27:11+00:00</updated>
<author>
<name>Laurent Pinchart</name>
<email>laurent.pinchart+renesas@ideasonboard.com</email>
</author>
<published>2016-08-03T20:31:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=29986cc8a66fcc4b8ea8a01216a72f06b865360b'/>
<id>29986cc8a66fcc4b8ea8a01216a72f06b865360b</id>
<content type='text'>
The conversion of the rcar-du driver from the I2C slave encoder to the
DRM bridge API left the HDMI encoder's bridge pointer NULL, preventing
the bridge from being handled automatically by the DRM core. Fix it.

Fixes: 1d926114d8f4 ("drm: rcar-du: Remove i2c slave encoder interface for hdmi encoder")
Signed-off-by: Laurent Pinchart &lt;laurent.pinchart+renesas@ideasonboard.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The conversion of the rcar-du driver from the I2C slave encoder to the
DRM bridge API left the HDMI encoder's bridge pointer NULL, preventing
the bridge from being handled automatically by the DRM core. Fix it.

Fixes: 1d926114d8f4 ("drm: rcar-du: Remove i2c slave encoder interface for hdmi encoder")
Signed-off-by: Laurent Pinchart &lt;laurent.pinchart+renesas@ideasonboard.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'drm-for-v4.8-zpos' of git://people.freedesktop.org/~airlied/linux</title>
<updated>2016-08-07T23:35:08+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2016-08-07T23:35:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=635a4ba111e3bd0169fd549b24fe108b1f171713'/>
<id>635a4ba111e3bd0169fd549b24fe108b1f171713</id>
<content type='text'>
Pull drm zpos property support from Dave Airlie:
 "This tree was waiting on some media stuff I hadn't had time to get a
  stable branchpoint off, so I just waited until it was all in your tree
  first.

  It's been around a bit on the list and shouldn't affect anything
  outside adding the generic API and moving some ARM drivers to using
  it"

* tag 'drm-for-v4.8-zpos' of git://people.freedesktop.org/~airlied/linux:
  drm: rcar: use generic code for managing zpos plane property
  drm/exynos: use generic code for managing zpos plane property
  drm: sti: use generic zpos for plane
  drm: add generic zpos property
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull drm zpos property support from Dave Airlie:
 "This tree was waiting on some media stuff I hadn't had time to get a
  stable branchpoint off, so I just waited until it was all in your tree
  first.

  It's been around a bit on the list and shouldn't affect anything
  outside adding the generic API and moving some ARM drivers to using
  it"

* tag 'drm-for-v4.8-zpos' of git://people.freedesktop.org/~airlied/linux:
  drm: rcar: use generic code for managing zpos plane property
  drm/exynos: use generic code for managing zpos plane property
  drm: sti: use generic zpos for plane
  drm: add generic zpos property
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/ttm: Wait for a BO to become idle before unbinding it from GTT</title>
<updated>2016-08-05T17:37:02+00:00</updated>
<author>
<name>Michel Dänzer</name>
<email>michel.daenzer@amd.com</email>
</author>
<published>2016-08-05T09:36:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=34b58355ad1d9987267f071265a7de6c8e00662a'/>
<id>34b58355ad1d9987267f071265a7de6c8e00662a</id>
<content type='text'>
Fixes hangs under memory pressure, e.g. running the piglit test
tex3d-maxsize concurrently with other tests.

Fixes: 17d33bc9d6ef ("drm/ttm: drop waiting for idle in ttm_bo_evict.")
Reviewed-by: Christian König &lt;christian.koenig@amd.com&gt;
Signed-off-by: Michel Dänzer &lt;michel.daenzer@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>
Fixes hangs under memory pressure, e.g. running the piglit test
tex3d-maxsize concurrently with other tests.

Fixes: 17d33bc9d6ef ("drm/ttm: drop waiting for idle in ttm_bo_evict.")
Reviewed-by: Christian König &lt;christian.koenig@amd.com&gt;
Signed-off-by: Michel Dänzer &lt;michel.daenzer@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
