aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/pvr/queue.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/pvr/queue.c')
-rw-r--r--drivers/gpu/pvr/queue.c146
1 files changed, 76 insertions, 70 deletions
diff --git a/drivers/gpu/pvr/queue.c b/drivers/gpu/pvr/queue.c
index 83185f31814..9bc6186d6e4 100644
--- a/drivers/gpu/pvr/queue.c
+++ b/drivers/gpu/pvr/queue.c
@@ -27,7 +27,7 @@
27#include "services_headers.h" 27#include "services_headers.h"
28 28
29#include "lists.h" 29#include "lists.h"
30 30#include "ttrace.h"
31 31
32#define DC_NUM_COMMANDS_PER_TYPE 1 32#define DC_NUM_COMMANDS_PER_TYPE 1
33 33
@@ -71,13 +71,29 @@ void ProcSeqShowQueue(struct seq_file *sfile,void* el)
71 (IMG_UINTPTR_T)psCmd, 71 (IMG_UINTPTR_T)psCmd,
72 psCmd->ui32ProcessID, 72 psCmd->ui32ProcessID,
73 psCmd->CommandType, 73 psCmd->CommandType,
74 psCmd->ui32CmdSize, 74 psCmd->uCmdSize,
75 psCmd->ui32DevIndex, 75 psCmd->ui32DevIndex,
76 psCmd->ui32DstSyncCount, 76 psCmd->ui32DstSyncCount,
77 psCmd->ui32SrcSyncCount, 77 psCmd->ui32SrcSyncCount,
78 psCmd->ui32DataSize); 78 psCmd->uDataSize);
79 {
80 IMG_UINT32 i;
81 for (i = 0; i < psCmd->ui32SrcSyncCount; i++)
82 {
83 PVRSRV_SYNC_DATA *psSyncData = psCmd->psSrcSync[i].psKernelSyncInfoKM->psSyncData;
84 seq_printf(sfile, " Sync %u: ROP/ROC: 0x%x/0x%x WOP/WOC: 0x%x/0x%x ROC-VA: 0x%x WOC-VA: 0x%x\n",
85 i,
86 psCmd->psSrcSync[i].ui32ReadOpsPending,
87 psSyncData->ui32ReadOpsComplete,
88 psCmd->psSrcSync[i].ui32WriteOpsPending,
89 psSyncData->ui32WriteOpsComplete,
90 psCmd->psSrcSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr,
91 psCmd->psSrcSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr);
92 }
93 }
94
79 95
80 ui32ReadOffset += psCmd->ui32CmdSize; 96 ui32ReadOffset += psCmd->uCmdSize;
81 ui32ReadOffset &= psQueue->ui32QueueSize - 1; 97 ui32ReadOffset &= psQueue->ui32QueueSize - 1;
82 cmds++; 98 cmds++;
83 } 99 }
@@ -512,7 +528,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue,
512 psCommand->ui32ProcessID = OSGetCurrentProcessIDKM(); 528 psCommand->ui32ProcessID = OSGetCurrentProcessIDKM();
513 529
514 530
515 psCommand->ui32CmdSize = ui32CommandSize; 531 psCommand->uCmdSize = ui32CommandSize;
516 psCommand->ui32DevIndex = ui32DevIndex; 532 psCommand->ui32DevIndex = ui32DevIndex;
517 psCommand->CommandType = CommandType; 533 psCommand->CommandType = CommandType;
518 psCommand->ui32DstSyncCount = ui32DstSyncCount; 534 psCommand->ui32DstSyncCount = ui32DstSyncCount;
@@ -527,11 +543,18 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue,
527 543
528 psCommand->pvData = (PVRSRV_SYNC_OBJECT*)(((IMG_UINTPTR_T)psCommand->psSrcSync) 544 psCommand->pvData = (PVRSRV_SYNC_OBJECT*)(((IMG_UINTPTR_T)psCommand->psSrcSync)
529 + (ui32SrcSyncCount * sizeof(PVRSRV_SYNC_OBJECT))); 545 + (ui32SrcSyncCount * sizeof(PVRSRV_SYNC_OBJECT)));
530 psCommand->ui32DataSize = ui32DataByteSize; 546 psCommand->uDataSize = ui32DataByteSize;
547
548 PVR_TTRACE(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_CMD_START, QUEUE_TOKEN_INSERTKM);
549 PVR_TTRACE_UI32(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_NONE,
550 QUEUE_TOKEN_COMMAND_TYPE, CommandType);
531 551
532 552
533 for (i=0; i<ui32DstSyncCount; i++) 553 for (i=0; i<ui32DstSyncCount; i++)
534 { 554 {
555 PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_QUEUE, QUEUE_TOKEN_DST_SYNC,
556 apsDstSync[i], PVRSRV_SYNCOP_SAMPLE);
557
535 psCommand->psDstSync[i].psKernelSyncInfoKM = apsDstSync[i]; 558 psCommand->psDstSync[i].psKernelSyncInfoKM = apsDstSync[i];
536 psCommand->psDstSync[i].ui32WriteOpsPending = PVRSRVGetWriteOpsPending(apsDstSync[i], IMG_FALSE); 559 psCommand->psDstSync[i].ui32WriteOpsPending = PVRSRVGetWriteOpsPending(apsDstSync[i], IMG_FALSE);
537 psCommand->psDstSync[i].ui32ReadOpsPending = PVRSRVGetReadOpsPending(apsDstSync[i], IMG_FALSE); 560 psCommand->psDstSync[i].ui32ReadOpsPending = PVRSRVGetReadOpsPending(apsDstSync[i], IMG_FALSE);
@@ -546,6 +569,9 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue,
546 569
547 for (i=0; i<ui32SrcSyncCount; i++) 570 for (i=0; i<ui32SrcSyncCount; i++)
548 { 571 {
572 PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_QUEUE, QUEUE_TOKEN_DST_SYNC,
573 apsSrcSync[i], PVRSRV_SYNCOP_SAMPLE);
574
549 psCommand->psSrcSync[i].psKernelSyncInfoKM = apsSrcSync[i]; 575 psCommand->psSrcSync[i].psKernelSyncInfoKM = apsSrcSync[i];
550 psCommand->psSrcSync[i].ui32WriteOpsPending = PVRSRVGetWriteOpsPending(apsSrcSync[i], IMG_TRUE); 576 psCommand->psSrcSync[i].ui32WriteOpsPending = PVRSRVGetWriteOpsPending(apsSrcSync[i], IMG_TRUE);
551 psCommand->psSrcSync[i].ui32ReadOpsPending = PVRSRVGetReadOpsPending(apsSrcSync[i], IMG_TRUE); 577 psCommand->psSrcSync[i].ui32ReadOpsPending = PVRSRVGetReadOpsPending(apsSrcSync[i], IMG_TRUE);
@@ -556,6 +582,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue,
556 psCommand->psSrcSync[i].ui32ReadOpsPending, 582 psCommand->psSrcSync[i].ui32ReadOpsPending,
557 psCommand->psSrcSync[i].ui32WriteOpsPending)); 583 psCommand->psSrcSync[i].ui32WriteOpsPending));
558 } 584 }
585 PVR_TTRACE(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_CMD_END, QUEUE_TOKEN_INSERTKM);
559 586
560 587
561 *ppsCommand = psCommand; 588 *ppsCommand = psCommand;
@@ -590,7 +617,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVSubmitCommandKM(PVRSRV_QUEUE_INFO *psQueue,
590 + (psCommand->ui32SrcSyncCount * sizeof(PVRSRV_SYNC_OBJECT))); 617 + (psCommand->ui32SrcSyncCount * sizeof(PVRSRV_SYNC_OBJECT)));
591 618
592 619
593 UPDATE_QUEUE_WOFF(psQueue, psCommand->ui32CmdSize); 620 UPDATE_QUEUE_WOFF(psQueue, psCommand->uCmdSize);
594 621
595 return PVRSRV_OK; 622 return PVRSRV_OK;
596} 623}
@@ -730,14 +757,17 @@ PVRSRV_ERROR PVRSRVProcessCommand(SYS_DATA *psSysData,
730 757
731 758
732 if (psDeviceCommandData[psCommand->CommandType].pfnCmdProc((IMG_HANDLE)psCmdCompleteData, 759 if (psDeviceCommandData[psCommand->CommandType].pfnCmdProc((IMG_HANDLE)psCmdCompleteData,
733 psCommand->ui32DataSize, 760 (IMG_UINT32)psCommand->uDataSize,
734 psCommand->pvData) == IMG_FALSE) 761 psCommand->pvData) == IMG_FALSE)
735 { 762 {
763
764
736 765
737 psCmdCompleteData->bInUse = IMG_FALSE; 766 psCmdCompleteData->bInUse = IMG_FALSE;
738 eError = PVRSRV_ERROR_CMD_NOT_PROCESSED; 767 eError = PVRSRV_ERROR_CMD_NOT_PROCESSED;
739 } 768 }
740 769
770
741 psDeviceCommandData[psCommand->CommandType].ui32CCBOffset = (ui32CCBOffset + 1) % DC_NUM_COMMANDS_PER_TYPE; 771 psDeviceCommandData[psCommand->CommandType].ui32CCBOffset = (ui32CCBOffset + 1) % DC_NUM_COMMANDS_PER_TYPE;
742 772
743 return eError; 773 return eError;
@@ -754,48 +784,20 @@ static IMG_VOID PVRSRVProcessQueues_ForEachCb(PVRSRV_DEVICE_NODE *psDeviceNode)
754} 784}
755 785
756IMG_EXPORT 786IMG_EXPORT
757PVRSRV_ERROR PVRSRVProcessQueues(IMG_UINT32 ui32CallerID, 787PVRSRV_ERROR PVRSRVProcessQueues(IMG_BOOL bFlush)
758 IMG_BOOL bFlush)
759{ 788{
760 PVRSRV_QUEUE_INFO *psQueue; 789 PVRSRV_QUEUE_INFO *psQueue;
761 SYS_DATA *psSysData; 790 SYS_DATA *psSysData;
762 PVRSRV_COMMAND *psCommand; 791 PVRSRV_COMMAND *psCommand;
763 PVRSRV_ERROR eError;
764
765 SysAcquireData(&psSysData); 792 SysAcquireData(&psSysData);
766 793
767 794
768 psSysData->bReProcessQueues = IMG_FALSE;
769 795
770 796 while (OSLockResource(&psSysData->sQProcessResource, ISR_ID) != PVRSRV_OK)
771 eError = OSLockResource(&psSysData->sQProcessResource,
772 ui32CallerID);
773 if(eError != PVRSRV_OK)
774 { 797 {
775 798 OSWaitus(1);
776 psSysData->bReProcessQueues = IMG_TRUE; 799 };
777 800
778
779 if(ui32CallerID == ISR_ID)
780 {
781 if (bFlush)
782 {
783 PVR_DPF((PVR_DBG_ERROR,"PVRSRVProcessQueues: Couldn't acquire queue processing lock for FLUSH"));
784 }
785 else
786 {
787 PVR_DPF((PVR_DBG_MESSAGE,"PVRSRVProcessQueues: Couldn't acquire queue processing lock"));
788 }
789 }
790 else
791 {
792 PVR_DPF((PVR_DBG_MESSAGE,"PVRSRVProcessQueues: Queue processing lock-acquire failed when called from the Services driver."));
793 PVR_DPF((PVR_DBG_MESSAGE," This is due to MISR queue processing being interrupted by the Services driver."));
794 }
795
796 return PVRSRV_OK;
797 }
798
799 psQueue = psSysData->psQueueList; 801 psQueue = psSysData->psQueueList;
800 802
801 if(!psQueue) 803 if(!psQueue)
@@ -817,8 +819,7 @@ PVRSRV_ERROR PVRSRVProcessQueues(IMG_UINT32 ui32CallerID,
817 if (PVRSRVProcessCommand(psSysData, psCommand, bFlush) == PVRSRV_OK) 819 if (PVRSRVProcessCommand(psSysData, psCommand, bFlush) == PVRSRV_OK)
818 { 820 {
819 821
820 UPDATE_QUEUE_ROFF(psQueue, psCommand->ui32CmdSize) 822 UPDATE_QUEUE_ROFF(psQueue, psCommand->uCmdSize)
821
822 continue; 823 continue;
823 } 824 }
824 825
@@ -836,15 +837,7 @@ PVRSRV_ERROR PVRSRVProcessQueues(IMG_UINT32 ui32CallerID,
836 List_PVRSRV_DEVICE_NODE_ForEach(psSysData->psDeviceNodeList, 837 List_PVRSRV_DEVICE_NODE_ForEach(psSysData->psDeviceNodeList,
837 &PVRSRVProcessQueues_ForEachCb); 838 &PVRSRVProcessQueues_ForEachCb);
838 839
839 840 OSUnlockResource(&psSysData->sQProcessResource, ISR_ID);
840
841 OSUnlockResource(&psSysData->sQProcessResource, ui32CallerID);
842
843
844 if(psSysData->bReProcessQueues)
845 {
846 return PVRSRV_ERROR_PROCESSING_BLOCKED;
847 }
848 841
849 return PVRSRV_OK; 842 return PVRSRV_OK;
850} 843}
@@ -884,11 +877,18 @@ IMG_VOID PVRSRVCommandCompleteKM(IMG_HANDLE hCmdCookie,
884 877
885 SysAcquireData(&psSysData); 878 SysAcquireData(&psSysData);
886 879
880 PVR_TTRACE(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_CMD_COMP_START,
881 QUEUE_TOKEN_COMMAND_COMPLETE);
882
887 883
888 for (i=0; i<psCmdCompleteData->ui32DstSyncCount; i++) 884 for (i=0; i<psCmdCompleteData->ui32DstSyncCount; i++)
889 { 885 {
890 psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->psSyncData->ui32WriteOpsComplete++; 886 psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->psSyncData->ui32WriteOpsComplete++;
891 887
888 PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_QUEUE, QUEUE_TOKEN_UPDATE_DST,
889 psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM,
890 PVRSRV_SYNCOP_COMPLETE);
891
892 PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVCommandCompleteKM: Dst %u RO-VA:0x%x WO-VA:0x%x ROP:0x%x WOP:0x%x", 892 PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVCommandCompleteKM: Dst %u RO-VA:0x%x WO-VA:0x%x ROP:0x%x WOP:0x%x",
893 i, psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr, 893 i, psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr,
894 psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr, 894 psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr,
@@ -901,6 +901,10 @@ IMG_VOID PVRSRVCommandCompleteKM(IMG_HANDLE hCmdCookie,
901 { 901 {
902 psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->psSyncData->ui32ReadOpsComplete++; 902 psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->psSyncData->ui32ReadOpsComplete++;
903 903
904 PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_QUEUE, QUEUE_TOKEN_UPDATE_SRC,
905 psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM,
906 PVRSRV_SYNCOP_COMPLETE);
907
904 PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVCommandCompleteKM: Src %u RO-VA:0x%x WO-VA:0x%x ROP:0x%x WOP:0x%x", 908 PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVCommandCompleteKM: Src %u RO-VA:0x%x WO-VA:0x%x ROP:0x%x WOP:0x%x",
905 i, psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr, 909 i, psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr,
906 psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr, 910 psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr,
@@ -908,6 +912,9 @@ IMG_VOID PVRSRVCommandCompleteKM(IMG_HANDLE hCmdCookie,
908 psCmdCompleteData->psSrcSync[i].ui32WriteOpsPending)); 912 psCmdCompleteData->psSrcSync[i].ui32WriteOpsPending));
909 } 913 }
910 914
915 PVR_TTRACE(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_CMD_COMP_END,
916 QUEUE_TOKEN_COMMAND_COMPLETE);
917
911 918
912 psCmdCompleteData->bInUse = IMG_FALSE; 919 psCmdCompleteData->bInUse = IMG_FALSE;
913 920
@@ -966,15 +973,15 @@ PVRSRV_ERROR PVRSRVRegisterCmdProcListKM(IMG_UINT32 ui32DevIndex,
966 { 973 {
967 psDeviceCommandData[ui32CmdTypeCounter].pfnCmdProc = ppfnCmdProcList[ui32CmdTypeCounter]; 974 psDeviceCommandData[ui32CmdTypeCounter].pfnCmdProc = ppfnCmdProcList[ui32CmdTypeCounter];
968 psDeviceCommandData[ui32CmdTypeCounter].ui32CCBOffset = 0; 975 psDeviceCommandData[ui32CmdTypeCounter].ui32CCBOffset = 0;
969 976
970 for (ui32CmdCounter = 0; ui32CmdCounter < DC_NUM_COMMANDS_PER_TYPE; ui32CmdCounter++) 977 for (ui32CmdCounter = 0; ui32CmdCounter < DC_NUM_COMMANDS_PER_TYPE; ui32CmdCounter++)
971 { 978 {
979
972 980
973 981 ui32AllocSize = sizeof(COMMAND_COMPLETE_DATA)
974 ui32AllocSize = sizeof(COMMAND_COMPLETE_DATA)
975 + ((ui32MaxSyncsPerCmd[ui32CmdTypeCounter][0] 982 + ((ui32MaxSyncsPerCmd[ui32CmdTypeCounter][0]
976 + ui32MaxSyncsPerCmd[ui32CmdTypeCounter][1]) 983 + ui32MaxSyncsPerCmd[ui32CmdTypeCounter][1])
977 * sizeof(PVRSRV_SYNC_OBJECT)); 984 * sizeof(PVRSRV_SYNC_OBJECT));
978 985
979 eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP, 986 eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP,
980 ui32AllocSize, 987 ui32AllocSize,
@@ -986,13 +993,13 @@ PVRSRV_ERROR PVRSRVRegisterCmdProcListKM(IMG_UINT32 ui32DevIndex,
986 PVR_DPF((PVR_DBG_ERROR,"PVRSRVRegisterCmdProcListKM: Failed to alloc cmd %d", ui32CmdTypeCounter)); 993 PVR_DPF((PVR_DBG_ERROR,"PVRSRVRegisterCmdProcListKM: Failed to alloc cmd %d", ui32CmdTypeCounter));
987 goto ErrorExit; 994 goto ErrorExit;
988 } 995 }
989 996
990 psDeviceCommandData[ui32CmdTypeCounter].apsCmdCompleteData[ui32CmdCounter] = psCmdCompleteData; 997 psDeviceCommandData[ui32CmdTypeCounter].apsCmdCompleteData[ui32CmdCounter] = psCmdCompleteData;
991 998
992 999
993 OSMemSet(psCmdCompleteData, 0x00, ui32AllocSize); 1000 OSMemSet(psCmdCompleteData, 0x00, ui32AllocSize);
994 1001
995 1002
996 psCmdCompleteData->psDstSync = (PVRSRV_SYNC_OBJECT*) 1003 psCmdCompleteData->psDstSync = (PVRSRV_SYNC_OBJECT*)
997 (((IMG_UINTPTR_T)psCmdCompleteData) 1004 (((IMG_UINTPTR_T)psCmdCompleteData)
998 + sizeof(COMMAND_COMPLETE_DATA)); 1005 + sizeof(COMMAND_COMPLETE_DATA));
@@ -1000,7 +1007,7 @@ PVRSRV_ERROR PVRSRVRegisterCmdProcListKM(IMG_UINT32 ui32DevIndex,
1000 (((IMG_UINTPTR_T)psCmdCompleteData->psDstSync) 1007 (((IMG_UINTPTR_T)psCmdCompleteData->psDstSync)
1001 + (sizeof(PVRSRV_SYNC_OBJECT) * ui32MaxSyncsPerCmd[ui32CmdTypeCounter][0])); 1008 + (sizeof(PVRSRV_SYNC_OBJECT) * ui32MaxSyncsPerCmd[ui32CmdTypeCounter][0]));
1002 1009
1003 psCmdCompleteData->ui32AllocSize = ui32AllocSize; 1010 psCmdCompleteData->ui32AllocSize = (IMG_UINT32)ui32AllocSize;
1004 } 1011 }
1005 } 1012 }
1006 1013
@@ -1008,15 +1015,14 @@ PVRSRV_ERROR PVRSRVRegisterCmdProcListKM(IMG_UINT32 ui32DevIndex,
1008 1015
1009ErrorExit: 1016ErrorExit:
1010 1017
1011 1018
1012
1013 if (PVRSRVRemoveCmdProcListKM(ui32DevIndex, ui32CmdCount) != PVRSRV_OK) 1019 if (PVRSRVRemoveCmdProcListKM(ui32DevIndex, ui32CmdCount) != PVRSRV_OK)
1014 { 1020 {
1015 PVR_DPF((PVR_DBG_ERROR, 1021 PVR_DPF((PVR_DBG_ERROR,
1016 "PVRSRVRegisterCmdProcListKM: Failed to clean up after error, device 0x%x", 1022 "PVRSRVRegisterCmdProcListKM: Failed to clean up after error, device 0x%x",
1017 ui32DevIndex)); 1023 ui32DevIndex));
1018 } 1024 }
1019 1025
1020 return eError; 1026 return eError;
1021} 1027}
1022 1028
@@ -1031,7 +1037,7 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex,
1031 COMMAND_COMPLETE_DATA *psCmdCompleteData; 1037 COMMAND_COMPLETE_DATA *psCmdCompleteData;
1032 IMG_SIZE_T ui32AllocSize; 1038 IMG_SIZE_T ui32AllocSize;
1033 1039
1034 1040
1035 if(ui32DevIndex >= SYS_DEVICE_COUNT) 1041 if(ui32DevIndex >= SYS_DEVICE_COUNT)
1036 { 1042 {
1037 PVR_DPF((PVR_DBG_ERROR, 1043 PVR_DPF((PVR_DBG_ERROR,
@@ -1040,7 +1046,7 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex,
1040 return PVRSRV_ERROR_INVALID_PARAMS; 1046 return PVRSRV_ERROR_INVALID_PARAMS;
1041 } 1047 }
1042 1048
1043 1049
1044 SysAcquireData(&psSysData); 1050 SysAcquireData(&psSysData);
1045 1051
1046 psDeviceCommandData = psSysData->apsDeviceCommandData[ui32DevIndex]; 1052 psDeviceCommandData = psSysData->apsDeviceCommandData[ui32DevIndex];
@@ -1051,8 +1057,8 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex,
1051 for (ui32CmdCounter = 0; ui32CmdCounter < DC_NUM_COMMANDS_PER_TYPE; ui32CmdCounter++) 1057 for (ui32CmdCounter = 0; ui32CmdCounter < DC_NUM_COMMANDS_PER_TYPE; ui32CmdCounter++)
1052 { 1058 {
1053 psCmdCompleteData = psDeviceCommandData[ui32CmdTypeCounter].apsCmdCompleteData[ui32CmdCounter]; 1059 psCmdCompleteData = psDeviceCommandData[ui32CmdTypeCounter].apsCmdCompleteData[ui32CmdCounter];
1054 1060
1055 1061
1056 if (psCmdCompleteData != IMG_NULL) 1062 if (psCmdCompleteData != IMG_NULL)
1057 { 1063 {
1058 OSFreeMem(PVRSRV_OS_NON_PAGEABLE_HEAP, psCmdCompleteData->ui32AllocSize, 1064 OSFreeMem(PVRSRV_OS_NON_PAGEABLE_HEAP, psCmdCompleteData->ui32AllocSize,
@@ -1062,7 +1068,7 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex,
1062 } 1068 }
1063 } 1069 }
1064 1070
1065 1071
1066 ui32AllocSize = ui32CmdCount * sizeof(*psDeviceCommandData); 1072 ui32AllocSize = ui32CmdCount * sizeof(*psDeviceCommandData);
1067 OSFreeMem(PVRSRV_OS_NON_PAGEABLE_HEAP, ui32AllocSize, psDeviceCommandData, IMG_NULL); 1073 OSFreeMem(PVRSRV_OS_NON_PAGEABLE_HEAP, ui32AllocSize, psDeviceCommandData, IMG_NULL);
1068 psSysData->apsDeviceCommandData[ui32DevIndex] = IMG_NULL; 1074 psSysData->apsDeviceCommandData[ui32DevIndex] = IMG_NULL;