diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c
index bb78e9ce8bb31298564fdeb6066477307e8fc742..af13a48c3f7b42898b8d5a31f57db5d695606308 100644
--- a/drivers/gpu/msm/kgsl.c
+++ b/drivers/gpu/msm/kgsl.c
@@ -562,6 +562,15 @@ kgsl_context_destroy(struct kref *kref)
kgsl_sharedmem_writel(device, &device->memstore,
KGSL_MEMSTORE_OFFSET(context->id, eoptimestamp), 0);
+ /* clear device power constraint */
+ if (context->id == device->pwrctrl.constraint.owner_id) {
+ trace_kgsl_constraint(device,
+ device->pwrctrl.constraint.type,
+ device->pwrctrl.active_pwrlevel,
+ 0);
+ device->pwrctrl.constraint.type = KGSL_CONSTRAINT_NONE;
+ }
+
idr_remove(&device->context_idr, context->id);
context->id = KGSL_CONTEXT_INVALID;
}