Loading drivers/gpu/msm/kgsl.c +22 −12 Original line number Diff line number Diff line Loading @@ -1805,18 +1805,15 @@ long kgsl_ioctl_drawctxt_destroy(struct kgsl_device_private *dev_priv, long gpumem_free_entry(struct kgsl_mem_entry *entry) { pid_t ptname = 0; if (!kgsl_mem_entry_set_pend(entry)) return -EBUSY; trace_kgsl_mem_free(entry); if (entry->memdesc.pagetable != NULL) ptname = entry->memdesc.pagetable->name; kgsl_memfree_add(entry->priv->pid, ptname, entry->memdesc.gpuaddr, entry->memdesc.size, entry->memdesc.flags); kgsl_memfree_add(entry->priv->pid, entry->memdesc.pagetable ? entry->memdesc.pagetable->name : 0, entry->memdesc.gpuaddr, entry->memdesc.size, entry->memdesc.flags); kgsl_mem_entry_put(entry); Loading @@ -1835,6 +1832,12 @@ static void gpumem_free_func(struct kgsl_device *device, /* Free the memory for all event types */ trace_kgsl_mem_timestamp_free(device, entry, KGSL_CONTEXT_ID(context), timestamp, 0); kgsl_memfree_add(entry->priv->pid, entry->memdesc.pagetable ? entry->memdesc.pagetable->name : 0, entry->memdesc.gpuaddr, entry->memdesc.size, entry->memdesc.flags); kgsl_mem_entry_put(entry); } Loading Loading @@ -1928,6 +1931,13 @@ static bool gpuobj_free_fence_func(void *priv) { struct kgsl_mem_entry *entry = priv; trace_kgsl_mem_free(entry); kgsl_memfree_add(entry->priv->pid, entry->memdesc.pagetable ? entry->memdesc.pagetable->name : 0, entry->memdesc.gpuaddr, entry->memdesc.size, entry->memdesc.flags); INIT_WORK(&entry->work, _deferred_put); queue_work(kgsl_driver.mem_workqueue, &entry->work); return true; Loading Loading @@ -1960,15 +1970,15 @@ static long gpuobj_free_on_fence(struct kgsl_device_private *dev_priv, handle = kgsl_sync_fence_async_wait(event.fd, gpuobj_free_fence_func, entry, NULL, 0); /* if handle is NULL the fence has already signaled */ if (handle == NULL) return gpumem_free_entry(entry); if (IS_ERR(handle)) { kgsl_mem_entry_unset_pend(entry); return PTR_ERR(handle); } /* if handle is NULL the fence has already signaled */ if (handle == NULL) gpuobj_free_fence_func(entry); return 0; } Loading Loading
drivers/gpu/msm/kgsl.c +22 −12 Original line number Diff line number Diff line Loading @@ -1805,18 +1805,15 @@ long kgsl_ioctl_drawctxt_destroy(struct kgsl_device_private *dev_priv, long gpumem_free_entry(struct kgsl_mem_entry *entry) { pid_t ptname = 0; if (!kgsl_mem_entry_set_pend(entry)) return -EBUSY; trace_kgsl_mem_free(entry); if (entry->memdesc.pagetable != NULL) ptname = entry->memdesc.pagetable->name; kgsl_memfree_add(entry->priv->pid, ptname, entry->memdesc.gpuaddr, entry->memdesc.size, entry->memdesc.flags); kgsl_memfree_add(entry->priv->pid, entry->memdesc.pagetable ? entry->memdesc.pagetable->name : 0, entry->memdesc.gpuaddr, entry->memdesc.size, entry->memdesc.flags); kgsl_mem_entry_put(entry); Loading @@ -1835,6 +1832,12 @@ static void gpumem_free_func(struct kgsl_device *device, /* Free the memory for all event types */ trace_kgsl_mem_timestamp_free(device, entry, KGSL_CONTEXT_ID(context), timestamp, 0); kgsl_memfree_add(entry->priv->pid, entry->memdesc.pagetable ? entry->memdesc.pagetable->name : 0, entry->memdesc.gpuaddr, entry->memdesc.size, entry->memdesc.flags); kgsl_mem_entry_put(entry); } Loading Loading @@ -1928,6 +1931,13 @@ static bool gpuobj_free_fence_func(void *priv) { struct kgsl_mem_entry *entry = priv; trace_kgsl_mem_free(entry); kgsl_memfree_add(entry->priv->pid, entry->memdesc.pagetable ? entry->memdesc.pagetable->name : 0, entry->memdesc.gpuaddr, entry->memdesc.size, entry->memdesc.flags); INIT_WORK(&entry->work, _deferred_put); queue_work(kgsl_driver.mem_workqueue, &entry->work); return true; Loading Loading @@ -1960,15 +1970,15 @@ static long gpuobj_free_on_fence(struct kgsl_device_private *dev_priv, handle = kgsl_sync_fence_async_wait(event.fd, gpuobj_free_fence_func, entry, NULL, 0); /* if handle is NULL the fence has already signaled */ if (handle == NULL) return gpumem_free_entry(entry); if (IS_ERR(handle)) { kgsl_mem_entry_unset_pend(entry); return PTR_ERR(handle); } /* if handle is NULL the fence has already signaled */ if (handle == NULL) gpuobj_free_fence_func(entry); return 0; } Loading