Message ID | 1383134165-2064-1-git-send-email-deathsimple@vodafone.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Oct 30, 2013 at 7:56 AM, Christian König <deathsimple@vodafone.de> wrote: > From: Christian König <christian.koenig@amd.com> > > Make sure the UVD clocks are still active before sending > the destroy message, otherwise the hw might hang. > > Signed-off-by: Christian König <christian.koenig@amd.com> > Cc: stable@vger.kernel.org Both applied! Alex > --- > drivers/gpu/drm/radeon/radeon_uvd.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c > index 308eff5..a56dfe4 100644 > --- a/drivers/gpu/drm/radeon/radeon_uvd.c > +++ b/drivers/gpu/drm/radeon/radeon_uvd.c > @@ -240,6 +240,8 @@ void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp) > if (handle != 0 && rdev->uvd.filp[i] == filp) { > struct radeon_fence *fence; > > + radeon_uvd_note_usage(rdev); > + > r = radeon_uvd_get_destroy_msg(rdev, > R600_RING_TYPE_UVD_INDEX, handle, &fence); > if (r) { > -- > 1.8.1.2 >
Am 30.10.2013 15:29, schrieb Alex Deucher: > On Wed, Oct 30, 2013 at 7:56 AM, Christian König > <deathsimple@vodafone.de> wrote: >> From: Christian König <christian.koenig@amd.com> >> >> Make sure the UVD clocks are still active before sending >> the destroy message, otherwise the hw might hang. >> >> Signed-off-by: Christian König <christian.koenig@amd.com> >> Cc: stable@vger.kernel.org > Both applied! On which branch? Those two where intended for drm-fixes-3.12, but they didn't showed up in 3.12.0. Could you apply them to drm-fixes-3.12 as well? They prevent hw lockups in case of crashed userspace applications and should also go into older stable kernels. Christian. > Alex > >> --- >> drivers/gpu/drm/radeon/radeon_uvd.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c >> index 308eff5..a56dfe4 100644 >> --- a/drivers/gpu/drm/radeon/radeon_uvd.c >> +++ b/drivers/gpu/drm/radeon/radeon_uvd.c >> @@ -240,6 +240,8 @@ void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp) >> if (handle != 0 && rdev->uvd.filp[i] == filp) { >> struct radeon_fence *fence; >> >> + radeon_uvd_note_usage(rdev); >> + >> r = radeon_uvd_get_destroy_msg(rdev, >> R600_RING_TYPE_UVD_INDEX, handle, &fence); >> if (r) { >> -- >> 1.8.1.2 >>
On Mon, Nov 11, 2013 at 3:54 AM, Christian König <deathsimple@vodafone.de> wrote: > Am 30.10.2013 15:29, schrieb Alex Deucher: >> >> On Wed, Oct 30, 2013 at 7:56 AM, Christian König >> <deathsimple@vodafone.de> wrote: >>> >>> From: Christian König <christian.koenig@amd.com> >>> >>> Make sure the UVD clocks are still active before sending >>> the destroy message, otherwise the hw might hang. >>> >>> Signed-off-by: Christian König <christian.koenig@amd.com> >>> Cc: stable@vger.kernel.org >> >> Both applied! > > > On which branch? Those two where intended for drm-fixes-3.12, but they > didn't showed up in 3.12.0. > > Could you apply them to drm-fixes-3.12 as well? They prevent hw lockups in > case of crashed userspace applications and should also go into older stable > kernels. It was too late for 3.12. They'll be in 3.13 and I cc'ed stable: http://cgit.freedesktop.org/~airlied/linux/commit/?h=drm-next&id=c154a76311293f9671439286834aa325b7ef59fe http://cgit.freedesktop.org/~airlied/linux/commit/?h=drm-next&id=727ddc84a1373bf06b2fa261f44e38fb0faf5340 I can push to my fdo drm-fixes-3.12 branch too if you want. Alex > > Christian. > >> Alex >> >>> --- >>> drivers/gpu/drm/radeon/radeon_uvd.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c >>> b/drivers/gpu/drm/radeon/radeon_uvd.c >>> index 308eff5..a56dfe4 100644 >>> --- a/drivers/gpu/drm/radeon/radeon_uvd.c >>> +++ b/drivers/gpu/drm/radeon/radeon_uvd.c >>> @@ -240,6 +240,8 @@ void radeon_uvd_free_handles(struct radeon_device >>> *rdev, struct drm_file *filp) >>> if (handle != 0 && rdev->uvd.filp[i] == filp) { >>> struct radeon_fence *fence; >>> >>> + radeon_uvd_note_usage(rdev); >>> + >>> r = radeon_uvd_get_destroy_msg(rdev, >>> R600_RING_TYPE_UVD_INDEX, handle, >>> &fence); >>> if (r) { >>> -- >>> 1.8.1.2 >>> >
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c index 308eff5..a56dfe4 100644 --- a/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/drivers/gpu/drm/radeon/radeon_uvd.c @@ -240,6 +240,8 @@ void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp) if (handle != 0 && rdev->uvd.filp[i] == filp) { struct radeon_fence *fence; + radeon_uvd_note_usage(rdev); + r = radeon_uvd_get_destroy_msg(rdev, R600_RING_TYPE_UVD_INDEX, handle, &fence); if (r) {