diff options
author | Jie Zhou <b30303@freescale.com> | 2010-07-28 12:04:04 +0800 |
---|---|---|
committer | Jie Zhou <b30303@freescale.com> | 2010-07-28 12:13:14 +0800 |
commit | 441fd8dfa4e468772d35c69c5289fb81556073a6 (patch) | |
tree | d7aa40127460cec8955202c567c12f00d91a38a0 /drivers | |
parent | a2be21bc20f5d79e0809f5516181c0567483b35d (diff) |
ENGR00125616 GPU: make sure device is stopped before close
When terminating some applications such as OpenGL ES2.0 conf. test,
kgsl_device_stop is not triggered. And run such kind of application
for several times, system hang happens for inconsistency of device
states. So make sure device is stopped in kgsl_device_close, which
is only called by last running caller process.
Signed-off-by: Jie Zhou <b30303@freescale.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mxc/amd-gpu/common/gsl_device.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/mxc/amd-gpu/common/gsl_device.c b/drivers/mxc/amd-gpu/common/gsl_device.c index 6fc51eb1bdc2..bcb557e69d6d 100644 --- a/drivers/mxc/amd-gpu/common/gsl_device.c +++ b/drivers/mxc/amd-gpu/common/gsl_device.c @@ -161,6 +161,15 @@ kgsl_device_close(gsl_device_t *device) kgsl_log_write( KGSL_LOG_GROUP_DEVICE | KGSL_LOG_LEVEL_TRACE, "--> int kgsl_device_close(gsl_device_t *device=0x%08x )\n", device ); + /* make sure the device is stopped before close + kgsl_device_close is only called for last running caller process + */ + while (device->refcnt > 0) { + GSL_API_MUTEX_UNLOCK(); + kgsl_device_stop(device->id); + GSL_API_MUTEX_LOCK(); + } + // close cmdstream status = kgsl_cmdstream_close(device); if( status != GSL_SUCCESS ) return status; |