[PATCH 09/10] drm/radeon: replace cs_mutex with vm_mutex
Try to remove or replace the cs_mutex with a vm_mutex where it is still needed. Signed-off-by: Christian K?nig --- drivers/gpu/drm/radeon/radeon.h| 44 +--- drivers/gpu/drm/radeon/radeon_cs.c |7 ++--- drivers/gpu/drm/radeon/radeon_device.c |2 +- drivers/gpu/drm/radeon/radeon_gart.c | 16 ++-- drivers/gpu/drm/radeon/radeon_gem.c|2 -- 5 files changed, 12 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index e14682e..4c38fed 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -159,48 +159,6 @@ static inline int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len) #endif bool radeon_get_bios(struct radeon_device *rdev); - -/* - * Mutex which allows recursive locking from the same process. - */ -struct radeon_mutex { - struct mutexmutex; - struct task_struct *owner; - int level; -}; - -static inline void radeon_mutex_init(struct radeon_mutex *mutex) -{ - mutex_init(>mutex); - mutex->owner = NULL; - mutex->level = 0; -} - -static inline void radeon_mutex_lock(struct radeon_mutex *mutex) -{ - if (mutex_trylock(>mutex)) { - /* The mutex was unlocked before, so it's ours now */ - mutex->owner = current; - } else if (mutex->owner != current) { - /* Another process locked the mutex, take it */ - mutex_lock(>mutex); - mutex->owner = current; - } - /* Otherwise the mutex was already locked by this process */ - - mutex->level++; -} - -static inline void radeon_mutex_unlock(struct radeon_mutex *mutex) -{ - if (--mutex->level > 0) - return; - - mutex->owner = NULL; - mutex_unlock(>mutex); -} - - /* * Dummy page */ @@ -1531,7 +1489,6 @@ struct radeon_device { struct radeon_gem gem; struct radeon_pmpm; uint32_tbios_scratch[RADEON_BIOS_NUM_SCRATCH]; - struct radeon_mutex cs_mutex; struct radeon_wbwb; struct radeon_dummy_pagedummy_page; boolshutdown; @@ -1565,6 +1522,7 @@ struct radeon_device { struct radeon_debugfs debugfs[RADEON_DEBUGFS_MAX_COMPONENTS]; unsigneddebugfs_count; /* virtual memory */ + struct mutexvm_mutex; struct radeon_vm_managervm_manager; }; diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index d295821..d1ead9c 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -438,6 +438,7 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, } mutex_lock(>mutex); + mutex_lock(>vm_mutex); r = radeon_vm_bind(rdev, vm); if (r) { goto out; @@ -474,6 +475,7 @@ out: } vm->fence = radeon_fence_ref(parser->ib.fence); } + mutex_unlock(>vm_mutex); mutex_unlock(>vm.mutex); return r; } @@ -494,9 +496,7 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) struct radeon_cs_parser parser; int r; - radeon_mutex_lock(>cs_mutex); if (!rdev->accel_working) { - radeon_mutex_unlock(>cs_mutex); return -EBUSY; } /* initialize parser */ @@ -510,7 +510,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR("Failed to initialize parser !\n"); radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } r = radeon_cs_parser_relocs(); @@ -519,7 +518,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR("Failed to parse relocation %d!\n", r); radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } r = radeon_cs_ib_chunk(rdev, ); @@ -533,7 +531,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) out: radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 3c563d1..4168012 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -728,7 +728,6 @@ int radeon_device_init(struct radeon_device *rdev, /* mutex initialization are all done here so we *
[PATCH 09/10] drm/radeon: replace cs_mutex with vm_mutex
Try to remove or replace the cs_mutex with a vm_mutex where it is still needed. Signed-off-by: Christian K?nig --- drivers/gpu/drm/radeon/radeon.h| 44 +--- drivers/gpu/drm/radeon/radeon_cs.c |7 ++--- drivers/gpu/drm/radeon/radeon_device.c |2 +- drivers/gpu/drm/radeon/radeon_gart.c | 16 ++-- drivers/gpu/drm/radeon/radeon_gem.c|2 -- 5 files changed, 12 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 19e7554..b24877f 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -159,48 +159,6 @@ static inline int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len) #endif bool radeon_get_bios(struct radeon_device *rdev); - -/* - * Mutex which allows recursive locking from the same process. - */ -struct radeon_mutex { - struct mutexmutex; - struct task_struct *owner; - int level; -}; - -static inline void radeon_mutex_init(struct radeon_mutex *mutex) -{ - mutex_init(>mutex); - mutex->owner = NULL; - mutex->level = 0; -} - -static inline void radeon_mutex_lock(struct radeon_mutex *mutex) -{ - if (mutex_trylock(>mutex)) { - /* The mutex was unlocked before, so it's ours now */ - mutex->owner = current; - } else if (mutex->owner != current) { - /* Another process locked the mutex, take it */ - mutex_lock(>mutex); - mutex->owner = current; - } - /* Otherwise the mutex was already locked by this process */ - - mutex->level++; -} - -static inline void radeon_mutex_unlock(struct radeon_mutex *mutex) -{ - if (--mutex->level > 0) - return; - - mutex->owner = NULL; - mutex_unlock(>mutex); -} - - /* * Dummy page */ @@ -1529,7 +1487,6 @@ struct radeon_device { struct radeon_gem gem; struct radeon_pmpm; uint32_tbios_scratch[RADEON_BIOS_NUM_SCRATCH]; - struct radeon_mutex cs_mutex; struct radeon_wbwb; struct radeon_dummy_pagedummy_page; boolshutdown; @@ -1563,6 +1520,7 @@ struct radeon_device { struct radeon_debugfs debugfs[RADEON_DEBUGFS_MAX_COMPONENTS]; unsigneddebugfs_count; /* virtual memory */ + struct mutexvm_mutex; struct radeon_vm_managervm_manager; }; diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index d295821..d1ead9c 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -438,6 +438,7 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, } mutex_lock(>mutex); + mutex_lock(>vm_mutex); r = radeon_vm_bind(rdev, vm); if (r) { goto out; @@ -474,6 +475,7 @@ out: } vm->fence = radeon_fence_ref(parser->ib.fence); } + mutex_unlock(>vm_mutex); mutex_unlock(>vm.mutex); return r; } @@ -494,9 +496,7 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) struct radeon_cs_parser parser; int r; - radeon_mutex_lock(>cs_mutex); if (!rdev->accel_working) { - radeon_mutex_unlock(>cs_mutex); return -EBUSY; } /* initialize parser */ @@ -510,7 +510,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR("Failed to initialize parser !\n"); radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } r = radeon_cs_parser_relocs(); @@ -519,7 +518,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR("Failed to parse relocation %d!\n", r); radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } r = radeon_cs_ib_chunk(rdev, ); @@ -533,7 +531,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) out: radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 7667184..57143dd 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -728,7 +728,6 @@ int radeon_device_init(struct radeon_device *rdev, /* mutex initialization are all done here so we *
[PATCH 09/10] drm/radeon: replace cs_mutex with vm_mutex
Try to remove or replace the cs_mutex with a vm_mutex where it is still needed. Signed-off-by: Christian König deathsim...@vodafone.de --- drivers/gpu/drm/radeon/radeon.h| 44 +--- drivers/gpu/drm/radeon/radeon_cs.c |7 ++--- drivers/gpu/drm/radeon/radeon_device.c |2 +- drivers/gpu/drm/radeon/radeon_gart.c | 16 ++-- drivers/gpu/drm/radeon/radeon_gem.c|2 -- 5 files changed, 12 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 19e7554..b24877f 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -159,48 +159,6 @@ static inline int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len) #endif bool radeon_get_bios(struct radeon_device *rdev); - -/* - * Mutex which allows recursive locking from the same process. - */ -struct radeon_mutex { - struct mutexmutex; - struct task_struct *owner; - int level; -}; - -static inline void radeon_mutex_init(struct radeon_mutex *mutex) -{ - mutex_init(mutex-mutex); - mutex-owner = NULL; - mutex-level = 0; -} - -static inline void radeon_mutex_lock(struct radeon_mutex *mutex) -{ - if (mutex_trylock(mutex-mutex)) { - /* The mutex was unlocked before, so it's ours now */ - mutex-owner = current; - } else if (mutex-owner != current) { - /* Another process locked the mutex, take it */ - mutex_lock(mutex-mutex); - mutex-owner = current; - } - /* Otherwise the mutex was already locked by this process */ - - mutex-level++; -} - -static inline void radeon_mutex_unlock(struct radeon_mutex *mutex) -{ - if (--mutex-level 0) - return; - - mutex-owner = NULL; - mutex_unlock(mutex-mutex); -} - - /* * Dummy page */ @@ -1529,7 +1487,6 @@ struct radeon_device { struct radeon_gem gem; struct radeon_pmpm; uint32_tbios_scratch[RADEON_BIOS_NUM_SCRATCH]; - struct radeon_mutex cs_mutex; struct radeon_wbwb; struct radeon_dummy_pagedummy_page; boolshutdown; @@ -1563,6 +1520,7 @@ struct radeon_device { struct radeon_debugfs debugfs[RADEON_DEBUGFS_MAX_COMPONENTS]; unsigneddebugfs_count; /* virtual memory */ + struct mutexvm_mutex; struct radeon_vm_managervm_manager; }; diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index d295821..d1ead9c 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -438,6 +438,7 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, } mutex_lock(vm-mutex); + mutex_lock(rdev-vm_mutex); r = radeon_vm_bind(rdev, vm); if (r) { goto out; @@ -474,6 +475,7 @@ out: } vm-fence = radeon_fence_ref(parser-ib.fence); } + mutex_unlock(rdev-vm_mutex); mutex_unlock(fpriv-vm.mutex); return r; } @@ -494,9 +496,7 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) struct radeon_cs_parser parser; int r; - radeon_mutex_lock(rdev-cs_mutex); if (!rdev-accel_working) { - radeon_mutex_unlock(rdev-cs_mutex); return -EBUSY; } /* initialize parser */ @@ -510,7 +510,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR(Failed to initialize parser !\n); radeon_cs_parser_fini(parser, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(rdev-cs_mutex); return r; } r = radeon_cs_parser_relocs(parser); @@ -519,7 +518,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR(Failed to parse relocation %d!\n, r); radeon_cs_parser_fini(parser, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(rdev-cs_mutex); return r; } r = radeon_cs_ib_chunk(rdev, parser); @@ -533,7 +531,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) out: radeon_cs_parser_fini(parser, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(rdev-cs_mutex); return r; } diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 7667184..57143dd 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -728,7 +728,6 @@ int
[PATCH 09/10] drm/radeon: replace cs_mutex with vm_mutex
Try to remove or replace the cs_mutex with a vm_mutex where it is still needed. Signed-off-by: Christian K?nig --- drivers/gpu/drm/radeon/radeon.h| 44 +--- drivers/gpu/drm/radeon/radeon_cs.c |7 ++--- drivers/gpu/drm/radeon/radeon_device.c |2 +- drivers/gpu/drm/radeon/radeon_gart.c | 16 ++-- drivers/gpu/drm/radeon/radeon_gem.c|2 -- 5 files changed, 12 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 60de11e..58a2fcf 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -159,48 +159,6 @@ static inline int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len) #endif bool radeon_get_bios(struct radeon_device *rdev); - -/* - * Mutex which allows recursive locking from the same process. - */ -struct radeon_mutex { - struct mutexmutex; - struct task_struct *owner; - int level; -}; - -static inline void radeon_mutex_init(struct radeon_mutex *mutex) -{ - mutex_init(>mutex); - mutex->owner = NULL; - mutex->level = 0; -} - -static inline void radeon_mutex_lock(struct radeon_mutex *mutex) -{ - if (mutex_trylock(>mutex)) { - /* The mutex was unlocked before, so it's ours now */ - mutex->owner = current; - } else if (mutex->owner != current) { - /* Another process locked the mutex, take it */ - mutex_lock(>mutex); - mutex->owner = current; - } - /* Otherwise the mutex was already locked by this process */ - - mutex->level++; -} - -static inline void radeon_mutex_unlock(struct radeon_mutex *mutex) -{ - if (--mutex->level > 0) - return; - - mutex->owner = NULL; - mutex_unlock(>mutex); -} - - /* * Dummy page */ @@ -1527,7 +1485,6 @@ struct radeon_device { struct radeon_gem gem; struct radeon_pmpm; uint32_tbios_scratch[RADEON_BIOS_NUM_SCRATCH]; - struct radeon_mutex cs_mutex; struct radeon_wbwb; struct radeon_dummy_pagedummy_page; boolshutdown; @@ -1561,6 +1518,7 @@ struct radeon_device { struct radeon_debugfs debugfs[RADEON_DEBUGFS_MAX_COMPONENTS]; unsigneddebugfs_count; /* virtual memory */ + struct mutexvm_mutex; struct radeon_vm_managervm_manager; }; diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index d295821..d1ead9c 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -438,6 +438,7 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, } mutex_lock(>mutex); + mutex_lock(>vm_mutex); r = radeon_vm_bind(rdev, vm); if (r) { goto out; @@ -474,6 +475,7 @@ out: } vm->fence = radeon_fence_ref(parser->ib.fence); } + mutex_unlock(>vm_mutex); mutex_unlock(>vm.mutex); return r; } @@ -494,9 +496,7 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) struct radeon_cs_parser parser; int r; - radeon_mutex_lock(>cs_mutex); if (!rdev->accel_working) { - radeon_mutex_unlock(>cs_mutex); return -EBUSY; } /* initialize parser */ @@ -510,7 +510,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR("Failed to initialize parser !\n"); radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } r = radeon_cs_parser_relocs(); @@ -519,7 +518,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR("Failed to parse relocation %d!\n", r); radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } r = radeon_cs_ib_chunk(rdev, ); @@ -533,7 +531,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) out: radeon_cs_parser_fini(, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(>cs_mutex); return r; } diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 3c563d1..4168012 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -728,7 +728,6 @@ int radeon_device_init(struct radeon_device *rdev, /* mutex initialization are all done here so we *
[PATCH 09/10] drm/radeon: replace cs_mutex with vm_mutex
Try to remove or replace the cs_mutex with a vm_mutex where it is still needed. Signed-off-by: Christian König deathsim...@vodafone.de --- drivers/gpu/drm/radeon/radeon.h| 44 +--- drivers/gpu/drm/radeon/radeon_cs.c |7 ++--- drivers/gpu/drm/radeon/radeon_device.c |2 +- drivers/gpu/drm/radeon/radeon_gart.c | 16 ++-- drivers/gpu/drm/radeon/radeon_gem.c|2 -- 5 files changed, 12 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 60de11e..58a2fcf 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -159,48 +159,6 @@ static inline int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len) #endif bool radeon_get_bios(struct radeon_device *rdev); - -/* - * Mutex which allows recursive locking from the same process. - */ -struct radeon_mutex { - struct mutexmutex; - struct task_struct *owner; - int level; -}; - -static inline void radeon_mutex_init(struct radeon_mutex *mutex) -{ - mutex_init(mutex-mutex); - mutex-owner = NULL; - mutex-level = 0; -} - -static inline void radeon_mutex_lock(struct radeon_mutex *mutex) -{ - if (mutex_trylock(mutex-mutex)) { - /* The mutex was unlocked before, so it's ours now */ - mutex-owner = current; - } else if (mutex-owner != current) { - /* Another process locked the mutex, take it */ - mutex_lock(mutex-mutex); - mutex-owner = current; - } - /* Otherwise the mutex was already locked by this process */ - - mutex-level++; -} - -static inline void radeon_mutex_unlock(struct radeon_mutex *mutex) -{ - if (--mutex-level 0) - return; - - mutex-owner = NULL; - mutex_unlock(mutex-mutex); -} - - /* * Dummy page */ @@ -1527,7 +1485,6 @@ struct radeon_device { struct radeon_gem gem; struct radeon_pmpm; uint32_tbios_scratch[RADEON_BIOS_NUM_SCRATCH]; - struct radeon_mutex cs_mutex; struct radeon_wbwb; struct radeon_dummy_pagedummy_page; boolshutdown; @@ -1561,6 +1518,7 @@ struct radeon_device { struct radeon_debugfs debugfs[RADEON_DEBUGFS_MAX_COMPONENTS]; unsigneddebugfs_count; /* virtual memory */ + struct mutexvm_mutex; struct radeon_vm_managervm_manager; }; diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index d295821..d1ead9c 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -438,6 +438,7 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, } mutex_lock(vm-mutex); + mutex_lock(rdev-vm_mutex); r = radeon_vm_bind(rdev, vm); if (r) { goto out; @@ -474,6 +475,7 @@ out: } vm-fence = radeon_fence_ref(parser-ib.fence); } + mutex_unlock(rdev-vm_mutex); mutex_unlock(fpriv-vm.mutex); return r; } @@ -494,9 +496,7 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) struct radeon_cs_parser parser; int r; - radeon_mutex_lock(rdev-cs_mutex); if (!rdev-accel_working) { - radeon_mutex_unlock(rdev-cs_mutex); return -EBUSY; } /* initialize parser */ @@ -510,7 +510,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR(Failed to initialize parser !\n); radeon_cs_parser_fini(parser, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(rdev-cs_mutex); return r; } r = radeon_cs_parser_relocs(parser); @@ -519,7 +518,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) DRM_ERROR(Failed to parse relocation %d!\n, r); radeon_cs_parser_fini(parser, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(rdev-cs_mutex); return r; } r = radeon_cs_ib_chunk(rdev, parser); @@ -533,7 +531,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) out: radeon_cs_parser_fini(parser, r); r = radeon_cs_handle_lockup(rdev, r); - radeon_mutex_unlock(rdev-cs_mutex); return r; } diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 3c563d1..4168012 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -728,7 +728,6 @@ int