summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHemant Hariyani2013-12-04 10:57:20 -0600
committerHemant Hariyani2013-12-04 10:57:20 -0600
commite1f877e7b0df9aa115fdc235a40406dd05c03aa2 (patch)
treed6e50373b8e6ec5b5b6e53a00b7cdce446960c24
parent08824733e3cd43297350eee4e9febce2c9d07f2e (diff)
downloaddevice-ti-proprietary-open-e1f877e7b0df9aa115fdc235a40406dd05c03aa2.tar.gz
device-ti-proprietary-open-e1f877e7b0df9aa115fdc235a40406dd05c03aa2.tar.xz
device-ti-proprietary-open-e1f877e7b0df9aa115fdc235a40406dd05c03aa2.zip
SGX-BIN: Binaries and KM source with mutex nesting
Fixes mutex deadlock warning during boot. Change-Id: Ieb292a7b1bba3269c8df8e8c3f836dc7b50fabd4 Signed-off-by: Hemant Hariyani <hemanthariyani@ti.com>
-rw-r--r--jacinto6/sgx.tgzbin2638310 -> 2638674 bytes
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mm.c12
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c6
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutex.h3
-rw-r--r--jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_debug.c2
5 files changed, 13 insertions, 10 deletions
diff --git a/jacinto6/sgx.tgz b/jacinto6/sgx.tgz
index 7aaa048..9d1683b 100644
--- a/jacinto6/sgx.tgz
+++ b/jacinto6/sgx.tgz
Binary files differ
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mm.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mm.c
index b194794..56cf52c 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mm.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mm.c
@@ -317,7 +317,7 @@ DebugMemAllocRecordAdd(DEBUG_MEM_ALLOC_TYPE eAllocType,
317{ 317{
318 DEBUG_MEM_ALLOC_REC *psRecord; 318 DEBUG_MEM_ALLOC_REC *psRecord;
319 319
320 LinuxLockMutex(&g_sDebugMutex); 320 LinuxLockMutexNested(&g_sDebugMutex, PVRSRV_LOCK_CLASS_MM_DEBUG);
321 321
322 psRecord = kmalloc(sizeof(DEBUG_MEM_ALLOC_REC), GFP_KERNEL); 322 psRecord = kmalloc(sizeof(DEBUG_MEM_ALLOC_REC), GFP_KERNEL);
323 323
@@ -412,7 +412,7 @@ DebugMemAllocRecordRemove(DEBUG_MEM_ALLOC_TYPE eAllocType, IMG_VOID *pvKey, IMG_
412{ 412{
413/* DEBUG_MEM_ALLOC_REC **ppsCurrentRecord;*/ 413/* DEBUG_MEM_ALLOC_REC **ppsCurrentRecord;*/
414 414
415 LinuxLockMutex(&g_sDebugMutex); 415 LinuxLockMutexNested(&g_sDebugMutex, PVRSRV_LOCK_CLASS_MM_DEBUG);
416 416
417 /* Locate the corresponding allocation entry */ 417 /* Locate the corresponding allocation entry */
418 if (!List_DEBUG_MEM_ALLOC_REC_IMG_BOOL_Any_va(g_MemoryRecords, 418 if (!List_DEBUG_MEM_ALLOC_REC_IMG_BOOL_Any_va(g_MemoryRecords,
@@ -1968,7 +1968,7 @@ DebugLinuxMemAreaRecordAdd(LinuxMemArea *psLinuxMemArea, IMG_UINT32 ui32Flags)
1968 DEBUG_LINUX_MEM_AREA_REC *psNewRecord; 1968 DEBUG_LINUX_MEM_AREA_REC *psNewRecord;
1969 const IMG_CHAR *pi8FlagsString; 1969 const IMG_CHAR *pi8FlagsString;
1970 1970
1971 LinuxLockMutex(&g_sDebugMutex); 1971 LinuxLockMutexNested(&g_sDebugMutex, PVRSRV_LOCK_CLASS_MM_DEBUG);
1972 1972
1973 if (psLinuxMemArea->eAreaType != LINUX_MEM_AREA_SUB_ALLOC) 1973 if (psLinuxMemArea->eAreaType != LINUX_MEM_AREA_SUB_ALLOC)
1974 { 1974 {
@@ -2037,7 +2037,7 @@ DebugLinuxMemAreaRecordFind(LinuxMemArea *psLinuxMemArea)
2037{ 2037{
2038 DEBUG_LINUX_MEM_AREA_REC *psCurrentRecord; 2038 DEBUG_LINUX_MEM_AREA_REC *psCurrentRecord;
2039 2039
2040 LinuxLockMutex(&g_sDebugMutex); 2040 LinuxLockMutexNested(&g_sDebugMutex, PVRSRV_LOCK_CLASS_MM_DEBUG);
2041 psCurrentRecord = List_DEBUG_LINUX_MEM_AREA_REC_Any_va(g_LinuxMemAreaRecords, 2041 psCurrentRecord = List_DEBUG_LINUX_MEM_AREA_REC_Any_va(g_LinuxMemAreaRecords,
2042 MatchLinuxMemArea_AnyVaCb, 2042 MatchLinuxMemArea_AnyVaCb,
2043 psLinuxMemArea); 2043 psLinuxMemArea);
@@ -2054,7 +2054,7 @@ DebugLinuxMemAreaRecordRemove(LinuxMemArea *psLinuxMemArea)
2054{ 2054{
2055 DEBUG_LINUX_MEM_AREA_REC *psCurrentRecord; 2055 DEBUG_LINUX_MEM_AREA_REC *psCurrentRecord;
2056 2056
2057 LinuxLockMutex(&g_sDebugMutex); 2057 LinuxLockMutexNested(&g_sDebugMutex, PVRSRV_LOCK_CLASS_MM_DEBUG);
2058 2058
2059 if (psLinuxMemArea->eAreaType != LINUX_MEM_AREA_SUB_ALLOC) 2059 if (psLinuxMemArea->eAreaType != LINUX_MEM_AREA_SUB_ALLOC)
2060 { 2060 {
@@ -2259,7 +2259,7 @@ static void ProcSeqStartstopDebugMutex(struct seq_file *sfile, IMG_BOOL start)
2259{ 2259{
2260 if (start) 2260 if (start)
2261 { 2261 {
2262 LinuxLockMutex(&g_sDebugMutex); 2262 LinuxLockMutexNested(&g_sDebugMutex, PVRSRV_LOCK_CLASS_MM_DEBUG);
2263 } 2263 }
2264 else 2264 else
2265 { 2265 {
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c
index e7b161f..6d50cdb 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/module.c
@@ -489,7 +489,7 @@ PVR_MOD_STATIC void PVRSRVDriverShutdown(LDM_DEV *pDevice)
489{ 489{
490 PVR_TRACE(("PVRSRVDriverShutdown(pDevice=%p)", pDevice)); 490 PVR_TRACE(("PVRSRVDriverShutdown(pDevice=%p)", pDevice));
491 491
492 LinuxLockMutex(&gsPMMutex); 492 LinuxLockMutexNested(&gsPMMutex, PVRSRV_LOCK_CLASS_POWER);
493 493
494 if (!bDriverIsShutdown && !bDriverIsSuspended) 494 if (!bDriverIsShutdown && !bDriverIsSuspended)
495 { 495 {
@@ -555,7 +555,7 @@ PVR_MOD_STATIC int PVRSRVDriverSuspend(LDM_DEV *pDevice, pm_message_t state)
555#if !(defined(DEBUG) && defined(PVR_MANUAL_POWER_CONTROL) && !defined(SUPPORT_DRI_DRM)) 555#if !(defined(DEBUG) && defined(PVR_MANUAL_POWER_CONTROL) && !defined(SUPPORT_DRI_DRM))
556 PVR_TRACE(( "PVRSRVDriverSuspend(pDevice=%p)", pDevice)); 556 PVR_TRACE(( "PVRSRVDriverSuspend(pDevice=%p)", pDevice));
557 557
558 LinuxLockMutex(&gsPMMutex); 558 LinuxLockMutexNested(&gsPMMutex, PVRSRV_LOCK_CLASS_POWER);
559 559
560 if (!bDriverIsSuspended && !bDriverIsShutdown) 560 if (!bDriverIsSuspended && !bDriverIsShutdown)
561 { 561 {
@@ -612,7 +612,7 @@ PVR_MOD_STATIC int PVRSRVDriverResume(LDM_DEV *pDevice)
612#if !(defined(DEBUG) && defined(PVR_MANUAL_POWER_CONTROL) && !defined(SUPPORT_DRI_DRM)) 612#if !(defined(DEBUG) && defined(PVR_MANUAL_POWER_CONTROL) && !defined(SUPPORT_DRI_DRM))
613 PVR_TRACE(("PVRSRVDriverResume(pDevice=%p)", pDevice)); 613 PVR_TRACE(("PVRSRVDriverResume(pDevice=%p)", pDevice));
614 614
615 LinuxLockMutex(&gsPMMutex); 615 LinuxLockMutexNested(&gsPMMutex, PVRSRV_LOCK_CLASS_POWER);
616 616
617 if (bDriverIsSuspended && !bDriverIsShutdown) 617 if (bDriverIsSuspended && !bDriverIsShutdown)
618 { 618 {
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutex.h b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutex.h
index 816cf4a..09ae46d 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutex.h
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/mutex.h
@@ -74,8 +74,11 @@ typedef struct {
74 74
75enum PVRSRV_MUTEX_LOCK_CLASS 75enum PVRSRV_MUTEX_LOCK_CLASS
76{ 76{
77 PVRSRV_LOCK_CLASS_POWER,
77 PVRSRV_LOCK_CLASS_BRIDGE, 78 PVRSRV_LOCK_CLASS_BRIDGE,
78 PVRSRV_LOCK_CLASS_MMAP, 79 PVRSRV_LOCK_CLASS_MMAP,
80 PVRSRV_LOCK_CLASS_MM_DEBUG,
81 PVRSRV_LOCK_CLASS_PVR_DEBUG,
79}; 82};
80 83
81extern IMG_VOID LinuxInitMutex(PVRSRV_LINUX_MUTEX *psPVRSRVMutex); 84extern IMG_VOID LinuxInitMutex(PVRSRV_LINUX_MUTEX *psPVRSRVMutex);
diff --git a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_debug.c b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_debug.c
index 04e42ad..3958f84 100644
--- a/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_debug.c
+++ b/jacinto6/sgx_src/eurasia_km/services4/srvkm/env/linux/pvr_debug.c
@@ -128,7 +128,7 @@ static inline void GetBufferLock(unsigned long *pulLockFlags)
128#if !defined(PVR_DEBUG_ALWAYS_USE_SPINLOCK) 128#if !defined(PVR_DEBUG_ALWAYS_USE_SPINLOCK)
129 else 129 else
130 { 130 {
131 LinuxLockMutex(&gsDebugMutexNonIRQ); 131 LinuxLockMutexNested(&gsDebugMutexNonIRQ, PVRSRV_LOCK_CLASS_PVR_DEBUG);
132 } 132 }
133#endif 133#endif
134} 134}