diff --git a/drivers/gpu/drm/img-rogue/osfunc.c b/drivers/gpu/drm/img-rogue/osfunc.c index ac918469a..d2b5628c7 100644 --- a/drivers/gpu/drm/img-rogue/osfunc.c +++ b/drivers/gpu/drm/img-rogue/osfunc.c @@ -570,7 +570,9 @@ static PVRSRV_ERROR _NativeSyncInit(void) static void _NativeSyncDeinit(void) { - destroy_workqueue(gpFenceStatusWq); + if (gpFenceStatusWq) { + destroy_workqueue(gpFenceStatusWq); + } } struct workqueue_struct *NativeSyncGetFenceStatusWq(void) diff --git a/drivers/gpu/drm/img-rogue/pvrsrv.c b/drivers/gpu/drm/img-rogue/pvrsrv.c index c49c81d8e..47edf06f5 100644 --- a/drivers/gpu/drm/img-rogue/pvrsrv.c +++ b/drivers/gpu/drm/img-rogue/pvrsrv.c @@ -3287,8 +3287,9 @@ PVRSRV_ERROR PVRSRVCreateHWPerfHostThread(IMG_UINT32 ui32Timeout) if (!ui32Timeout) return PVRSRV_ERROR_INVALID_PARAMS; - - OSLockAcquire(gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock); + if (gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock) { + OSLockAcquire(gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock); + } /* Create only once */ if (gpsPVRSRVData->hHWPerfHostPeriodicThread == NULL) @@ -3316,8 +3317,9 @@ PVRSRV_ERROR PVRSRVCreateHWPerfHostThread(IMG_UINT32 ui32Timeout) eError = OSEventObjectSignal(gpsPVRSRVData->hHWPerfHostPeriodicEvObj); PVR_LOG_IF_ERROR(eError, "OSEventObjectSignal"); } - - OSLockRelease(gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock); + if (gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock) { + OSLockRelease(gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock); + } return eError; } @@ -3325,7 +3327,9 @@ PVRSRV_ERROR PVRSRVDestroyHWPerfHostThread(void) { PVRSRV_ERROR eError = PVRSRV_OK; - OSLockAcquire(gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock); + if (gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock) { + OSLockAcquire(gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock); + } /* Stop and cleanup the HWPerf periodic thread */ if (gpsPVRSRVData->hHWPerfHostPeriodicThread) @@ -3356,7 +3360,9 @@ PVRSRV_ERROR PVRSRVDestroyHWPerfHostThread(void) } } - OSLockRelease(gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock); + if (gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock) { + OSLockRelease(gpsPVRSRVData->hHWPerfHostPeriodicThread_Lock); + } return eError; } #endif diff --git a/drivers/gpu/drm/img-rogue/pvrsrv.h b/drivers/gpu/drm/img-rogue/pvrsrv.h index 47760125e..7153dc20f 100644 --- a/drivers/gpu/drm/img-rogue/pvrsrv.h +++ b/drivers/gpu/drm/img-rogue/pvrsrv.h @@ -206,7 +206,7 @@ PVRSRV_DATA *PVRSRVGetPVRSRVData(void); #define PVRSRV_KM_ERRORS (PVRSRVGetPVRSRVData()->ui32DPFErrorCount) #define PVRSRV_ERROR_LIMIT_REACHED (PVRSRV_KM_ERRORS == IMG_UINT32_MAX) -#define PVRSRV_REPORT_ERROR() do { if (!(PVRSRV_ERROR_LIMIT_REACHED)) { PVRSRVGetPVRSRVData()->ui32DPFErrorCount++; } } while (0) +#define PVRSRV_REPORT_ERROR() do { if (PVRSRVGetPVRSRVData()) { if (!(PVRSRV_ERROR_LIMIT_REACHED)) { PVRSRVGetPVRSRVData()->ui32DPFErrorCount++; } } } while (0) #define PVRSRV_VZ_MODE_IS(_expr) (DRIVER_MODE_##_expr == PVRSRVGetPVRSRVData()->eDriverMode) #define PVRSRV_VZ_RETN_IF_MODE(_expr) do { if ( PVRSRV_VZ_MODE_IS(_expr)) { return; } } while (0)