drivers: pva: use kvzalloc instead of kcalloc

for task pool, kmem buffers, use kvzalloc instead of kcalloc
to better handle memory pressure situations.

Bug 4562933

Change-Id: I015ffa936fe77ab2c914d53667c0ec2f323a0676
Signed-off-by: Omar Nemri <onemri@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3108135
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Colin Tracey <ctracey@nvidia.com>
This commit is contained in:
Omar Nemri
2024-04-03 02:15:56 +00:00
committed by mobile promotions
parent 7e82f57b74
commit 8e77d444fb

View File

@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2021-2023, NVIDIA Corporation. All rights reserved. * Copyright (c) 2021-2024, NVIDIA Corporation. All rights reserved.
* *
* NVHOST queue management for T194 * NVHOST queue management for T194
*/ */
@@ -71,7 +71,7 @@ static int nvpva_queue_task_pool_alloc(struct platform_device *pdev,
if (queue->task_kmem_size) { if (queue->task_kmem_size) {
for (i = 0; i < num_segments; i++) { for (i = 0; i < num_segments; i++) {
task_pool->kmem_addr[i] = task_pool->kmem_addr[i] =
kcalloc(MAX_PVA_TASK_COUNT_PER_QUEUE_SEG, kvzalloc(MAX_PVA_TASK_COUNT_PER_QUEUE_SEG *\
queue->task_kmem_size, GFP_KERNEL); queue->task_kmem_size, GFP_KERNEL);
if (!task_pool->kmem_addr[i]) { if (!task_pool->kmem_addr[i]) {
nvpva_err(&pdev->dev, nvpva_err(&pdev->dev,
@@ -140,7 +140,7 @@ err_alloc_task_pool:
if (task_pool->kmem_addr[i] == NULL) if (task_pool->kmem_addr[i] == NULL)
continue; continue;
kfree(task_pool->kmem_addr[i]); kvfree(task_pool->kmem_addr[i]);
task_pool->kmem_addr[i] = NULL; task_pool->kmem_addr[i] = NULL;
} }
@@ -180,7 +180,7 @@ static void nvpva_queue_task_free_pool(struct platform_device *pdev,
task_pool->aux_va, task_pool->aux_dma_addr, task_pool->aux_va, task_pool->aux_dma_addr,
0); 0);
for (i = 0; i < segments; i++) for (i = 0; i < segments; i++)
kfree(task_pool->kmem_addr[i]); kvfree(task_pool->kmem_addr[i]);
memset(task_pool->alloc_table, 0, sizeof(task_pool->alloc_table)); memset(task_pool->alloc_table, 0, sizeof(task_pool->alloc_table));
task_pool->max_task_cnt = 0U; task_pool->max_task_cnt = 0U;