Hey Greg,
I was meant to take today off so sent the pull yesterday, but some
more stuff came in and I'd rather not sit on it,
Two fixes for amdgpu:
one corrects a use of process->mm
one fix for display code race condition that can result in a crash
Two core fixes:
One for a use-after-free in the leasing code
One for a cma/fbdev crash.
Thanks,
Dave.
drm-fixes-2018-10-05:
amdgpu and two core fixes
The following changes since commit d8938c981f58ee344687b7910a611ac345960045:
Merge branch …
[View More]'drm-tda9950-fixes' of
git://git.armlinux.org.uk/~rmk/linux-arm into drm-fixes (2018-10-04
10:32:14 +1000)
are available in the Git repository at:
git://anongit.freedesktop.org/drm/drm tags/drm-fixes-2018-10-05
for you to fetch changes up to bdf800c6fdf5674999bc0228d5040cc0ae218fa8:
Merge branch 'drm-fixes-4.19' of
git://people.freedesktop.org/~agd5f/linux into drm-fixes (2018-10-05
08:39:35 +1000)
----------------------------------------------------------------
amdgpu and two core fixes
----------------------------------------------------------------
Dave Airlie (2):
Merge tag 'drm-misc-fixes-2018-10-04' of
git://anongit.freedesktop.org/drm/drm-misc into drm-fixes
Merge branch 'drm-fixes-4.19' of
git://people.freedesktop.org/~agd5f/linux into drm-fixes
Felix Kuehling (1):
drm/amdkfd: Fix incorrect use of process->mm
Jann Horn (1):
drm: fix use-after-free read in drm_mode_create_lease_ioctl()
Noralf Trønnes (1):
drm/cma-helper: Fix crash in fbdev error path
Shirish S (1):
drm/amd/display: Signal hw_done() after waiting for flip_done()
.../gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 37 +++++++++++++++++-----
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 ++++--
drivers/gpu/drm/drm_client.c | 35 ++++++++++++++------
drivers/gpu/drm/drm_fb_cma_helper.c | 4 ++-
drivers/gpu/drm/drm_fb_helper.c | 4 ++-
drivers/gpu/drm/drm_lease.c | 6 ++--
include/drm/drm_client.h | 5 +--
7 files changed, 75 insertions(+), 26 deletions(-)
[View Less]
Next version of https://patchwork.freedesktop.org/series/49877/
This fixes some rather silly bugs regarding DPMS On->Off changes failing
for connectors which were just recently destroyed.
Lyude Paul (5):
drm/atomic_helper: Disallow new modesets on unregistered connectors
drm/nouveau: Fix nv50_mstc->best_encoder()
drm/i915: Leave intel_conn->mst_port set, use mst_port_gone instead
drm/i915: Skip vcpi allocation for MSTB ports that are gone
drm/i915: Fix …
[View More]intel_dp_mst_best_encoder()
drivers/gpu/drm/drm_atomic_helper.c | 21 ++++++++++++++++-
drivers/gpu/drm/i915/intel_dp_mst.c | 31 ++++++++++++++-----------
drivers/gpu/drm/i915/intel_drv.h | 6 +++++
drivers/gpu/drm/nouveau/dispnv50/disp.c | 14 ++++-------
4 files changed, 47 insertions(+), 25 deletions(-)
--
2.17.1
[View Less]
https://bugs.freedesktop.org/show_bug.cgi?id=105911
--- Comment #13 from tnmailinglists(a)gmail.com ---
I now booted with amdgpu.dc_log=1 and found the following in my log when DC is
on (I'm currently on 4.15.0.36):
[ 1.479998] [drm] DC: create_links: connectors_num: physical:4, virtual:0
[ 1.480001] [drm] Connector[0] description:signal 32
[ 1.480029] [drm] Connector[1] description:signal 4
[ 1.480031] [drm] dce110_link_encoder_construct: Failed to get
encoder_cap_info from VBIOS …
[View More]with error code 4!
[ 1.480046] [drm] Connector[2] description:signal 2
[ 1.480048] [drm] dce110_link_encoder_construct: Failed to get
encoder_cap_info from VBIOS with error code 4!
[ 1.480064] [drm] Connector[3] description:signal 2
[ 1.480066] [drm] dce110_link_encoder_construct: Failed to get
encoder_cap_info from VBIOS with error code 4!
[ 1.492083] [drm] Display Core initialized
[ 1.492091] [drm] Display Core initialized!
[ 1.492427] [drm] link=0, dc_sink_in= (null) is now Disconnected
[ 1.492555] [drm] link=1, dc_sink_in= (null) is now Disconnected
[ 1.492683] [drm] link=2, dc_sink_in= (null) is now Disconnected
[ 1.505440] [drm] SADs count is: -2, don't need to read it
[ 1.505453] [drm] [Detect] [DDVI][ConnIdx:3] EDID goes here
[ 1.505455] [drm] dc_link_detect: EDID decoded goes here
[ 1.505456] [drm] link=3, dc_sink_in= (ptrval) is now Connected
This does seem to show that connector 3 is incorrectly identified as dual link
DVI-D, or at least missing/not using the analogue part.
--
You are receiving this mail because:
You are the assignee for the bug.
[View Less]
having a delayed work item per job is redundant as we only need one
per scheduler to track the time out the currently executing job.
v2: the first element of the ring mirror list is the currently
executing job so we don't need a additional variable for it
Signed-off-by: Nayan Deshmukh <nayan26deshmukh(a)gmail.com>
Suggested-by: Christian König <christian.koenig(a)amd.com>
---
drivers/gpu/drm/scheduler/sched_main.c | 28 +++++++++++++++-------------
include/drm/gpu_scheduler.h …
[View More] | 6 +++---
2 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
index 9ca741f3a0bc..88f6cff136f2 100644
--- a/drivers/gpu/drm/scheduler/sched_main.c
+++ b/drivers/gpu/drm/scheduler/sched_main.c
@@ -197,19 +197,16 @@ static void drm_sched_job_finish(struct work_struct *work)
* manages to find this job as the next job in the list, the fence
* signaled check below will prevent the timeout to be restarted.
*/
- cancel_delayed_work_sync(&s_job->work_tdr);
+ cancel_delayed_work_sync(&sched->work_tdr);
spin_lock(&sched->job_list_lock);
/* queue TDR for next job */
+ list_del(&s_job->node);
if (sched->timeout != MAX_SCHEDULE_TIMEOUT &&
- !list_is_last(&s_job->node, &sched->ring_mirror_list)) {
- struct drm_sched_job *next = list_next_entry(s_job, node);
-
- if (!dma_fence_is_signaled(&next->s_fence->finished))
- schedule_delayed_work(&next->work_tdr, sched->timeout);
+ !list_empty(&sched->ring_mirror_list)) {
+ schedule_delayed_work(&sched->work_tdr, sched->timeout);
}
/* remove job from ring_mirror_list */
- list_del(&s_job->node);
spin_unlock(&sched->job_list_lock);
dma_fence_put(&s_job->s_fence->finished);
@@ -236,16 +233,21 @@ static void drm_sched_job_begin(struct drm_sched_job *s_job)
if (sched->timeout != MAX_SCHEDULE_TIMEOUT &&
list_first_entry_or_null(&sched->ring_mirror_list,
struct drm_sched_job, node) == s_job)
- schedule_delayed_work(&s_job->work_tdr, sched->timeout);
+ schedule_delayed_work(&sched->work_tdr, sched->timeout);
spin_unlock(&sched->job_list_lock);
}
static void drm_sched_job_timedout(struct work_struct *work)
{
- struct drm_sched_job *job = container_of(work, struct drm_sched_job,
- work_tdr.work);
+ struct drm_gpu_scheduler *sched;
+ struct drm_sched_job *job;
+
+ sched = container_of(work, struct drm_gpu_scheduler, work_tdr.work);
+ job = list_first_entry_or_null(&sched->ring_mirror_list,
+ struct drm_sched_job, node);
- job->sched->ops->timedout_job(job);
+ if (job)
+ job->sched->ops->timedout_job(job);
}
/**
@@ -315,7 +317,7 @@ void drm_sched_job_recovery(struct drm_gpu_scheduler *sched)
s_job = list_first_entry_or_null(&sched->ring_mirror_list,
struct drm_sched_job, node);
if (s_job && sched->timeout != MAX_SCHEDULE_TIMEOUT)
- schedule_delayed_work(&s_job->work_tdr, sched->timeout);
+ schedule_delayed_work(&sched->work_tdr, sched->timeout);
list_for_each_entry_safe(s_job, tmp, &sched->ring_mirror_list, node) {
struct drm_sched_fence *s_fence = s_job->s_fence;
@@ -384,7 +386,6 @@ int drm_sched_job_init(struct drm_sched_job *job,
INIT_WORK(&job->finish_work, drm_sched_job_finish);
INIT_LIST_HEAD(&job->node);
- INIT_DELAYED_WORK(&job->work_tdr, drm_sched_job_timedout);
return 0;
}
@@ -575,6 +576,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
INIT_LIST_HEAD(&sched->ring_mirror_list);
spin_lock_init(&sched->job_list_lock);
atomic_set(&sched->hw_rq_count, 0);
+ INIT_DELAYED_WORK(&sched->work_tdr, drm_sched_job_timedout);
atomic_set(&sched->num_jobs, 0);
atomic64_set(&sched->job_id_count, 0);
diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
index daec50f887b3..d87b268f1781 100644
--- a/include/drm/gpu_scheduler.h
+++ b/include/drm/gpu_scheduler.h
@@ -175,8 +175,6 @@ struct drm_sched_fence *to_drm_sched_fence(struct dma_fence *f);
* finished to remove the job from the
* @drm_gpu_scheduler.ring_mirror_list.
* @node: used to append this struct to the @drm_gpu_scheduler.ring_mirror_list.
- * @work_tdr: schedules a delayed call to @drm_sched_job_timedout after the timeout
- * interval is over.
* @id: a unique id assigned to each job scheduled on the scheduler.
* @karma: increment on every hang caused by this job. If this exceeds the hang
* limit of the scheduler then the job is marked guilty and will not
@@ -195,7 +193,6 @@ struct drm_sched_job {
struct dma_fence_cb finish_cb;
struct work_struct finish_work;
struct list_head node;
- struct delayed_work work_tdr;
uint64_t id;
atomic_t karma;
enum drm_sched_priority s_priority;
@@ -259,6 +256,8 @@ struct drm_sched_backend_ops {
* finished.
* @hw_rq_count: the number of jobs currently in the hardware queue.
* @job_id_count: used to assign unique id to the each job.
+ * @work_tdr: schedules a delayed call to @drm_sched_job_timedout after the
+ * timeout interval is over.
* @thread: the kthread on which the scheduler which run.
* @ring_mirror_list: the list of jobs which are currently in the job queue.
* @job_list_lock: lock to protect the ring_mirror_list.
@@ -278,6 +277,7 @@ struct drm_gpu_scheduler {
wait_queue_head_t job_scheduled;
atomic_t hw_rq_count;
atomic64_t job_id_count;
+ struct delayed_work work_tdr;
struct task_struct *thread;
struct list_head ring_mirror_list;
spinlock_t job_list_lock;
--
2.14.3
[View Less]
Hi Greg,
Nothing too much happening at this point,
3 i915 fixes:
compressed error handling zlib fix
compiler warning cleanup
and a minor code cleanup
2 tda9950:
Two fixes for the HDMI CEC
1 exynos:
A fix required for IOMMU interaction.
Thanks,
Dave.
drm-fixes-2018-10-04:
drm exynos, tda9950 and intel fixes
The following changes since commit 17b57b1883c1285f3d0dc2266e8f79286a7bef38:
Linux 4.19-rc6 (2018-09-30 07:15:35 -0700)
are available in the Git repository at:
git://anongit.…
[View More]freedesktop.org/drm/drm tags/drm-fixes-2018-10-04
for you to fetch changes up to d8938c981f58ee344687b7910a611ac345960045:
Merge branch 'drm-tda9950-fixes' of
git://git.armlinux.org.uk/~rmk/linux-arm into drm-fixes (2018-10-04
10:32:14 +1000)
----------------------------------------------------------------
drm exynos, tda9950 and intel fixes
----------------------------------------------------------------
Anusha Srivatsa (1):
drm/i915: Do not redefine the has_csr parameter.
Chris Wilson (2):
drm/i915: Avoid compiler warning for maybe unused gu_misc_iir
drm/i915: Handle incomplete Z_FINISH for compressed error states
Colin Ian King (1):
drm/i2c: tda9950: fix timeout counter check
Dave Airlie (3):
Merge tag 'exynos-drm-fixes-for-v4.19-rc7' of
git://git.kernel.org/.../daeinki/drm-exynos into drm-fixes
Merge tag 'drm-intel-fixes-2018-10-03' of
git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
Merge branch 'drm-tda9950-fixes' of
git://git.armlinux.org.uk/~rmk/linux-arm into drm-fixes
Hans Verkuil (1):
drm/i2c: tda9950: set MAX_RETRIES for errors only
Marek Szyprowski (1):
drm/exynos: Use selected dma_dev default iommu domain instead of
a fake one
drivers/gpu/drm/exynos/exynos_drm_iommu.h | 34 +++---------
drivers/gpu/drm/i2c/tda9950.c | 5 +-
drivers/gpu/drm/i915/i915_gpu_error.c | 88 ++++++++++++++++++++++---------
drivers/gpu/drm/i915/i915_gpu_error.h | 1 +
drivers/gpu/drm/i915/i915_irq.c | 33 +++++-------
drivers/gpu/drm/i915/i915_pci.c | 1 -
6 files changed, 85 insertions(+), 77 deletions(-)
[View Less]
https://bugs.freedesktop.org/show_bug.cgi?id=103791
Bug ID: 103791
Summary: Tearing after screen wakeup/on
Product: DRI
Version: XOrg git
Hardware: Other
OS: All
Status: NEW
Severity: normal
Priority: medium
Component: DRM/AMDgpu
Assignee: dri-devel(a)lists.freedesktop.org
Reporter: denisgolovan(a)yandex.ru
Hi
Sometimes after screen wakeup/turning on I start to …
[View More]experience tearing.
Tear free mode works fine before sleep/turning display off.
My hardware is XFX Radeon RX580.
Software:
kernel-4.13.13+ck1,
xorg-1.19.5,
xf86-video-amdgpu (git 3a4f7422913093ed9e26b73ecd7f9e773478cb1e),
libdrm-2.4.88
See dmesg, Xorg.0.log, xorg.conf attached.
--
You are receiving this mail because:
You are the assignee for the bug.
[View Less]
https://bugs.freedesktop.org/show_bug.cgi?id=105744
Michel Dänzer <michel(a)daenzer.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Product|xorg |DRI
Component|Driver/AMDgpu |DRM/AMDgpu
QA Contact|xorg-team(a)lists.x.org |
Assignee|xorg-driver-ati(a)lists.x.org |dri-devel(a)lists.freedesktop
…
[View More] | |.org
--- Comment #8 from Michel Dänzer <michel(a)daenzer.net> ---
Is this still happening with current kernels? Still only with DC?
--
You are receiving this mail because:
You are the assignee for the bug.
[View Less]