<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/gpu, branch v5.4.11</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>drm/exynos: gsc: add missed component_del</title>
<updated>2020-01-12T11:21:41+00:00</updated>
<author>
<name>Chuhong Yuan</name>
<email>hslester96@gmail.com</email>
</author>
<published>2019-11-18T11:39:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2ad182a9d06e6eaa1f32dc77f252d5e7460dc532'/>
<id>2ad182a9d06e6eaa1f32dc77f252d5e7460dc532</id>
<content type='text'>
[ Upstream commit 84c92365b20a44c363b95390ea00dfbdd786f031 ]

The driver forgets to call component_del in remove to match component_add
in probe.
Add the missed call to fix it.

Signed-off-by: Chuhong Yuan &lt;hslester96@gmail.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.net&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 84c92365b20a44c363b95390ea00dfbdd786f031 ]

The driver forgets to call component_del in remove to match component_add
in probe.
Add the missed call to fix it.

Signed-off-by: Chuhong Yuan &lt;hslester96@gmail.com&gt;
Signed-off-by: Inki Dae &lt;inki.dae@samsung.net&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/i915/execlists: Fix annotation for decoupling virtual request</title>
<updated>2020-01-09T09:20:06+00:00</updated>
<author>
<name>Chris Wilson</name>
<email>chris@chris-wilson.co.uk</email>
</author>
<published>2019-10-04T19:47:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c35de2e005b2bf1f59fa98bc69ea2dbb9a75380f'/>
<id>c35de2e005b2bf1f59fa98bc69ea2dbb9a75380f</id>
<content type='text'>
[ Upstream commit 08ad9a3846fc72b047b110b36d162ffbcf298fa2 ]

As we may signal a request and take the engine-&gt;active.lock within the
signaler, the engine submission paths have to use a nested annotation on
their requests -- but we guarantee that we can never submit on the same
engine as the signaling fence.

&lt;4&gt;[  723.763281] WARNING: possible circular locking dependency detected
&lt;4&gt;[  723.763285] 5.3.0-g80fa0e042cdb-drmtip_379+ #1 Tainted: G     U
&lt;4&gt;[  723.763288] ------------------------------------------------------
&lt;4&gt;[  723.763291] gem_exec_await/1388 is trying to acquire lock:
&lt;4&gt;[  723.763294] ffff93a7b53221d8 (&amp;engine-&gt;active.lock){..-.}, at: execlists_submit_request+0x2b/0x1e0 [i915]
&lt;4&gt;[  723.763378]
                  but task is already holding lock:
&lt;4&gt;[  723.763381] ffff93a7c25f6d20 (&amp;i915_request_get(rq)-&gt;submit/1){-.-.}, at: __i915_sw_fence_complete+0x1b2/0x250 [i915]
&lt;4&gt;[  723.763420]
                  which lock already depends on the new lock.

&lt;4&gt;[  723.763423]
                  the existing dependency chain (in reverse order) is:
&lt;4&gt;[  723.763427]
                  -&gt; #2 (&amp;i915_request_get(rq)-&gt;submit/1){-.-.}:
&lt;4&gt;[  723.763434]        _raw_spin_lock_irqsave_nested+0x39/0x50
&lt;4&gt;[  723.763478]        __i915_sw_fence_complete+0x1b2/0x250 [i915]
&lt;4&gt;[  723.763513]        intel_engine_breadcrumbs_irq+0x3aa/0x5e0 [i915]
&lt;4&gt;[  723.763600]        cs_irq_handler+0x49/0x50 [i915]
&lt;4&gt;[  723.763659]        gen11_gt_irq_handler+0x17b/0x280 [i915]
&lt;4&gt;[  723.763690]        gen11_irq_handler+0x54/0xf0 [i915]
&lt;4&gt;[  723.763695]        __handle_irq_event_percpu+0x41/0x2d0
&lt;4&gt;[  723.763699]        handle_irq_event_percpu+0x2b/0x70
&lt;4&gt;[  723.763702]        handle_irq_event+0x2f/0x50
&lt;4&gt;[  723.763706]        handle_edge_irq+0xee/0x1a0
&lt;4&gt;[  723.763709]        do_IRQ+0x7e/0x160
&lt;4&gt;[  723.763712]        ret_from_intr+0x0/0x1d
&lt;4&gt;[  723.763717]        __slab_alloc.isra.28.constprop.33+0x4f/0x70
&lt;4&gt;[  723.763720]        kmem_cache_alloc+0x28d/0x2f0
&lt;4&gt;[  723.763724]        vm_area_dup+0x15/0x40
&lt;4&gt;[  723.763727]        dup_mm+0x2dd/0x550
&lt;4&gt;[  723.763730]        copy_process+0xf21/0x1ef0
&lt;4&gt;[  723.763734]        _do_fork+0x71/0x670
&lt;4&gt;[  723.763737]        __se_sys_clone+0x6e/0xa0
&lt;4&gt;[  723.763741]        do_syscall_64+0x4f/0x210
&lt;4&gt;[  723.763744]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
&lt;4&gt;[  723.763747]
                  -&gt; #1 (&amp;(&amp;rq-&gt;lock)-&gt;rlock#2){-.-.}:
&lt;4&gt;[  723.763752]        _raw_spin_lock+0x2a/0x40
&lt;4&gt;[  723.763789]        __unwind_incomplete_requests+0x3eb/0x450 [i915]
&lt;4&gt;[  723.763825]        __execlists_submission_tasklet+0x9ec/0x1d60 [i915]
&lt;4&gt;[  723.763864]        execlists_submission_tasklet+0x34/0x50 [i915]
&lt;4&gt;[  723.763874]        tasklet_action_common.isra.5+0x47/0xb0
&lt;4&gt;[  723.763878]        __do_softirq+0xd8/0x4ae
&lt;4&gt;[  723.763881]        irq_exit+0xa9/0xc0
&lt;4&gt;[  723.763883]        smp_apic_timer_interrupt+0xb7/0x280
&lt;4&gt;[  723.763887]        apic_timer_interrupt+0xf/0x20
&lt;4&gt;[  723.763892]        cpuidle_enter_state+0xae/0x450
&lt;4&gt;[  723.763895]        cpuidle_enter+0x24/0x40
&lt;4&gt;[  723.763899]        do_idle+0x1e7/0x250
&lt;4&gt;[  723.763902]        cpu_startup_entry+0x14/0x20
&lt;4&gt;[  723.763905]        start_secondary+0x15f/0x1b0
&lt;4&gt;[  723.763908]        secondary_startup_64+0xa4/0xb0
&lt;4&gt;[  723.763911]
                  -&gt; #0 (&amp;engine-&gt;active.lock){..-.}:
&lt;4&gt;[  723.763916]        __lock_acquire+0x15d8/0x1ea0
&lt;4&gt;[  723.763919]        lock_acquire+0xa6/0x1c0
&lt;4&gt;[  723.763922]        _raw_spin_lock_irqsave+0x33/0x50
&lt;4&gt;[  723.763956]        execlists_submit_request+0x2b/0x1e0 [i915]
&lt;4&gt;[  723.764002]        submit_notify+0xa8/0x13c [i915]
&lt;4&gt;[  723.764035]        __i915_sw_fence_complete+0x81/0x250 [i915]
&lt;4&gt;[  723.764054]        i915_sw_fence_wake+0x51/0x64 [i915]
&lt;4&gt;[  723.764054]        __i915_sw_fence_complete+0x1ee/0x250 [i915]
&lt;4&gt;[  723.764054]        dma_i915_sw_fence_wake_timer+0x14/0x20 [i915]
&lt;4&gt;[  723.764054]        dma_fence_signal_locked+0x9e/0x1c0
&lt;4&gt;[  723.764054]        dma_fence_signal+0x1f/0x40
&lt;4&gt;[  723.764054]        vgem_fence_signal_ioctl+0x67/0xc0 [vgem]
&lt;4&gt;[  723.764054]        drm_ioctl_kernel+0x83/0xf0
&lt;4&gt;[  723.764054]        drm_ioctl+0x2f3/0x3b0
&lt;4&gt;[  723.764054]        do_vfs_ioctl+0xa0/0x6f0
&lt;4&gt;[  723.764054]        ksys_ioctl+0x35/0x60
&lt;4&gt;[  723.764054]        __x64_sys_ioctl+0x11/0x20
&lt;4&gt;[  723.764054]        do_syscall_64+0x4f/0x210
&lt;4&gt;[  723.764054]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
&lt;4&gt;[  723.764054]
                  other info that might help us debug this:

&lt;4&gt;[  723.764054] Chain exists of:
                    &amp;engine-&gt;active.lock --&gt; &amp;(&amp;rq-&gt;lock)-&gt;rlock#2 --&gt; &amp;i915_request_get(rq)-&gt;submit/1

&lt;4&gt;[  723.764054]  Possible unsafe locking scenario:

&lt;4&gt;[  723.764054]        CPU0                    CPU1
&lt;4&gt;[  723.764054]        ----                    ----
&lt;4&gt;[  723.764054]   lock(&amp;i915_request_get(rq)-&gt;submit/1);
&lt;4&gt;[  723.764054]                                lock(&amp;(&amp;rq-&gt;lock)-&gt;rlock#2);
&lt;4&gt;[  723.764054]                                lock(&amp;i915_request_get(rq)-&gt;submit/1);
&lt;4&gt;[  723.764054]   lock(&amp;engine-&gt;active.lock);
&lt;4&gt;[  723.764054]
                   *** DEADLOCK ***

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111862
Signed-off-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Reviewed-by: Tvrtko Ursulin &lt;tvrtko.ursulin@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191004194758.19679-1-chris@chris-wilson.co.uk
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 08ad9a3846fc72b047b110b36d162ffbcf298fa2 ]

As we may signal a request and take the engine-&gt;active.lock within the
signaler, the engine submission paths have to use a nested annotation on
their requests -- but we guarantee that we can never submit on the same
engine as the signaling fence.

&lt;4&gt;[  723.763281] WARNING: possible circular locking dependency detected
&lt;4&gt;[  723.763285] 5.3.0-g80fa0e042cdb-drmtip_379+ #1 Tainted: G     U
&lt;4&gt;[  723.763288] ------------------------------------------------------
&lt;4&gt;[  723.763291] gem_exec_await/1388 is trying to acquire lock:
&lt;4&gt;[  723.763294] ffff93a7b53221d8 (&amp;engine-&gt;active.lock){..-.}, at: execlists_submit_request+0x2b/0x1e0 [i915]
&lt;4&gt;[  723.763378]
                  but task is already holding lock:
&lt;4&gt;[  723.763381] ffff93a7c25f6d20 (&amp;i915_request_get(rq)-&gt;submit/1){-.-.}, at: __i915_sw_fence_complete+0x1b2/0x250 [i915]
&lt;4&gt;[  723.763420]
                  which lock already depends on the new lock.

&lt;4&gt;[  723.763423]
                  the existing dependency chain (in reverse order) is:
&lt;4&gt;[  723.763427]
                  -&gt; #2 (&amp;i915_request_get(rq)-&gt;submit/1){-.-.}:
&lt;4&gt;[  723.763434]        _raw_spin_lock_irqsave_nested+0x39/0x50
&lt;4&gt;[  723.763478]        __i915_sw_fence_complete+0x1b2/0x250 [i915]
&lt;4&gt;[  723.763513]        intel_engine_breadcrumbs_irq+0x3aa/0x5e0 [i915]
&lt;4&gt;[  723.763600]        cs_irq_handler+0x49/0x50 [i915]
&lt;4&gt;[  723.763659]        gen11_gt_irq_handler+0x17b/0x280 [i915]
&lt;4&gt;[  723.763690]        gen11_irq_handler+0x54/0xf0 [i915]
&lt;4&gt;[  723.763695]        __handle_irq_event_percpu+0x41/0x2d0
&lt;4&gt;[  723.763699]        handle_irq_event_percpu+0x2b/0x70
&lt;4&gt;[  723.763702]        handle_irq_event+0x2f/0x50
&lt;4&gt;[  723.763706]        handle_edge_irq+0xee/0x1a0
&lt;4&gt;[  723.763709]        do_IRQ+0x7e/0x160
&lt;4&gt;[  723.763712]        ret_from_intr+0x0/0x1d
&lt;4&gt;[  723.763717]        __slab_alloc.isra.28.constprop.33+0x4f/0x70
&lt;4&gt;[  723.763720]        kmem_cache_alloc+0x28d/0x2f0
&lt;4&gt;[  723.763724]        vm_area_dup+0x15/0x40
&lt;4&gt;[  723.763727]        dup_mm+0x2dd/0x550
&lt;4&gt;[  723.763730]        copy_process+0xf21/0x1ef0
&lt;4&gt;[  723.763734]        _do_fork+0x71/0x670
&lt;4&gt;[  723.763737]        __se_sys_clone+0x6e/0xa0
&lt;4&gt;[  723.763741]        do_syscall_64+0x4f/0x210
&lt;4&gt;[  723.763744]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
&lt;4&gt;[  723.763747]
                  -&gt; #1 (&amp;(&amp;rq-&gt;lock)-&gt;rlock#2){-.-.}:
&lt;4&gt;[  723.763752]        _raw_spin_lock+0x2a/0x40
&lt;4&gt;[  723.763789]        __unwind_incomplete_requests+0x3eb/0x450 [i915]
&lt;4&gt;[  723.763825]        __execlists_submission_tasklet+0x9ec/0x1d60 [i915]
&lt;4&gt;[  723.763864]        execlists_submission_tasklet+0x34/0x50 [i915]
&lt;4&gt;[  723.763874]        tasklet_action_common.isra.5+0x47/0xb0
&lt;4&gt;[  723.763878]        __do_softirq+0xd8/0x4ae
&lt;4&gt;[  723.763881]        irq_exit+0xa9/0xc0
&lt;4&gt;[  723.763883]        smp_apic_timer_interrupt+0xb7/0x280
&lt;4&gt;[  723.763887]        apic_timer_interrupt+0xf/0x20
&lt;4&gt;[  723.763892]        cpuidle_enter_state+0xae/0x450
&lt;4&gt;[  723.763895]        cpuidle_enter+0x24/0x40
&lt;4&gt;[  723.763899]        do_idle+0x1e7/0x250
&lt;4&gt;[  723.763902]        cpu_startup_entry+0x14/0x20
&lt;4&gt;[  723.763905]        start_secondary+0x15f/0x1b0
&lt;4&gt;[  723.763908]        secondary_startup_64+0xa4/0xb0
&lt;4&gt;[  723.763911]
                  -&gt; #0 (&amp;engine-&gt;active.lock){..-.}:
&lt;4&gt;[  723.763916]        __lock_acquire+0x15d8/0x1ea0
&lt;4&gt;[  723.763919]        lock_acquire+0xa6/0x1c0
&lt;4&gt;[  723.763922]        _raw_spin_lock_irqsave+0x33/0x50
&lt;4&gt;[  723.763956]        execlists_submit_request+0x2b/0x1e0 [i915]
&lt;4&gt;[  723.764002]        submit_notify+0xa8/0x13c [i915]
&lt;4&gt;[  723.764035]        __i915_sw_fence_complete+0x81/0x250 [i915]
&lt;4&gt;[  723.764054]        i915_sw_fence_wake+0x51/0x64 [i915]
&lt;4&gt;[  723.764054]        __i915_sw_fence_complete+0x1ee/0x250 [i915]
&lt;4&gt;[  723.764054]        dma_i915_sw_fence_wake_timer+0x14/0x20 [i915]
&lt;4&gt;[  723.764054]        dma_fence_signal_locked+0x9e/0x1c0
&lt;4&gt;[  723.764054]        dma_fence_signal+0x1f/0x40
&lt;4&gt;[  723.764054]        vgem_fence_signal_ioctl+0x67/0xc0 [vgem]
&lt;4&gt;[  723.764054]        drm_ioctl_kernel+0x83/0xf0
&lt;4&gt;[  723.764054]        drm_ioctl+0x2f3/0x3b0
&lt;4&gt;[  723.764054]        do_vfs_ioctl+0xa0/0x6f0
&lt;4&gt;[  723.764054]        ksys_ioctl+0x35/0x60
&lt;4&gt;[  723.764054]        __x64_sys_ioctl+0x11/0x20
&lt;4&gt;[  723.764054]        do_syscall_64+0x4f/0x210
&lt;4&gt;[  723.764054]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
&lt;4&gt;[  723.764054]
                  other info that might help us debug this:

&lt;4&gt;[  723.764054] Chain exists of:
                    &amp;engine-&gt;active.lock --&gt; &amp;(&amp;rq-&gt;lock)-&gt;rlock#2 --&gt; &amp;i915_request_get(rq)-&gt;submit/1

&lt;4&gt;[  723.764054]  Possible unsafe locking scenario:

&lt;4&gt;[  723.764054]        CPU0                    CPU1
&lt;4&gt;[  723.764054]        ----                    ----
&lt;4&gt;[  723.764054]   lock(&amp;i915_request_get(rq)-&gt;submit/1);
&lt;4&gt;[  723.764054]                                lock(&amp;(&amp;rq-&gt;lock)-&gt;rlock#2);
&lt;4&gt;[  723.764054]                                lock(&amp;i915_request_get(rq)-&gt;submit/1);
&lt;4&gt;[  723.764054]   lock(&amp;engine-&gt;active.lock);
&lt;4&gt;[  723.764054]
                   *** DEADLOCK ***

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111862
Signed-off-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
Reviewed-by: Tvrtko Ursulin &lt;tvrtko.ursulin@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191004194758.19679-1-chris@chris-wilson.co.uk
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/msm: include linux/sched/task.h</title>
<updated>2020-01-09T09:20:01+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2019-09-18T19:57:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=fe8adb0aae33905bdd6b682907d8c48b1857ec99'/>
<id>fe8adb0aae33905bdd6b682907d8c48b1857ec99</id>
<content type='text'>
commit 70082a52f96a45650dfc3d8cdcd2c42bdac9f6f0 upstream.

Without this header file, compile-testing may run into a missing
declaration:

drivers/gpu/drm/msm/msm_gpu.c:444:4: error: implicit declaration of function 'put_task_struct' [-Werror,-Wimplicit-function-declaration]

Fixes: 482f96324a4e ("drm/msm: Fix task dump in gpu recovery")
Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Reviewed-by: Jordan Crouse &lt;jcrouse@codeaurora.org&gt;
Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 70082a52f96a45650dfc3d8cdcd2c42bdac9f6f0 upstream.

Without this header file, compile-testing may run into a missing
declaration:

drivers/gpu/drm/msm/msm_gpu.c:444:4: error: implicit declaration of function 'put_task_struct' [-Werror,-Wimplicit-function-declaration]

Fixes: 482f96324a4e ("drm/msm: Fix task dump in gpu recovery")
Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Reviewed-by: Jordan Crouse &lt;jcrouse@codeaurora.org&gt;
Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drm/amdgpu/smu: add metrics table lock for vega20 (v2)</title>
<updated>2020-01-09T09:19:56+00:00</updated>
<author>
<name>Alex Deucher</name>
<email>alexander.deucher@amd.com</email>
</author>
<published>2019-12-17T14:51:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f72e33675f3fd2d5808efd101d737b1517154bf3'/>
<id>f72e33675f3fd2d5808efd101d737b1517154bf3</id>
<content type='text'>
commit 1c455101c6d10c99b310d6bcf613244c97854012 upstream.

To protect access to the metrics table.

v2: unlock on error

Bug: https://gitlab.freedesktop.org/drm/amd/issues/900
Reviewed-by: Kevin Wang &lt;kevin1.wang@amd.com&gt;
Reviewed-by: Evan Quan &lt;evan.quan@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 1c455101c6d10c99b310d6bcf613244c97854012 upstream.

To protect access to the metrics table.

v2: unlock on error

Bug: https://gitlab.freedesktop.org/drm/amd/issues/900
Reviewed-by: Kevin Wang &lt;kevin1.wang@amd.com&gt;
Reviewed-by: Evan Quan &lt;evan.quan@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drm/amdgpu/smu: add metrics table lock for navi (v2)</title>
<updated>2020-01-09T09:19:55+00:00</updated>
<author>
<name>Alex Deucher</name>
<email>alexander.deucher@amd.com</email>
</author>
<published>2019-12-17T14:50:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=86164784cfbe7a23f91d2cf6e0dba82d61f38c32'/>
<id>86164784cfbe7a23f91d2cf6e0dba82d61f38c32</id>
<content type='text'>
commit e0e384c398d4638e54b6d2098f0ceaafdab870ee upstream.

To protect access to the metrics table.

v2: unlock on error

Bug: https://gitlab.freedesktop.org/drm/amd/issues/900
Reviewed-by: Kevin Wang &lt;kevin1.wang@amd.com&gt;
Reviewed-by: Evan Quan &lt;evan.quan@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit e0e384c398d4638e54b6d2098f0ceaafdab870ee upstream.

To protect access to the metrics table.

v2: unlock on error

Bug: https://gitlab.freedesktop.org/drm/amd/issues/900
Reviewed-by: Kevin Wang &lt;kevin1.wang@amd.com&gt;
Reviewed-by: Evan Quan &lt;evan.quan@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drm/amdgpu/smu: add metrics table lock for arcturus (v2)</title>
<updated>2020-01-09T09:19:55+00:00</updated>
<author>
<name>Alex Deucher</name>
<email>alexander.deucher@amd.com</email>
</author>
<published>2019-12-17T14:49:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=881b399da3a160273905010a154e07bdeb003109'/>
<id>881b399da3a160273905010a154e07bdeb003109</id>
<content type='text'>
commit 1da87c9f67c98d552679974dbfc1f0f65b6a0a53 upstream.

To protect access to the metrics table.

v2: unlock on error

Bug: https://gitlab.freedesktop.org/drm/amd/issues/900
Reviewed-by: Kevin Wang &lt;kevin1.wang@amd.com&gt;
Reviewed-by: Evan Quan &lt;evan.quan@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 1da87c9f67c98d552679974dbfc1f0f65b6a0a53 upstream.

To protect access to the metrics table.

v2: unlock on error

Bug: https://gitlab.freedesktop.org/drm/amd/issues/900
Reviewed-by: Kevin Wang &lt;kevin1.wang@amd.com&gt;
Reviewed-by: Evan Quan &lt;evan.quan@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drm/amdgpu/smu: add metrics table lock</title>
<updated>2020-01-09T09:19:55+00:00</updated>
<author>
<name>Alex Deucher</name>
<email>alexander.deucher@amd.com</email>
</author>
<published>2019-12-17T14:35:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7514bbe97516963d6071c37bd06eadd9ad463d1d'/>
<id>7514bbe97516963d6071c37bd06eadd9ad463d1d</id>
<content type='text'>
commit 073d5eef9e043c2b7e3ef12bc6c879b1d248e831 upstream.

This table is used for lots of things, add it's own lock.

Bug: https://gitlab.freedesktop.org/drm/amd/issues/900
Reviewed-by: Kevin Wang &lt;kevin1.wang@amd.com&gt;
Reviewed-by: Evan Quan &lt;evan.quan@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 073d5eef9e043c2b7e3ef12bc6c879b1d248e831 upstream.

This table is used for lots of things, add it's own lock.

Bug: https://gitlab.freedesktop.org/drm/amd/issues/900
Reviewed-by: Kevin Wang &lt;kevin1.wang@amd.com&gt;
Reviewed-by: Evan Quan &lt;evan.quan@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drm/sun4i: hdmi: Remove duplicate cleanup calls</title>
<updated>2020-01-09T09:19:55+00:00</updated>
<author>
<name>Stefan Mavrodiev</name>
<email>stefan@olimex.com</email>
</author>
<published>2019-12-17T12:46:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=55ab031c0a7db9617ab437f95bda85386696d2cf'/>
<id>55ab031c0a7db9617ab437f95bda85386696d2cf</id>
<content type='text'>
commit 57177d214ee0816c4436c23d6c933ccb32c571f1 upstream.

When the HDMI unbinds drm_connector_cleanup() and drm_encoder_cleanup()
are called. This also happens when the connector and the encoder are
destroyed. This double call triggers a NULL pointer exception.

The patch fixes this by removing the cleanup calls in the unbind
function.

Cc: &lt;stable@vger.kernel.org&gt;
Fixes: 9c5681011a0c ("drm/sun4i: Add HDMI support")
Signed-off-by: Stefan Mavrodiev &lt;stefan@olimex.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191217124632.20820-1-stefan@olimex.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 57177d214ee0816c4436c23d6c933ccb32c571f1 upstream.

When the HDMI unbinds drm_connector_cleanup() and drm_encoder_cleanup()
are called. This also happens when the connector and the encoder are
destroyed. This double call triggers a NULL pointer exception.

The patch fixes this by removing the cleanup calls in the unbind
function.

Cc: &lt;stable@vger.kernel.org&gt;
Fixes: 9c5681011a0c ("drm/sun4i: Add HDMI support")
Signed-off-by: Stefan Mavrodiev &lt;stefan@olimex.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191217124632.20820-1-stefan@olimex.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drm/nouveau/kms/nv50-: fix panel scaling</title>
<updated>2020-01-09T09:19:47+00:00</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2019-12-10T02:15:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0f7cb06912f63c9f9585d694e77585008e1731db'/>
<id>0f7cb06912f63c9f9585d694e77585008e1731db</id>
<content type='text'>
[ Upstream commit 3d1890ef8023e61934e070021b06cc9f417260c0 ]

Under certain circumstances, encoder atomic_check() can be entered
without adjusted_mode having been reset to the same as mode, which
confuses the scaling logic and can lead to a misprogrammed display.

Fix this by checking against the user-provided mode directly.

Link: https://bugs.freedesktop.org/show_bug.cgi?id=108615
Link: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/464
Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 3d1890ef8023e61934e070021b06cc9f417260c0 ]

Under certain circumstances, encoder atomic_check() can be entered
without adjusted_mode having been reset to the same as mode, which
confuses the scaling logic and can lead to a misprogrammed display.

Fix this by checking against the user-provided mode directly.

Link: https://bugs.freedesktop.org/show_bug.cgi?id=108615
Link: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/464
Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/nouveau: Fix drm-core using atomic code-paths on pre-nv50 hardware</title>
<updated>2020-01-09T09:19:47+00:00</updated>
<author>
<name>Hans de Goede</name>
<email>hdegoede@redhat.com</email>
</author>
<published>2019-10-24T08:52:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bcfa071bfeaa54fec44d819305d877d7b8a14b3c'/>
<id>bcfa071bfeaa54fec44d819305d877d7b8a14b3c</id>
<content type='text'>
[ Upstream commit 64d17f25dcad518461ccf0c260544e1e379c5b35 ]

We do not support atomic modesetting on pre-nv50 hardware, but until now
our connector code was setting drm_connector-&gt;state on pre-nv50 hardware.

This causes the core to enter atomic modesetting paths in at least:

1. drm_connector_get_encoder(), returning connector-&gt;state-&gt;best_encoder
which is always 0, causing us to always report 0 as encoder_id in
the drmModeConnector struct returned by drmModeGetConnector().

2. drm_encoder_get_crtc(), returning NULL because uses_atomic get set,
causing us to always report 0 as crtc_id in the drmModeEncoder struct
returned by drmModeGetEncoder()

Which in turn confuses userspace, at least plymouth thinks that the pipe
has changed because of this and tries to reconfigure it unnecessarily.

More in general we should not set drm_connector-&gt;state in the non-atomic
code as this violates the drm-core's expectations.

This commit fixes this by using a nouveau_conn_atom struct embedded in the
nouveau_connector struct for property handling in the non-atomic case.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1706557
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 64d17f25dcad518461ccf0c260544e1e379c5b35 ]

We do not support atomic modesetting on pre-nv50 hardware, but until now
our connector code was setting drm_connector-&gt;state on pre-nv50 hardware.

This causes the core to enter atomic modesetting paths in at least:

1. drm_connector_get_encoder(), returning connector-&gt;state-&gt;best_encoder
which is always 0, causing us to always report 0 as encoder_id in
the drmModeConnector struct returned by drmModeGetConnector().

2. drm_encoder_get_crtc(), returning NULL because uses_atomic get set,
causing us to always report 0 as crtc_id in the drmModeEncoder struct
returned by drmModeGetEncoder()

Which in turn confuses userspace, at least plymouth thinks that the pipe
has changed because of this and tries to reconfigure it unnecessarily.

More in general we should not set drm_connector-&gt;state in the non-atomic
code as this violates the drm-core's expectations.

This commit fixes this by using a nouveau_conn_atom struct embedded in the
nouveau_connector struct for property handling in the non-atomic case.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1706557
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
