summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Diver <diverj@google.com>2023-07-10 14:31:43 +0000
committerJack Diver <diverj@google.com>2023-08-21 16:37:21 +0000
commit94bda3af7f04101f7dfba2c5fffeb3e05be49472 (patch)
tree301042b96f957f2ba4518fb69b0951722a72d0be
parent850de7f645f5a468eca833041837c9f278ac76fa (diff)
downloadgpu-94bda3af7f04101f7dfba2c5fffeb3e05be49472.tar.gz
mali_pixel: mgm: Refactor update_size
Bug: 289501175 Signed-off-by: Jack Diver <diverj@google.com> (cherry picked from https://partner-android-review.googlesource.com/q/commit:252edb03c91ebb738377caf5fe0c4cef52c36fb1) Merged-In: Ib66717ef8acc13ede87b4e324fdc3489c119865f Change-Id: Ib66717ef8acc13ede87b4e324fdc3489c119865f
-rw-r--r--mali_pixel/memory_group_manager.c46
1 files changed, 21 insertions, 25 deletions
diff --git a/mali_pixel/memory_group_manager.c b/mali_pixel/memory_group_manager.c
index 06e09e9..aa90279 100644
--- a/mali_pixel/memory_group_manager.c
+++ b/mali_pixel/memory_group_manager.c
@@ -408,39 +408,35 @@ static int group_active_pt_id(struct mgm_groups *data, enum pixel_mgm_group_id g
static atomic64_t total_gpu_pages = ATOMIC64_INIT(0);
-static void update_size(struct memory_group_manager_device *mgm_dev, int
- group_id, int order, bool alloc)
+static atomic_t* get_size_counter(struct memory_group_manager_device* mgm_dev, int group_id, int order)
{
- static DEFINE_RATELIMIT_STATE(gpu_alloc_rs, 10*HZ, 1);
+ static atomic_t err_atomic;
struct mgm_groups *data = mgm_dev->data;
switch (order) {
case ORDER_SMALL_PAGE:
- if (alloc) {
- atomic_inc(&data->groups[group_id].size);
- atomic64_inc(&total_gpu_pages);
- } else {
- WARN_ON(atomic_read(&data->groups[group_id].size) == 0);
- atomic_dec(&data->groups[group_id].size);
- atomic64_dec(&total_gpu_pages);
- }
- break;
-
+ return &data->groups[group_id].size;
case ORDER_LARGE_PAGE:
- if (alloc) {
- atomic_inc(&data->groups[group_id].lp_size);
- atomic64_add(1 << ORDER_LARGE_PAGE, &total_gpu_pages);
- } else {
- WARN_ON(atomic_read(
- &data->groups[group_id].lp_size) == 0);
- atomic_dec(&data->groups[group_id].lp_size);
- atomic64_sub(1 << ORDER_LARGE_PAGE, &total_gpu_pages);
- }
- break;
-
+ return &data->groups[group_id].lp_size;
default:
dev_err(data->dev, "Unknown order(%d)\n", order);
- break;
+ return &err_atomic;
+ }
+}
+
+static void update_size(struct memory_group_manager_device *mgm_dev, int
+ group_id, int order, bool alloc)
+{
+ static DEFINE_RATELIMIT_STATE(gpu_alloc_rs, 10*HZ, 1);
+ atomic_t* size = get_size_counter(mgm_dev, group_id, order);
+
+ if (alloc) {
+ atomic_inc(size);
+ atomic64_add(1 << order, &total_gpu_pages);
+ } else {
+ WARN_ON(atomic_read(size) == 0);
+ atomic_dec(size);
+ atomic64_sub(1 << order, &total_gpu_pages);
}
if (atomic64_read(&total_gpu_pages) >= (4 << (30 - PAGE_SHIFT)) &&