void malipmm_irq_bhandler(void *data) { _mali_pmm_internal_state_t *pmm; pmm = (_mali_pmm_internal_state_t *)data; MALI_DEBUG_ASSERT_POINTER(pmm); #if PMM_OS_TEST if( power_test_check() ) return; #endif MALI_PMM_LOCK(pmm); #if MALI_STATE_TRACKING pmm->mali_pmm_lock_acquired = 1; #endif /* MALI_STATE_TRACKING */ /* Quick out when we are shutting down */ if( pmm->status == MALI_PMM_STATUS_OFF ) { #if MALI_STATE_TRACKING pmm->mali_pmm_lock_acquired = 0; #endif /* MALI_STATE_TRACKING */ MALI_PMM_UNLOCK(pmm); return; } MALIPMM_DEBUG_PRINT( ("PMM: bhandler - Processing event\n") ); if( pmm->missed > 0 ) { MALI_PRINT_ERROR( ("PMM: Failed to send %d events", pmm->missed) ); pmm_fatal_reset( pmm ); } if( pmm->check_policy ) { pmm->check_policy = MALI_FALSE; pmm_policy_check_policy(pmm); } else { /* Perform event processing */ pmm_event_process(); if( pmm->fatal_power_err ) { /* Try a reset */ pmm_fatal_reset( pmm ); } } #if MALI_STATE_TRACKING pmm->mali_pmm_lock_acquired = 0; #endif /* MALI_STATE_TRACKING */ MALI_PMM_UNLOCK(pmm); }
void malipmm_irq_bhandler(void *data) { _mali_pmm_internal_state_t *pmm; pmm = (_mali_pmm_internal_state_t *)data; MALI_DEBUG_ASSERT_POINTER(pmm); #if PMM_OS_TEST if( power_test_check() ) return; #endif #ifdef CONFIG_SMP _mali_osk_lock_wait( mali_pmm_lock, _MALI_OSK_LOCKMODE_RW ); #endif /* CONFIG_SMP */ MALI_PMM_LOCK(pmm); /* Quick out when we are shutting down */ if( pmm->status == MALI_PMM_STATUS_OFF ) { MALI_PMM_UNLOCK(pmm); #ifdef CONFIG_SMP _mali_osk_lock_signal( mali_pmm_lock, _MALI_OSK_LOCKMODE_RW ); #endif /* CONFIG_SMP */ return; } MALIPMM_DEBUG_PRINT( ("PMM: bhandler - Processing event\n") ); if( pmm->missed > 0 ) { MALI_PRINT_ERROR( ("PMM: Failed to send %d events", pmm->missed) ); pmm_fatal_reset( pmm ); } if( pmm->check_policy ) { pmm->check_policy = MALI_FALSE; pmm_policy_check_policy(pmm); } else { /* Perform event processing */ pmm_event_process(); if( pmm->fatal_power_err ) { /* Try a reset */ pmm_fatal_reset( pmm ); } } MALI_PMM_UNLOCK(pmm); #ifdef CONFIG_SMP _mali_osk_lock_signal(mali_pmm_lock, _MALI_OSK_LOCKMODE_RW ); #endif /* CONFIG_SMP */ }