summaryrefslogtreecommitdiff
path: root/mali_kbase/mali_kbase_mem_pool.c
diff options
context:
space:
mode:
authorToby Sunrise <tobyrs@google.com>2023-05-01 13:23:54 +0000
committerToby Sunrise <tobyrs@google.com>2023-05-01 13:33:11 +0000
commitf7a77046d77266482dedf54d134102e6031a7438 (patch)
tree4d6813894d79edb7ad605005087b0bce11055c4c /mali_kbase/mali_kbase_mem_pool.c
parent25e383ffa36a9916065804029fbe3552c71329fe (diff)
downloadgpu-f7a77046d77266482dedf54d134102e6031a7438.tar.gz
Mali Valhall Android DDK r42p0-01eac0 KMD
Provenance: 300534375857cb2963042df7b788b1ab5616c500 (ipdelivery/EAC/v_r42p0) VX504X08X-BU-00000-r42p0-01eac0 - Valhall Android DDK VX504X08X-BU-60000-r42p0-01eac0 - Valhall Android Document Bundle VX504X08X-DC-11001-r42p0-01eac0 - Valhall Android DDK Software Errata VX504X08X-SW-99006-r42p0-01eac0 - Valhall Android Renderscript AOSP parts Change-Id: I3b15e01574f03706574a8edaf50dae4ba16e30c0
Diffstat (limited to 'mali_kbase/mali_kbase_mem_pool.c')
-rw-r--r--mali_kbase/mali_kbase_mem_pool.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/mali_kbase/mali_kbase_mem_pool.c b/mali_kbase/mali_kbase_mem_pool.c
index bede1f4..75569cc 100644
--- a/mali_kbase/mali_kbase_mem_pool.c
+++ b/mali_kbase/mali_kbase_mem_pool.c
@@ -284,7 +284,14 @@ static void enqueue_free_pool_pages_work(struct kbase_mem_pool *pool)
void kbase_mem_pool_free_page(struct kbase_mem_pool *pool, struct page *p)
{
- struct kbase_device *kbdev = pool->kbdev;
+ struct kbase_device *kbdev;
+
+ if (WARN_ON(!pool))
+ return;
+ if (WARN_ON(!p))
+ return;
+
+ kbdev = pool->kbdev;
if (!pool->order && kbase_page_migration_enabled) {
kbase_free_page_later(kbdev, p);
@@ -536,14 +543,16 @@ void kbase_mem_pool_term(struct kbase_mem_pool *pool)
/* Zero pages first without holding the next_pool lock */
for (i = 0; i < nr_to_spill; i++) {
p = kbase_mem_pool_remove_locked(pool, SPILL_IN_PROGRESS);
- list_add(&p->lru, &spill_list);
+ if (p)
+ list_add(&p->lru, &spill_list);
}
}
while (!kbase_mem_pool_is_empty(pool)) {
/* Free remaining pages to kernel */
p = kbase_mem_pool_remove_locked(pool, FREE_IN_PROGRESS);
- list_add(&p->lru, &free_list);
+ if (p)
+ list_add(&p->lru, &free_list);
}
kbase_mem_pool_unlock(pool);
@@ -595,17 +604,10 @@ struct page *kbase_mem_pool_alloc(struct kbase_mem_pool *pool)
struct page *kbase_mem_pool_alloc_locked(struct kbase_mem_pool *pool)
{
- struct page *p;
-
lockdep_assert_held(&pool->pool_lock);
pool_dbg(pool, "alloc_locked()\n");
- p = kbase_mem_pool_remove_locked(pool, ALLOCATE_IN_PROGRESS);
-
- if (p)
- return p;
-
- return NULL;
+ return kbase_mem_pool_remove_locked(pool, ALLOCATE_IN_PROGRESS);
}
void kbase_mem_pool_free(struct kbase_mem_pool *pool, struct page *p,