Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 615439d4 authored by Hareesh Gundu's avatar Hareesh Gundu Committed by Lynus Vaz
Browse files

Revert "msm: kgsl: Offload mementry destroy work to separate thread"



This reverts commit 281fcb5e184b9d1074dd404016cebacce12a8664.

To address the issue with the OOMkiller causing to kill the
foreground application.

Change-Id: Ie4c078d706fdf1c13ad45840f72b414ddc37c1d0
Signed-off-by: default avatarHareesh Gundu <hareeshg@codeaurora.org>
Signed-off-by: default avatarVenkateswara Rao Tadikonda <vtadik@codeaurora.org>
parent 2d097a73
Loading
Loading
Loading
Loading
+8 −27
Original line number Diff line number Diff line
@@ -256,13 +256,6 @@ static void _deferred_put(struct work_struct *work)
	kgsl_mem_entry_put(entry);
}

static inline void
kgsl_mem_entry_put_deferred(struct kgsl_mem_entry *entry)
{
	if (entry)
		queue_work(kgsl_driver.mem_workqueue, &entry->work);
}

static inline struct kgsl_mem_entry *
kgsl_mem_entry_create(void)
{
@@ -272,7 +265,6 @@ kgsl_mem_entry_create(void)
		kref_init(&entry->refcount);
		/* put this ref in userspace memory alloc and map ioctls */
		kref_get(&entry->refcount);
		INIT_WORK(&entry->work, _deferred_put);
	}

	return entry;
@@ -1882,7 +1874,7 @@ long kgsl_ioctl_sharedmem_free(struct kgsl_device_private *dev_priv,
		return -EINVAL;

	ret = gpumem_free_entry(entry);
	kgsl_mem_entry_put_deferred(entry);
	kgsl_mem_entry_put(entry);

	return ret;
}
@@ -1900,7 +1892,7 @@ long kgsl_ioctl_gpumem_free_id(struct kgsl_device_private *dev_priv,
		return -EINVAL;

	ret = gpumem_free_entry(entry);
	kgsl_mem_entry_put_deferred(entry);
	kgsl_mem_entry_put(entry);

	return ret;
}
@@ -1937,7 +1929,8 @@ static void gpuobj_free_fence_func(void *priv)
{
	struct kgsl_mem_entry *entry = priv;

	kgsl_mem_entry_put_deferred(entry);
	INIT_WORK(&entry->work, _deferred_put);
	queue_work(kgsl_driver.mem_workqueue, &entry->work);
}

static long gpuobj_free_on_fence(struct kgsl_device_private *dev_priv,
@@ -2001,7 +1994,7 @@ long kgsl_ioctl_gpuobj_free(struct kgsl_device_private *dev_priv,
	else
		ret = -EINVAL;

	kgsl_mem_entry_put_deferred(entry);
	kgsl_mem_entry_put(entry);
	return ret;
}

@@ -3381,13 +3374,7 @@ long kgsl_ioctl_sparse_phys_free(struct kgsl_device_private *dev_priv,
	if (entry == NULL)
		return -EINVAL;

	if (!kgsl_mem_entry_set_pend(entry)) {
		kgsl_mem_entry_put(entry);
		return -EBUSY;
	}

	if (entry->memdesc.cur_bindings != 0) {
		kgsl_mem_entry_unset_pend(entry);
		kgsl_mem_entry_put(entry);
		return -EINVAL;
	}
@@ -3396,7 +3383,7 @@ long kgsl_ioctl_sparse_phys_free(struct kgsl_device_private *dev_priv,

	/* One put for find_id(), one put for the kgsl_mem_entry_create() */
	kgsl_mem_entry_put(entry);
	kgsl_mem_entry_put_deferred(entry);
	kgsl_mem_entry_put(entry);

	return 0;
}
@@ -3456,13 +3443,7 @@ long kgsl_ioctl_sparse_virt_free(struct kgsl_device_private *dev_priv,
	if (entry == NULL)
		return -EINVAL;

	if (!kgsl_mem_entry_set_pend(entry)) {
		kgsl_mem_entry_put(entry);
		return -EBUSY;
	}

	if (entry->bind_tree.rb_node != NULL) {
		kgsl_mem_entry_unset_pend(entry);
		kgsl_mem_entry_put(entry);
		return -EINVAL;
	}
@@ -3471,7 +3452,7 @@ long kgsl_ioctl_sparse_virt_free(struct kgsl_device_private *dev_priv,

	/* One put for find_id(), one put for the kgsl_mem_entry_create() */
	kgsl_mem_entry_put(entry);
	kgsl_mem_entry_put_deferred(entry);
	kgsl_mem_entry_put(entry);

	return 0;
}
@@ -4869,7 +4850,7 @@ static int __init kgsl_core_init(void)
		WQ_UNBOUND | WQ_MEM_RECLAIM | WQ_SYSFS, 0);

	kgsl_driver.mem_workqueue = alloc_workqueue("kgsl-mementry",
		WQ_MEM_RECLAIM, 0);
		WQ_UNBOUND | WQ_MEM_RECLAIM, 0);

	kgsl_events_init();